<@4
zX?9;RksOm$UMWBBMtj^P#UTQ6$Ibry>*KOSC`2
g(D=BXwEfF!5}k~oeI$l1`fqro_4#@hDf~Y2UyzMDWB>pF
From 5be852f8bf21a594bb0ace7f11932af5229c5da3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=97=A4=E5=8E=9F=E3=82=8A=E3=81=8B?=
Date: Thu, 13 Jun 2013 19:16:29 +0900
Subject: [PATCH 003/109] =?UTF-8?q?=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?=
=?UTF-8?q?=E3=83=BC=E6=96=B0=E8=A6=8F=E4=BA=88=E5=AE=9A=E7=99=BB=E9=8C=B2?=
=?UTF-8?q?=E6=99=82=E3=81=AE=E5=AF=BE=E8=B1=A1=E3=83=AB=E3=83=BC=E3=83=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
これまではカレンダーモジュールが設置されている場所のルームをデフォルト対象ルームとしていた。すなわち左右カラムの場合はパブリックスペース。
これを変更し、「現在表示中の中央カラム」のルームを対象ルームとなるように変更。
---
html/webapp/modules/calendar/view/main/plan/add/Add.class.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/html/webapp/modules/calendar/view/main/plan/add/Add.class.php b/html/webapp/modules/calendar/view/main/plan/add/Add.class.php
index c98d9c5..04bc858 100644
--- a/html/webapp/modules/calendar/view/main/plan/add/Add.class.php
+++ b/html/webapp/modules/calendar/view/main/plan/add/Add.class.php
@@ -116,7 +116,7 @@ function execute()
$this->calendar_obj = array(
"calendar_id" => 0,
- "room_id" => ($this->plan_room_id > 0 ? $this->plan_room_id : $this->room_id),
+ "room_id" => ($this->plan_room_id > 0 ? $this->plan_room_id : $this->session->getParameter('_main_room_id')),
"title" => $this->title,
"title_icon" => $this->title_icon,
"allday_flag" => $this->allday_flag,
From 29478fd2f5b094742c8b2a88f84b7f2370445950 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=97=A4=E5=8E=9F=E3=82=8A=E3=81=8B?=
Date: Thu, 13 Jun 2013 19:35:39 +0900
Subject: [PATCH 004/109] =?UTF-8?q?=E3=83=97=E3=83=AB=E3=83=80=E3=82=A6?=
=?UTF-8?q?=E3=83=B3=E3=83=A1=E3=83=8B=E3=83=A5=E3=83=BC=E3=83=86=E3=83=B3?=
=?UTF-8?q?=E3=83=97=E3=83=AC=E3=83=BC=E3=83=88=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
jQueryを使用したプルダウン形式のテンプレートをメニューモジュールに追加
---
.../webapp/modules/common/files/js/jqcheck.js | 18 +++
.../files/css/jq_gnavi_pldwn_blue/style.css | 147 ++++++++++++++++++
.../files/css/jq_gnavi_pldwn_gray/style.css | 132 ++++++++++++++++
.../files/css/jq_gnavi_pldwn_green/style.css | 146 +++++++++++++++++
.../files/css/jq_gnavi_pldwn_orange/style.css | 137 ++++++++++++++++
.../files/css/jq_gnavi_pldwn_red/style.css | 145 +++++++++++++++++
.../jq_gnavi_pldwn_blue/header_btnback.gif | Bin 0 -> 1312 bytes
.../jq_gnavi_pldwn_blue/header_btnhover.gif | Bin 0 -> 1312 bytes
.../header_light_btnback.gif | Bin 0 -> 1312 bytes
.../jq_gnavi_pldwn_gray/header_btnback.gif | Bin 0 -> 1211 bytes
.../jq_gnavi_pldwn_gray/header_btnhover.gif | Bin 0 -> 1211 bytes
.../header_light_btnback.gif | Bin 0 -> 1211 bytes
.../jq_gnavi_pldwn_green/header_btnback.gif | Bin 0 -> 1312 bytes
.../jq_gnavi_pldwn_green/header_btnhover.gif | Bin 0 -> 1312 bytes
.../header_light_btnback.gif | Bin 0 -> 1312 bytes
.../jq_gnavi_pldwn_orange/header_btnback.gif | Bin 0 -> 1312 bytes
.../jq_gnavi_pldwn_orange/header_btnhover.gif | Bin 0 -> 1312 bytes
.../header_light_btnback.gif | Bin 0 -> 1312 bytes
.../jq_gnavi_pldwn_red/header_btnback.gif | Bin 0 -> 1312 bytes
.../jq_gnavi_pldwn_red/header_btnhover.gif | Bin 0 -> 1312 bytes
.../header_light_btnback.gif | Bin 0 -> 1312 bytes
.../menu_view_main_detail.html | 11 ++
.../menu_view_main_init.html | 50 ++++++
.../menu_view_main_list.html | 3 +
.../menu_view_main_detail.html | 11 ++
.../menu_view_main_init.html | 50 ++++++
.../menu_view_main_list.html | 108 +++++++++++++
.../menu_view_main_detail.html | 11 ++
.../menu_view_main_init.html | 50 ++++++
.../menu_view_main_list.html | 3 +
.../menu_view_main_detail.html | 11 ++
.../menu_view_main_init.html | 50 ++++++
.../menu_view_main_list.html | 3 +
.../menu_view_main_detail.html | 11 ++
.../menu_view_main_init.html | 50 ++++++
.../menu_view_main_list.html | 3 +
36 files changed, 1150 insertions(+)
create mode 100644 html/webapp/modules/common/files/js/jqcheck.js
create mode 100644 html/webapp/modules/menu/files/css/jq_gnavi_pldwn_blue/style.css
create mode 100644 html/webapp/modules/menu/files/css/jq_gnavi_pldwn_gray/style.css
create mode 100644 html/webapp/modules/menu/files/css/jq_gnavi_pldwn_green/style.css
create mode 100644 html/webapp/modules/menu/files/css/jq_gnavi_pldwn_orange/style.css
create mode 100644 html/webapp/modules/menu/files/css/jq_gnavi_pldwn_red/style.css
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_blue/header_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_blue/header_btnhover.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_blue/header_light_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_gray/header_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_gray/header_btnhover.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_gray/header_light_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_btnhover.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_light_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_orange/header_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_orange/header_btnhover.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_orange/header_light_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_red/header_btnback.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_red/header_btnhover.gif
create mode 100644 html/webapp/modules/menu/files/images/jq_gnavi_pldwn_red/header_light_btnback.gif
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_detail.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_init.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_list.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_detail.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_init.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_list.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_detail.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_init.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_list.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_detail.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_init.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_list.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_detail.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_init.html
create mode 100644 html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_list.html
diff --git a/html/webapp/modules/common/files/js/jqcheck.js b/html/webapp/modules/common/files/js/jqcheck.js
new file mode 100644
index 0000000..c3cefae
--- /dev/null
+++ b/html/webapp/modules/common/files/js/jqcheck.js
@@ -0,0 +1,18 @@
+var clsJqcheck = Class.create();
+
+clsJqcheck.prototype = {
+ initialize: function() {
+ this.loadedFiles = new Array();
+ },
+ jqload: function(dir_name, check, next) {
+ if(!this.loadedFiles[dir_name]) {
+ this.loadedFiles[dir_name] = true;
+ commonCls.load(_nc_core_base_url + _nc_index_file_name + "?action=common_download_js&add_block_flag=1&dir_name=" + dir_name + "&vs=" + _nc_js_vs, check, function(){jQuery.noConflict(); if(next) {next();}});
+ }
+ else {
+ jcheck = new Function('return !!(' + check + ')');
+ commonCls.wait(jcheck,next);
+ }
+ }
+}
+jqcheckCls = new clsJqcheck();
diff --git a/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_blue/style.css b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_blue/style.css
new file mode 100644
index 0000000..e87d4a5
--- /dev/null
+++ b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_blue/style.css
@@ -0,0 +1,147 @@
+ul.menu_jq_gnavi_pldwn_blue {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_blue/header_btnback.gif) repeat-x scroll left bottom;
+ height:35px;
+ margin:0px;
+ padding:0px 20px;
+/* border-bottom:1px solid #81bae2;*/
+}
+ul.menu_jq_gnavi_pldwn_blue li {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_blue/header_btnback.gif) repeat-x scroll left bottom;
+ float:left;
+ padding:0px;
+ position:relative;
+ width:130px;
+ height:35px;
+}
+ul.menu_jq_gnavi_pldwn_blue li a {
+ height:100%;
+ line-height:35px;
+ overflow:hidden;
+ display:block;
+ padding:0px;
+}
+ul.menu_jq_gnavi_pldwn_blue li a.menu_jq_gnavi_pldwn_blue_highlight {
+ background:#1a99d0 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_blue/header_btnhover.gif) repeat-x scroll left bottom;
+ color:#ffffff !important;/*important is for IE6*/
+}
+.menu_jq_gnavi_pldwn_blue_btn {
+ border-color:transparent #b9c8df transparent #ffffff;
+ border-style:solid;
+ border-width:0px 1px;
+ padding:0px;
+ /*font-size:12px;*/
+ text-align:center;
+ font-weight:bold;
+}
+a.menu_jq_gnavi_pldwn_blue_btn:link, a.menu_jq_gnavi_pldwn_blue_btn:visited {
+ color: #1569a4;
+}
+/*
+a.menu_jq_gnavi_pldwn_blue_btn:hover, a.menu_jq_gnavi_pldwn_blue_btn:active {
+ color:#289cde !important;
+}
+*/
+ul.menu_jq_gnavi_pldwn_blue_sub {
+ min-width:140px;
+ background-color:#ffffff;
+ padding:0px;
+ display:none;
+ z-index:1000;
+ position:absolute;
+ border-color:#ddd #aaa #aaa #ddd;
+ border-style:solid;
+ border-width:1px;
+ -moz-box-shadow:2px 2px 2px #aaa;
+ -webkit-box-shadow:2px 2px 2px #aaa;
+ box-shadow:2px 2px 2px #aaa;
+}
+ul.menu_jq_gnavi_pldwn_blue_sub li {
+ background:none;
+ height:2.2em;
+ width:auto;
+ float:none;
+/*
+ border-color:transparent #9cc4e3 #ffffff #9cc4e3;
+ border-style:none solid solid solid;
+ border-width:1px;
+*/
+}
+ul.menu_jq_gnavi_pldwn_blue_sub li a {
+ line-height:2.2em;
+ padding:0px 5px;
+ text-align:left;
+ border-bottom:1px dotted #81bae2;
+ width:auto;
+}
+ul.menu_jq_gnavi_pldwn_blue_sub li a.menu_jq_gnavi_pldwn_blue_btn {
+ font-weight:normal;
+}
+ul.menu_jq_gnavi_pldwn_blue_sub li ul.menu_jq_gnavi_pldwn_blue_sub {
+ top:0;
+}
+ul.menu_jq_gnavi_pldwn_blue{
+ zoom:1;
+}
+ul.menu_jq_gnavi_pldwn_blue:after {
+ height:0;
+ visibility:hidden;
+ content:".";
+ display:block;
+ clear:both;
+}
+
+/* for IE7 */
+*+html ul.menu_jq_gnavi_pldwn_blue {
+ height:auto;
+}
+*+html ul.menu_jq_gnavi_pldwn_blue_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+*+html ul.menu_jq_gnavi_pldwn_blue_sub li ul.menu_jq_gnavi_pldwn_blue_sub {
+ left:100px;
+}
+*+html ul.menu_jq_gnavi_pldwn_blue_sub li {
+ display:inline;
+}
+
+/* for IE6 */
+* html ul.menu_jq_gnavi_pldwn_blue {
+ height:auto;
+}
+* html ul.menu_jq_gnavi_pldwn_blue li a {
+ width:100%;
+}
+
+* html ul.menu_jq_gnavi_pldwn_blue_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+* html ul.menu_jq_gnavi_pldwn_blue_sub li ul.menu_jq_gnavi_pldwn_blue_sub {
+ left:110px;
+}
+* html ul.menu_jq_gnavi_pldwn_blue_sub li {
+ display:inline;
+}
+* html ul.menu_jq_gnavi_pldwn_blue_sub li a {
+ width:140px !important;
+}
+
+
+
+.menu_jq_gnavi_pldwn_blue_actives {
+ background:#1a99d0 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_blue/header_btnhover.gif) repeat-x scroll left bottom !important;
+ color:#ffffff !important;
+}
+ul.menu_jq_gnavi_pldwn_blue_sub .menu_jq_gnavi_pldwn_blue_actives {
+ background:#1a99d0 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_blue/header_light_btnback.gif) repeat-x scroll left top !important;
+ color:#ffffff !important;
+}
diff --git a/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_gray/style.css b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_gray/style.css
new file mode 100644
index 0000000..14f220d
--- /dev/null
+++ b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_gray/style.css
@@ -0,0 +1,132 @@
+ul.menu_jq_gnavi_pldwn_gray {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_gray/header_btnback.gif) repeat-x scroll left bottom;
+ height:35px;
+ margin:0px;
+ padding:0px 20px;
+}
+ul.menu_jq_gnavi_pldwn_gray li {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_gray/header_btnback.gif) repeat-x scroll left bottom;
+ float:left;
+ padding:0px;
+ position:relative;
+ width:130px;
+ height:35px;
+}
+ul.menu_jq_gnavi_pldwn_gray li a {
+ height:100%;
+ /*width:100%;*/
+ line-height:35px;
+ overflow:hidden;
+ display:block;
+ padding:0px;
+}
+ul.menu_jq_gnavi_pldwn_gray li a.menu_jq_gnavi_pldwn_gray_highlight {
+/* background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_gray/header_light_btnback.gif) repeat-x scroll left top;*/
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_gray/header_btnhover.gif) repeat-x scroll left bottom;
+}
+.menu_jq_gnavi_pldwn_gray_btn {
+ border-color:transparent #cccccc transparent #ffffff;
+ border-style:solid;
+ border-width:0px 1px;
+ padding:0px;
+ /*font-size:12px;*/
+ text-align:center;
+ font-weight:bold;
+}
+ul.menu_jq_gnavi_pldwn_gray_sub {
+ min-width:140px;
+ background-color:#FFFFFF;
+ padding:0px;
+ display:none;
+ z-index:1000;
+ position:absolute;
+ border-color:#ddd #aaa #aaa #ddd;
+ border-style:solid;
+ border-width:1px;
+ -moz-box-shadow:2px 2px 2px #aaa;
+ -webkit-box-shadow:2px 2px 2px #aaa;
+ box-shadow:2px 2px 2px #aaa;
+}
+ul.menu_jq_gnavi_pldwn_gray_sub li {
+ background:none;
+ height:2.2em;
+ width:auto;
+ float:none;
+}
+ul.menu_jq_gnavi_pldwn_gray_sub li a {
+ line-height:2.2em;
+ padding:0px 5px;
+ text-align:left;
+ border-bottom:1px dotted #999;
+ width:auto;
+}
+ul.menu_jq_gnavi_pldwn_gray_sub li a.menu_jq_gnavi_pldwn_gray_btn {
+ font-weight:normal;
+}
+ul.menu_jq_gnavi_pldwn_gray_sub li ul.menu_jq_gnavi_pldwn_gray_sub {
+ top:0;
+}
+ul.menu_jq_gnavi_pldwn_gray{
+ zoom:1;
+}
+ul.menu_jq_gnavi_pldwn_gray:after {
+ height:0;
+ visibility:hidden;
+ content:".";
+ display:block;
+ clear:both;
+}
+
+/* for IE7 */
+*+html ul.menu_jq_gnavi_pldwn_gray {
+ height:auto;
+}
+*+html ul.menu_jq_gnavi_pldwn_gray_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+*+html ul.menu_jq_gnavi_pldwn_gray_sub li ul.menu_jq_gnavi_pldwn_gray_sub {
+ left:100px;
+}
+*+html ul.menu_jq_gnavi_pldwn_gray_sub li {
+ display:inline;
+}
+
+/* for IE6 */
+* html ul.menu_jq_gnavi_pldwn_gray {
+ height:auto;
+}
+*html ul.menu_jq_gnavi_pldwn_gray li a {
+ width:100%;
+}
+* html ul.menu_jq_gnavi_pldwn_gray_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+* html ul.menu_jq_gnavi_pldwn_gray_sub li ul.menu_jq_gnavi_pldwn_gray_sub {
+ left:110px;
+}
+* html ul.menu_jq_gnavi_pldwn_gray_sub li {
+ display:inline;
+}
+* html ul.menu_jq_gnavi_pldwn_gray_sub li a {
+ width:140px !important;
+}
+
+
+
+.menu_jq_gnavi_pldwn_gray_actives {
+ /*background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_gray/header_light_btnback.gif) repeat-x scroll left 1px !important;*/
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_gray/header_btnhover.gif) repeat-x scroll left bottom !important;
+}
+ul.menu_jq_gnavi_pldwn_gray_sub .menu_jq_gnavi_pldwn_gray_actives {
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_gray/header_light_btnback.gif) repeat-x scroll left top !important;
+}
diff --git a/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_green/style.css b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_green/style.css
new file mode 100644
index 0000000..dfbcbeb
--- /dev/null
+++ b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_green/style.css
@@ -0,0 +1,146 @@
+ul.menu_jq_gnavi_pldwn_green {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_green/header_btnback.gif) repeat-x scroll left bottom;
+ height:35px;
+ margin:0px;
+ padding:0px 20px;
+/* border-bottom:1px solid #b6d5af;*/
+}
+ul.menu_jq_gnavi_pldwn_green li {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_green/header_btnback.gif) repeat-x scroll left bottom;
+ float:left;
+ padding:0px;
+ position:relative;
+ width:130px;
+ height:35px;
+}
+ul.menu_jq_gnavi_pldwn_green li a {
+ height:100%;
+ line-height:35px;
+ overflow:hidden;
+ display:block;
+ padding:0px;
+}
+/*
+a.menu_jq_gnavi_pldwn_green_btn:link, a.menu_jq_gnavi_pldwn_green_btn:visited {
+ color: #2e7522;
+}
+a.menu_jq_gnavi_pldwn_green_btn:hover, a.menu_jq_gnavi_pldwn_green_btn:active {
+ color:#38b469 !important;
+}
+*/
+
+ul.menu_jq_gnavi_pldwn_green li a.menu_jq_gnavi_pldwn_green_highlight {
+ background:#5ba44f url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_green/header_btnhover.gif) repeat-x scroll left bottom;
+ color:#ffffff !important;/*important is for IE6*/
+}
+.menu_jq_gnavi_pldwn_green_btn {
+ border-color:transparent #bbd1b2 transparent #ffffff;
+ border-style:solid;
+ border-width:0px 1px;
+ padding:0px;
+ /*font-size:12px;*/
+ text-align:center;
+ font-weight:bold;
+}
+ul.menu_jq_gnavi_pldwn_green_sub {
+ min-width:140px;
+ background-color:#ffffff;
+ padding:0px;
+ display:none;
+ z-index:1000;
+ position:absolute;
+ border-color:#ddd #aaa #aaa #ddd;
+ border-style:solid;
+ border-width:1px;
+ -moz-box-shadow:2px 2px 2px #aaa;
+ -webkit-box-shadow:2px 2px 2px #aaa;
+ box-shadow:2px 2px 2px #aaa;
+}
+ul.menu_jq_gnavi_pldwn_green_sub li {
+ background:none;
+ height:2.2em;
+ width:auto;
+ float:none;
+/*
+ border-color:transparent #b6d5af #ffffff #b6d5af;
+ border-style:none solid solid solid;
+ border-width:1px;
+*/
+}
+ul.menu_jq_gnavi_pldwn_green_sub li a {
+ line-height:2.2em;
+ padding:0px 5px;
+ text-align:left;
+ border-bottom:1px dotted #b6d5af;
+ width:auto;
+}
+ul.menu_jq_gnavi_pldwn_green_sub li a.menu_jq_gnavi_pldwn_green_btn {
+ font-weight:normal;
+}
+ul.menu_jq_gnavi_pldwn_green_sub li ul.menu_jq_gnavi_pldwn_green_sub {
+ top:0;
+}
+ul.menu_jq_gnavi_pldwn_green{
+ zoom:1;
+}
+ul.menu_jq_gnavi_pldwn_green:after {
+ height:0;
+ visibility:hidden;
+ content:".";
+ display:block;
+ clear:both;
+}
+
+/* for IE7 */
+*+html ul.menu_jq_gnavi_pldwn_green {
+ height:auto;
+}
+*+html ul.menu_jq_gnavi_pldwn_green_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+*+html ul.menu_jq_gnavi_pldwn_green_sub li ul.menu_jq_gnavi_pldwn_green_sub {
+ left:100px;
+}
+*+html ul.menu_jq_gnavi_pldwn_green_sub li {
+ display:inline;
+}
+/* for IE6 */
+* html ul.menu_jq_gnavi_pldwn_green {
+ height:auto;
+}
+* html ul.menu_jq_gnavi_pldwn_green li a {
+ width:100%;
+}
+* html ul.menu_jq_gnavi_pldwn_green_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+* html ul.menu_jq_gnavi_pldwn_green_sub li ul.menu_jq_gnavi_pldwn_green_sub {
+ left:110px;
+}
+* html ul.menu_jq_gnavi_pldwn_green_sub li {
+ display:inline;
+}
+* html ul.menu_jq_gnavi_pldwn_green_sub li a {
+ width:140px !important;
+}
+
+
+
+.menu_jq_gnavi_pldwn_green_actives {
+ background:#5ba44f url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_green/header_btnhover.gif) repeat-x scroll left bottom !important;
+ color:#ffffff !important;
+}
+ul.menu_jq_gnavi_pldwn_green_sub .menu_jq_gnavi_pldwn_green_actives {
+ background:#5ba44f url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_green/header_light_btnback.gif) repeat-x scroll left top !important;
+ color:#ffffff !important;
+}
diff --git a/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_orange/style.css b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_orange/style.css
new file mode 100644
index 0000000..d083a2e
--- /dev/null
+++ b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_orange/style.css
@@ -0,0 +1,137 @@
+ul.menu_jq_gnavi_pldwn_orange {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_orange/header_btnback.gif) repeat-x scroll left bottom;
+ height:35px;
+ margin:0px;
+ padding:0px 20px;
+}
+ul.menu_jq_gnavi_pldwn_orange li {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_orange/header_btnback.gif) repeat-x scroll left bottom;
+ float:left;
+ padding:0px;
+ position:relative;
+ width:130px;
+ height:35px;
+}
+ul.menu_jq_gnavi_pldwn_orange li a {
+ height:100%;
+ /*width:100%;*/
+ line-height:35px;
+ overflow:hidden;
+ display:block;
+ padding:0px;
+}
+ul.menu_jq_gnavi_pldwn_orange li a.menu_jq_gnavi_pldwn_orange_highlight {
+ background:#F18527 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_orange/header_btnhover.gif) repeat-x scroll left bottom;
+ color:#ffffff !important;/*important is for IE6*/
+}
+.menu_jq_gnavi_pldwn_orange_btn {
+ border-color:transparent #dfc3ae transparent #ffffff;
+ border-style:solid;
+ border-width:0px 1px;
+ padding:0px;
+ text-align:center;
+ font-weight:bold;
+}
+
+ul.menu_jq_gnavi_pldwn_orange_sub {
+ min-width:140px;
+ background-color:#ffffff;
+
+ padding:0px;
+ display:none;
+ z-index:1000;
+ position:absolute;
+ border-color:#ddd #aaa #aaa #ddd;
+ border-style:solid;
+ border-width:1px;
+ -moz-box-shadow:2px 2px 2px #aaa;
+ -webkit-box-shadow:2px 2px 2px #aaa;
+ box-shadow:2px 2px 2px #aaa;
+}
+ul.menu_jq_gnavi_pldwn_orange_sub li {
+ background:none;
+ height:2.2em;
+ width:auto;
+ float:none;
+}
+ul.menu_jq_gnavi_pldwn_orange_sub li a {
+ line-height:2.2em;
+ padding:0px 5px;
+ text-align:left;
+ border-bottom:1px dotted #f3b785;
+ width:auto;
+}
+ul.menu_jq_gnavi_pldwn_orange_sub a.menu_jq_gnavi_pldwn_orange_btn {
+ font-weight:normal;
+}
+ul.menu_jq_gnavi_pldwn_orange_sub li ul.menu_jq_gnavi_pldwn_orange_sub {
+ background-color:#ffffff;
+ top:0;
+}
+ul.menu_jq_gnavi_pldwn_orange{
+ zoom:1;
+}
+ul.menu_jq_gnavi_pldwn_orange:after {
+ height:0;
+ visibility:hidden;
+ content:".";
+ display:block;
+ clear:both;
+}
+
+
+/* for IE7 */
+*+html ul.menu_jq_gnavi_pldwn_orange {
+ height:auto;
+}
+*+html ul.menu_jq_gnavi_pldwn_orange_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+*+html ul.menu_jq_gnavi_pldwn_orange_sub li ul.menu_jq_gnavi_pldwn_orange_sub {
+ left:100px;
+}
+*+html ul.menu_jq_gnavi_pldwn_orange_sub li {
+ display:inline;
+}
+
+/* for IE6 */
+* html ul.menu_jq_gnavi_pldwn_orange {
+ height:auto;
+}
+* html ul.menu_jq_gnavi_pldwn_orange li a {
+ width:100%;
+}
+* html ul.menu_jq_gnavi_pldwn_orange_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+* html ul.menu_jq_gnavi_pldwn_orange_sub li ul.menu_jq_gnavi_pldwn_orange_sub {
+ left:110px;
+}
+* html ul.menu_jq_gnavi_pldwn_orange_sub li {
+ display:inline;
+}
+* html ul.menu_jq_gnavi_pldwn_orange_sub li a {
+ width:140px !important;
+}
+
+
+
+.menu_jq_gnavi_pldwn_orange_actives {
+ background:#F18527 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_orange/header_btnhover.gif) repeat-x scroll left bottom !important;
+ color:#ffffff !important;
+}
+
+ul.menu_jq_gnavi_pldwn_orange_sub .menu_jq_gnavi_pldwn_orange_actives {
+ background:#F18527 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_orange/header_light_btnback.gif) repeat-x scroll left top !important;
+ color:#ffffff !important;
+}
diff --git a/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_red/style.css b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_red/style.css
new file mode 100644
index 0000000..6600635
--- /dev/null
+++ b/html/webapp/modules/menu/files/css/jq_gnavi_pldwn_red/style.css
@@ -0,0 +1,145 @@
+ul.menu_jq_gnavi_pldwn_red {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_red/header_btnback.gif) repeat-x scroll left bottom;
+ height:35px;
+ margin:0px;
+ padding:0px 20px;
+ /*border-bottom:1px solid #ea9fc4;*/
+}
+ul.menu_jq_gnavi_pldwn_red li {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_red/header_btnback.gif) repeat-x scroll left bottom;
+ float:left;
+ padding:0px;
+ position:relative;
+ width:130px;
+ height:35px;
+}
+ul.menu_jq_gnavi_pldwn_red li a {
+ height:100%;
+ line-height:35px;
+ overflow:hidden;
+ display:block;
+ padding:0px;
+}
+/*
+a.menu_jq_gnavi_pldwn_red_btn:link, a.menu_jq_gnavi_pldwn_red_btn:visited {
+ color: #c93c8d;
+}
+a.menu_jq_gnavi_pldwn_red_btn:hover, a.menu_jq_gnavi_pldwn_red_btn:active {
+ background:transparent url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_red/header_btnhover.png) repeat-x scroll left top;
+ color:#e65db0 !important;
+}
+*/
+ul.menu_jq_gnavi_pldwn_red li a.menu_jq_gnavi_pldwn_red_highlight {
+ background:#E667A7 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_red/header_btnhover.gif) repeat-x scroll left bottom;
+ color:#ffffff !important; /*important is for IE6*/
+}
+.menu_jq_gnavi_pldwn_red_btn {
+ border-color:transparent #d7bace transparent #ffffff;
+ border-style:solid;
+ border-width:0px 1px;
+ padding:0px;
+ /*font-size:12px;*/
+ text-align:center;
+ font-weight:bold;
+}
+ul.menu_jq_gnavi_pldwn_red_sub {
+ min-width:140px;
+ background-color:#ffffff;
+ padding:0px;
+ display:none;
+ z-index:1000;
+ position:absolute;
+ border-color:#ddd #aaa #aaa #ddd;
+ border-style:solid;
+ border-width:1px;
+ -moz-box-shadow:2px 2px 2px #aaa;
+ -webkit-box-shadow:2px 2px 2px #aaa;
+ box-shadow:2px 2px 2px #aaa;
+}
+ul.menu_jq_gnavi_pldwn_red_sub li {
+ background:none;
+ height:2.2em;
+ width:auto;
+ float:none;
+}
+ul.menu_jq_gnavi_pldwn_red_sub li a {
+ line-height:2.2em;
+ padding:0px 5px;
+ text-align:left;
+ border-bottom:1px dotted #ea9fc4;
+ width:auto;
+}
+ul.menu_jq_gnavi_pldwn_red_sub li .menu_jq_gnavi_pldwn_red_btn {
+ font-weight:normal;
+}
+ul.menu_jq_gnavi_pldwn_red_sub li ul.menu_jq_gnavi_pldwn_red_sub {
+ top:0;
+}
+ul.menu_jq_gnavi_pldwn_red{
+ zoom:1;
+}
+ul.menu_jq_gnavi_pldwn_red:after {
+ height:0;
+ visibility:hidden;
+ content:".";
+ display:block;
+ clear:both;
+}
+
+/* for IE7 */
+*+html ul.menu_jq_gnavi_pldwn_red {
+ height:auto;
+}
+*+html ul.menu_jq_gnavi_pldwn_red_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+*+html ul.menu_jq_gnavi_pldwn_red_sub li ul.menu_jq_gnavi_pldwn_red_sub {
+ left:100px;
+}
+*+html ul.menu_jq_gnavi_pldwn_red_sub li {
+ display:inline;
+}
+
+/* for IE6 */
+* html ul.menu_jq_gnavi_pldwn_red {
+ height:auto;
+}
+* html ul.menu_jq_gnavi_pldwn_red li a {
+ width:100%;
+}
+
+* html ul.menu_jq_gnavi_pldwn_red_sub {
+ left:-40px;
+ zoom:1;
+ width:140px !important;
+}
+* html ul.menu_jq_gnavi_pldwn_red_sub li ul.menu_jq_gnavi_pldwn_red_sub {
+ left:110px;
+}
+* html ul.menu_jq_gnavi_pldwn_red_sub li {
+ display:inline;
+}
+* html ul.menu_jq_gnavi_pldwn_red_sub li a {
+ width:140px !important;
+}
+
+
+
+.menu_jq_gnavi_pldwn_red_actives {
+ background:#E667A7 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_red/header_btnhover.gif) repeat-x scroll left bottom !important;
+ color:#ffffff !important;
+}
+ul.menu_jq_gnavi_pldwn_red_sub .menu_jq_gnavi_pldwn_red_actives {
+ background:#E667A7 url(<{$smarty.const.CORE_BASE_URL}>/images/menu/jq_gnavi_pldwn_red/header_light_btnback.gif) repeat-x scroll left top !important;
+ color:#ffffff !important;
+}
+
+
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_blue/header_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_blue/header_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..59ff59781f2e9f9ceebf20a2d3db6be9955b7511
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQqA^7WsK@BTdc^7q)QKes;qz53zr{^x&=y!`X<%ij~P{#^g?
z_x#&GH$MJ-`t9%IuYd1-{`>sf-$O6{9DMQT(!0M;zWzP)=Fi<;78?}6ukPQU*1?Azb}|Nk@43@HBRj_?goa7ipl1kyJ46$OdO*{LN8
zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J=B$SufC
zElE_U$j!+swyLmIN=(U5O0@#ALBje<3ScEA*|tiKAPEJKozD41sS2ig2D-@xW(Epo
zhI)p^Cg$emItoSxh6efuM*49tBP3s|qAfdNjv`as9%gCZ6wqG3Y7)B|F|lP!<~Pxz^Mz|>v@
zOxBG5|NZ^*``6DO-@kqR^7+%p5AWZ-ee?R&%NNg|J$>@{(ZdJ#@7=v~`_|1H*RNf@
za{1E53+K6ZM9qnzcEzM1h4fS=kHPuy>73F26
zCB;RB1^IcoIoVm68R==MDalER3Gs2UG0{A;Cd`0selzKHgrQ9`0_gF3wJl
z4)%7oHr7^_7UpKACdNjp{}N?qO7E-ATK8?BP}H<0Li}QAOHXW
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_blue/header_btnhover.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_blue/header_btnhover.gif
new file mode 100644
index 0000000000000000000000000000000000000000..591170f87ba5006347a602c129df48fce9a7f9d7
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQqwx%h_c?2C$XuS(Cl=&WR$A-)9*sQ)UG5ws*;+uABA1TiVYPsOH@tMcw=jN;Kt1Y~)zx0;L@;iEq
zZ+UNdAvN=Y{On6stM1#ZdEmME`Tzg_8E69(|8qz91}L~BmLvjc8~cia#N_PM5{0DH
z^vpb4rT4q{D=B2A*eZpa`WpBaIHzW0dQ=sq23ProBv)l8Tc#-4+bP&oSXJZ}7b1P#bD+2=sC{P00R+N%v73AUuwF}6zRmvzSDX`Ml
zFE20GD>v55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1c
zerbuV640d(FXR@$jm<081A9j=IX_pwBC$Z<@{GRUd|E9aur#FG4?ko^1{SSSW$|Z5PD5<>IEf*+ybD@E~!PCWvMA{Mftf3U@u!`;&zJ>
zPV=C8Q*gV*7^hx+pkwqw5sMVjFd<;-0Wsmp7RZ4o{M0;PYA*sNYsUZo{{H#>>*tT}
z-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa;
z^t9BJ<&e?MOzZ!b>|cQ;oTXD3GodplbjYb#3&b2C#D
zVWR$A-)9*sQ)UG5ws*;+uABA1TkjDmml4^sEbR8=rY>er~?%zS_d;`b%$_
zEWe|-_?GvU7g94X$j`oHwd%gjng^bnpEJ+~DE{Y;@C{IKNi0bO(l+)L1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&Psj#ZZEyztR
zNmQuF&B-gas<2f`Ovz75wF0t1!um=IU?nBlwn~m52?day&iO^D3Z{Any2%D+1`1||
zdWOa(=H}))3PuKo2Koj@`i4fjhUQkrMpgy}3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0
zuU}qXu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~
zr2NtnTP2`NAzsKWfE$}vtOxdvUUGh}ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB
z;NpiyW)Z+ZoqU2Pda%GTJ1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s>P;d@5Rq#zr
z&ddYx!Rmc|tvvIJOA_;vQ$1a5m4GJbWoD*W8JU#O)T`=0WwQU~vo7AC@@Xq7QV8J}6?5A{r(HOg$hbJlO&{@Pwb52Tbinz+}z%
z|KHy~zkmJw@%`J^FP}es{P6zW+c&RYy?pWf+0!SFA3c0<|K8m@w{P9NasArWE0-@_
zym0>9*)yk4ojh^;*wG`04;?(Pf8X9cyLau}v3=XtEt@xO+^~M#+BK_Jtz5Bu+0rG8
z7cE>cf8N|VvuDkmF@4(9DU&BnoY3Fb+tc0E+0owC+S1(A*ic_rTT@+CSy5hAT2fq8
zSdgEWo0FZDnUS8Bnv$H9m=GTq8xtKB84(^98WJ277~t>c>*MX^>EZ6?>f-F==wNSW
zYh!I?X<=?=YGP~z%u;%~I@(&A8tQ7QD#}WV3i5KYGSX6#65?W_BEmv~0{ncuJltHI
z9PDhYEX+)d3=E1tS-^#k4u}MmcMNQb2l|{!3?uk>*&Kzc8Vovmoey_1h|N6W67YkC
MO_ZNih=su#0PJDGCjbBd
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_gray/header_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_gray/header_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..13c550872c301162544967dd72ff09d22764e4bb
GIT binary patch
literal 1211
zcmZ?wbhEHbWMoigIKsg2>eZ`n-@d(l`}WtbUthj_`TY6wn>TNsKY#w=!-tnIUw-`f
z@!h+3uV26Z@#Dvf7cahk{rc(Cr}yvQ|Ni~^=g*(do;~~f_wV=b-=92r^5@T=|Ns9p
zU;xGc+!4M33NDEyi9p)MzM>#8IXksPAt^OIGtXA({qFrr3YjUkO5vuy2EGN(sTr9b
zRYj@6RemAKRoTgwDN6Qs3N{s16}bhusU?XD6}dTi#a0!zN{K1?NvT#qHb_`sNdc^+
zB->WW5hS4iveP-gC{@8!&po2Tt~skz|cV7z)0WFNY~KZ%Gk)t
zz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3jrH=2()A53EiFN27#ZmTRp=I1
z=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$AbT4JjNbScCOxdm`z^NRJr-qB0W&(*I;
zEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9yACy|0Us{x$3RJEPvZ}z!xhOTU
zB)=#mKR*W+iUAq(sS1ij46
z6e~kRV^>#aHy0;MQxii&S0g7kXJa>WXEPHQOGiUDCu5jim;B_?+|;}hnBEkGURRuY
zK}jLE0BEyIYEfocYKmJ?ey#%8%T}4V-QtAPJgD9j+-`BksaGH97=2L0B1JSz2$*_6
zOn9;da^ML+H4m8Di-5_R@&CWSe}4b^`Q!VyuU|fY`uO4fySHy%zk2!N`Lm}_9zS~c
z;Qqb4cW&RhdE@%Et5+^xx_IIIxwB_ZpE`Ns__3o$4j(#rVE?|odv@>Ixnujbty?y4
z+PGo;y0vRouUffc`Ld-;7B5=3VE(+hb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1O
zsj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^
z&)3J>%hSW%&DF)($cVN_17*Dkbhzd>|sA&!mwU=?%>ouWAx!(1lXzJOXQUt^_dGunNVUlv!;y@XS
zGE|%_0rx;bhRBd1TNDrxL}W-sRFFL#AIaG({=xD7NZ$AI`~AM}%lp08qcl>$3R##7
zTaIA>ivZRFECg5&unu58z#M>O0IL9|1Iz%}4zQxJu@PV&z)XNm02=^i0c-|X0x%C?
z8^Bh8-2i(5b^z=F04zOnpiLzo#lwOn*zdxkq%Mdx$ik~owX6n+g9{cDxGV*T-aek@
z^$?27JsS*E(NGo>8)`&WB8s}rf3hvc-)Mi^LjX%#+wFVXEUUMTzNRs
zl*^6+MBK7;j-nEY1ex%Xno&(LEXz6?9*^5bxXpUi5|VD!bfp!-$P^7(w`5Jl9Yvu^
ztFr=xUFm-BZO{*N8tM|OZW~^RER5>!W
zIzvP@+~uUwxsZVbOEY4cR-68d(YR)5W?a+pP=ycY1yNR=IECkVu2eNGK^0MHI6&A6
zq%2Du!+1+dLJ_u@_2n^4iKjRc@<#lj{Jbz5WFp1hG&ih?bqZ3gG*>#u4QAvzR#0?1
za~K)&AS6W$O~F$wb8_Zd{2BF{xKid?3NmsjyBNyZ*#B*GddYT=Gi|o59W)ysskYk<
z+tyj|?>~S4b>{S`lP8WJJ9^~sp@V-O*#F1xzwP^V?=Ovee%`%n=Z>GY|G4dkty{j|
z{N1K+H*Q$}&DZO`TDxZTs+B92f4OYwlEq&vTDV~T=kq?BJ7@N+PiM~f#VX40jowqn-+foF
z(w;pcCE-wUuzOLrKw(#oE%4|2^1L4VNRjT`JMXx?%Wa)Ib#xIq_^r3x+~KAhZ@9kw
zb=O{V^;K84YkS4zm$kXHb*q+_w8*~rqAU!{Ih~!lCUTvpb01+XI!qad`i>OFm0z
Y3vTS5-O7v(iN;18>(aW+m5p^h3;j~p)c^nh
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_gray/header_light_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_gray/header_light_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f10f54f329e27edba0b1b9bac207f813b030b070
GIT binary patch
literal 1211
zcmaJ>X<*bu6i&5>S`Rz`57cRjirUSw+wC@?OYLsDv|^yPtAHGuCPO#2IZV>-w#p@5
zsDOw9B6#13T!P#nf*_!vfFdG_DB_8?BF7_HyM-UF^COuz`M&SHm-%LTSH(&=DTgQ^
z)(`~1a)8wUYXQ~)Yy#K}unb@qzy^RN0CNBq0PF{t3$PVn3&4DU?EtF)W&$h%*a@%$
zU>3k0fPDbF0rnCnjC{x&AXXzmawPX%T9z^;xdA(<4%e%Cm^`p_C5coeO!g0ojA%x2
zLal7IaBXYfxZK(xa|&733zeq$lxAw!kx)u&)NMW$CMCtF!@N89mT3~DAx=Y>EcZSj
zFK5)SFbYzPPiBf4RLoLrpePgy6(T>wGBo3-S-+1B@c}>2FsN;iZZ=C9#@7h3wp?x$
zCKHZh@-&@HCaGkAGOT)<<@)V^yqsa-A
zZl(XWpqcHmx=p3qp=3j&Q<6!u6yvp&0gB@PLp7}(Z96sic)kBAY{y$nOxIxBXtHGN
z!VA1qCLgu16s-*+QIb{Ni_>^f?z-J_ZJh&0
zj~qVq&%wX{`ty(9fBW^9pAY=>;}73|_wD{~_I>@;-Y@rj@%ir0c73|@lN}#_w0+yw
z4?ozl`Th4cZQStg`gQNDUGw(pw^prOv3%LmC5somxp2W7^XJW-GyC;fug!e*m6u<7
z@rCD~d-j>9pL%k}^e3i0K6T3E#~z*Z$i#;yj34*VgAa_o|Gs<|fCsZZ{2GYizhpP1Fy=id-k%ddtuug9qI_a6tc?Zj9H~+)&-GuXuf*>#8by
z$0~$qr2N{lUg6T7JXaDb4i*Lc?vbK=h1XntRgWvLxV(D-nU5~J^pb8DUv%LGUAuHX
z|Gab0>2&s4XP%LF`e~<2)0*RxJ9GWY
V(U?w^qb648ZR;^*WA|L5=P_@A)5-t<
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..412edc7c0dd47e9e42b453570b770201aa776380
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQrr^8e#|f3BVSzW?O6y;pvoy7=?>g+6{l56(|HHd~u3Z0h
z?)3Kq$G+{l`s>W4pC_LGd+_rAqi6r_-~V&{@!vZ)ew{z`b=$!&Th4wzbolG`hktM0
z{(bq#*By`k-g@%y?$NJ1kAK_q^xwU6KMw!@|DS<2K=D6!gl~X?OJYePkhZa}C`e4s
zPAySLN=?tqvsHS(d%u!GW{Ry+xT&v!Z-H}aMy5wqQEG6NUr2IQcCuxPlD(aRO@&oO
zZb5EpNuokUZcbjYRfVlmVoH8esuhq864qBz04piUwpDTjNhpBqbj~kIRWQ{v&`mZl
zGf*%y)H5_TF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uV
zl9B=|ef{$Ca=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F
z6hI~>Cgqow*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L
z72#g21{a4^7NqJ2r55Lx7A2<$#mUmd#n8~z$jQyw
z*v;J8%*4gg(a_Dw7^c@HKe;qFHLnDwHwB^B6{lWMQpha;+U$~Alv$RV;#QQOs{r=0
zRVHq?IN>x8sy79<~*uHJ+md%?sZdku=?V8oAR<2mSZ0VB4ixw`J
zKX2}w*|TQOm_BXll*yAOPU!FJ?dk67>}YRmZE0?5Y^blRt*Nf6tSB!lEh#Q4EXdEx
z&B@Nn%t%j5O-W8lOo)$*jfswmj0g`44G9hk4Dk2!_3`%d^l*1`b#Zobbg;LxwXwFc
zv@ka_H8C~g9c?X54RtkD6=fww1$jAH8EGj=32`w|5n&-g0e(JS9&Rp94t6$H
z7G@?!1_s5SEZ{;%2SkF(I|epI2L_gp9Sv5(er`e@8GItH%?~sroTj%Xd`PS?o6&Vb
Ih=su#00GqF^#A|>
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_btnhover.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_btnhover.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ca220e9527acdbc7008361a155add304c74e39e6
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQp#aX7c}Y-z*U(%7W|(M$a6P8AjINh{culCV4|Z9`PizKqfX
znF%XHDv#x5Zi%ZnoRhdJG;)#e|NsBvmIYQF&(GVD)NrPxU{6ZY>adix;n`c`bGIjy
z?9Zq^UQm0oFk@3p>iWp?!`XGGiy3GG6#sKa_y#DrB$gxsX&d{Bg2d$P)DnfH)bz|e
zTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9IEy7UZUuBq~(o
z=HwMyRoE&ersOB3S^?Q0VSOb9u#%E&TO~)3gaXJ;=lr5n1yel(-DCqZ0|hffJwsy?
zb8~YY1tSAP1APM{eM2K%Lvt%*BP#;~1t?Gg+E$d3W)Uo-)&qM-FF8L~zap_f-%!s0$5%`T}$nPsUdZbkXI3Sci=W#V>=B~J68
zdQ)(_#Sy1oeV}9XK@p1-(J&!k>H#s~$ri|gC;ZerU}`S{CTqt3|Nj2@{p;tC@87<%{Rfo<4c}=;4F=_wL@gee33p>({PcxqRv3h4bgmo;iK$#u35cm<%;FYmM&SmXyJnS^XAT(J!|HS
z>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhNn(C^`it@73lH#Jmg8aPPob0U3jP$hB
zl;otug!s7FnCPg;i14t`kl>)e0DnJUA8#*D4|g|L7iT9&2YWkP8*3{|3v)A56JsM_
zmeSMJ(bm$`P*+n`QC3n^ke8E{k(QE_5El~_5f%~@;OFDz;pXDxU}s}xVP;}vU{L(Y
z0xooPKqRQVV_;Ksa6F)-Rbe%S?SWuafk@lwg_|x~*l`B1F()dhF*m6Qu`pNz09c~E
A=>Px#
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_light_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_green/header_light_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b07cb189cb03b416906185b731e309e58fb33746
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQp#aX7c}Y-z*U(#S==QHy;G_oNl}abmRE5&Cwhs0-KnCuWr0=4^YeBjHJm9a*prg9IxJ;vc=p!#-0cY^
z`!lMK7u23C%-9r@x<0b}aCY74Vg}j(#sAz9z5xm@i6x0Z+Qz=3ATc>RwL~E)H9a%W
zR_Xoj{Yna%DYi=CroINg1<0$Q$(AWf_I3(36;>6w1-Ypui3%0D
zIeEoa6}C!=DfvmMRzNmLSYJs2tfVB{R>=`0p#ZYeIlm}X!Bo#cH`&0({$jZP#0Sc6WwiTtMSp~VcLG1$aY?U%fN(!v>^~=l4
z^~#O)@{7{-4J|D#L1q{k=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJWlwVq6
zs|0i@#0$9vaAWg|^}ycIOU}>LuShJ=H`Fr#c?qV_*B8Ii++4Wo;*y|LgnO|XTpUta
zkg6Y)TAW{6l$;7wt_-rOz{Ixnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3VE(+hb7s$)
zIb-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZK
zEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uV
zl9B=|ef{$Ca=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F
z6hI~>Cgqow*eU^C3h_d20o>TUVm+{T^pf*)^(zt!^bPe4Kwg3=^!3HBG&dKny0|1L
z72#g21{a4^7NqJ2r55Lx7A2e!pYLa#n8~z$jQyw
z*v;J8%*4gg(a_Dw7^c@HKe;qFHLnDwHwB^B5~p5JQpha;+U$~Alv$RV;#QQOs{r=0
zRVHq?nBg=Jsy79<~*uHJ+md%?sZdku=?V8oAR<2mSZ0VB4ixw`J
zKX2}w*|TQOm_BXll*yAOPU!FJ?dk67>}YRmZE0?5Y^blRt*Nf6tSB!lEh#Q4EXdEx
z&B@Nn%t%j5O-W8lOo)$*jfswmj0g`44G9hk4Dk2!_3`%d^l*1`b#Zobbg;LxwXwFc
zv@ka_H8C~g9c?X54RtkD6=fww1$jAH8EGj=32`w|5n&-g0e(JS9&Rp94t6$H
z7G@?!1_s5SEZ{;%2SkF(I|eqz11@bsQ7l?>+#WIq*hsMPCo<2Bv10F4PIBa7k(l5i
I#KK?=01mF<82|tP
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_orange/header_btnhover.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_orange/header_btnhover.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b4bb52d4a1a5f94d4f14d561e4653886248a0d74
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQrrf3D}RiDv)jcz*5D|3An3|19?}9Xg-dwSM%Oer#3$+@bxo
z$KcO2`~UO(zx5dXpW*U*vi1L2p1&qpernVB-edA}g4y3`j-T6g{?GCGH_hq)Jm3Gb
zJpM26`_ifRdy4J<`2qj`|7V~jQ2fsw;Txdfl30=mq;2dg3KEmEQ%e+*Qqwc@Y?a>c
z-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(;w+TacStlBiITo0C^;
zRbi`?n3A8AY6WD2g!Ppaz)DK8ZIv8B5(*$Yo%4%Q6-@OEbdwFt3>3@^^$d+o%+1Yp
z6pRcE4fG9+^bL)44b82LjjRj|6rex}Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M(T(8_%
zFTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+TSP$$Sz2y8{{ffi_eM3D1ke6TzeSPsO&CP|YE-nd5MYtEM!Nnn!1*!T$
zsm1xFMaii^<;ozd3ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As^FWLoS6sWgVp=`
zT6yLbmn7yTr+T{BDgjN<%gju%ay4-?wlFs_bh0!xG&FQIa&mJvb~AT2GjXwWG<0(^
zhUs<5PcF?(%`1WFO+n~2!l@UO6mkoIHoK%2WtOF;xE1B+DuBIgm5I|W#%?&xgX&Ge
z?G^)^di8;h(Fa8=QbfaqfT;(>geO}d2cGa#^MI+n2$-xH|Nr~@=l8FlKfZta`sMSd
zk00K@d;8|~tCugHKYRM*@uPti4*$!dV9LNIy>6iT3ec%8XM~CYHO;iDl5v%N=u513Jdb{a&xk?GBeWCQd5$X
z5)DCA|t}XLPLUs0t5X0e0{vVJU!gqTwR=<93AZKY;CNqEG^8PA;`jD4FD{W!pHys
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_orange/header_light_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_orange/header_light_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..67c692f9f450e5a8460b3896ec612b9582f03885
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQrrf3D}RiDv)jcz*5D|3An3|19?}9Xg-dwSM%Oer#3$+@bxo
z$KcO2`~UO(zx5dXpW*U*vi1L2p1&qpernVB-edA}g4y3`j-T6g{?GCGH_hq)Jm3Gb
zJpM26``D`SrBmUo-)&qM-FF8L~zap_f-%!s0$5%`T}$nPsUdZbkXI3Sci=W#V>=0Z#LvdQ)(_
z#So`neV}9XK@p1-(J&!k>H#s~$ri|gC;ZerU}`S{CTqt3|Nj2@{p;tC@87<%{Rfo<4c}=;4F=_wL@gee33p>({PcxqRv3h4bgmo;iK$#u35cm<%;FYmM&SmXyJnS^XAT(J!|HS>C>i8
znLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhNn(C^`it@73lH#Jmg8aPPob0U3jP$hBl;otu
zg!s7FnCPg;i14t`kl>)e0DnJUA8#*D4|g|L7iT9&2YWkP8*3{|3v)A56JsM_meSMJ
z(bm$`P*+n`QC3n^ke8E{k(QE_5El~_5f%~@;OFDz;pXDxU}s}xVP;}vU{L(Y0xo)V
vKqRQVV_;Ks5Lj{WVgd()V@hyEicZgYb|uab0g>ZL4-8{O+C9|;Ss1JVl3u{D
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_red/header_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_red/header_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1a6f1465c6239ce407a75ba86af7d597cfbe31f4
GIT binary patch
literal 1312
zcmcIkSzy#u6iu}j6&Jv|qo%1MYG;zn(rH46GLvDTYOuCda5v37Iwm^}k>^r6VHuai}o#Kb%pYJ1i_vM^(@69{!O(_l+FhT~Fi#1^w
zGy{V;i&%!loWr*#`R(u&xUZ48ooPSl`
zf>?!2yaH89il1m*x{Sc3h@Y75)ucNa1Y2{*lmB>VhqKSB6oQ=zxj7$NK
z%hig(#{Gm4Q7aH@&Fy89z>^TO%1;FB54fF^Q+0%Uos>hQ@+mx@cG7N-&*#g-T@+1`
zl#8TY4%)}MT`Wc6LxZrg>5-XiX(&9D%ZmI&)HF4gBxA9dGv;=xdL>CS3}b7!Tn-E2
zFzOUjh&vP`H>D6lhNw%LDX9u>D+(2At?4JMO8;&_)`n#j!ulOrmB~#YIW)_mPA!kHKMA9
zb7fwf7eq<1<0PKv*_0X-wPd-+o(|jA3Wkl36wB?pW$O(1b1*T`-`CsI-PPIA-gcmM|GvF@cJJD`
zWBazPTQ+ZM*|=f-xT3kUwL`)OE13g{BzGf^Yl|sKJoZtk1l%T;fEf4;QssW
zUASQWynE)}eOJSscicYbwp(Z4a`R0$-f(?=T|73c)-?1QO;zOTs_Ud^2KO6S^
zZrb~!cIS)Cm7hvC{chUxw`Jd}tX1y{)_*M7^sn{c+k&;v(wD!;T=6Dn&FAvXPt%ru
zui5dZb>ElDtv?(0zRX(rp=jfu=KcTw|7V~LQ2fsw;Txdfl30=mq;2dg3KEmEQ%e+*
zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(;w+TacSt
zlBiITo0C^;Rbi`?n3A8AY6WD2g!Ppaz)DK8ZIv8B5(*$Yo%4%Q6-@OEbdwFt3>3@^
z^$d+o%+1Yp6pRcE4fG9+^bL)44b82LjjRj|6rex}Xj@TAnpKdC8`Lf!&sHg;q@=(~
zU%$M(T(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+TSP$$Sz2y8{{ffi_eM3D1ke6TzeSPsO&CP|YE-nd5MYtEM
z!Nnn!1*!T$sm1xFMaii^<;ozd3ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*As^FWL
zoS6sWgVp=`T6yLbmn7yTr+T{BDgjN<%gju%vNUxvbat^cbFwrwGBk8Ga&mJvb~AT2
zGjXwWG<0(^hUs<5PcF?(%`1WFO+n~2$Eg>T6mkoIHoK%2WtOF;xE1B+DuBIgm5IeI
zrjAY)CYH{IIL(9VO~K+8s9qzSdi8;h(Fa8=QbfaqfT;(>geO}d2cGa#^MI+n2$-xH
z|Nr~@=l8FlKfZta`sMSdk00K@d;8|~tCugHKYRM*@uPti4*$!dV9LNIy>6iT3ec%8XM~CYHO;iDl5v%N=u51
z3Jdb{a&xk?GBeWCQd5$X5)DCA|t}XLPLUs0t5X0e0{vVJU!gqTwR=<93AZK
zY;CNqEG^8nNwFz&b48qqJ&k4&p|^*RTa?#48lK6
M^w_&SgjpD@0il4;l>h($
literal 0
HcmV?d00001
diff --git a/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_red/header_light_btnback.gif b/html/webapp/modules/menu/files/images/jq_gnavi_pldwn_red/header_light_btnback.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3dd1639f0424986cdf001e9598721eb6c62735c2
GIT binary patch
literal 1312
zcmZ?wbhEHbWMoigxXQrrCV$P3x}E=854_1+^R0UO=kiTotG7MRSpK2KO6S^
zZrb~!cIS)Cm7hvC{chUxw`Jd}tX1y{)_*M7^sn{c+k&;v(wD!;T=6Dn&FAvXPt%ru
zui5dZb>ElDtv?(0zRX(rp=jf?)TMu#_cPE2DE{Y;@C{IKNi0bO(l+)L1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&Psj#ZZEyztR
zNmQuF&B-gas<2f`Ovz75wF0t1!um=IU?nBlwn~m52?day&iO^D3Z{Any2%D+1`1||
zdWOa(=H}))3PuKo2Koj@`i4fjhUQkrMpgy}3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0
zuU}qXu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~
zr2NtnTP2`NAzsKWfE$}vtOxdvUUGh}ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB
z;NpiyW)Z+ZoqU2Pda%GTJ1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s>P;d@5Rq#zr
z&ddYx!Rmc|tvvIJOA_;vQ$1a5m4GJbWoD*WS(-W-I=fgpI$4?;85+78Ik`C-yO}$i
znE=HM-JFbJdR_99OLJ56N?>|Z5PF?(>IEf*+ybD@E~!PCWvMA{Mftf3U@u!`;&zJ#
zPV=C8Q*gV*5~p5$pkwqw5sMVjFd<;-0Wsmp7RZ4o{M0;PYA*sNYsUZo{{H#>>*tT}
z-@bnN{ORL|_wU}mdHw3;i|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa;
z^t9BJ<&e?MOzZ!b>|cQ;oTXD3GodplbjYb#3&b2C#D
zV25SHV
Ct <{strip}>
+<{assign var="now_thread_num" value=$action.thread_num}>
+<{assign var="now_parent_id" value=$action.parent_id}>
+<{assign var="menus" value=$action.menus.$now_thread_num.$now_parent_id}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_blue_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_blue_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_blue_highlight"}>
+
+<{include file="menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_init.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_init.html
new file mode 100644
index 0000000..2a547e3
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_init.html
@@ -0,0 +1,50 @@
+<{strip}>
+<{assign var="menus" value=$action.menus.0.0}>
+<{assign var="thread_nest" value=0}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_blue_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_blue_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_blue_highlight"}>
+
+
+<{include file="../menu_script.html"}>
+
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_list.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_list.html
new file mode 100644
index 0000000..159fd9d
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_blue/menu_view_main_list.html
@@ -0,0 +1,3 @@
+<{strip}>
+ <{include file="../jq_gnavi_pldwn_gray/menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_detail.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_detail.html
new file mode 100644
index 0000000..2118f31
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_detail.html
@@ -0,0 +1,11 @@
+<{strip}>
+<{assign var="now_thread_num" value=$action.thread_num}>
+<{assign var="now_parent_id" value=$action.parent_id}>
+<{assign var="menus" value=$action.menus.$now_thread_num.$now_parent_id}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_gray_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_gray_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_gray_highlight"}>
+
+<{include file="menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_init.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_init.html
new file mode 100644
index 0000000..cde7810
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_init.html
@@ -0,0 +1,50 @@
+<{strip}>
+<{assign var="menus" value=$action.menus.0.0}>
+<{assign var="thread_nest" value=0}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_gray_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_gray_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_gray_highlight"}>
+
+
+<{include file="../menu_script.html"}>
+
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_list.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_list.html
new file mode 100644
index 0000000..1808cff
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_gray/menu_view_main_list.html
@@ -0,0 +1,108 @@
+<{strip}>
+
+
+<{* スレッド階層が1以上のときはプルダウン対応とする(2以上は横に出る。推奨は2まで) 0のときはグローバルナビに横並び。*}>
+<{if $thread_nest>=1}>
+
+<{/if}>
+
+
+
+<{foreach from=$menus item=menu}>
+
+<{if $menu.space_type == _SPACE_TYPE_PUBLIC}>
+
+ <{* ノードかどうかでクラス変更 *}>
+ <{assign var="now_page_id" value=$menu.page_id}>
+ <{assign var="next_thread_num" value=$menu.thread_num+1}>
+
+ <{if $menu.space_type == _SPACE_TYPE_PUBLIC}>
+ <{assign var="thread_num" value=$menu.thread_num-1}>
+ <{else}>
+ <{assign var="thread_num" value=$menu.thread_num}>
+ <{/if}>
+
+
+ <{if $thread_num <= 0}>
+ <{assign var="display_flag" value=$smarty.const._ON}>
+ <{/if}>
+
+
+ <{if $menu.thread_num != 0 ||
+ ($menu.space_type != _SPACE_TYPE_PUBLIC && !($menu.space_type == _SPACE_TYPE_GROUP && $menu.default_entry_flag == _ON) && !($menu.space_type == _SPACE_TYPE_GROUP && $menu.private_flag == _OFF && $menu.thread_num == 0 && !isset($action.menus.$next_thread_num.$now_page_id|smarty:nodefaults)))}>
+ <{assign var="display_flag" value=$action.main_active_node_arr.$now_page_id}>
+ <{*アクティブかどうか*}>
+ <{if $action.main_page_id == $menu.page_id}>
+ <{assign var="class_name" value="nowrap $pldwn_highlight_class_name _menu_active"}>
+ <{elseif $display_flag == $smarty.const._ON }>
+ <{assign var="class_name" value="nowrap $pldwn_highlight_class_name "}>
+ <{else}>
+ <{assign var="class_name" value="nowrap"}>
+ <{/if}>
+ <{* スペースタイプでクラス変更 *}>
+ <{if $menu.space_type == _SPACE_TYPE_PUBLIC}>
+ <{assign var="top_class_name" value=""}>
+ <{assign var="space_type_class_name" value=""}>
+ <{elseif $menu.space_type == _SPACE_TYPE_GROUP}>
+ <{assign var="top_class_name" value=""}>
+ <{assign var="space_type_class_name" value=""}>
+ <{/if}>
+ <{*プライベートかいなか*}>
+ <{if $menu.private_flag}>
+ <{assign var="top_class_name" value=""}>
+ <{assign var="space_type_class_name" value=""}>
+ <{/if}>
+ <{*ノードで下にページ(ノード)がない場合、表示しない*}>
+ <{*if $menu.page_name != "" && ($menu.action_name!="" || $action.menus.$next_thread_num.$now_page_id)*}>
+ <{if $menu.action_name!="" && $menu.page_name != "" && $menu.visibility_flag == _ON && !($menu.page_id == $menu.room_id && $menu.display_flag == _OFF && $menu.authority_id < _AUTH_CHIEF)}>
+
+
+ <{if $action.menus.$next_thread_num.$now_page_id
+ &&
+ !($menu.page_id == $menu.room_id && $menu.display_flag == _OFF && $menu.authority_id < _AUTH_CHIEF)}>
+
+ <{assign var="menus" value=$action.menus.$next_thread_num.$now_page_id}>
+ <{assign var="old_thread_nest" value=$thread_nest}>
+ <{if $menu.private_flag == $smarty.const._ON}>
+ <{assign var="thread_nest" value=$menu.thread_num+1}>
+ <{else}>
+ <{assign var="thread_nest" value=$menu.thread_num}>
+ <{/if}>
+ <{include file="menu_view_main_list.html"}>
+ <{assign var="thread_nest" value=$old_thread_nest}>
+ <{/if}>
+
+ <{/if}>
+ <{/if}>
+
+
+
+ <{if ($menu.space_type==_SPACE_TYPE_PUBLIC && $menu.thread_num == 0) ||
+ ($menu.space_type == _SPACE_TYPE_GROUP && $menu.private_flag == _ON && $menu.thread_num==0) ||
+ ($menu.space_type == _SPACE_TYPE_GROUP && $menu.private_flag == _OFF && $menu.thread_num==0)}>
+ <{if $action.menus.$next_thread_num.$now_page_id && !($menu.page_id == $menu.room_id && $menu.display_flag == _OFF && $menu.authority_id < _AUTH_CHIEF)}>
+ <{assign var="menus" value=$action.menus.$next_thread_num.$now_page_id}>
+ <{assign var="old_thread_nest" value=$thread_nest}>
+ <{if $menu.private_flag == $smarty.const._ON}>
+ <{assign var="thread_nest" value=$menu.thread_num+1}>
+ <{else}>
+ <{assign var="thread_nest" value=$menu.thread_num}>
+ <{/if}>
+ <{include file="menu_view_main_list.html"}>
+ <{assign var="thread_nest" value=$old_thread_nest}>
+ <{/if}>
+ <{/if}>
+
+
+<{/if}>
+
+<{/foreach}>
+
+<{if $thread_nest>=1}>
+
+<{/if}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_detail.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_detail.html
new file mode 100644
index 0000000..1754c73
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_detail.html
@@ -0,0 +1,11 @@
+<{strip}>
+<{assign var="now_thread_num" value=$action.thread_num}>
+<{assign var="now_parent_id" value=$action.parent_id}>
+<{assign var="menus" value=$action.menus.$now_thread_num.$now_parent_id}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_green_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_green_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_green_highlight"}>
+
+<{include file="menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_init.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_init.html
new file mode 100644
index 0000000..91e4476
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_init.html
@@ -0,0 +1,50 @@
+<{strip}>
+<{assign var="menus" value=$action.menus.0.0}>
+<{assign var="thread_nest" value=0}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_green_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_green_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_green_highlight"}>
+
+
+<{include file="../menu_script.html"}>
+
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_list.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_list.html
new file mode 100644
index 0000000..159fd9d
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_green/menu_view_main_list.html
@@ -0,0 +1,3 @@
+<{strip}>
+ <{include file="../jq_gnavi_pldwn_gray/menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_detail.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_detail.html
new file mode 100644
index 0000000..9d9c728
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_detail.html
@@ -0,0 +1,11 @@
+<{strip}>
+<{assign var="now_thread_num" value=$action.thread_num}>
+<{assign var="now_parent_id" value=$action.parent_id}>
+<{assign var="menus" value=$action.menus.$now_thread_num.$now_parent_id}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_orange_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_orange_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_orange_highlight"}>
+
+<{include file="menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_init.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_init.html
new file mode 100644
index 0000000..f8522ef
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_init.html
@@ -0,0 +1,50 @@
+<{strip}>
+<{assign var="menus" value=$action.menus.0.0}>
+<{assign var="thread_nest" value=0}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_orange_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_orange_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_orange_highlight"}>
+
+
+<{include file="../menu_script.html"}>
+
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_list.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_list.html
new file mode 100644
index 0000000..159fd9d
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_orange/menu_view_main_list.html
@@ -0,0 +1,3 @@
+<{strip}>
+ <{include file="../jq_gnavi_pldwn_gray/menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_detail.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_detail.html
new file mode 100644
index 0000000..4812c68
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_detail.html
@@ -0,0 +1,11 @@
+<{strip}>
+<{assign var="now_thread_num" value=$action.thread_num}>
+<{assign var="now_parent_id" value=$action.parent_id}>
+<{assign var="menus" value=$action.menus.$now_thread_num.$now_parent_id}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_red_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_red_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_red_highlight"}>
+
+<{include file="menu_view_main_list.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_init.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_init.html
new file mode 100644
index 0000000..5659bc1
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_init.html
@@ -0,0 +1,50 @@
+<{strip}>
+<{assign var="menus" value=$action.menus.0.0}>
+<{assign var="thread_nest" value=0}>
+
+<{assign var="pldwn_sub_class_name" value="menu_jq_gnavi_pldwn_red_sub"}>
+<{assign var="pldwn_btn_class_name" value="menu_jq_gnavi_pldwn_red_btn"}>
+<{assign var="pldwn_highlight_class_name" value="menu_jq_gnavi_pldwn_red_highlight"}>
+
+
+<{include file="../menu_script.html"}>
+
+<{/strip}>
diff --git a/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_list.html b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_list.html
new file mode 100644
index 0000000..159fd9d
--- /dev/null
+++ b/html/webapp/modules/menu/templates/jq_gnavi_pldwn_red/menu_view_main_list.html
@@ -0,0 +1,3 @@
+<{strip}>
+ <{include file="../jq_gnavi_pldwn_gray/menu_view_main_list.html"}>
+<{/strip}>
From 4be13ee244ba63f09905c60ec8265a1b8dcd1fd4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=97=A4=E5=8E=9F=E3=82=8A=E3=81=8B?=
Date: Fri, 14 Jun 2013 11:08:48 +0900
Subject: [PATCH 005/109] =?UTF-8?q?=E3=82=A2=E3=83=B3=E3=82=B1=E3=83=BC?=
=?UTF-8?q?=E3=83=88=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB=E3=81=AB?=
=?UTF-8?q?=E3=82=AD=E3=83=BC=E3=83=95=E3=83=AC=E3=83=BC=E3=82=BA=E6=A9=9F?=
=?UTF-8?q?=E8=83=BD=E3=80=81=E3=81=8A=E3=82=88=E3=81=B3=E5=9B=9E=E7=AD=94?=
=?UTF-8?q?=E7=B5=90=E6=9E=9C=E3=82=92=E8=A6=8B=E3=81=9B=E3=81=AA=E3=81=84?=
=?UTF-8?q?=E3=82=AA=E3=83=97=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E8=BF=BD?=
=?UTF-8?q?=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
パブリックに置いているアンケートでも、キーフレーズを入力しないと回答できない機能を追加(会員登録時のキーフレーズに類似したもの)
同一IDを使いまわしている環境に対応するため、「回答結果を見せない」オプションを選択できる機能を追加
---
.../action/edit/questionnaire/entry/maple.ini | 2 +
.../action/main/answer/maple.ini | 1 +
.../action/main/confirm/maple.ini | 1 +
.../questionnaire/action/main/start/maple.ini | 1 +
.../questionnaire/components/Action.class.php | 3 +
.../questionnaire/components/View.class.php | 12 ++--
.../files/js/default/questionnaire.js | 26 +++++++++
.../questionnaire/language/chinese/main.ini | 9 +++
.../questionnaire/language/english/main.ini | 9 +++
.../questionnaire/language/japanese/main.ini | 9 +++
.../modules/questionnaire/sql/mysql/table.sql | 3 +
.../default/questionnaire_mobile_head.html | 8 ++-
.../default/questionnaire_mobile_keypass.html | 9 +++
.../questionnaire_mobile_question_form.html | 2 +
.../default/questionnaire_mobile_start.html | 3 +
...onnaire_view_edit_questionnaire_entry.html | 38 ++++++++++++
.../default/questionnaire_view_main_head.html | 6 ++
.../questionnaire_view_main_keypass.html | 12 ++++
...questionnaire_view_main_question_form.html | 2 +
.../questionnaire_view_main_start.html | 1 +
.../questionnaire/update/Update.class.php | 21 +++++++
.../validator/Validator_Keypass.class.php | 53 +++++++++++++++++
.../Validator_KeypassCheck.class.php | 58 +++++++++++++++++++
.../view/main/answer/Answer.class.php | 4 ++
.../view/main/init/Init.class.php | 10 ++++
.../view/main/summary/Summary.class.php | 4 ++
.../questionnaire/view/main/summary/maple.ini | 3 +-
27 files changed, 303 insertions(+), 7 deletions(-)
create mode 100644 html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_keypass.html
create mode 100644 html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_keypass.html
create mode 100644 html/webapp/modules/questionnaire/validator/Validator_Keypass.class.php
create mode 100644 html/webapp/modules/questionnaire/validator/Validator_KeypassCheck.class.php
diff --git a/html/webapp/modules/questionnaire/action/edit/questionnaire/entry/maple.ini b/html/webapp/modules/questionnaire/action/edit/questionnaire/entry/maple.ini
index 566e4cf..4b3793d 100644
--- a/html/webapp/modules/questionnaire/action/edit/questionnaire/entry/maple.ini
+++ b/html/webapp/modules/questionnaire/action/edit/questionnaire/entry/maple.ini
@@ -8,6 +8,8 @@ questionnaire_name.required = "1:lang._required,lang.questionnaire_questionnaire
questionnaire_name.maxlength = "1,_VALIDATOR_TITLE_LEN:lang._maxlength_error,lang.questionnaire_questionnaire_name,_VALIDATOR_TITLE_LEN"
period.date:period = "1:lang._invalid_date,lang.questionnaire_period_text"
key:period_checkbox,period.questionnaire.period:period = "1:lang.questionnaire_period_invalid"
+keypass_phrase.maxlength = "1,_VALIDATOR_TITLE_LEN:lang._maxlength_error,lang.questionnaire_keypass,_VALIDATOR_TITLE_LEN"
+key:keypass_use_flag,keypass_phrase.questionnaire.Keypass = "1:lang.questionnaire_keypass_invalid"
[View]
create = "action:questionnaire_view_edit_question_list"
diff --git a/html/webapp/modules/questionnaire/action/main/answer/maple.ini b/html/webapp/modules/questionnaire/action/main/answer/maple.ini
index 4fde564..3091e2e 100644
--- a/html/webapp/modules/questionnaire/action/main/answer/maple.ini
+++ b/html/webapp/modules/questionnaire/action/main/answer/maple.ini
@@ -8,6 +8,7 @@ image_authentication,id.imageauth:g="1:lang._invalid_image_auth_input"
key:questionnaire.questionnaire.answer:g = "1:lang._invalid_input"
key:block_id,questionnaire,question_id,answer_value,choice_id.questionnaire.answerRequired:g = "1:lang.questionnaire_answer_required"
key:block_id,questionnaire.questionnaire.summaryExists:g = "1:lang._invalid_input"
+key:questionnaire,keypass_phrase,block_id.questionnaire.keypassCheck:g = "1:lang.questionnaire_keypass_invalid_input"
[View]
define:theme = 1
diff --git a/html/webapp/modules/questionnaire/action/main/confirm/maple.ini b/html/webapp/modules/questionnaire/action/main/confirm/maple.ini
index fac00a8..a07068b 100644
--- a/html/webapp/modules/questionnaire/action/main/confirm/maple.ini
+++ b/html/webapp/modules/questionnaire/action/main/confirm/maple.ini
@@ -4,6 +4,7 @@ action = "questionnaire_view_main_question"
[ValidateDef]
key:room_id,block_id,questionnaire_id.questionnaire.questionnaireExists:g = "1:lang._invalid_input"
key:block_id,questionnaire_id.questionnaire.questionnaireView:g = "1:lang._invalid_input"
+key:questionnaire,keypass_phrase,block_id.questionnaire.keypassCheck:g = "1:lang.questionnaire_keypass_invalid_input"
image_authentication,id.imageauth:g="1:lang._invalid_image_auth_input"
key:questionnaire.questionnaire.answer:g = "1:lang._invalid_input"
key:block_id,questionnaire,question_id,answer_value,choice_id.questionnaire.answerRequired:g = "1:lang.questionnaire_answer_required"
diff --git a/html/webapp/modules/questionnaire/action/main/start/maple.ini b/html/webapp/modules/questionnaire/action/main/start/maple.ini
index da1dafc..5084ec0 100644
--- a/html/webapp/modules/questionnaire/action/main/start/maple.ini
+++ b/html/webapp/modules/questionnaire/action/main/start/maple.ini
@@ -2,6 +2,7 @@
key:room_id,block_id,questionnaire_id.questionnaire.questionnaireExists:g = "1:lang._invalid_input"
key:block_id,questionnaire_id.questionnaire.questionnaireView:g = "1:lang._invalid_input"
image_authentication,id.imageauth:g="1:lang._invalid_image_auth_input"
+key:questionnaire,keypass_phrase,block_id.questionnaire.keypassCheck:g = "1:lang.questionnaire_keypass_invalid_input"
[TokenExtra]
action = "questionnaire_view_main_question"
diff --git a/html/webapp/modules/questionnaire/components/Action.class.php b/html/webapp/modules/questionnaire/components/Action.class.php
index 2fce26a..a25e976 100644
--- a/html/webapp/modules/questionnaire/components/Action.class.php
+++ b/html/webapp/modules/questionnaire/components/Action.class.php
@@ -78,7 +78,10 @@ function setQuestionnaire()
$params = array(
"image_authentication" => intval($this->_request->getParameter("image_authentication")),
+ 'keypass_use_flag' => intval($this->_request->getParameter('keypass_use_flag')),
+ 'keypass_phrase' => $this->_request->getParameter('keypass_phrase'),
"total_flag" => intval($this->_request->getParameter("total_flag")),
+ "answer_show_flag" => intval($this->_request->getParameter("answer_show_flag")),
"mail_send" => intval($this->_request->getParameter("mail_send")),
"mail_subject" => $this->_request->getParameter("mail_subject"),
"mail_body" => $this->_request->getParameter("mail_body")
diff --git a/html/webapp/modules/questionnaire/components/View.class.php b/html/webapp/modules/questionnaire/components/View.class.php
index 9bab2b0..211d2f2 100644
--- a/html/webapp/modules/questionnaire/components/View.class.php
+++ b/html/webapp/modules/questionnaire/components/View.class.php
@@ -206,8 +206,11 @@ function &getDefaultQuestionnaire()
"nonmember_flag" => constant($config["nonmember_flag"]["conf_value"]),
"image_authentication" => constant($config["image_authentication"]["conf_value"]),
"anonymity_flag" => constant($config["anonymity_flag"]["conf_value"]),
+ "keypass_use_flag" => constant($config["keypass_use_flag"]["conf_value"]),
+ "keypass_phrase" => $config["keypass_phrase"]["conf_value"],
"repeat_flag" => constant($config["repeat_flag"]["conf_value"]),
- "total_flag" => constant($config["total_flag"]["conf_value"])
+ "total_flag" => constant($config["total_flag"]["conf_value"]),
+ "answer_show_flag" => constant($config["answer_show_flag"]["conf_value"])
);
return $questionnaire;
@@ -232,7 +235,8 @@ function &getQuestionnaire()
$format = "";
if ($actionName == "questionnaire_view_edit_questionnaire_entry") {
$sql .= ", questionnaire_type, period, ".
- "nonmember_flag, image_authentication, anonymity_flag, repeat_flag, total_flag, ".
+ "nonmember_flag, image_authentication, anonymity_flag, keypass_use_flag, keypass_phrase, ".
+ "repeat_flag, total_flag, answer_show_flag, ".
"answer_count, mail_send, mail_subject, mail_body ";
$format = _INPUT_DATE_FORMAT;
@@ -249,7 +253,7 @@ function &getQuestionnaire()
} elseif ($edit) {
$sql .= ", questionnaire_type, period, ".
- "nonmember_flag, anonymity_flag, total_flag, ".
+ "nonmember_flag, anonymity_flag, total_flag, answer_show_flag, ".
"answer_count ";
}
@@ -303,7 +307,7 @@ function &getCurrentQuestionnaire()
);
$sql = "SELECT Q.questionnaire_id, Q.questionnaire_name, Q.icon_name, Q.status, Q.questionnaire_type, Q.period, ".
- "Q.nonmember_flag, Q.image_authentication, Q.anonymity_flag, Q.repeat_flag, Q.total_flag, ".
+ "Q.nonmember_flag, Q.image_authentication, Q.anonymity_flag, Q.keypass_use_flag, Q.keypass_phrase, Q.repeat_flag, Q.total_flag, Q.answer_show_flag, ".
"Q.answer_count, Q.mail_send ".
"FROM {questionnaire_block} B ".
"INNER JOIN {questionnaire} Q ".
diff --git a/html/webapp/modules/questionnaire/files/js/default/questionnaire.js b/html/webapp/modules/questionnaire/files/js/default/questionnaire.js
index 41affc3..ac5c5b8 100644
--- a/html/webapp/modules/questionnaire/files/js/default/questionnaire.js
+++ b/html/webapp/modules/questionnaire/files/js/default/questionnaire.js
@@ -164,6 +164,12 @@ clsQuestionnaire.prototype = {
element.disabled = false;
Element.removeClassName($("questionnaire_image_authentication_label" + this.id), "disable_lbl");
}
+ element = $("questionnaire_keypass_use_flag" + this.id);
+ if (element) {
+ element.disabled = false;
+ Element.removeClassName($("questionnaire_keypass_use_flag_label" + this.id), "disable_lbl");
+ this.changeKeypass(element.checked);
+ }
} else {
$("questionnaire_repeat" + this.id).disabled = false;
$("questionnaire_repeat" + this.id).checked = false;
@@ -176,6 +182,26 @@ clsQuestionnaire.prototype = {
element.disabled = true;
Element.addClassName($("questionnaire_image_authentication_label" + this.id), "disable_lbl");
}
+ element = $("questionnaire_keypass_use_flag" + this.id);
+ if (element) {
+ element.checked = false;
+ element.disabled = true;
+ Element.addClassName($("questionnaire_keypass_use_flag_label" + this.id), "disable_lbl");
+ this.changeKeypass(element.checked);
+ }
+ }
+ },
+
+ changeKeypass: function(keypass) {
+ if(keypass) {
+ if ($("questionnaire_keypass_phrase" + this.id)) {
+ $("questionnaire_keypass_phrase" + this.id).disabled = false;
+ }
+ }
+ else {
+ if ($("questionnaire_keypass_phrase" + this.id)) {
+ $("questionnaire_keypass_phrase" + this.id).disabled = true;
+ }
}
},
diff --git a/html/webapp/modules/questionnaire/language/chinese/main.ini b/html/webapp/modules/questionnaire/language/chinese/main.ini
index 189b387..ab7c0ad 100644
--- a/html/webapp/modules/questionnaire/language/chinese/main.ini
+++ b/html/webapp/modules/questionnaire/language/chinese/main.ini
@@ -43,14 +43,18 @@ questionnaire_type_random = "随机"
questionnaire_period = "截止日期"
questionnaire_nonmember = "允许非成员作答"
questionnaire_image_authentication = "图片验证"
+questionnaire_keypass = "使用关键短语"
questionnaire_anonymity = "匿名回答"
questionnaire_repeat = "重复回答"
questionnaire_total = "公布统计结果"
+questionnaire_answer_show = "不要显示答题内容"
questionnaire_mail_note = "您可以使用关键字 {X-SITE_NAME},{X-ROOM}, {X-QUESTIONNAIRE_NAME}, {X-USER}, {X-TO_DATE}, {X-URL}. 每个关键字分别代表 网站名,房间名, 问卷标题,回答人, 回答日期和URL。"
[Questionnaire_Action_Edit_Questionnaire_Entry]
questionnaire_period_text = "截止日期"
questionnaire_period_invalid = "无效输入"
+questionnaire_keypass = "关键短语"
+questionnaire_keypass_invalid = "进入关键短语"
[Questionnaire_View_Edit_Question_List]
questionnaire_question_list_text = "您可以添加和编辑要回答的问题。"
@@ -103,6 +107,8 @@ questionnaire_goto_total = "统计结果"
questionnaire_goto_total_title = "显示%s的统计结果"
questionnaire_answer_start = "开始"
questionnaire_image_authentication_label = "图片验证:"
+questionnaire_keypass_label = "关键短语:"
+questionnaire_has_finished = "它是已经回答。谢谢你的帮助。"
[Questionnaire_View_Main_Single:Questionnaire_Action_Main_Answer]
questionnaire_single_question = "问题%s/%s:"
@@ -112,6 +118,9 @@ questionnaire_mobile_single_question = "[No.%s/%s问题]"
questionnaire_answer_required = "请输入回答。"
questionnaire_answer_textarea = "问答题回答的内容"
+[Questionnaire_Action_Main_Start:Questionnaire_Action_Main_Answer:Questionnaire_Action_Main_Confirm]
+questionnaire_keypass_invalid_input = "关键的一句是不正确的。"
+
[Questionnaire_Action_Main_Answer]
questionnaire_next_question = "下一个问题>>"
diff --git a/html/webapp/modules/questionnaire/language/english/main.ini b/html/webapp/modules/questionnaire/language/english/main.ini
index ba3e3c0..ac7f3ab 100644
--- a/html/webapp/modules/questionnaire/language/english/main.ini
+++ b/html/webapp/modules/questionnaire/language/english/main.ini
@@ -43,14 +43,18 @@ questionnaire_type_random = "random"
questionnaire_period = "Due date"
questionnaire_nonmember = "Answer of nonmember"
questionnaire_image_authentication = "Picture certification"
+questionnaire_keypass = "Key phrase"
questionnaire_anonymity = "It does anonymous."
questionnaire_repeat = "Repeat answer"
questionnaire_total = "Disclose the summary"
+questionnaire_answer_show = "Do not show the answer"
questionnaire_mail_note = "You may use the keywords {X-SITE_NAME}, {X-ROOM}、 {X-QUESTIONNAIRE_NAME}, {X-USER}, {X-TO_DATE}, {X-URL}. Each keyword stands for the site name, the room name the title of questionnaire, the respondent, the date and the url."
[Questionnaire_Action_Edit_Questionnaire_Entry]
questionnaire_period_text = "Due date"
questionnaire_period_invalid = "Invalid input"
+questionnaire_keypass = "Key phrase"
+questionnaire_keypass_invalid = "Please input key phrase."
[Questionnaire_View_Edit_Question_List]
questionnaire_question_list_text = "You can add and edit the questions to ask."
@@ -103,6 +107,7 @@ questionnaire_goto_total = "Summary"
questionnaire_goto_total_title = "Displaying the summary of %s"
questionnaire_answer_start = "Start"
questionnaire_image_authentication_label = "Picture certification:"
+questionnaire_keypass_label = "Key Phrase:"
[Questionnaire_View_Main_Single:Questionnaire_Action_Main_Answer]
questionnaire_single_question = "Question %s/%s:"
@@ -111,6 +116,10 @@ questionnaire_mobile_single_question = "[No. %s among/%s quesitons]"
[Questionnaire_Action_Main_Answer:Questionnaire_Action_Main_Confirm]
questionnaire_answer_required = "Please enter."
questionnaire_answer_textarea = "Content of answer of description type"
+questionnaire_keypass_invalid_input = "Key phrase does not match."
+
+[Questionnaire_Action_Main_Start:Questionnaire_Action_Main_Answer:Questionnaire_Action_Main_Confirm]
+questionnaire_keypass_invalid_input = "Invalid key phrase."
[Questionnaire_Action_Main_Answer]
questionnaire_next_question = "Next question >>"
diff --git a/html/webapp/modules/questionnaire/language/japanese/main.ini b/html/webapp/modules/questionnaire/language/japanese/main.ini
index c48c6af..b411a38 100644
--- a/html/webapp/modules/questionnaire/language/japanese/main.ini
+++ b/html/webapp/modules/questionnaire/language/japanese/main.ini
@@ -43,14 +43,18 @@ questionnaire_type_random = "ランダムに表示する"
questionnaire_period = "期限を指定する"
questionnaire_nonmember = "非会員の回答を受け付ける"
questionnaire_image_authentication = "画像認証を行う"
+questionnaire_keypass = "キーフレーズを使う"
questionnaire_anonymity = "匿名で回答させる"
questionnaire_repeat = "繰返しの回答をさせる"
questionnaire_total = "回答後に集計結果を表示する"
+questionnaire_answer_show = "回答内容を表示しない"
questionnaire_mail_note = "件名と本文には、 {X-SITE_NAME}、{X-ROOM}、 {X-QUESTIONNAIRE_NAME}、{X-USER}、 {X-TO_DATE}、{X-URL} というキーワードを使えます。 それぞれのキーワードは、 サイト名称、ルーム名称、 アンケート名称、回答者ハンドル名称、 回答日時、回答結果のURL に変換されて送信されます。"
[Questionnaire_Action_Edit_Questionnaire_Entry]
questionnaire_period_text = "期限"
questionnaire_period_invalid = "期限は未来の日付を入力してください"
+questionnaire_keypass = "キーフレーズ"
+questionnaire_keypass_invalid = "キーフレーズを入力して下さい。"
[Questionnaire_View_Edit_Question_List]
questionnaire_question_list_text = "質問の追加・編集・表示順変更ができます"
@@ -103,6 +107,8 @@ questionnaire_goto_total = "集計結果を見る"
questionnaire_goto_total_title = "%sの集計結果を表示します。"
questionnaire_answer_start = "始める"
questionnaire_image_authentication_label = "画像認証:"
+questionnaire_keypass_label = "キーフレーズ:"
+questionnaire_has_finished = "すでに回答済みです。ご協力ありがとうございました。"
[Questionnaire_View_Main_Single:Questionnaire_Action_Main_Answer]
questionnaire_single_question = "%s/%s問目:"
@@ -112,6 +118,9 @@ questionnaire_mobile_single_question = "[%s/%s問目]"
questionnaire_answer_required = "質問%sは必須項目です。"
questionnaire_answer_textarea = "記述式回答内容"
+[Questionnaire_Action_Main_Start:Questionnaire_Action_Main_Answer:Questionnaire_Action_Main_Confirm]
+questionnaire_keypass_invalid_input = "キーフレーズが間違っています。"
+
[Questionnaire_Action_Main_Answer]
questionnaire_next_question = "次の質問へ"
diff --git a/html/webapp/modules/questionnaire/sql/mysql/table.sql b/html/webapp/modules/questionnaire/sql/mysql/table.sql
index 4adc3ac..f23fdc0 100644
--- a/html/webapp/modules/questionnaire/sql/mysql/table.sql
+++ b/html/webapp/modules/questionnaire/sql/mysql/table.sql
@@ -15,8 +15,11 @@ CREATE TABLE `questionnaire` (
`nonmember_flag` tinyint(1) NOT NULL default '0',
`image_authentication` tinyint(1) NOT NULL default '0',
`anonymity_flag` tinyint(1) NOT NULL default '0',
+ `keypass_use_flag` tinyint(1) NOT NULL default '0',
+ `keypass_phrase` varchar(128) NOT NULL default '',
`repeat_flag` tinyint(1) NOT NULL default '0',
`total_flag` tinyint(1) NOT NULL default '0',
+ `answer_show_flag` tinyint(1) NOT NULL default '0',
`answer_count` int(11) NOT NULL default '0',
`mail_send` tinyint(1) NOT NULL default '0',
`mail_subject` varchar(255) NOT NULL default '',
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_head.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_head.html
index 64ed767..1a8615b 100644
--- a/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_head.html
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_head.html
@@ -17,9 +17,13 @@
<{if $action.answerLinkShow}>
-
+ <{if $action.questionnaire.answer_show_flag == $smarty.const._OFF}>
+
<{$lang.questionnaire_goto_answer}>
-
+
+ <{else}>
+ <{$lang.questionnaire_has_finished|smarty:nodefaults}>
+ <{/if}>
<{/if}>
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_keypass.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_keypass.html
new file mode 100644
index 0000000..8c54103
--- /dev/null
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_keypass.html
@@ -0,0 +1,9 @@
+<{strip}>
+<{* キーフレーズ認証項目用テンプレート *}>
+<{if $action.questionnaire.keypass_use_flag == _ON}>
+ <{$lang.questionnaire_keypass_label}>
+
+
+
+<{/if}>
+<{/strip}>
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_question_form.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_question_form.html
index 558f08d..42a7a95 100644
--- a/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_question_form.html
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_question_form.html
@@ -14,6 +14,8 @@
<{assign var="question" value="`$action.question`"}>
<{include file="questionnaire_mobile_question_answer.html"}>
<{else}>
+ <{include file="questionnaire_mobile_keypass.html"}>
+
<{foreach from=$action.questions item=question name="question"}>
<{include file="questionnaire_mobile_question_answer.html"}>
<{/foreach}>
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_start.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_start.html
index acb3a0d..1c1bc7a 100644
--- a/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_start.html
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_mobile_start.html
@@ -8,8 +8,11 @@
+
+ <{include file="questionnaire_mobile_keypass.html"}>
<{include file="questionnaire_mobile_image_authentication.html"}>
+
<{$token_form|smarty:nodefaults}>
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_edit_questionnaire_entry.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_edit_questionnaire_entry.html
index 7f830f1..7b53993 100644
--- a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_edit_questionnaire_entry.html
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_edit_questionnaire_entry.html
@@ -103,6 +103,22 @@
<{/if}>
+ <{if ($smarty.session._space_type != _SPACE_TYPE_PUBLIC && ($smarty.session._main_room_page.private_flag == _OFF || $smarty.session._main_room_page.default_entry_flag == _OFF))}>
+
+ <{else}>
+
+
+
+
+
+
+ <{$lang.questionnaire_keypass}>
+
+
+
+
+ <{/if}>
+
@@ -136,6 +152,17 @@
+
+
+
+
+
+
+ <{$lang.questionnaire_answer_show}>
+
+
+
+
<{$lang.questionnaire_mail_send}>
@@ -230,13 +257,20 @@
$("questionnaire_image_authentication<{$id}>").checked = true;
<{/if}>
+ <{if $action.questionnaire.keypass_use_flag == _ON}>
+ $("questionnaire_keypass_use_flag<{$id}>").checked = true;
+ <{/if}>
+ $("questionnaire_keypass_phrase<{$id}>").value = "<{$action.questionnaire.keypass_phrase}>";
+
questionnaireCls["<{$id}>"].changeNonmember($("questionnaire_nonmember<{$id}>").checked);
+ questionnaireCls["<{$id}>"].changeKeypass($("questionnaire_keypass_use_flag<{$id}>").checked);
<{/if}>
<{if $action.questionnaire.anonymity_flag == _ON}>
$("questionnaire_anonymity<{$id}>").checked = true;
<{/if}>
+
<{if $action.questionnaire.repeat_flag == _ON}>
$("questionnaire_repeat<{$id}>").checked = true;
<{/if}>
@@ -245,6 +279,10 @@
$("questionnaire_total<{$id}>").checked = true;
<{/if}>
+ <{if $action.questionnaire.answer_show_flag == _ON}>
+ $("questionnaire_answer_show<{$id}>").checked = true;
+ <{/if}>
+
<{if $action.questionnaire.mail_send == _ON && $action.questionnaire.anonymity_flag != _ON}>
$("questionnaire_mail_send_on<{$id}>").checked = true;
questionnaireCls["<{$id}>"].changeMailSend(true);
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_head.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_head.html
index eb0af86..fbfec41 100644
--- a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_head.html
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_head.html
@@ -15,9 +15,15 @@
<{/if}>
<{if $action.answerLinkShow}>
+ <{if $action.questionnaire.answer_show_flag==$smarty.const._OFF}>
<{$lang.questionnaire_goto_answer}>
+ <{else}>
+
+ <{$lang.questionnaire_has_finished|smarty:nodefaults}>
+
+ <{/if}>
<{/if}>
<{if $action.totalLinkShow}>
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_keypass.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_keypass.html
new file mode 100644
index 0000000..b44c3fc
--- /dev/null
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_keypass.html
@@ -0,0 +1,12 @@
+<{strip}>
+<{* キーパス項目用テンプレート *}>
+<{if $action.questionnaire.keypass_use_flag == _ON}>
+
+
+ <{$lang.questionnaire_keypass_label}>
+
+
+
+
+<{/if}>
+<{/strip}>
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_question_form.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_question_form.html
index a2b7206..46cb3b4 100644
--- a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_question_form.html
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_question_form.html
@@ -17,6 +17,8 @@
<{assign var="question" value="`$action.question`"}>
<{include file="questionnaire_view_main_question_answer.html"}>
<{else}>
+ <{include file="questionnaire_view_main_keypass.html"}>
+
<{foreach from=$action.questions item=question name="question"}>
<{include file="questionnaire_view_main_question_answer.html"}>
<{/foreach}>
diff --git a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_start.html b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_start.html
index fb89bb4..b984869 100644
--- a/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_start.html
+++ b/html/webapp/modules/questionnaire/templates/default/questionnaire_view_main_start.html
@@ -8,6 +8,7 @@
+ <{include file="questionnaire_view_main_keypass.html"}>
<{include file="questionnaire_view_main_image_authentication.html"}>
diff --git a/html/webapp/modules/questionnaire/update/Update.class.php b/html/webapp/modules/questionnaire/update/Update.class.php
index 586ddb4..0c561bd 100644
--- a/html/webapp/modules/questionnaire/update/Update.class.php
+++ b/html/webapp/modules/questionnaire/update/Update.class.php
@@ -19,6 +19,27 @@ class Questionnaire_Update extends Action
function execute()
{
+ // key pass phrase 関連フィールドを追加
+ $adoConnection = $this->dbObject->getAdoDbObject();
+ $metaColumns = $adoConnection->MetaColumns($this->dbObject->getPrefix() . 'questionnaire');
+ if (!isset($metaColumns['KEYPASS_USE_FLAG'])) {
+ $sql = "ALTER TABLE `" . $this->dbObject->getPrefix() . "questionnaire` "
+ . "ADD `keypass_use_flag` tinyint(1) NOT NULL default '0' AFTER `anonymity_flag`,"
+ . "ADD `keypass_phrase` varchar(128) NOT NULL default '' AFTER `keypass_use_flag`;";
+ if (!$this->dbObject->execute($sql)) {
+ return false;
+ }
+ }
+ // 「結果をみる」関連フィールドを追加
+ if (!isset($metaColumns['ANSWER_SHOW_FLAG'])) {
+ $sql = "ALTER TABLE `" . $this->dbObject->getPrefix() . "questionnaire` "
+ . "ADD `answer_show_flag` tinyint(1) NOT NULL default '0' AFTER `total_flag`;";
+ if (!$this->dbObject->execute($sql)) {
+ return false;
+ }
+ }
+
+
// questionnaireにindexを追加
$sql = "SHOW INDEX FROM `".$this->dbObject->getPrefix()."questionnaire` ;";
diff --git a/html/webapp/modules/questionnaire/validator/Validator_Keypass.class.php b/html/webapp/modules/questionnaire/validator/Validator_Keypass.class.php
new file mode 100644
index 0000000..4dadbad
--- /dev/null
+++ b/html/webapp/modules/questionnaire/validator/Validator_Keypass.class.php
@@ -0,0 +1,53 @@
+getComponent('Request');
+
+ // 使用しない
+ if (empty($attributes['keypass_use_flag'])) {
+ // 空にしてノーチェック
+ $request->setParameter('keypass_phrase', '');
+ return;
+ }
+
+ if (!isset($attributes['keypass_phrase'])) {
+ return $errStr;
+ }
+ if (is_null($attributes['keypass_phrase'])) {
+ return $errStr;
+ }
+ if ($attributes['keypass_phrase']=='') {
+ return $errStr;
+ }
+
+ return;
+ }
+}
+?>
diff --git a/html/webapp/modules/questionnaire/validator/Validator_KeypassCheck.class.php b/html/webapp/modules/questionnaire/validator/Validator_KeypassCheck.class.php
new file mode 100644
index 0000000..0570512
--- /dev/null
+++ b/html/webapp/modules/questionnaire/validator/Validator_KeypassCheck.class.php
@@ -0,0 +1,58 @@
+getComponent('Session');
+ $chk_flg = $session->getParameter('questionnaire_keypass_check_flag'. $attributes['block_id']);
+ if (empty($chk_flg)) { // たってない
+ return;
+ }
+
+
+ // 使う設定ならば
+ // 入力されてる?
+ if (empty($attributes['keypass_phrase'])) {
+ return $errStr;
+ }
+
+ // 入力されてるなら
+ // 一致してる?
+ if ($attributes['questionnaire']['keypass_phrase'] != $attributes['keypass_phrase']) {
+ return $errStr;
+ }
+ // チェックOKだったのでフラグ削除
+ $session->removeParameter('questionnaire_keypass_check_flag'. $attributes['block_id']);
+ return;
+ }
+}
+?>
diff --git a/html/webapp/modules/questionnaire/view/main/answer/Answer.class.php b/html/webapp/modules/questionnaire/view/main/answer/Answer.class.php
index b463e3b..cdf5753 100644
--- a/html/webapp/modules/questionnaire/view/main/answer/Answer.class.php
+++ b/html/webapp/modules/questionnaire/view/main/answer/Answer.class.php
@@ -41,6 +41,10 @@ class Questionnaire_View_Main_Answer extends Action
*/
function execute()
{
+
+ if($this->questionnaire['answer_show_flag']==_ON && $this->session->getParameter('_auth_id')<_AUTH_CHIEF) {
+ return 'error';
+ }
$this->questions = $this->questionnaireView->getAnswer($this->summary_id);
if (empty($this->questions)) {
diff --git a/html/webapp/modules/questionnaire/view/main/init/Init.class.php b/html/webapp/modules/questionnaire/view/main/init/Init.class.php
index be14356..7ac2ea4 100644
--- a/html/webapp/modules/questionnaire/view/main/init/Init.class.php
+++ b/html/webapp/modules/questionnaire/view/main/init/Init.class.php
@@ -79,6 +79,7 @@ function execute()
if ($this->questionnaire["questionnaire_type"] != QUESTIONNAIRE_TYPE_LIST_VALUE) {
$questionIDs = $this->session->getParameter("questionnaire_question_id_array". $this->block_id);
if (empty($questionIDs)) {
+ $this->_setKeyPassFlag();
return "start";
}
@@ -103,7 +104,16 @@ function execute()
}
}
+ $this->_setKeyPassFlag();
return "list";
}
+ function _setKeyPassFlag() {
+ if ($this->questionnaire['keypass_use_flag'] == _ON) {
+ $this->session->setParameter('questionnaire_keypass_check_flag'. $this->block_id, _ON);
+ }
+ else {
+ $this->session->removeParameter('questionnaire_keypass_check_flag'. $this->block_id);
+ }
+ }
}
?>
\ No newline at end of file
diff --git a/html/webapp/modules/questionnaire/view/main/summary/Summary.class.php b/html/webapp/modules/questionnaire/view/main/summary/Summary.class.php
index 960f723..455711d 100644
--- a/html/webapp/modules/questionnaire/view/main/summary/Summary.class.php
+++ b/html/webapp/modules/questionnaire/view/main/summary/Summary.class.php
@@ -25,6 +25,7 @@ class Questionnaire_View_Main_Summary extends Action
var $configView = null;
var $request = null;
var $filterChain = null;
+ var $session = null;
// validatorから受け取るため
var $questionnaire = null;
@@ -42,6 +43,9 @@ class Questionnaire_View_Main_Summary extends Action
*/
function execute()
{
+ if($this->questionnaire['answer_show_flag']==_ON && $this->session->getParameter('_auth_id')<_AUTH_CHIEF) {
+ return 'error';
+ }
if ($this->scroll != _ON) {
$config = $this->configView->getConfigByConfname($this->module_id, "questionnaire_summary_list_row_count");
if ($config === false) {
diff --git a/html/webapp/modules/questionnaire/view/main/summary/maple.ini b/html/webapp/modules/questionnaire/view/main/summary/maple.ini
index 75c2d7a..f18c816 100644
--- a/html/webapp/modules/questionnaire/view/main/summary/maple.ini
+++ b/html/webapp/modules/questionnaire/view/main/summary/maple.ini
@@ -17,4 +17,5 @@ screen = "questionnaire_mobile_summary.html"
[Action]
configView = "ref:configView"
request = "ref:Request"
-filterChain = "ref:FilterChain"
\ No newline at end of file
+filterChain = "ref:FilterChain"
+session = "ref:Session"
\ No newline at end of file
From 59f7fb56a68f173e2a2b8ba095edff6d85a5d0de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=97=A4=E5=8E=9F=E3=82=8A=E3=81=8B?=
Date: Fri, 14 Jun 2013 20:08:47 +0900
Subject: [PATCH 006/109] =?UTF-8?q?=E6=96=BD=E8=A8=AD=E4=BA=88=E7=B4=84?=
=?UTF-8?q?=E3=81=AB=E3=80=8C=E6=99=82=E9=96=93=E6=9E=A0=E3=80=8D=E3=81=A7?=
=?UTF-8?q?=E3=81=AE=E7=99=BB=E9=8C=B2=E6=A9=9F=E8=83=BD=E3=82=92=E8=BF=BD?=
=?UTF-8?q?=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
時間枠設定が行えるよう
予約登録時、時間枠での指定が可能なよう
表示する表に時間枠エリアを設ける
---
.../edit/timeframe/delete/Delete.class.php | 34 ++++
.../action/edit/timeframe/delete/maple.ini | 16 ++
.../edit/timeframe/entry/Entry.class.php | 34 ++++
.../action/edit/timeframe/entry/maple.ini | 21 ++
.../reservation/components/Action.class.php | 63 ++++++
.../reservation/components/View.class.php | 183 ++++++++++++++++++
.../reservation/files/css/default/style.css | 72 +++++++
.../files/js/default/reservation.js | 96 ++++++++-
html/webapp/modules/reservation/install.ini | 2 +
.../reservation/language/chinese/main.ini | 34 ++++
.../reservation/language/english/main.ini | 34 ++++
.../reservation/language/japanese/main.ini | 33 ++++
.../modules/reservation/sql/mysql/table.sql | 25 +++
.../default/reservation_main_addreserve.html | 28 ++-
...ervation_reserve_details_reserve_time.html | 13 ++
...servation_reserve_regist_reserve_time.html | 35 +++-
.../reservation_style_timeframe_type.html | 15 ++
.../reservation_view_edit_style_init.html | 4 +
.../reservation_view_edit_timeframe.html | 47 +++++
...reservation_view_edit_timeframe_entry.html | 115 +++++++++++
.../reservation_view_main_init_location.html | 24 ++-
.../reservation_view_main_init_weekly.html | 41 +++-
.../reservation_view_main_reserve_regist.html | 8 +-
.../reservation/update/Update.class.php | 33 ++++
.../Validator_TimeframeAdjustment.class.php | 76 ++++++++
.../Validator_TimeframeListView.class.php | 51 +++++
.../Validator_TimeframeTimetable.class.php | 57 ++++++
.../Validator_TimeframeView.class.php | 55 ++++++
.../modules/reservation/view/edit/maple.ini | 1 +
.../view/edit/style/init/Init.class.php | 1 +
.../view/edit/style/init/maple.ini | 4 +
.../view/edit/timeframe/Timeframe.class.php | 36 ++++
.../view/edit/timeframe/entry/Entry.class.php | 51 +++++
.../view/edit/timeframe/entry/maple.ini | 10 +
.../reservation/view/edit/timeframe/maple.ini | 17 ++
.../reservation/view/main/init/Init.class.php | 5 +-
.../reservation/view/main/init/maple.ini | 4 +
.../view/main/reserve/add/Add.class.php | 5 +
.../view/main/reserve/add/maple.ini | 3 +
.../main/reserve/details/Details.class.php | 3 +
.../view/main/reserve/details/maple.ini | 2 +
.../view/main/reserve/modify/Modify.class.php | 5 +
.../view/main/reserve/modify/maple.ini | 3 +
43 files changed, 1371 insertions(+), 28 deletions(-)
create mode 100644 html/webapp/modules/reservation/action/edit/timeframe/delete/Delete.class.php
create mode 100644 html/webapp/modules/reservation/action/edit/timeframe/delete/maple.ini
create mode 100644 html/webapp/modules/reservation/action/edit/timeframe/entry/Entry.class.php
create mode 100644 html/webapp/modules/reservation/action/edit/timeframe/entry/maple.ini
create mode 100644 html/webapp/modules/reservation/templates/default/reservation_style_timeframe_type.html
create mode 100644 html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe.html
create mode 100644 html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe_entry.html
create mode 100644 html/webapp/modules/reservation/validator/Validator_TimeframeAdjustment.class.php
create mode 100644 html/webapp/modules/reservation/validator/Validator_TimeframeListView.class.php
create mode 100644 html/webapp/modules/reservation/validator/Validator_TimeframeTimetable.class.php
create mode 100644 html/webapp/modules/reservation/validator/Validator_TimeframeView.class.php
create mode 100644 html/webapp/modules/reservation/view/edit/timeframe/Timeframe.class.php
create mode 100644 html/webapp/modules/reservation/view/edit/timeframe/entry/Entry.class.php
create mode 100644 html/webapp/modules/reservation/view/edit/timeframe/entry/maple.ini
create mode 100644 html/webapp/modules/reservation/view/edit/timeframe/maple.ini
diff --git a/html/webapp/modules/reservation/action/edit/timeframe/delete/Delete.class.php b/html/webapp/modules/reservation/action/edit/timeframe/delete/Delete.class.php
new file mode 100644
index 0000000..c53f4cd
--- /dev/null
+++ b/html/webapp/modules/reservation/action/edit/timeframe/delete/Delete.class.php
@@ -0,0 +1,34 @@
+reservationAction->deleteTimeframe();
+ if (!$result) {
+ return 'error';
+ }
+ return 'success';
+ }
+}
+?>
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/action/edit/timeframe/delete/maple.ini b/html/webapp/modules/reservation/action/edit/timeframe/delete/maple.ini
new file mode 100644
index 0000000..271c6f2
--- /dev/null
+++ b/html/webapp/modules/reservation/action/edit/timeframe/delete/maple.ini
@@ -0,0 +1,16 @@
+[TokenExtra]
+mode = "check"
+action = "reservation_view_edit_timeframe"
+
+[SmartyAssign::reservationAssign]
+global = timezone.ini
+
+[ValidateDef::reservationValidate]
+timeframe_id.required:g = "1:lang._invalid_input"
+key:timeframe_id.reservation.TimeframeView = "1:lang._invalid_input"
+
+[Action]
+reservationAction = "ref:reservationAction"
+
+[View]
+success = "action:reservation_view_edit_timeframe"
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/action/edit/timeframe/entry/Entry.class.php b/html/webapp/modules/reservation/action/edit/timeframe/entry/Entry.class.php
new file mode 100644
index 0000000..3bd1eb3
--- /dev/null
+++ b/html/webapp/modules/reservation/action/edit/timeframe/entry/Entry.class.php
@@ -0,0 +1,34 @@
+reservationAction->setTimeframe();
+ if (!$result) {
+ return 'error';
+ }
+ return 'success';
+ }
+}
+?>
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/action/edit/timeframe/entry/maple.ini b/html/webapp/modules/reservation/action/edit/timeframe/entry/maple.ini
new file mode 100644
index 0000000..391d57a
--- /dev/null
+++ b/html/webapp/modules/reservation/action/edit/timeframe/entry/maple.ini
@@ -0,0 +1,21 @@
+[TokenExtra]
+mode = "check"
+action = "reservation_view_edit_timeframe_entry"
+
+[SmartyAssign::reservationAssign]
+global = timezone.ini
+
+[ValidateDef::reservationValidate]
+key:timeframe_id.reservation.TimeframeView = "1:lang._invalid_input"
+timeframe_name.required:g = "1:lang._required,lang.reservation_timeframe_name_label"
+key:timezone_offset.reservation.timezoneOffset:g = "1:lang._invalid_input"
+key:start_hour,start_minute,end_hour,end_minute,allday_flag,timezone_offset,rrule_byday.reservation.locationTimetable:g = "1:lang._invalid_input"
+key:timeframe_id.reservation.timeframeTimetable:g = "1:lang.reservation_timeframe_timetable_duplicated"
+timeframe_name.maxlength = "1,_VALIDATOR_TITLE_LEN:lang._maxlength_error,lang.reservation_timeframe_name_label,_VALIDATOR_TITLE_LEN"
+timeframe_color.match = "1,(^$|^#[0-9a-fA-F]{6}$):lang.reservation_err_match_color,lang.reservation_timeframe_color_label"
+
+[Action]
+reservationAction = "ref:reservationAction"
+
+[View]
+success = "main:true.html"
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/components/Action.class.php b/html/webapp/modules/reservation/components/Action.class.php
index c083842..6bc145d 100644
--- a/html/webapp/modules/reservation/components/Action.class.php
+++ b/html/webapp/modules/reservation/components/Action.class.php
@@ -278,6 +278,7 @@ function setBlock()
$params = array(
"block_id" => $this->_request->getParameter("block_id"),
"display_type" => $default["display_type"],
+ 'display_timeframe'=> $default['display_timeframe'],
"display_start_time" => $default["display_start_time"],
"display_interval" => $default["display_interval"],
"category_id" => $default["category_id"],
@@ -290,6 +291,7 @@ function setBlock()
} elseif ($actionName == "reservation_action_edit_style") {
$params = array(
"display_type" => intval($this->_request->getParameter("display_type")),
+ 'display_timeframe' => intval($this->_request->getParameter('display_timeframe')),
"display_start_time" => $this->_request->getParameter("display_start_time"),
"display_interval" => intval($this->_request->getParameter("display_interval")),
"category_id" => $this->_request->getParameter("category_id"),
@@ -738,6 +740,67 @@ function setLocationSequence()
return true;
}
+ /**
+ * 時間枠を登録する
+ *
+ * @access public
+ */
+ function setTimeframe()
+ {
+ $timeframe_id = $this->_request->getParameter('timeframe_id');
+ $timezone_offset = $this->_request->getParameter('timezone_offset');
+ $start_time = $this->_request->getParameter('start_time');
+ $end_time = $this->_request->getParameter('end_time');
+
+ $commonMain =& $this->_container->getComponent("commonMain");
+ $timezoneMain =& $commonMain->registerClass(WEBAPP_DIR.'/components/timezone/Main.class.php', "Timezone_Main", "timezoneMain");
+
+ //$timezone_offset_float = $timezoneMain->getFloatTimeZone($timezone_offset);
+ $start_time = $this->_reservationView->dateFormat($start_time, $timezone_offset, true, 'His');
+ $end_time = $this->_reservationView->dateFormat($end_time, $timezone_offset, true, 'His');
+
+ $params = array(
+ 'timeframe_name' => $this->_request->getParameter('timeframe_name'),
+ 'start_time' => $start_time,
+ 'end_time' => $end_time,
+ 'timezone_offset' => $timezone_offset,
+ 'timeframe_color' => $this->_request->getParameter('timeframe_color')
+ );
+
+ // 新規登録
+ if(empty($timeframe_id)) {
+ $timeframe_id = $this->_db->insertExecute('reservation_timeframe', $params, true, 'timeframe_id');
+ if ($timeframe_id === false) {
+ return false;
+ }
+ }
+ // 再編集
+ else {
+ $where_param = array('timeframe_id'=>$timeframe_id);
+ $ret = $this->_db->updateExecute('reservation_timeframe', $params, $where_param);
+ if ($ret === false) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 時間枠を削除する
+ *
+ * @access public
+ */
+ function deleteTimeframe()
+ {
+ $timeframe_id = $this->_request->getParameter('timeframe_id');
+ $where_param = array('timeframe_id'=>$timeframe_id);
+ $ret = $this->_db->deleteExecute('reservation_timeframe', $where_param);
+ if ($ret === false) {
+ return false;
+ }
+ return true;
+ }
+
/**
* 予約を登録する
*
diff --git a/html/webapp/modules/reservation/components/View.class.php b/html/webapp/modules/reservation/components/View.class.php
index 4488790..bbadea8 100644
--- a/html/webapp/modules/reservation/components/View.class.php
+++ b/html/webapp/modules/reservation/components/View.class.php
@@ -167,6 +167,7 @@ function dateFormat($time=null, $timezone_offset=null, $insert_flag=false, $time
}
if (isset($timezone_offset)) {
$timezone_minute_offset = 0;
+ $timezone_offset = floatval($timezone_offset);
if(round($timezone_offset) != intval($timezone_offset)) {
$timezone_offset = ($timezone_offset> 0) ? floor($timezone_offset) : ceil($timezone_offset);
$timezone_minute_offset = ($timezone_offset> 0) ? 30 : -30; // 0.5minute
@@ -417,6 +418,7 @@ function getDefaultBlock()
$default = array(
"block_id" => 0,
"display_type" => $display_type,
+ 'display_timeframe'=>_OFF,
"display_start_time" => $display_start_time,
"start_time_hour" => $config['start_time_hour']["conf_value"],
"display_interval" => $display_interval,
@@ -784,6 +786,187 @@ function getCountLocation($location_id = null)
}
}
+ /**
+ * 時間枠取得
+ *
+ * @access public
+ */
+ function getTimeframes($divided_flag=false)
+ {
+ $func_params = array($divided_flag);
+
+ $result = $this->_db->selectExecute('reservation_timeframe', null, null, 0, 0, array($this, '_getTimeframesCallback'), $func_params);
+
+ if ($result === false) {
+ $this->_db->addError();
+ return false;
+ }
+ return $result;
+ }
+
+ function _getTimeframesCallback($recordSet, $params = array(false))
+ {
+ $ret = array();
+
+ $divided_flag = $params[0];
+
+ $commonMain =& $this->_container->getComponent("commonMain");
+ $timezoneMain =& $commonMain->registerClass(WEBAPP_DIR.'/components/timezone/Main.class.php', "Timezone_Main", "timezoneMain");
+
+ while ($row = $recordSet->fetchRow()) {
+
+ $start_time = timezone_date($row['start_time'], false, 'His');
+ $end_time = timezone_date($row['end_time'], false, 'His');
+
+ // 日跨ぎ 分割希望時
+ if($divided_flag == true && $start_time>$end_time) {
+ $ret_row = $this->__getTimeframesCallback($timezoneMain, $row, $start_time, '240000');
+ $ret[$start_time] = $ret_row;
+ $ret_row = $this->__getTimeframesCallback($timezoneMain, $row, '000000', $end_time);
+ $ret['000000'] = $ret_row;
+ }
+ else {
+ $ret_row = $this->__getTimeframesCallback($timezoneMain, $row, $start_time, $end_time);
+ $ret[$start_time] = $ret_row;
+ }
+ }
+ ksort($ret);
+ return $ret;
+ }
+ function __getTimeframesCallback(&$timezoneMain, $row, $start_time, $end_time)
+ {
+ $ret = $row;
+
+ $ret['start_time_view'] = $start_time;
+ $ret['end_time_view'] = $end_time;
+
+ $ret['left'] = $this->TimeDiff('000000', $start_time) * RESERVATION_DEF_V_INTERVAL;
+ $ret['top'] = $this->TimeDiff('000000', $start_time) * RESERVATION_DEF_H_INTERVAL;
+
+ if($end_time == '000000') {
+ $ret['width'] = $this->TimeDiff($ret['start_time_view'], '240000') * RESERVATION_DEF_V_INTERVAL;
+ $ret['height'] = $this->TimeDiff($ret['start_time_view'], '240000') * RESERVATION_DEF_H_INTERVAL;
+ }
+ else {
+ $ret['width'] = $this->TimeDiff($ret['start_time_view'], $ret['end_time_view']) * RESERVATION_DEF_V_INTERVAL;
+ $ret['height'] = $this->TimeDiff($ret['start_time_view'], $ret['end_time_view']) * RESERVATION_DEF_H_INTERVAL;
+ }
+
+ $ret['start_time_view_hour'] = substr($ret['start_time_view'], 0, 2);
+ $ret['start_time_view_min'] = substr($ret['start_time_view'], 2, 2);
+ $ret['end_time_view_hour'] = substr($ret['end_time_view'], 0, 2);
+ $ret['end_time_view_min'] = substr($ret['end_time_view'], 2, 2);
+
+
+ $ret["start_time_original_str"] = $this->dateFormat(date('Ymd').$ret["start_time"], $ret["timezone_offset"], false, _SHORT_TIME_FORMAT);
+ $ret["end_time_original_str"] = $this->dateFormat(date('Ymd').$ret["end_time"], $ret["timezone_offset"], false, _SHORT_TIME_FORMAT);
+ $ret["start_time_original"] = $this->dateFormat(date('Ymd').$ret["start_time"], $ret["timezone_offset"], false, "His");
+ $ret["end_time_original"] = $this->dateFormat(date('Ymd').$ret["end_time"], $ret["timezone_offset"], false, "His");
+
+ $ret["start_time_original_hour"] = substr($ret['start_time_original'], 0, 2);
+ $ret["start_time_original_min"] = substr($ret['start_time_original'], 2, 2);
+ $ret["end_time_original_hour"] = substr($ret['end_time_original'], 0, 2);
+ $ret["end_time_original_min"] = substr($ret['end_time_original'], 2, 2);
+
+ $ret['timezone_constant_string'] = $timezoneMain->getLangTimeZone($ret['timezone_offset'], false);
+ $ret['timezone_string'] = $timezoneMain->getLangTimeZone($ret['timezone_offset']);
+
+ return $ret;
+ }
+
+ /**
+ * 時間枠数取得
+ *
+ * @access public
+ */
+ function getTimeframesCount()
+ {
+ $result = $this->_db->countExecute('reservation_timeframe');
+ if ($result === false) {
+ $this->_db->addError();
+ return false;
+ }
+ return $result;
+ }
+
+ /**
+ * 時間枠取得
+ *
+ * @access public
+ */
+ function getTimeframe($timeframe_id)
+ {
+ $result = $this->_db->selectExecute('reservation_timeframe', array('timeframe_id'=>$timeframe_id), null, 0, 0, array($this, '_getTimeframesCallback'));
+ if ($result === false) {
+ $this->_db->addError();
+ return false;
+ }
+ $timeframe = array_shift($result);
+ return $timeframe;
+ }
+
+ /**
+ * 開始時間による時間枠取得(GMT)
+ *
+ * @access public
+ */
+ function getTimeframeByStartTime($start_time_str)
+ {
+ $result = $this->_db->selectExecute('reservation_timeframe', array('start_time'=>$start_time_str), null, 0, 0, array($this, '_getTimeframesCallback'));
+ if ($result === false) {
+ $this->_db->addError();
+ return false;
+ }
+ $timeframe = array_shift($result);
+ return $timeframe;
+ }
+
+ /**
+ * 終了時間による時間枠取得(GMT)
+ *
+ * @access public
+ */
+ function getTimeframeByEndTime($end_time_str)
+ {
+ $result = $this->_db->selectExecute('reservation_timeframe', array('end_time'=>$end_time_str), null, 0, 0, array($this, '_getTimeframesCallback'));
+ if ($result === false) {
+ $this->_db->addError();
+ return false;
+ }
+ $timeframe = array_shift($result);
+ return $timeframe;
+ }
+
+ /**
+ * 時間枠重なりチェック(GMT)
+ *
+ * @access public
+ */
+ function getTimeframeDuplicate($timeframe_id, $start_time, $end_time)
+ {
+ $sql = 'SELECT count(*) AS timeframe_count FROM {reservation_timeframe} WHERE '
+ . '( ? < start_time AND ? > start_time '
+ . ' OR '
+ . ' ? >= start_time AND CASE WHEN start_time < end_time THEN ?+240000 < end_time+240000 ELSE ? <= end_time END )';
+ if(!empty($timeframe_id)) {
+ $sql .= ' AND timeframe_id != ?';
+ }
+
+ $where_param = array($start_time, $end_time,$start_time, $start_time, $start_time);
+ if(!empty($timeframe_id)) {
+ $where_param[] = $timeframe_id;
+ }
+ $result = $this->_db->execute($sql, $where_param);
+ if($result && isset($result[0])) {
+ if($result[0]['timeframe_count']>0) {
+ return false;
+ }
+ }
+
+ //
+ return true;
+ }
+
/**
* 施設に紐付くルーム取得
*
diff --git a/html/webapp/modules/reservation/files/css/default/style.css b/html/webapp/modules/reservation/files/css/default/style.css
index 0b50aa8..862030d 100644
--- a/html/webapp/modules/reservation/files/css/default/style.css
+++ b/html/webapp/modules/reservation/files/css/default/style.css
@@ -363,6 +363,27 @@ div.reservation_monthly table.reservation_body th.reservation_weeknum {
margin-left:5px;
padding-left:5px;
}
+.reservation_weekly table.reservation_body td.reservation_timeframe_head img.reservation_blank {
+ width:50px;
+ height:1px;
+}
+.reservation_weekly div.reservation_timeframe_wrapper {
+ height:100%;
+ width:50px;
+}
+.reservation_weekly th.reservation_timeframe_wrapper {
+ border-right:1px solid #dddddd;
+ vertical-align:top;
+}
+.reservation_weekly div.reservation_timeframe_spacer {
+}
+.reservation_weekly div.reservation_timeframe_label {
+ font-size:80%;
+ text-align:center;
+ border-top:1px solid #aaaaaa;
+ border-bottom:1px solid #aaaaaa;
+ overflow:hidden;
+}
/*
* CSS of each location reservation
@@ -439,6 +460,24 @@ div.reservation_monthly table.reservation_body th.reservation_weeknum {
display:block;
margin-left:7px;
}
+.reservation_each_location div.reservation_timeframe_wrapper {
+ width:100%;
+ height:20px;
+ border-bottom:1px solid #dddddd;
+}
+.reservation_each_location div.reservation_timeframe_spacer {
+ float:left;
+ height:20px;
+}
+.reservation_each_location div.reservation_timeframe_label {
+ height:20px;
+ text-align:center;
+ border-left:1px solid #aaaaaa;
+ border-right:1px solid #aaaaaa;
+ overflow:hidden;
+ float:left;
+ font-size:80%;
+}
/* 予約のインポート */
.reservation_top_description {
@@ -457,4 +496,37 @@ div.reservation_monthly table.reservation_body th.reservation_weeknum {
}
.reservation_reserve_room_id {
width:185px;
+}
+
+.reservation_timeframe {
+ border-width:1px;
+ border-style: solid;
+ border-color: #ccc #aaa #aaa #ccc;
+ margin-bottom:1px;
+}
+.reservation_timeframe td {
+ padding:3px 5px;
+}
+.reservation_timeframe_name {
+ width:100px;
+ text-align:left;
+}
+.reservation_timeframe_time {
+ width:250px;
+ text-align:left;
+}
+.reservation_timeframe_color {
+ width:20px;
+ height:15px;
+}
+table.reservation_timeframe_entry th {
+ padding:2px 15px;
+}
+table.reservation_timeframe_entry td {
+ padding:2px 15px 2px 0px;
+}
+div.reservation_timeframe_time_original {
+ font-size:85%;
+ color:#999999;
+ width:250px;
}
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/files/js/default/reservation.js b/html/webapp/modules/reservation/files/js/default/reservation.js
index 6666f2f..919eea1 100644
--- a/html/webapp/modules/reservation/files/js/default/reservation.js
+++ b/html/webapp/modules/reservation/files/js/default/reservation.js
@@ -254,7 +254,7 @@ clsReservation.prototype = {
/*
* Function of the reservation
*/
- showEasyAddReserve: function(event, date, time, location_id) {
+ showEasyAddReserve: function(event, date, time, location_id, timeframe_id) {
var params = new Object();
params["prefix_id_name"] = "popup_regist_reservation";
params["action"] = "reservation_view_main_reserve_add";
@@ -268,6 +268,9 @@ clsReservation.prototype = {
if (time) {
params["time"] = time;
}
+ if (timeframe_id) {
+ params["timeframe_id"] = timeframe_id;
+ }
commonCls.sendPopupView(event, params, {"top_el":$(this.id),"modal_flag":true});
},
showReserveDetails: function(event, reserve_id) {
@@ -432,6 +435,9 @@ clsReservation.prototype = {
},
addReserve: function(id, form_el, details_flag) {
+
+ this._switchTimeframeDisable(form_el, false);
+
if (details_flag == "1") {
var description = this.textarea.getTextArea();
var params_str = "action=reservation_action_main_reserve_add&details_flag=1&" + Form.serialize(form_el) +
@@ -448,9 +454,16 @@ clsReservation.prototype = {
reservationCls[id].changeReservation();
commonCls.removeBlock(this.id);
}.bind(this);
+ params["callbackfunc_error"] = function(res) {
+ this._switchTimeframeDisable(form_el, true);
+ commonCls.alert(res);
+ }.bind(this);
commonCls.sendPost(this.id, params_str, params);
},
modifyReserve: function(id, form_el) {
+
+ this._switchTimeframeDisable(form_el, false);
+
var description = this.textarea.getTextArea();
var params_str = "action=reservation_action_main_reserve_modify&" + Form.serialize(form_el) +
"&description=" + encodeURIComponent(description);
@@ -463,6 +476,10 @@ clsReservation.prototype = {
reservationCls[id].changeReservation();
commonCls.removeBlock(this.id);
}.bind(this);
+ params["callbackfunc_error"] = function(res) {
+ this._switchTimeframeDisable(form_el, true);
+ commonCls.alert(res);
+ }.bind(this);
commonCls.sendPost(this.id, params_str, params);
},
deleteReserve: function(id, reserve_id, edit_rrule, confirm_mes) {
@@ -477,6 +494,18 @@ clsReservation.prototype = {
commonCls.sendPost(this.id, "action=reservation_action_main_reserve_delete&reserve_id=" + reserve_id +
"&edit_rrule=" + edit_rrule, params);
},
+ _switchTimeframeDisable: function(form_el, opeflag) {
+ if(form_el.start_timeframe && form_el.end_timeframe) {
+ if($F(form_el.start_timeframe).length != 0) {
+ form_el.start_hour.disabled = opeflag;
+ form_el.start_minute.disabled = opeflag;
+ }
+ if($F(form_el.end_timeframe).length != 0) {
+ form_el.end_hour.disabled = opeflag;
+ form_el.end_minute.disabled = opeflag;
+ }
+ }
+ },
sendMail: function() {
commonCls.sendPost(this.id, "action=reservation_action_main_reserve_mail", {"loading_el":null});
},
@@ -639,11 +668,23 @@ clsReservation.prototype = {
form_el.start_minute.disabled = true;
form_el.end_hour.disabled = true;
form_el.end_minute.disabled = true;
+ if(form_el.start_timeframe) {
+ form_el.start_timeframe.disabled = true;
+ }
+ if(form_el.end_timeframe) {
+ form_el.end_timeframe.disabled = true;
+ }
} else {
form_el.start_hour.disabled = false;
form_el.start_minute.disabled = false;
form_el.end_hour.disabled = false;
form_el.end_minute.disabled = false;
+ if(form_el.start_timeframe) {
+ form_el.start_timeframe.disabled = false;
+ }
+ if(form_el.end_timeframe) {
+ form_el.end_timeframe.disabled = false;
+ }
}
this.switchTime24Reserve(form_el);
},
@@ -713,6 +754,31 @@ clsReservation.prototype = {
form_el.start_time_fixation.disabled = true;
}
},
+ switchTimeframe: function(el, form_el, tgt_str) {
+ var times_str = $F(el);
+ var tgt_hour_el = $("reservation_" + tgt_str + "_hour" + this.id);
+ var tgt_minute_el = $("reservation_" + tgt_str + "_minute" + this.id);
+
+ if(times_str.length == 0) {
+ tgt_hour_el.disabled = false;
+ tgt_minute_el.disabled = false;
+ }
+ else {
+ var times = $F(el).split('|');
+ Form.Element.SetSerializers.select(tgt_hour_el, times[0]);
+ Form.Element.SetSerializers.select(tgt_minute_el, times[1]);
+ tgt_hour_el.disabled = true;
+ tgt_minute_el.disabled = true;
+/*
+ if(tgt_str=="start") {
+ if($F("reservation_end_timeframe"+this.id).length == 0) {
+ $("reservation_end_timeframe"+this.id).selectedIndex = el.selectedIndex;
+ this.switchTimeframe($("reservation_end_timeframe"+this.id), form_el, "end");
+ }
+ }
+*/
+ }
+ },
changeStyle: function(form_el) {
this.scrollTop = null;
this.scrollLeft = null;
@@ -1032,6 +1098,34 @@ clsReservation.prototype = {
commonCls.sendPost(this.id, params_str, params);
},
+ /*
+ * Timeframe functions
+ */
+ switchTimeframeTime24: function(form_el) {
+ if (form_el.end_hour.value == "24") {
+ form_el.end_minute.disabled = true;
+ form_el.end_minute.value = "00";
+ } else {
+ form_el.end_minute.disabled = false;
+ }
+ },
+
+ switchTimeframeColor: function(el, form_el) {
+ var color = form_el.timeframe_color.value;
+ Element.setStyle(el, {"backgroundColor":color});
+ },
+
+ setTimeframe: function(form_el, block_id) {
+ var target_el = $("_"+block_id);
+ var params = new Object();
+ params["callbackfunc"] = function(res){
+ commonCls.sendView(target_el, "action=reservation_view_edit_timeframe" );
+ commonCls.removeBlock(this.id);
+ }.bind(this);
+ commonCls.sendPost(this.id, 'action=reservation_action_edit_timeframe_entry&' +
+ Form.serialize(form_el) , params);
+ },
+
/*
* Function of mail registration
*/
diff --git a/html/webapp/modules/reservation/install.ini b/html/webapp/modules/reservation/install.ini
index f5fec1c..c42eb78 100644
--- a/html/webapp/modules/reservation/install.ini
+++ b/html/webapp/modules/reservation/install.ini
@@ -24,6 +24,8 @@ mail_subject = "RESERVATION_MAIL_SUBJECT"
mail_body = "RESERVATION_MAIL_BODY"
mail_authority = "_AUTH_GUEST"
+timeframe_color = "#ffc9c9|#ffeeb5|#d7fab4|#d3f4ff|#cfd7ff|#ffdffb|#ffd7b0"
+
[CleanUp]
reservation_reserve_details = description
reservation_location_details = description
diff --git a/html/webapp/modules/reservation/language/chinese/main.ini b/html/webapp/modules/reservation/language/chinese/main.ini
index 8f64750..84f18ca 100644
--- a/html/webapp/modules/reservation/language/chinese/main.ini
+++ b/html/webapp/modules/reservation/language/chinese/main.ini
@@ -21,6 +21,7 @@ reservation_error_holiday = "获取节日数据失败。"
reservation_auth = "权限设置"
reservation_location_manage = "显示列表"
reservation_location_add = "注册新设施"
+reservation_timeframe = "时间框架设置"
reservation_mail = "邮件设置"
reservation_csv_import = "导入"
@@ -35,6 +36,9 @@ reservation_each_location = "每日"
reservation_default_location = "默认设施"
+reservation_timeframe = "时间框架显示"
+reservation_timeframe_on = "显示的时间框架"
+
reservation_start_time = "预约开始时间"
reservation_start_time_default = "随到随用"
reservation_start_time_fixation = "预定时间"
@@ -158,6 +162,7 @@ reservation_display_monthly = "正在显示月历"
reservation_display_weekly = "正在显示周历"
reservation_display_location = "正在显示每日时刻"
+reservation_time_pause = "~"
[Reservation_View_Main_Reserve:Reservation_View_Edit_Import_Init]
reservation_reserve_flag = "群组"
@@ -295,6 +300,9 @@ reservation_rrule_term_until = "结束日期 "
reservation_rrule_count = " 次"
+reservation_timeframe_start_frame = "--开始帧--"
+reservation_timeframe_end_frame = "--结束帧--"
+
[Reservation_View_Main_Movedate]
reservation_year_format = "%s"
reservation_move = "跳转到..."
@@ -351,3 +359,29 @@ define:RESERVATION_ERR_FILE_FORMAT = "フォーマットが正しくありませ
cv_import_success = "CSVファイルからの取り込みが正常に終了しました。"
define:RESERVATION_ERR_NUM = "%s行目: "
define:RESERVATION_INVALID_TIME = "您不能输入%s。请输入正确的期。"
+
+
+[Reservation_View_Edit_Timeframe_Entry:Reservation_Action_Edit_Timeframe_Entry]
+reservation_timeframe_name_label = "时间框架名称"
+reservation_timeframe_range_label = "时间范围"
+reservation_timeframe_color_label = "时间框架的颜色"
+
+
+[Reservation_View_Edit_Timeframe]
+reservation_timeframe_add_message = "我会加一个时间框架"
+reservation_timeframe_add_title = "添加定义一个时间框架"
+reservation_timeframe_no_exists = "尚未注册时间框架。"
+reservation_time_pause = " ~ "
+reservation_timeframe_delete_confirm_message = "你要删除“%s的”吗?"
+
+[Reservation_View_Edit_Timeframe_Entry]
+_dialog_name = "时间框架设置"
+reservation_hour_format = "%s:"
+reservation_minute_format = "%s"
+reservation_timeframe_color_select_message = "--请选择一种颜色--"
+
+[Reservation_Action_Edit_Timeframe_Entry]
+define:RESERVATION_ERR_FROM_TO_DATE = "在设定的时间有误差。请设置正确的时间框架。"
+reservation_err_match_color = "不正确选定的颜色。请选择一个不同的颜色。"
+reservation_timeframe_timetable_duplicated = "重叠的帧的开始时间的时间帧/结束时间,已经被注册。请修改"
+define:RESERVATION_ERR_TIMEFRAME_MIN_TIME = "我可以指定在15分钟的时间框架。开始,请适当调整的结束时间。"
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/language/english/main.ini b/html/webapp/modules/reservation/language/english/main.ini
index 7f1acae..0ed8d01 100644
--- a/html/webapp/modules/reservation/language/english/main.ini
+++ b/html/webapp/modules/reservation/language/english/main.ini
@@ -21,6 +21,7 @@ reservation_error_holiday = "Failed while obtaining the holiday data."
reservation_auth = "Authority setting"
reservation_location_manage = "Show list"
reservation_location_add = "Register new"
+reservation_timeframe = "Timeframe setting"
reservation_mail = "Mail setting"
reservation_csv_import = "Import"
@@ -35,6 +36,9 @@ reservation_each_location = "Daily"
reservation_default_location = "Default institution"
+reservation_timeframe = "Timeframes"
+reservation_timeframe_on = "Display timeframe"
+
reservation_start_time = "Starting time"
reservation_start_time_default = "alters by time of use"
reservation_start_time_fixation = "fixed"
@@ -158,6 +162,7 @@ reservation_display_monthly = "Monthly calendar is shown"
reservation_display_weekly = "Weekly calendar is shown"
reservation_display_location = "Daily calendar is shown"
+reservation_time_pause = " - "
[Reservation_View_Main_Reserve:Reservation_View_Edit_Import_Init]
reservation_reserve_flag = "Group"
@@ -295,6 +300,10 @@ reservation_rrule_term_until = "End date "
reservation_rrule_count = " times"
+reservation_timeframe_start_frame = "--start timeframe--"
+reservation_timeframe_end_frame = "--end timeframe--"
+
+
[Reservation_View_Main_Movedate]
reservation_year_format = "%s"
reservation_move = "Goto..."
@@ -351,3 +360,28 @@ define:RESERVATION_ERR_FILE_FORMAT = "Formats are different."
cv_import_success = "Import from CSV file has completed normally."
define:RESERVATION_ERR_NUM = "line number %s: "
define:RESERVATION_INVALID_TIME = "Unauthorized input, %s. Please input the correct time."
+
+[Reservation_View_Edit_Timeframe_Entry:Reservation_Action_Edit_Timeframe_Entry]
+reservation_timeframe_name_label = "Timeframe name"
+reservation_timeframe_range_label = "Timeframe range"
+reservation_timeframe_color_label = "Timeframe color"
+
+
+[Reservation_View_Edit_Timeframe]
+reservation_timeframe_add_message = "Adding a timeframe"
+reservation_timeframe_add_title = "Add timeframe"
+reservation_timeframe_no_exists = "Timeframe is not registered yet."
+reservation_time_pause = " - "
+reservation_timeframe_delete_confirm_message = "Do you want to delete [%s]?"
+
+[Reservation_View_Edit_Timeframe_Entry]
+_dialog_name = "Timeframe setting"
+reservation_hour_format = "%s:"
+reservation_minute_format = "%s"
+reservation_timeframe_color_select_message = "--Select a color--"
+
+[Reservation_Action_Edit_Timeframe_Entry]
+define:RESERVATION_ERR_FROM_TO_DATE = "There is an error in the setting of time. Please set the correct time."
+reservation_err_match_color = "There is an error in the setting of color. Please select the correct color."
+reservation_timeframe_timetable_duplicated = "This time range has been already registered. Try different time."
+define:RESERVATION_ERR_TIMEFRAME_MIN_TIME = "At least 15 minutes is required for timeframe."
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/language/japanese/main.ini b/html/webapp/modules/reservation/language/japanese/main.ini
index df04b08..8575a0f 100644
--- a/html/webapp/modules/reservation/language/japanese/main.ini
+++ b/html/webapp/modules/reservation/language/japanese/main.ini
@@ -21,6 +21,7 @@ reservation_error_holiday = "祝日データを取得する際にエラーが発
reservation_auth = "権限設定"
reservation_location_manage = "施設管理"
reservation_location_add = "施設登録"
+reservation_timeframe = "時間枠管理"
reservation_mail = "メール設定"
reservation_csv_import = "予約のインポート"
@@ -35,6 +36,9 @@ reservation_each_location = "日表示(カテゴリ別)"
reservation_default_location = "最初に表示する施設"
+reservation_timeframe = "時間枠表示"
+reservation_timeframe_on = "時間枠を表示する"
+
reservation_start_time = "表示開始時"
reservation_start_time_default = "閲覧時刻により変動"
reservation_start_time_fixation = "固定"
@@ -158,6 +162,7 @@ reservation_display_monthly = "月別予約状況を表示しています。"
reservation_display_weekly = "週別予約状況を表示しています。"
reservation_display_location = "施設別予約状況を表示しています。"
+reservation_time_pause = "~"
[Reservation_View_Main_Reserve:Reservation_View_Edit_Import_Init]
reservation_reserve_flag = "利用するグループ"
@@ -295,6 +300,9 @@ reservation_rrule_term_until = "終了日による指定 "
reservation_rrule_count = "回"
+reservation_timeframe_start_frame = "--開始枠--"
+reservation_timeframe_end_frame = "--終了枠--"
+
[Reservation_View_Main_Movedate]
reservation_year_format = "%s年"
reservation_move = "移動"
@@ -351,3 +359,28 @@ define:RESERVATION_ERR_FILE_FORMAT = "フォーマットが正しくありませ
cv_import_success = "CSVファイルからの取り込みが正常に終了しました。"
define:RESERVATION_ERR_NUM = "%s行目: "
define:RESERVATION_INVALID_TIME = "入力された%sが不正です。正しい時間を入力して下さい"
+
+[Reservation_View_Edit_Timeframe_Entry:Reservation_Action_Edit_Timeframe_Entry]
+reservation_timeframe_name_label = "時間枠名"
+reservation_timeframe_range_label = "時間範囲"
+reservation_timeframe_color_label = "時間枠色"
+
+
+[Reservation_View_Edit_Timeframe]
+reservation_timeframe_add_message = "時間枠を追加します"
+reservation_timeframe_add_title = "時間枠定義の追加"
+reservation_timeframe_no_exists = "時間枠はまだ登録されていません。"
+reservation_time_pause = " ~ "
+reservation_timeframe_delete_confirm_message = "「%s」を削除してよろしいですか?"
+
+[Reservation_View_Edit_Timeframe_Entry]
+_dialog_name = "時間枠設定"
+reservation_hour_format = "%s時"
+reservation_minute_format = "%s分"
+reservation_timeframe_color_select_message = "--色を選んでください--"
+
+[Reservation_Action_Edit_Timeframe_Entry]
+define:RESERVATION_ERR_FROM_TO_DATE = "時間の設定に誤りがあります。正しい時間枠を設定してください。"
+reservation_err_match_color = "選択された色は正しくありません。別の色を選択して下さい。"
+reservation_timeframe_timetable_duplicated = "時間枠の開始時間/終了時間が、すでに登録されている枠と重なっています。修正して下さい。"
+define:RESERVATION_ERR_TIMEFRAME_MIN_TIME = "時間枠は15分単位で指定できます。開始、終了時間を適切に調整してください。"
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/sql/mysql/table.sql b/html/webapp/modules/reservation/sql/mysql/table.sql
index 24724cd..4041cb4 100644
--- a/html/webapp/modules/reservation/sql/mysql/table.sql
+++ b/html/webapp/modules/reservation/sql/mysql/table.sql
@@ -130,6 +130,31 @@ CREATE TABLE `reservation_location_details` (
KEY `room_id` (`room_id`)
) ENGINE=MyISAM;
+-- --------------------------------------------------------
+
+-- -
+-- Table Structure `reservation_timeframe`
+-- -
+
+CREATE TABLE `reservation_timeframe` (
+ `timeframe_id` int(11) unsigned NOT NULL,
+ `timeframe_name` varchar(255) NOT NULL default '',
+ `start_time` varchar(14) NOT NULL default '',
+ `end_time` varchar(14) NOT NULL default '',
+ `timezone_offset` float(3,1) NOT NULL default '0.0',
+ `timeframe_color` varchar(16) NOT NULL default '',
+ `insert_time` varchar(14) NOT NULL default '',
+ `insert_site_id` varchar(40) NOT NULL default '',
+ `insert_user_id` varchar(40) NOT NULL default '',
+ `insert_user_name` varchar(255) NOT NULL default '',
+ `update_time` varchar(14) NOT NULL default '',
+ `update_site_id` varchar(40) NOT NULL default '',
+ `update_user_id` varchar(40) NOT NULL default '',
+ `update_user_name` varchar(255) NOT NULL default '',
+ PRIMARY KEY (`timeframe_id`)
+) ENGINE=MyISAM;
+
+
-- --------------------------------------------------------
-- -
diff --git a/html/webapp/modules/reservation/templates/default/reservation_main_addreserve.html b/html/webapp/modules/reservation/templates/default/reservation_main_addreserve.html
index b9ea1da..1b63986 100644
--- a/html/webapp/modules/reservation/templates/default/reservation_main_addreserve.html
+++ b/html/webapp/modules/reservation/templates/default/reservation_main_addreserve.html
@@ -2,17 +2,29 @@
<{if ($smarty.session._user_id && $smarty.session._user_id != "0") }>
<{if ($location_id != 0) }>
-
- " class="icon" alt="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" title="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" />
-
- <{elseif ($hour === "") }>
-
+ <{if ($hour === "" && $timeframe_id === "") }>
+
+ <{elseif $timeframe_id === ""}>
+
+ <{else}>
+
+ <{/if}>
" class="icon" alt="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" title="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" />
<{else}>
-
- " class="icon" alt="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" title="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" />
-
+ <{if ($hour === "" && $timeframe_id === "") }>
+
+ " class="icon" alt="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" title="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" />
+
+ <{elseif $timeframe_id === ""}>
+
+ " class="icon" alt="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" title="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" />
+
+ <{else}>
+
+ " class="icon" alt="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" title="<{$lang.reservation_easy_addreserve|smarty:nodefaults}>" />
+
+ <{/if}>
<{/if}>
<{else}>
diff --git a/html/webapp/modules/reservation/templates/default/reservation_reserve_details_reserve_time.html b/html/webapp/modules/reservation/templates/default/reservation_reserve_details_reserve_time.html
index a73b5fc..63e61c2 100644
--- a/html/webapp/modules/reservation/templates/default/reservation_reserve_details_reserve_time.html
+++ b/html/webapp/modules/reservation/templates/default/reservation_reserve_details_reserve_time.html
@@ -4,6 +4,19 @@
<{$lang.reservation_reserve_time|smarty:nodefaults}>
+ <{if $action.reserve_block.display_timeframe == $smarty.const._ON}>
+ <{if !empty($action.start_timeframe|smarty:nodefaults) && !empty($action.end_timeframe|smarty:nodefaults)}>
+ <{if $action.start_timeframe.timeframe_id == $action.end_timeframe.timeframe_id}>
+ <{$action.start_timeframe.timeframe_name}>
+ <{else}>
+ <{$action.start_timeframe.timeframe_name}>
+ <{$lang.reservation_time_pause|smarty:nodefaults}>
+ <{$action.end_timeframe.timeframe_name}>
+ <{/if}>
+
+ <{/if}>
+ <{/if}>
+
<{if ($action.reserve.start_date_view == $action.reserve.end_date_view) }>
<{$action.reserve.start_date_str}>
<{if ($action.reserve.start_time_view != "000000" && $action.reserve.start_time_view != "240000") }>
diff --git a/html/webapp/modules/reservation/templates/default/reservation_reserve_regist_reserve_time.html b/html/webapp/modules/reservation/templates/default/reservation_reserve_regist_reserve_time.html
index 182b7aa..2498fa5 100644
--- a/html/webapp/modules/reservation/templates/default/reservation_reserve_regist_reserve_time.html
+++ b/html/webapp/modules/reservation/templates/default/reservation_reserve_regist_reserve_time.html
@@ -7,14 +7,33 @@
-
+
<{if ($reserve.allday_flag == _ON) }> checked="checked"<{/if}> onclick='reservationCls["<{$id}>"].switchAllday(this.form);' />
<{$lang.reservation_allday_flag|smarty:nodefaults}>
-
+
+ <{if $action.reserve_block.display_timeframe == $smarty.const._ON && $action.timeframe_list_count!=0}>
+
+ <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}> onchange='reservationCls["<{$id}>"].switchTimeframe(this, this.form, "start");'>
+ <{$lang.reservation_timeframe_start_frame}>
+ <{foreach from=$action.timeframe_list item=timeframe}>
+ <{if $timeframe.timeframe_id==$action.start_timeframe_id}> selected="selected"<{/if}>><{$timeframe.timeframe_name}>
+ <{/foreach}>
+
+
+ <{$lang.reservation_time_pause|smarty:nodefaults}>
+
+ <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}> onchange='reservationCls["<{$id}>"].switchTimeframe(this, this.form, "end");'>
+ <{$lang.reservation_timeframe_end_frame}>
+ <{foreach from=$action.timeframe_list item=timeframe}>
+ <{if $timeframe.timeframe_id==$action.end_timeframe_id}> selected="selected"<{/if}>><{$timeframe.timeframe_name}>
+ <{/foreach}>
+
+ <{/if}>
+
- <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}>>
+ <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}>>
<{section name=hour loop=24 start=0 step=1}>
<{assign var=hour value=$smarty.section.hour.index}>
<{assign var=reserve_hour value=$reserve.start_time_view|substr:0:2|intval}>
@@ -24,7 +43,7 @@
<{/section}>
- <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}>>
+ <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}>>
<{section name=minute loop=60 start=0 step=5}>
<{assign var=minute value=$smarty.section.minute.index}>
<{assign var=reserve_minute value=$reserve.start_time_view|substr:2:2|intval}>
@@ -33,10 +52,10 @@
<{/section}>
-
+
<{$lang.reservation_time_pause|smarty:nodefaults}>
-
- <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}> onchange='reservationCls["<{$id}>"].switchTime24Reserve(this.form);'>
+
+ <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}> onchange='reservationCls["<{$id}>"].switchTime24Reserve(this.form);'>
<{section name=hour loop=25 start=0 step=1}>
<{assign var=hour value=$smarty.section.hour.index}>
<{assign var=reserve_hour value=$reserve.end_time_view|substr:0:2|intval}>
@@ -46,7 +65,7 @@
<{/section}>
- <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}>>
+ <{if ($reserve.allday_flag == _ON) }> disabled="disabled"<{/if}>>
<{section name=minute loop=60 start=0 step=5}>
<{assign var=minute value=$smarty.section.minute.index}>
<{assign var=reserve_minute value=$reserve.end_time_view|substr:2:2|intval}>
diff --git a/html/webapp/modules/reservation/templates/default/reservation_style_timeframe_type.html b/html/webapp/modules/reservation/templates/default/reservation_style_timeframe_type.html
new file mode 100644
index 0000000..b952784
--- /dev/null
+++ b/html/webapp/modules/reservation/templates/default/reservation_style_timeframe_type.html
@@ -0,0 +1,15 @@
+<{strip}>
+
+
+
+ <{$lang.reservation_timeframe|smarty:nodefaults}>
+
+
+
+
+ <{if ($reserve_block.display_timeframe == $smarty.const._ON) }> checked="checked"<{/if}> <{if $action.timeframe_list_count == 0}>disabled="disabled"<{/if}> />
+ <{$lang.reservation_timeframe_on|smarty:nodefaults}>
+
+
+
+<{/strip}>
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/templates/default/reservation_view_edit_style_init.html b/html/webapp/modules/reservation/templates/default/reservation_view_edit_style_init.html
index ae9f253..fb4826a 100644
--- a/html/webapp/modules/reservation/templates/default/reservation_view_edit_style_init.html
+++ b/html/webapp/modules/reservation/templates/default/reservation_view_edit_style_init.html
@@ -19,6 +19,10 @@
<{include file="reservation_style_location.html" current_location_id=$action.reserve_block.location_id}>
+
+ <{include file="reservation_style_timeframe_type.html" reserve_block=$action.reserve_block}>
+
+
<{include file="reservation_style_default_time.html" reserve_block=$action.reserve_block}>
diff --git a/html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe.html b/html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe.html
new file mode 100644
index 0000000..d73b354
--- /dev/null
+++ b/html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe.html
@@ -0,0 +1,47 @@
+
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe_entry.html b/html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe_entry.html
new file mode 100644
index 0000000..8e9f96f
--- /dev/null
+++ b/html/webapp/modules/reservation/templates/default/reservation_view_edit_timeframe_entry.html
@@ -0,0 +1,115 @@
+<{strip}>
+
+
+
+<{include file="../reservation_script.html"}>
+
+<{/strip}>
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/templates/default/reservation_view_main_init_location.html b/html/webapp/modules/reservation/templates/default/reservation_view_main_init_location.html
index 8f24088..6eae9a2 100644
--- a/html/webapp/modules/reservation/templates/default/reservation_view_main_init_location.html
+++ b/html/webapp/modules/reservation/templates/default/reservation_view_main_init_location.html
@@ -12,11 +12,33 @@
+ <{if $action.reserve_block.display_timeframe == $smarty.const._ON}>
+
+ <{/if}>
+
+ <{if $action.reserve_block.display_timeframe == $smarty.const._ON}>
+
+
+
+ <{assign var=start_pos value=0}>
+ <{foreach from=$action.timeframe_list item=timeframe}>
+ <{assign var=spacer_width value=`$timeframe.left-$start_pos`}>
+
+
transparent<{else}><{$timeframe.timeframe_color}><{/if}>" title="<{$timeframe.start_time|timezone_date:false:$lang._short_time_format}><{$lang.reservation_time_pause}><{$timeframe.end_time|timezone_date:false:$lang._short_time_format}>">
+ <{$timeframe.timeframe_name}>
+
+ <{assign var=start_pos value=$timeframe.left+$timeframe.width}>
+ <{/foreach}>
+
+
+
+ <{/if}>
+
<{section name=hour loop=24 start=0 step=1}>
<{assign var=hour value=$smarty.section.hour.index}>
@@ -31,7 +53,7 @@
<{foreach name="location_list" key="location_id" item="location" from=$action.location_list}>
-
+
<{if ($action.reserve_data.$location_id.$view_date) }>
<{include file="reservation_view_main_list_location.html"}>
<{else}>
diff --git a/html/webapp/modules/reservation/templates/default/reservation_view_main_init_weekly.html b/html/webapp/modules/reservation/templates/default/reservation_view_main_init_weekly.html
index 68e7b92..371669b 100644
--- a/html/webapp/modules/reservation/templates/default/reservation_view_main_init_weekly.html
+++ b/html/webapp/modules/reservation/templates/default/reservation_view_main_init_weekly.html
@@ -1,7 +1,7 @@
<{strip}>
<{assign var="lang_year" value=$lang.reservation_monthly_year_format|smarty:nodefaults|date:"`$action.current_timestamp`"}>
-<{assign var="lang_month" value=$lang.reservation_monthly_month_format|smarty:nodefaults|date:"`$action.current_timestamp`"}>
+<{assign var="lang_month" value=$lang.reservation_monthly_month_format|smarty:nodefaults|date:"`$action.current_timestamp`"}>
<{include file="reservation_main_header_weekly.html"}>
@@ -12,6 +12,11 @@
+ <{if $action.reserve_block.display_timeframe == $smarty.const._ON}>
+
+ /images/common/blank.gif" alt="" title="" />
+
+ <{/if}>
/images/common/blank.gif" alt="" title="" />
@@ -24,7 +29,7 @@
<{/if}>
<{assign var="index" value=$smarty.section.timestamp.iteration-1}>
<{assign var="wday" value="w"|date:"`$timestamp`"}>
-
+
<{assign var="wday_data" value=$action.week_list.$wday}>
<{assign var="lang_wday" value=$lang.reservation_wday_format|smarty:nodefaults|sprintf:"`$wday_data.name`"}>
<{assign var="lang_day" value=$lang.reservation_weekly_format|smarty:nodefaults|date:"`$timestamp`"}>
@@ -32,7 +37,7 @@
<{include file="reservation_main_set_day_class.html" assign="day_class" view_date=$action.view_date set_date=$date wday=$wday}>
<{assign var="lang_year" value=$lang.reservation_monthly_year_format|smarty:nodefaults|date:"`$timestamp`"}>
- <{assign var="lang_month" value=$lang.reservation_monthly_month_format|smarty:nodefaults|date:"`$timestamp`"}>
+ <{assign var="lang_month" value=$lang.reservation_monthly_month_format|smarty:nodefaults|date:"`$timestamp`"}>
@@ -60,7 +65,24 @@
<{assign var=hour value=$smarty.section.hour.index}>
-
+ <{if $action.reserve_block.display_timeframe == $smarty.const._ON && ($smarty.section.hour.first)}>
+
+
+ <{assign var=start_pos value=0}>
+ <{foreach from=$action.timeframe_list item=timeframe}>
+ <{assign var=spacer_height value=`$timeframe.top-$start_pos`}>
+
+
transparent<{else}><{$timeframe.timeframe_color}><{/if}>" title="<{$timeframe.start_time|timezone_date:false:$lang._short_time_format}><{$lang.reservation_time_pause}><{$timeframe.end_time|timezone_date:false:$lang._short_time_format}>">
+
<{include file="reservation_main_addreserve.html" view_date=$first_date timeframe_id=`$timeframe.timeframe_id`}>
+ <{$timeframe.timeframe_name}>
+
+ <{assign var=start_pos value=$timeframe.top+$timeframe.height}>
+ <{/foreach}>
+
+
+ <{/if}>
+
+
<{$lang.reservation_time_format|smarty:nodefaults|sprintf:$hour}>
<{include file="reservation_main_addreserve.html" view_date=$first_date hour=$hour}>
@@ -71,8 +93,8 @@
<{section name=timestamp loop=$action.end_timestamp start=$action.start_timestamp step=86400}>
<{assign var="timestamp" value=$smarty.section.timestamp.index}>
<{assign var="date" value="Ymd"|date:$smarty.section.timestamp.index}>
-
-
+
+
<{if ($action.reserve_data.$date) }>
<{include file="./reservation_view_main_list_weekly.html"}>
@@ -81,13 +103,18 @@
<{/if}>
-
+
<{/section}>
<{/if}>
<{/section}>
+ <{if $action.reserve_block.display_timeframe == $smarty.const._ON}>
+
+
+ <{/if}>
+
/images/common/blank.gif" alt="" title="" />
diff --git a/html/webapp/modules/reservation/templates/default/reservation_view_main_reserve_regist.html b/html/webapp/modules/reservation/templates/default/reservation_view_main_reserve_regist.html
index 342f203..dcf37ea 100644
--- a/html/webapp/modules/reservation/templates/default/reservation_view_main_reserve_regist.html
+++ b/html/webapp/modules/reservation/templates/default/reservation_view_main_reserve_regist.html
@@ -19,7 +19,7 @@
<{include file="reservation_reserve_regist_location.html" reserve=$action.reserve|smarty:nodefaults}>
-
+
<{if ($action.details_flag == _ON) }>
<{include file="reservation_reserve_regist_contact.html" reserve=$action.reserve|smarty:nodefaults}>
@@ -36,7 +36,7 @@
<{/if}>
<{/if}>
-
+
<{if ($action.mail_send == _ON) }>
<{include file="reservation_reserve_regist_mail.html" reserve=$action.reserve|smarty:nodefaults}>
@@ -82,6 +82,10 @@
reservationCls["<{$id}>"].initRepeat();
<{/if}>
reservationCls["<{$id}>"].switchTime24Reserve($("reservation_form<{$id}>"));
+ if($("reservation_start_timeframe<{$id}>")) {
+ reservationCls["<{$id}>"].switchTimeframe($("reservation_start_timeframe<{$id}>"), $("reservation_form<{$id}>"), "start" );
+ reservationCls["<{$id}>"].switchTimeframe($("reservation_end_timeframe<{$id}>"), $("reservation_form<{$id}>"), "end" );
+ }
commonCls.focus("<{$id}>");
diff --git a/html/webapp/modules/reservation/update/Update.class.php b/html/webapp/modules/reservation/update/Update.class.php
index 2f47175..4cf030a 100644
--- a/html/webapp/modules/reservation/update/Update.class.php
+++ b/html/webapp/modules/reservation/update/Update.class.php
@@ -217,6 +217,39 @@ function execute()
}
}
+ // reservation_blockにカラムを追加
+ $adodb = $this->db->getAdoDbObject();
+ $metaColumns = $adodb->MetaColumns($this->db->getPrefix().'reservation_block');
+ if(!isset($metaColumns['DISPLAY_TIMEFRAME'])) {
+ $sql = "ALTER TABLE `".$this->db->getPrefix()."reservation_block` ".
+ " ADD `display_timeframe` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `display_type` ;";
+ $result = $this->db->execute($sql);
+ if($result === false) return false;
+ }
+ // reservation_timeframeテーブルを追加
+ $metaTables = $adodb->MetaTables();
+ if (!in_array($this->db->getPrefix()."reservation_timeframe", $metaTables)) {
+ $sql = "CREATE TABLE `".$this->db->getPrefix()."reservation_timeframe` (" .
+ " `timeframe_id` int(11) NOT NULL default '0'," .
+ " `timeframe_name` varchar(255) default NULL," .
+ " `start_time` varchar(14) NOT NULL default ''," .
+ " `end_time` varchar(14) NOT NULL default ''," .
+ " `timezone_offset` float(3,1) NOT NULL default '0.0'," .
+ " `timeframe_color` varchar(16) NOT NULL default ''," .
+ " `insert_time` varchar(14) NOT NULL default ''," .
+ " `insert_site_id` varchar(40) NOT NULL default ''," .
+ " `insert_user_id` varchar(40) NOT NULL default ''," .
+ " `insert_user_name` varchar(255) NOT NULL default ''," .
+ " `update_time` varchar(14) NOT NULL default ''," .
+ " `update_site_id` varchar(40) NOT NULL default ''," .
+ " `update_user_id` varchar(40) NOT NULL default ''," .
+ " `update_user_name` varchar(255) NOT NULL default ''," .
+ " PRIMARY KEY (`timeframe_id`)" .
+ ") ENGINE=MyISAM;";
+ $result = $this->db->execute($sql);
+ if($result === false) return false;
+ }
+
return true;
}
}
diff --git a/html/webapp/modules/reservation/validator/Validator_TimeframeAdjustment.class.php b/html/webapp/modules/reservation/validator/Validator_TimeframeAdjustment.class.php
new file mode 100644
index 0000000..0ced79b
--- /dev/null
+++ b/html/webapp/modules/reservation/validator/Validator_TimeframeAdjustment.class.php
@@ -0,0 +1,76 @@
+getComponent("Request");
+ $reservationView =& $container->getComponent("reservationView");
+
+ $actionChain =& $container->getComponent("ActionChain");
+ $actionName = $actionChain->getCurActionName();
+
+ $block = $request->getParameter('reserve_block');
+ if($block['display_timeframe'] == _OFF) {
+ return;
+ }
+
+ if ($actionName == "reservation_view_main_reserve_add") {
+ if(!isset($attributes['timeframe_id'])) {
+ return;
+ }
+ $timeframe_id = $attributes['timeframe_id'];
+ $timeframe = $reservationView->getTimeframe($timeframe_id);
+ if($timeframe && is_array($timeframe)) {
+ $request->setParameter('start_hour', $timeframe['start_time_view_hour']);
+ $request->setParameter('start_minute', $timeframe['start_time_view_min']);
+ $request->setParameter('end_hour', $timeframe['end_time_view_hour']);
+ $request->setParameter('end_minute', $timeframe['end_time_view_min']);
+ $request->setParameter('start_timeframe_id', $timeframe['timeframe_id']);
+ $request->setParameter('end_timeframe_id', $timeframe['timeframe_id']);
+ $request->setParameter('start_timeframe', $timeframe);
+ $request->setParameter('end_timeframe', $timeframe);
+ }
+ }
+ elseif($actionName == "reservation_view_main_reserve_modify" ||
+ $actionName == "reservation_view_main_reserve_details") {
+ $reserve = $request->getParameter("reserve");
+ if($reserve) {
+ $start_timeframe = $reservationView->getTimeframeByStartTime($reserve['start_time']);
+ if($start_timeframe) {
+ $request->setParameter('start_timeframe_id', $start_timeframe['timeframe_id']);
+ $request->setParameter('start_timeframe', $start_timeframe);
+ }
+ $end_timeframe = $reservationView->getTimeframeByEndTime($reserve['end_time']);
+ if($end_timeframe) {
+ $request->setParameter('end_timeframe_id', $end_timeframe['timeframe_id']);
+ $request->setParameter('end_timeframe', $end_timeframe);
+ }
+ }
+ }
+ return;
+ }
+}
+?>
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/validator/Validator_TimeframeListView.class.php b/html/webapp/modules/reservation/validator/Validator_TimeframeListView.class.php
new file mode 100644
index 0000000..df6e532
--- /dev/null
+++ b/html/webapp/modules/reservation/validator/Validator_TimeframeListView.class.php
@@ -0,0 +1,51 @@
+getComponent("reservationView");
+
+ $request =& $container->getComponent("Request");
+
+ $actionChain =& $container->getComponent("ActionChain");
+ $actionName = $actionChain->getCurActionName();
+
+
+ if($actionName == 'reservation_view_main_init') {
+ $divided_flag = true;
+ }
+ else {
+ $divided_flag = false;
+ }
+ $timeframe_list = $reservationView->getTimeframes($divided_flag);
+ $request->setParameter('timeframe_list', $timeframe_list);
+
+ $request->setParameter('timeframe_list_count', count($timeframe_list));
+
+ return;
+ }
+}
+?>
diff --git a/html/webapp/modules/reservation/validator/Validator_TimeframeTimetable.class.php b/html/webapp/modules/reservation/validator/Validator_TimeframeTimetable.class.php
new file mode 100644
index 0000000..13b4057
--- /dev/null
+++ b/html/webapp/modules/reservation/validator/Validator_TimeframeTimetable.class.php
@@ -0,0 +1,57 @@
+getComponent("Request");
+ $reservationView =& $container->getComponent("reservationView");
+
+ // このValidatorの前にlocationTimetable Validatorが実行されていることが前提
+
+ // 指定された時刻をGMTに修正したうえでチェック
+ $start_time = timezone_date($request->getParameter('start_time'), true, 'His');
+ $end_time = timezone_date($request->getParameter('end_time'), true, 'His');
+
+ // 0:00-24:00 の場合だけあり得る
+ if($start_time == $end_time) {
+ $end_time = strval(intval($end_time)+240000);
+ }
+
+ $ret = $reservationView->getTimeframeDuplicate($attributes['timeframe_id'], $start_time, $end_time);
+ if($ret == false) {
+ return $errStr;
+ }
+
+ // 差分チェックは入力データで行う
+ $diff = $reservationView->TimeDiff($request->getParameter('start_time'), $request->getParameter('end_time'));
+ if ($diff < RESERVATION_SELECT_MIN_TIME) {
+ return RESERVATION_ERR_TIMEFRAME_MIN_TIME;
+ }
+
+ return;
+ }
+}
+?>
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/validator/Validator_TimeframeView.class.php b/html/webapp/modules/reservation/validator/Validator_TimeframeView.class.php
new file mode 100644
index 0000000..bc313f1
--- /dev/null
+++ b/html/webapp/modules/reservation/validator/Validator_TimeframeView.class.php
@@ -0,0 +1,55 @@
+getComponent("reservationView");
+
+ $request =& $container->getComponent("Request");
+
+ $actionChain =& $container->getComponent("ActionChain");
+ $actionName = $actionChain->getCurActionName();
+
+ if(!isset($attributes['timeframe_id']) || empty($attributes['timeframe_id'])) {
+ if($actionName == 'reservation_action_edit_timeframe_delete') {
+ return $errStr;
+ }
+ else {
+ // 新規追加
+ return;
+ }
+ }
+ $timeframe = $reservationView->getTimeframe($attributes['timeframe_id']);
+ if(!$timeframe) {
+ return $errStr;
+ }
+
+ $request->setParameter('timeframe', $timeframe);
+
+ return;
+ }
+}
+?>
diff --git a/html/webapp/modules/reservation/view/edit/maple.ini b/html/webapp/modules/reservation/view/edit/maple.ini
index da59ff0..7087e7a 100644
--- a/html/webapp/modules/reservation/view/edit/maple.ini
+++ b/html/webapp/modules/reservation/view/edit/maple.ini
@@ -5,6 +5,7 @@ css_tab = "comp:{$theme_name}/comp_tabset.css"
_change_display = "define:reservation_view_edit_style_init"
reservation_location_manage = "_user_auth_id==_AUTH_ADMIN->commonCls.sendView('<{$id}>','reservation_view_edit_location_init');"
reservation_location_add = "_user_auth_id==_AUTH_ADMIN->commonCls.sendView('<{$id}>','reservation_view_edit_location_add');"
+reservation_timeframe = "_user_auth_id==_AUTH_ADMIN->commonCls.sendView('<{$id}>','reservation_view_edit_timeframe');"
reservation_mail = "_user_auth_id==_AUTH_ADMIN->commonCls.sendView('<{$id}>','reservation_view_edit_mail');"
reservation_csv_import = "_user_auth_id==_AUTH_ADMIN->commonCls.sendView('<{$id}>','reservation_view_edit_import_init');"
_edit_design = "define:_EDIT_DESIGN_METHOD"
diff --git a/html/webapp/modules/reservation/view/edit/style/init/Init.class.php b/html/webapp/modules/reservation/view/edit/style/init/Init.class.php
index 53b0cea..c734ce5 100644
--- a/html/webapp/modules/reservation/view/edit/style/init/Init.class.php
+++ b/html/webapp/modules/reservation/view/edit/style/init/Init.class.php
@@ -20,6 +20,7 @@ class Reservation_View_Edit_Style_Init extends Action
var $location_count = null;
var $reserve_block = null;
var $location_count_list = null;
+ var $timeframe_list_count = null;
/**
* execute処理
diff --git a/html/webapp/modules/reservation/view/edit/style/init/maple.ini b/html/webapp/modules/reservation/view/edit/style/init/maple.ini
index 548a74a..88730d1 100644
--- a/html/webapp/modules/reservation/view/edit/style/init/maple.ini
+++ b/html/webapp/modules/reservation/view/edit/style/init/maple.ini
@@ -1,6 +1,9 @@
[HeaderMenu]
1,_change_display = "define:auto"
+[SmartyAssign::reservationStyleAssign]
+global = timezone.ini
+
[AllowIdList]
room_id_arr = "ALLOW_ROOM_ID"
@@ -10,6 +13,7 @@ key:block_id.reservation.block:g = "1:lang._invalid_input"
key:reserve_block,location_count.reservation.locationExists:g = "1:lang.reservation_nolocation"
key:reserve_block,category_list.reservation.categoryView:g = "1:lang._invalid_input"
key:reserve_block.reservation.locationView:g = "1:lang._invalid_input"
+.reservation.TimeframeListView = "1:lang._invalid_input"
[View]
define:theme = 1
diff --git a/html/webapp/modules/reservation/view/edit/timeframe/Timeframe.class.php b/html/webapp/modules/reservation/view/edit/timeframe/Timeframe.class.php
new file mode 100644
index 0000000..5c1cc5f
--- /dev/null
+++ b/html/webapp/modules/reservation/view/edit/timeframe/Timeframe.class.php
@@ -0,0 +1,36 @@
+configView->getConfigByConfname($this->module_id, 'timeframe_color');
+ if($config) {
+ $this->timeframe_colors = explode('|', $config['conf_value']);
+ }
+
+ $this->timezone_list = explode("|", RESERVATION_DEF_TIMEZONE);
+
+ $this->week_list = $this->reservationView->getLocationWeekArray();
+
+ return 'success';
+ }
+}
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/view/edit/timeframe/entry/maple.ini b/html/webapp/modules/reservation/view/edit/timeframe/entry/maple.ini
new file mode 100644
index 0000000..a0a305e
--- /dev/null
+++ b/html/webapp/modules/reservation/view/edit/timeframe/entry/maple.ini
@@ -0,0 +1,10 @@
+[HeaderMenu]
+mode = "nobuild"
+
+[ValidateDef]
+key:timeframe_id.reservation.TimeframeView = "1:lang._invalid_input"
+
+
+[View]
+define:theme_name = "system"
+success = "reservation_view_edit_timeframe_entry.html"
\ No newline at end of file
diff --git a/html/webapp/modules/reservation/view/edit/timeframe/maple.ini b/html/webapp/modules/reservation/view/edit/timeframe/maple.ini
new file mode 100644
index 0000000..739bcba
--- /dev/null
+++ b/html/webapp/modules/reservation/view/edit/timeframe/maple.ini
@@ -0,0 +1,17 @@
+[SmartyAssign::reservationTimeframeAssign]
+global = timezone.ini
+
+[ValidateDef]
+authcheck = "1,_user_auth_id==_AUTH_ADMIN:lang._invalid_auth"
+.reservation.TimeframeListView = "1:lang._invalid_input"
+
+[HeaderMenu]
+1,reservation_timeframe = "define:auto"
+
+[Action]
+configView = "ref:configView"
+reservationView = "ref:reservationView"
+
+[View]
+define:theme = 1
+success = "reservation_view_edit_timeframe.html"
diff --git a/html/webapp/modules/reservation/view/main/init/Init.class.php b/html/webapp/modules/reservation/view/main/init/Init.class.php
index ea49c6c..f93584f 100644
--- a/html/webapp/modules/reservation/view/main/init/Init.class.php
+++ b/html/webapp/modules/reservation/view/main/init/Init.class.php
@@ -50,6 +50,9 @@ class Reservation_View_Main_Init extends Action
var $prev_day = null;
var $input_date = null;
+ var $timeframe_list = null;
+ var $timeframe_list_count = null;
+
/**
* execute実行
*
@@ -64,7 +67,7 @@ function execute()
if ($this->location_count == 0) {
return 'noLocation';
}
-
+
switch ($this->reserve_block["display_type"]) {
case RESERVATION_DEF_MONTHLY:
return 'successMonthly';
diff --git a/html/webapp/modules/reservation/view/main/init/maple.ini b/html/webapp/modules/reservation/view/main/init/maple.ini
index 12b010f..0d14393 100644
--- a/html/webapp/modules/reservation/view/main/init/maple.ini
+++ b/html/webapp/modules/reservation/view/main/init/maple.ini
@@ -1,3 +1,6 @@
+[SmartyAssign::reservationInitAssign]
+global = timezone.ini
+
[AllowIdList]
room_id_arr = "ALLOW_ROOM_ID"
@@ -13,6 +16,7 @@ key:category_list.reservation.categoryView:g = "1:lang.reservation_no_category"
key:category_id.reservation.locationView:g = "1:lang.reservation_select_nolocation"
key:start_date,end_date.reservation.holidayView:g = "1:lang.reservation_error_holiday"
key:start_date,end_date.reservation.reserveView:g = "1:lang.reservation_error_reserve"
+.reservation.TimeframeListView:g = "1:lang._invalid_input"
[Action]
session = "ref:Session"
diff --git a/html/webapp/modules/reservation/view/main/reserve/add/Add.class.php b/html/webapp/modules/reservation/view/main/reserve/add/Add.class.php
index 1b18cfe..ea82db5 100644
--- a/html/webapp/modules/reservation/view/main/reserve/add/Add.class.php
+++ b/html/webapp/modules/reservation/view/main/reserve/add/Add.class.php
@@ -29,6 +29,11 @@ class Reservation_View_Main_Reserve_Add extends Action
var $location_list = null;
var $location_count = null;
var $location_count_list = null;
+ var $reserve_block = null;
+ var $timeframe_list = null;
+ var $timeframe_list_count = null;
+ var $start_timeframe_id = null;
+ var $end_timeframe_id = null;
// Filterから受け取るため
var $room_arr = null;
diff --git a/html/webapp/modules/reservation/view/main/reserve/add/maple.ini b/html/webapp/modules/reservation/view/main/reserve/add/maple.ini
index b59c882..08b162f 100644
--- a/html/webapp/modules/reservation/view/main/reserve/add/maple.ini
+++ b/html/webapp/modules/reservation/view/main/reserve/add/maple.ini
@@ -8,8 +8,11 @@ room_arr = "ALLOW_ROOM_ARR"
room_id_arr = "ALLOW_ROOM_ID"
[ValidateDef]
+.reservation.TimeframeListView = "1:lang._invalid_input"
reserve_date.date:g = "1:lang._invalid_date,lang.reservation_reserve_time"
key:date.reservation.date:g = "1:lang._invalid_input"
+key:block_id.reservation.block:g = "1:lang._invalid_input"
+key:timeframe_id.reservation.timeframeAdjustment:g = "1:lang._invalid_input"
key:time,start_hour,start_minute.reservation.time:g = "1:lang.reservation_reserve_time"
key:time,end_hour,end_minute.reservation.time:g = "1:lang.reservation_reserve_time"
key:location_id.reservation.locationExists = "1:lang._invalid_input"
diff --git a/html/webapp/modules/reservation/view/main/reserve/details/Details.class.php b/html/webapp/modules/reservation/view/main/reserve/details/Details.class.php
index 4ddb6a5..26adf50 100644
--- a/html/webapp/modules/reservation/view/main/reserve/details/Details.class.php
+++ b/html/webapp/modules/reservation/view/main/reserve/details/Details.class.php
@@ -17,6 +17,9 @@ class Reservation_View_Main_Reserve_Details extends Action
// validatorから受け取るため
var $reserve = null;
var $rrule_reserve_id = null;
+ var $reserve_block = null;
+ var $start_timeframe = null;
+ var $end_timeframe = null;
/**
* execute実行
diff --git a/html/webapp/modules/reservation/view/main/reserve/details/maple.ini b/html/webapp/modules/reservation/view/main/reserve/details/maple.ini
index 0ff8a8e..042a766 100644
--- a/html/webapp/modules/reservation/view/main/reserve/details/maple.ini
+++ b/html/webapp/modules/reservation/view/main/reserve/details/maple.ini
@@ -8,6 +8,8 @@ room_id_arr = "ALLOW_ROOM_ID"
key:reserve_id.reservation.reserveExists:g = "1:lang._invalid_auth"
key:reserve_id.reservation.reserveView:g = "1:lang._invalid_auth"
key:location_id.reservation.locationExists:g = "1:lang._invalid_auth"
+key:block_id.reservation.block:g = "1:lang._invalid_input"
+.reservation.timeframeAdjustment:g = "1:lang._invalid_input"
[Action]
reservationView = "ref:reservationView"
diff --git a/html/webapp/modules/reservation/view/main/reserve/modify/Modify.class.php b/html/webapp/modules/reservation/view/main/reserve/modify/Modify.class.php
index a70db48..1dd042c 100644
--- a/html/webapp/modules/reservation/view/main/reserve/modify/Modify.class.php
+++ b/html/webapp/modules/reservation/view/main/reserve/modify/Modify.class.php
@@ -22,10 +22,15 @@ class Reservation_View_Main_Reserve_Modify extends Action
var $location = null;
var $allow_add_rooms = null;
var $category_list = null;
+ var $reserve_block = null;
var $location_id = null;
var $location_list = null;
var $location_count = null;
var $location_count_list = null;
+ var $timeframe_list = null;
+ var $timeframe_list_count = null;
+ var $start_timeframe_id = null;
+ var $end_timeframe_id = null;
// Filterから受け取るため
var $room_arr = null;
diff --git a/html/webapp/modules/reservation/view/main/reserve/modify/maple.ini b/html/webapp/modules/reservation/view/main/reserve/modify/maple.ini
index f569159..793693e 100644
--- a/html/webapp/modules/reservation/view/main/reserve/modify/maple.ini
+++ b/html/webapp/modules/reservation/view/main/reserve/modify/maple.ini
@@ -13,6 +13,9 @@ key:reserve_id.reservation.reserveView:g = "1:lang._invalid_auth"
key:location_id.reservation.locationExists:g = "1:lang._invalid_auth"
key:category_list.reservation.categoryView:g = "1:lang.reservation_no_category"
key:category_id,location_id.reservation.locationView:g = "1:lang.reservation_select_nolocation"
+key:block_id.reservation.block:g = "1:lang._invalid_input"
+.reservation.TimeframeListView = "1:lang._invalid_input"
+.reservation.timeframeAdjustment:g = "1:lang._invalid_input"
[HeaderInc]
textarea_css = "comp:{$theme_name}/comp_textarea.css"
From 964f92a83bb337380bb7b4d0d826128d999eb1bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=89=9F=E7=94=B0=E5=8F=A3=E3=80=80=E6=BA=80?=
Date: Wed, 17 Jul 2013 10:54:48 +0900
Subject: [PATCH 007/109] =?UTF-8?q?=E4=BC=9A=E5=93=A1=E7=99=BB=E9=8C=B2?=
=?UTF-8?q?=E3=81=A7=E6=80=A7=E5=88=A5=E3=82=92=E5=BF=85=E9=A0=88=E3=81=AB?=
=?UTF-8?q?=E3=81=97=E3=81=9F=E6=99=82=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC?=
=?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
エラーメッセージが「7:性別を入力してください。」
→「性別を入力してください。」になるように修正
---
html/webapp/modules/login/files/js/default/login.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/html/webapp/modules/login/files/js/default/login.js b/html/webapp/modules/login/files/js/default/login.js
index 42f0be6..3aa4d46 100644
--- a/html/webapp/modules/login/files/js/default/login.js
+++ b/html/webapp/modules/login/files/js/default/login.js
@@ -92,7 +92,7 @@ clsLogin.prototype = {
commonCls.alert(alert_res);
commonCls.focus(focus_el);
} else {
- commonCls.alert(res);
+ commonCls.alert(alert_res);
}
} else {
commonCls.alert(res);
From 6b0dc5af2af6928bc717e63b3a57577fe5beffce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=89=9F=E7=94=B0=E5=8F=A3=E3=80=80=E6=BA=80?=
Date: Wed, 17 Jul 2013 11:23:52 +0900
Subject: [PATCH 008/109] =?UTF-8?q?#80=20=E4=BD=B5=E3=81=9B=E3=81=A6?=
=?UTF-8?q?=E4=BC=9A=E5=93=A1=E7=AE=A1=E7=90=86=E3=81=8B=E3=82=89=E3=81=AE?=
=?UTF-8?q?=E4=BC=9A=E5=93=A1=E7=99=BB=E9=8C=B2=E6=99=82=E3=81=AE=E5=90=8C?=
=?UTF-8?q?=E6=A7=98=E3=81=AE=E4=B8=8D=E5=82=99=E3=82=92=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
html/webapp/modules/user/files/js/default/user.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/html/webapp/modules/user/files/js/default/user.js b/html/webapp/modules/user/files/js/default/user.js
index 63990a9..67014b6 100644
--- a/html/webapp/modules/user/files/js/default/user.js
+++ b/html/webapp/modules/user/files/js/default/user.js
@@ -624,7 +624,7 @@ clsUser.prototype = {
focus_el.focus();
if(focus_el.type == "text") focus_el.select();
} else {
- commonCls.alert(res);
+ commonCls.alert(alert_res);
}
} else {
commonCls.alert(res);
From 2706aa29d22af760eb6737a4ec9452d7c55dd5a1 Mon Sep 17 00:00:00 2001
From: Rika Fujiwara
Date: Thu, 18 Jul 2013 17:32:07 +0900
Subject: [PATCH 009/109] =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=A0=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E6=A9=9F=E8=83=BD=E3=81=AB=E6=A8=A9=E9=99=90=E8=A8=AD?=
=?UTF-8?q?=E5=AE=9A=E3=81=AECSV=E3=82=A8=E3=82=AF=E3=82=B9=E3=83=9D?=
=?UTF-8?q?=E3=83=BC=E3=83=88=E6=A9=9F=E8=83=BD=E3=81=A8=E3=82=A4=E3=83=B3?=
=?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=88=E6=A9=9F=E8=83=BD=E3=82=92=E8=BF=BD?=
=?UTF-8?q?=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../room/action/admin/export/Export.class.php | 79 +++++
.../room/action/admin/export/maple.ini | 21 ++
.../admin/import/confirm/Confirm.class.php | 203 +++++++++++++
.../action/admin/import/confirm/dicon.ini | 3 +
.../action/admin/import/confirm/maple.ini | 30 ++
.../modules/room/components/View.class.php | 204 +++++++++++++
html/webapp/modules/room/config/main.ini | 9 +-
.../modules/room/files/css/default/style.css | 54 +++-
html/webapp/modules/room/files/js/room.js | 85 ++++++
.../modules/room/language/chinese/main.ini | 65 +++-
.../modules/room/language/english/main.ini | 65 +++-
.../modules/room/language/japanese/main.ini | 65 +++-
.../room_action_admin_import_confirm.html | 55 ++++
.../default/room_view_admin_import.html | 98 +++++++
.../room_view_admin_import_confirm.html | 68 +++++
.../room_view_admin_regist_selectusers.html | 8 +
.../default/room_view_admin_roomlist.html | 6 +
.../Validator_ImportRoomIdCheck.class.php | 55 ++++
.../room/view/admin/export/Export.class.php | 168 +++++++++++
.../modules/room/view/admin/export/dicon.ini | 3 +
.../modules/room/view/admin/export/maple.ini | 26 ++
.../room/view/admin/import/Import.class.php | 85 ++++++
.../admin/import/confirm/Confirm.class.php | 60 ++++
.../room/view/admin/import/confirm/maple.ini | 8 +
.../modules/room/view/admin/import/maple.ini | 20 ++
.../view/admin/import/upload/Upload.class.php | 277 ++++++++++++++++++
.../room/view/admin/import/upload/dicon.ini | 4 +
.../room/view/admin/import/upload/maple.ini | 24 ++
.../regist/selectusers/Selectusers.class.php | 17 +-
29 files changed, 1858 insertions(+), 7 deletions(-)
create mode 100644 html/webapp/modules/room/action/admin/export/Export.class.php
create mode 100644 html/webapp/modules/room/action/admin/export/maple.ini
create mode 100644 html/webapp/modules/room/action/admin/import/confirm/Confirm.class.php
create mode 100644 html/webapp/modules/room/action/admin/import/confirm/dicon.ini
create mode 100644 html/webapp/modules/room/action/admin/import/confirm/maple.ini
create mode 100644 html/webapp/modules/room/components/View.class.php
create mode 100644 html/webapp/modules/room/templates/default/room_action_admin_import_confirm.html
create mode 100644 html/webapp/modules/room/templates/default/room_view_admin_import.html
create mode 100644 html/webapp/modules/room/templates/default/room_view_admin_import_confirm.html
create mode 100644 html/webapp/modules/room/validator/Validator_ImportRoomIdCheck.class.php
create mode 100644 html/webapp/modules/room/view/admin/export/Export.class.php
create mode 100644 html/webapp/modules/room/view/admin/export/dicon.ini
create mode 100644 html/webapp/modules/room/view/admin/export/maple.ini
create mode 100644 html/webapp/modules/room/view/admin/import/Import.class.php
create mode 100644 html/webapp/modules/room/view/admin/import/confirm/Confirm.class.php
create mode 100644 html/webapp/modules/room/view/admin/import/confirm/maple.ini
create mode 100644 html/webapp/modules/room/view/admin/import/maple.ini
create mode 100644 html/webapp/modules/room/view/admin/import/upload/Upload.class.php
create mode 100644 html/webapp/modules/room/view/admin/import/upload/dicon.ini
create mode 100644 html/webapp/modules/room/view/admin/import/upload/maple.ini
diff --git a/html/webapp/modules/room/action/admin/export/Export.class.php b/html/webapp/modules/room/action/admin/export/Export.class.php
new file mode 100644
index 0000000..37a03ab
--- /dev/null
+++ b/html/webapp/modules/room/action/admin/export/Export.class.php
@@ -0,0 +1,79 @@
+>ルーム一覧>>参加者修正>>エクスポート>>準備
+ *
+ * @package NetCommons
+ * @author Noriko Arai,Ryuji Masukawa
+ * @copyright 2006-2007 NetCommons Project
+ * @license http://www.netcommons.org/license.txt NetCommons License
+ * @project NetCommons Project, supported by National Institute of Informatics
+ * @access public
+ */
+
+class Room_Action_Admin_Export extends Action
+{
+ // リクエストパラメータをセットするため
+ var $parent_page_id = null;
+ var $edit_current_page_id = null;
+
+ // VAlidatorでセット
+ var $page = null;
+
+ // 使用コンポーネントを受け取るため
+ var $session = null;
+ var $db = null;
+ var $actionChain = null;
+
+
+ // 値をセットするため
+
+ /**
+ * execute実行
+ *
+ * @access public
+ */
+ function execute()
+ {
+ $this->session->setParameter(array('room', 'export', 'current_page_id'), $this->edit_current_page_id);
+ $this->session->setParameter(array('room', 'export', 'current_page_name'), $this->page['page_name']);
+
+ $select_str =& $this->session->getParameter(array('room', $this->edit_current_page_id, 'selected_select_str'));
+ $from_str =& $this->session->getParameter(array('room', $this->edit_current_page_id, 'selected_from_str'));
+ $add_from_str =& $this->session->getParameter(array('room', $this->edit_current_page_id, 'selected_add_from_str'));
+ $where_str =& $this->session->getParameter(array('room', $this->edit_current_page_id, 'selected_where_str'));
+ $add_where_str =& $this->session->getParameter(array('room', $this->edit_current_page_id,'selected_add_where_str'));
+ $export_add_where_str = ' AND {authorities}.user_authority_id != ?';
+ $params =& $this->session->getParameter(array('room', $this->edit_current_page_id, 'selected_params'));
+ $from_params =& $this->session->getParameter(array('room', $this->edit_current_page_id, 'selected_from_params'));
+ $where_params =& $this->session->getParameter(array('room', $this->edit_current_page_id, 'selected_where_params'));
+ if(!is_array($from_params)) $from_params = array();
+ if(!is_array($where_params)) $where_params = array();
+
+ $export_where_params = array(_AUTH_ADMIN);
+
+ $sql_params = array_merge((array)$params, (array)$from_params, (array)$where_params, (array)$export_where_params);
+
+ $sql = $select_str.$from_str.$add_from_str.$where_str.$add_where_str.$export_add_where_str;
+
+ //
+ // レコード数取得
+ //
+ $count_sql = 'SELECT COUNT(*) FROM (' . $select_str.$from_str.$add_from_str.$where_str.$add_where_str.$export_add_where_str . ') AS T';
+ $count_result =& $this->db->execute($count_sql, $sql_params, null, null, false);
+ if($count_result === false) {
+ $this->db->addError();
+ return 'error';
+ }
+
+ $data_count = intval($count_result[0][0]);
+ if($data_count == 0) {
+ $errorList =& $this->actionChain->getCurErrorList();
+ $errorList->add(get_class($this), ROOM_EXPORT_NONE);
+ return 'error';
+ }
+
+ return 'success';
+ }
+}
+?>
\ No newline at end of file
diff --git a/html/webapp/modules/room/action/admin/export/maple.ini b/html/webapp/modules/room/action/admin/export/maple.ini
new file mode 100644
index 0000000..f5ba385
--- /dev/null
+++ b/html/webapp/modules/room/action/admin/export/maple.ini
@@ -0,0 +1,21 @@
+[TokenExtra::TokenExtraExport]
+mode="check"
+action = "room_view_admin_regist_selectusers"
+
+[ValidateDef]
+parent_page_id.required ="1:lang._invalid_input"
+edit_current_page_id.required ="1:lang._invalid_input"
+parent_page_id,edit_current_page_id.room.RoomRegist = "1,export:lang._invalid_input"
+
+[Action]
+session = "ref:Session"
+db = "ref:DbObject"
+actionChain = "ref:ActionChain"
+
+
+[View]
+define:theme = 0
+success = "main:true.html"
+;success = "location:room_view_admin_export"
+;success = "location_script:"
+error = "main:error.html"
diff --git a/html/webapp/modules/room/action/admin/import/confirm/Confirm.class.php b/html/webapp/modules/room/action/admin/import/confirm/Confirm.class.php
new file mode 100644
index 0000000..d2bd4f6
--- /dev/null
+++ b/html/webapp/modules/room/action/admin/import/confirm/Confirm.class.php
@@ -0,0 +1,203 @@
+authoritiesView->getAuthorities(array('(system_flag ='. _ON . ' OR user_authority_id = '. _AUTH_MODERATE. ') AND user_authority_id != '. _AUTH_ADMIN => null));
+ $this->authorities = array();
+ foreach($tmp_authorities as $a) {
+ $a['new_total'] = 0;
+ $a['added_num'] = 0;
+ $this->authorities[$a['role_authority_id']] = $a;
+ }
+
+ $errorList =& $this->actionChain->getCurErrorList();
+ $warn_cnt = 0;
+
+ // 不要セッション情報初期化
+ $this->session->removeParameter(array('room', 'import', 'count'));
+ $this->session->removeParameter(array('room', 'import', 'warn'));
+
+ // メンバ変数初期化
+ $this->added_auth_member_num = array();
+ $this->total_auth_member_num = array();
+ $this->deleted_auth_member_num = 0;
+
+ // デフォルト参加権限定義情報を取得しておきます
+ $config = $this->configView->getConfigByCatid(_SYS_CONF_MODID, _GENERAL_CONF_CATID);
+ if($this->page['default_entry_flag'] == _OFF) {
+ $default_role_auth = _ROLE_AUTH_OTHER;
+ }
+ else {
+ if($this->page['space_type'] == _SPACE_TYPE_PUBLIC) {
+ $default_role_auth = $config['default_entry_role_auth_public']['conf_value'];
+ }
+ else {
+ $default_role_auth = $config['default_entry_role_auth_group']['conf_value'];
+ }
+ }
+
+ // 変更ユーザ情報、対象ルームユーザ情報取得
+ $change_users = $this->session->getParameter(array('room', 'import', 'data'));
+ $users = $this->roomView->getRoomUsersList($this->page, $this->parent_page, $this->authorities);
+
+ $my_handle = $this->session->getParameter('_handle');
+
+ foreach($change_users as $handle=>$new_auth) {
+ // 対象者が存在しない会員だった
+ // 管理者権限だった
+ // 自分だった
+ // 警告追加&スキップ
+ if($handle==$my_handle
+ || !isset($users[$handle])
+ || $users[$handle]['user_authority_id'] == _AUTH_ADMIN ) {
+ $this->session->setParameter(array('room', 'import', 'warn', $warn_cnt++), $handle);// 警告追加しスキップ
+ continue;
+ }
+ $where_params = array(
+ 'room_id' => $this->edit_current_page_id,
+ 'user_id' => $users[$handle]['user_id']
+ );
+ $ins_params = array(
+ 'room_id' => $this->edit_current_page_id,
+ 'user_id' => $users[$handle]['user_id'],
+ 'role_authority_id' => $new_auth,
+ 'createroom_flag' => _OFF
+ );
+ $upd_params = array(
+ 'role_authority_id' => $new_auth
+ );
+ $del_upd_params = array(
+ 'role_authority_id' => $new_auth,
+ 'createroom_flag' => _OFF
+ );
+
+ // 不参加に
+ if($new_auth == _ROLE_AUTH_OTHER) {
+ if($default_role_auth==$new_auth) {
+ $resultPageUserLink = $this->pagesAction->delPageUsersLink($where_params);
+ }
+ else {
+ if($users[$handle]['createroom_flag']==_OFF && $users[$handle]['authority_id']==$default_role_auth) {
+ $resultPageUserLink = $this->pagesAction->insPageUsersLink($ins_params);
+ }
+ else {
+ $resultPageUserLink = $this->pagesAction->updPageUsersLink($del_upd_params, $where_params);
+ }
+ }
+
+ // 対象が親ルームの場合は、全てのサブルームからも削除
+ if($this->page['space_type']!=_SPACE_TYPE_PUBLIC && $this->page['thread_num']==1) {
+ $subroom_where_params = array($this->edit_current_page_id, $users[$handle]['user_id']);
+ $sql = ' DELETE FROM {pages_users_link} WHERE room_id IN (SELECT page_id FROM {pages} WHERE parent_id=? AND page_id=room_id) AND user_id = ?';
+ $this->db->execute($sql, $subroom_where_params);
+ }
+ if($resultPageUserLink) {
+ $this->deleted_auth_member_num++;
+ }
+ }
+ // 権限変更
+ else {
+ if(!isset($users[$handle]['permitted_auth'][$new_auth])
+ || $users[$handle]['permitted_auth'][$new_auth]==_OFF) {
+ $this->session->setParameter(array('room', 'import', 'warn', $warn_cnt++), $handle);// 警告追加しスキップ
+ continue;
+ }
+ // デフォルト権限での参加に変更
+ if($new_auth==$default_role_auth) {
+ // しかし現状ルーム作成権限がON
+ if($users[$handle]['createroom_flag']==_ON) {
+ // ならばUPDATEでレコード温存
+ $resultPageUserLink = $this->pagesAction->updPageUsersLink($upd_params, $where_params);
+ }
+ // ルーム作成権限OFF
+ else {
+ // ならばレコード削除
+ $resultPageUserLink = $this->pagesAction->delPageUsersLink($where_params);
+ }
+ }
+ else {
+ if($users[$handle]['authority_id']==$default_role_auth) {
+ // しかし現状ルーム作成権限がON
+ if($users[$handle]['createroom_flag']==_ON) {
+ // ならば既にレコードあり。UPDATE
+ $resultPageUserLink = $this->pagesAction->updPageUsersLink($upd_params, $where_params);
+ }
+ else {
+ $resultPageUserLink = $this->pagesAction->insPageUsersLink($ins_params);
+ }
+ }
+ else {
+ $resultPageUserLink = $this->pagesAction->updPageUsersLink($upd_params, $where_params);
+ }
+ }
+ if($resultPageUserLink) {
+ $this->authorities[$new_auth]['added_num']++;
+ }
+ }
+ if($resultPageUserLink) {
+ $users[$handle]['authority_id'] = $new_auth;
+ }
+ else {
+ $this->session->setParameter(array('room', 'import', 'warn', $warn_cnt++), $handle);// 警告追加しスキップ
+ }
+ }
+
+ foreach($users as $handle=>$user) {
+ if(!isset($this->authorities[$user['authority_id']])) {
+ continue;
+ }
+ $this->authorities[$user['authority_id']]['new_total']++;
+ }
+
+ foreach($this->authorities as $a) {
+ $this->added_auth_member_num[$a['role_authority_name']] = $a['added_num'];
+ $this->total_auth_member_num[$a['role_authority_name']] = $a['new_total'];
+ }
+ return 'success';
+ }
+}
\ No newline at end of file
diff --git a/html/webapp/modules/room/action/admin/import/confirm/dicon.ini b/html/webapp/modules/room/action/admin/import/confirm/dicon.ini
new file mode 100644
index 0000000..fc26ae6
--- /dev/null
+++ b/html/webapp/modules/room/action/admin/import/confirm/dicon.ini
@@ -0,0 +1,3 @@
+[DIContainer]
+roomView = "modules://room.components.view"
+pagesAction = "pages.Action"
diff --git a/html/webapp/modules/room/action/admin/import/confirm/maple.ini b/html/webapp/modules/room/action/admin/import/confirm/maple.ini
new file mode 100644
index 0000000..75da971
--- /dev/null
+++ b/html/webapp/modules/room/action/admin/import/confirm/maple.ini
@@ -0,0 +1,30 @@
+[DIContainer]
+filename_import = "dicon.ini"
+
+[TokenExtra]
+mode="check"
+action="room_view_admin_import_confirm"
+
+[ValidateDef]
+authcheck = "1,_auth_id>=_AUTH_CHEIF:lang._invalid_auth"
+parent_page_id,edit_current_page_id.room.ImportRoomIdCheck = "1:lang._invalid_input"
+parent_page_id.required ="1:lang._invalid_input"
+edit_current_page_id.required ="1:lang._invalid_input"
+parent_page_id,edit_current_page_id.room.RoomRegist = "1,export:lang._invalid_input"
+
+[Action]
+session = "ref:Session"
+configView = "ref:configView"
+usersView = "ref:usersView"
+pagesView = "ref:pagesView"
+pagesAction = "ref:pagesAction"
+roomView = "ref:roomView"
+authoritiesView = "ref:authoritiesView"
+actionChain = "ref:ActionChain"
+db = "ref:DbObject"
+
+[View]
+define:theme = 1
+success = "room_action_admin_import_confirm.html"
+error = "main:error.html"
+
diff --git a/html/webapp/modules/room/components/View.class.php b/html/webapp/modules/room/components/View.class.php
new file mode 100644
index 0000000..29eec87
--- /dev/null
+++ b/html/webapp/modules/room/components/View.class.php
@@ -0,0 +1,204 @@
+_container =& DIContainerFactory::getContainer();
+ $this->_db =& $this->_container->getComponent("DbObject");
+ $this->_session =& $this->_container->getComponent("Session");
+ $this->_authoritiesView =& $this->_container->getComponent("authoritiesView");
+ $this->_configView =& $this->_container->getComponent("configView");
+ }
+ /**
+ * ルーム内参加可能者一覧、およびそれらの人物へ与えているロール権限、そして権限設定可能上限
+ *
+ * @access public
+ */
+ function &getRoomUsersList($page, $parent_page, $authorities)
+ {
+ $subroom_flag = false;
+ $edit_current_page_id = $page['page_id'];
+ $parent_page_id = $parent_page['page_id'];
+ if($edit_current_page_id != _SELF_TOPPUBLIC_ID && $parent_page['thread_num']==1) {
+ $subroom_flag = true;
+ }
+ $space_type = $page['space_type'];
+ // 親ページがない=パブリックスペースTOP
+ // このときはcreateroom_flag設定による権限以上の権限取得の抜け駆け禁止
+ if($space_type == _SPACE_TYPE_PUBLIC && $page['thread_num'] == 0) {
+ $public_top_page_flag = _ON;
+ }
+ else {
+ $public_top_page_flag = _OFF;
+ }
+
+ $default_entry_flag = $page['default_entry_flag'];
+
+ $config = $this->_configView->getConfigByCatid(_SYS_CONF_MODID, _GENERAL_CONF_CATID);
+ if($config == false) {
+ return false;
+ }
+ $default_entry_role_auth_public = $config['default_entry_role_auth_public']['conf_value'];
+ $default_entry_role_auth_group = $config['default_entry_role_auth_group']['conf_value'];
+
+
+ $params = array();
+ $select_str = 'SELECT {users}.user_id, {users}.handle, '.
+ '{authorities}.user_authority_id,'.
+ '{authorities}.role_authority_id,'.
+ '{authorities}.public_createroom_flag,'.
+ '{authorities}.group_createroom_flag,'.
+ '{authorities}.hierarchy,'.
+ '{pages_users_link}.role_authority_id AS authority_id,'.
+ '{pages_users_link}.createroom_flag';
+
+ $from_str = ' FROM {authorities}, {users}'.
+ ' LEFT JOIN {pages_users_link} ON {pages_users_link}.room_id='.$edit_current_page_id.
+ ' AND {users}.user_id={pages_users_link}.user_id ';
+
+ $where_str = ' WHERE {users}.role_authority_id={authorities}.role_authority_id';
+
+ if($parent_page['thread_num'] >= 1) {
+ //親ルームに参加している会員すべて(サブグループ作成)
+ if($parent_page['default_entry_flag']) {
+ $where_str .= ' AND {users}.user_id NOT IN (SELECT user_id FROM {pages_users_link} WHERE room_id =' . $parent_page_id . ' AND role_authority_id = ' . _ROLE_AUTH_OTHER . ')';
+ }
+ else {
+ $where_str .= ' AND {users}.user_id IN (SELECT user_id FROM {pages_users_link} WHERE room_id =' . $parent_page_id . ')';
+ }
+ }
+ $sql = $select_str . $from_str . $where_str;
+ $users =& $this->_db->execute($sql, $params, null, null, true,
+ array($this, '_usersFetchCallback'),
+ array($subroom_flag, $space_type, $default_entry_flag, $default_entry_role_auth_public, $default_entry_role_auth_group, $authorities, $public_top_page_flag));
+ return $users;
+ }
+ /**
+ * fetch時コールバックメソッド
+ * @param result adodb object
+ * @return array items
+ * @access private
+ */
+ function &_roomusersFetchcallback($result)
+ {
+ $ret = array();
+ while ($row = $result->fetchRow()) {
+ $ret[$row['user_id']] = $row;
+ }
+ return $ret;
+ }
+ /**
+ * fetch時コールバックメソッド
+ * @param result adodb object
+ * @return array items
+ * @access private
+ */
+ function &_usersFetchcallback($result, $params)
+ {
+ $subroom_flag = $params[0];
+ $space_type = $params[1];
+ $default_entry_flag = $params[2];
+ $default_entry_role_auth_public = $params[3];
+ $default_entry_role_auth_group = $params[4];
+ $authorities = $params[5];
+ $public_top_page_flag = $params[6];
+
+ $auth = array();
+ foreach($authorities as $a) {
+ $auth[$a['role_authority_id']] = $a;
+ }
+
+ $ret = array();
+
+ while ($row = $result->fetchRow()) {
+ // createroom_flag がONでも、該当のページがパブリックスペースのTOPのときは有効にならない!
+ if(($public_top_page_flag==_OFF && $row['createroom_flag']==_ON) || ($public_top_page_flag==_OFF && $space_type==_SPACE_TYPE_PUBLIC && $row['public_createroom_flag']==_ON) || ($space_type==_SPACE_TYPE_GROUP && $row['group_createroom_flag']==_ON)) {
+ $createroom_flag =_ON;
+ }
+ else {
+ $createroom_flag =_OFF;
+ }
+ // authがNULLのとき デフォルト権限を意味する
+ if(is_null($row['authority_id'])) {
+ if($default_entry_flag==_OFF) {
+ $row['authority_id'] = _ROLE_AUTH_OTHER;
+ }
+ else {
+ if($space_type==_SPACE_TYPE_PUBLIC) {
+ $row['authority_id'] = $default_entry_role_auth_public;
+ }
+ else {
+ $row['authority_id'] = $default_entry_role_auth_group;
+ }
+ }
+ }
+
+ $row_auth = array();
+ foreach($auth as $auth_id=>$a) {
+
+ $row_auth[$auth_id] = false;
+
+ if($subroom_flag == true) { // サブルームであれば誰でも何にでもなれる
+ $row_auth[$auth_id] = true;
+ }
+ else {
+ if($auth_id==_ROLE_AUTH_CHIEF) {
+ if($row['hierarchy'] >=_HIERARCHY_CHIEF || ($row['authority_id'] == _ROLE_AUTH_ADMIN || $row['authority_id'] == _ROLE_AUTH_CHIEF) || $createroom_flag==_ON) {
+ $row_auth[$auth_id] = true;
+ }
+ }
+ else if($auth_id==_ROLE_AUTH_GENERAL) {
+ if($row['hierarchy'] >=_HIERARCHY_GENERAL || ($row['authority_id'] == _ROLE_AUTH_GENERAL) || $createroom_flag==_ON) {
+ $row_auth[$auth_id] = true;
+ }
+ }
+ else if($auth_id==_ROLE_AUTH_GUEST) { // ゲストは誰でもなれる
+ $row_auth[$auth_id] = true;
+ }
+ else {
+ if($row['hierarchy']>=$a['hierarchy'] || $createroom_flag == _ON || $row['authority_id'] == $a['role_authority_id']) {
+ $row_auth[$auth_id] = true;
+ }
+ }
+ }
+ }
+ $row['permitted_auth'] = $row_auth;
+ $ret[$row['handle']] = $row;
+ }
+ return $ret;
+ }
+}
diff --git a/html/webapp/modules/room/config/main.ini b/html/webapp/modules/room/config/main.ini
index d90e3c0..3367d25 100644
--- a/html/webapp/modules/room/config/main.ini
+++ b/html/webapp/modules/room/config/main.ini
@@ -6,4 +6,11 @@ room_list_visible_rows = 18 ;//ルーム一覧表示行数
room_users_regist_once = 30000 ;//一度に登録する会員数(この数を越える会員の登録を行う場合、sendを複数回繰り返す)
[Room_View_Admin_Regist_Selectusers:Room_View_Admin_Regist_Confirm]
-room_users_list = 15 ;//会員選択一覧表示行数
\ No newline at end of file
+room_users_list = 15 ;//会員選択一覧表示行数
+
+[Room_View_Admin_Import]
+define:ROOM_IMPORT_LINE_LIMIT = 10000
+
+[Room_View_Admin_Import_Upload]
+define:ROOM_TIME_LIMIT = 12000
+define:ROOM_IMPORT_ITEM_COLUMN = 2
\ No newline at end of file
diff --git a/html/webapp/modules/room/files/css/default/style.css b/html/webapp/modules/room/files/css/default/style.css
index ca6d442..f4e3017 100644
--- a/html/webapp/modules/room/files/css/default/style.css
+++ b/html/webapp/modules/room/files/css/default/style.css
@@ -28,7 +28,7 @@ div.room_init_icon_title {
width:120px;
}
.room_admin{
- width:340px;
+ width:460px;
}
img.room_prefix_icon {
height:15px;
@@ -112,6 +112,11 @@ img.room_prefix_icon {
margin:5px;
padding:0.4em;
}
+div.room_csv_export {
+ float:right;
+ margin:-1.5em 20px 0.5em 0;
+ font-weight:bold;
+}
/* 登録内容確認 */
.room_confirm_default_entry {
font-weight:bold;
@@ -130,4 +135,51 @@ select.room_selectlist {
}
.room_inf td {
padding:6px;
+}
+/* 参加者インポート */
+.room_import_file_select {
+ width:32em;
+}
+.room_import_help_field {
+ width:42em;
+}
+div.room_import_help_description {
+ overflow: auto;
+ border: 1px solid;
+ padding: 5px;
+}
+table.room_import_help_description {
+ width:100%;
+}
+tr.room_grid_row {
+ margin : 1px;
+ border:1px solid #d5d5d5;
+ height : 22px;
+ overflow : hidden;
+ line-height: 18px;
+}
+th.room_grid_header {
+ padding : 3px 2px 2px 3px;
+ text-align:center;
+ background-color:#e0e0e0;
+ border:1px solid #d5d5d5;
+}
+td.room_grid_col {
+ padding : 3px 2px 2px 3px;
+ border:1px solid #d5d5d5;
+ padding-left:4px;
+}
+.room_indent {
+ margin-left:20px;
+}
+.room_import_form label {
+ margin:2px 8px;
+}
+.room_import_result {
+ margin: 5px 15px;
+ padding: 1em;
+ border: 1px solid #999;
+}
+.room_import_result table td {
+ padding: 2px 5px;
}
\ No newline at end of file
diff --git a/html/webapp/modules/room/files/js/room.js b/html/webapp/modules/room/files/js/room.js
index 3be6a2f..3ed2c72 100644
--- a/html/webapp/modules/room/files/js/room.js
+++ b/html/webapp/modules/room/files/js/room.js
@@ -241,5 +241,90 @@ clsRoom.prototype = {
'lang':select_lang
}
commonCls.sendView(this.id, params);
+ },
+ roomUsersExport: function(event, parent_page_id, edit_current_page_id, confirm_mes) {
+
+ var top_el = $(this.id);
+
+ var params = {
+ 'action':'room_action_admin_export',
+ 'parent_page_id':parent_page_id,
+ 'edit_current_page_id':edit_current_page_id
+ }
+ var parameter = new Object();
+ parameter["callbackfunc"] = function(res){
+ if(!commonCls.confirm(confirm_mes))
+ {
+ return false;
+ }
+ location.href= '.' + _nc_index_file_name + '?action=room_view_admin_export&_token='+ $('_token' +this.top_el_id).value;
+ }
+ parameter["callbackfunc_error"] = function(res) {
+ commonCls.alert(res);
+ }
+ commonCls.sendPost(this.id, params, parameter);
+ },
+ _isSelectFile: function(frm) {
+ if($F("room_import_file_select").length > 0) {
+ return(true);
+ }
+ return(false);
+ },
+ _alertImport: function(confirm_message, target) {
+ var keyword = $(target).textContent;
+ var newmsg = confirm_message.replace('%error_item%', keyword);
+ commonCls.alert(newmsg);
+ return;
+ },
+ doUserImport: function(frm, confirm_message) {
+ var keyword;
+ if(!this._isSelectFile(frm)) {
+ this._alertImport(confirm_message, 'room_import_label_file');
+ return false;
+ }
+
+ var this_el = $("room_import_frm");
+ var top_el = $(this.id);
+ var params = new Object();
+ params["method"] = "post";
+
+ params["top_el"] = top_el;
+ params["loading_el"] = top_el;
+ params["timeout_flag"] = 0;
+
+ params['form_prefix'] = "room_import_attachment";
+
+
+
+ params["param"] = new Object();
+ params["param"]["action"] = "room_view_admin_import_upload";
+
+ params["callbackfunc"] = function(res) {
+ this.user_checkdata(this_el);
+ }.bind(this);
+ params["callbackfunc_error"] = function(file_list, res){
+ commonCls.alert(res);
+ }.bind(this);
+ commonCls.sendAttachment(params);
+ },
+ user_checkdata: function(this_el) {
+ var top_el = $(this.id);
+ var chk_params = new Object();
+ chk_params["param"] = {"action":"room_view_admin_import_confirm"};
+ chk_params["top_el"] = top_el;
+ chk_params["loading_el"] = top_el;
+ chk_params["target_el"] = $(this.id);
+
+ commonCls.send(chk_params);
+ },
+ user_importdata: function() {
+ var top_el = $(this.id);
+ var action_params = new Object();
+ action_params['method'] = "post";
+ action_params["param"] = {"action":"room_action_admin_import_confirm"};
+ action_params["top_el"] = top_el;
+ action_params["loading_el"] = top_el;
+ action_params["target_el"] = $(this.id);
+ commonCls.send(action_params);
}
}
\ No newline at end of file
diff --git a/html/webapp/modules/room/language/chinese/main.ini b/html/webapp/modules/room/language/chinese/main.ini
index 5eac669..9742150 100644
--- a/html/webapp/modules/room/language/chinese/main.ini
+++ b/html/webapp/modules/room/language/chinese/main.ini
@@ -16,6 +16,7 @@ room_admin = "管理"
room_back_list = "返回"
room_admin_inf = "编辑"
room_admin_edit = "成员"
+room_admin_import = "进口"
room_confirm_roomdelete = "如果删除房间%s,房间内的所有模块都将消失。 您确定要删除房间吗?"
room_list_display_flag_on = "开放"
room_list_display_flag_off = "维护中"
@@ -50,7 +51,14 @@ room_name_error_mes = "该房间名已存在。"
room_top_description ="设置房间内所有成员的角色,然后按%s。按%s可一次性设置所有角色。 如果您想要继续添加成员,请按%s。"
room_top_user_auth_id = "权限"
room_selected_entry_users = "检索成员"
+room_csv_export = "(出口参与者权限列表)"
+room_export_confirm_exp = "您可以导出室成员的角色,排除%当局。 您确定要继续吗? *下载CSV文件,将备份文件,这个房间。 下载后,请仔细保存这个文件。"
+room_export_exp = "这个房间里的角色成员列表中显示的将是出口。(是否排除%s)"
+[Room_View_Admin_Export]
+define:ROOM_EXPORT_AUTHORITY_NAME = "角色"
+[Room_View_Admin_Export:Room_Action_Admin_Export]
+define:ROOM_EXPORT_NONE = "暂无可导出的用户。"
[Room_View_Admin_Regist_Userslist:Room_View_Admin_Regist_Confirm]
room_subgroup_create_on ="允许"
@@ -85,4 +93,59 @@ room_entry_modules="允许使用的模块"
confirm_selectmodules = "您确定要更改可用模块设置吗?"
[Room_Action_Admin_Search]
-room_user_search_condition_limit = "选项过多"
\ No newline at end of file
+room_user_search_condition_limit = "选项过多"
+
+
+[Room_View_Admin_Import]
+room_import_title_description = "你可以导入的房间(%)成员的角色。"
+room_import_file = "导入文件"
+room_import_select_file_description = "请指定导入文件设置的角色。"
+room_import_select_file_note = "第一行被视为一个标题行。 行上限为%d。"
+room_import_help_label = "帮助"
+room_import_help_title = "导入文件设置的详细确认"
+room_import_exp = "你可以注册角色的房间成员从导入的文件。 中止,如果权力不能放弃或成员可以不参加已经描述,进口没有得到执行。 为了避免错误,请使用导出的文件。 "
+room_import_import_imp = "进出口运行"
+room_import_help_open = "显示"
+room_import_help_close = "关闭"
+room_import_item = "项目"
+room_import_contents = "内容"
+room_import_need_on = "※必填字段
+room_import_sel = "<选项>"
+room_not_entry = "不参加"
+define:ROOM_IMPORT_ITEM_HANDLE = "设置昵称。"
+room_import_check_message = "%error_item%没有被选中。"
+define:ROOM_IMPORT_HELP_AUTH_LABEL = "参与权"
+define:ROOM_IMPORT_HELP_AUTH_EXP = "在这个房间里的角色设置。"
+define:ROOM_IMPORT_UPLOAD_SYSERR = "系统发生错误。"
+define:ROOM_IMPORT_UPLOAD_OPEN_ERR = "文件打开错误。"
+define:ROOM_IMPORT_UPLOAD_NOROOM_ERR = "房间不存在的指定。"
+define:ROOM_IMPORT_UPLOAD_NO_PERMISSION = "你没有权限。"
+define:ROOM_IMPORT_UPLOAD_COLUMN_ERR = "错误:%d CSV文件中的列数是错误的。"
+define:ROOM_IMPORT_UPLOAD_NOUSER_ERR = "错误:%d 不存在,或者是不可能的成员角色,%s 已被指定为操作对象。"
+define:ROOM_IMPORT_UPLOAD_NOAUTH_ERR = "错误:%d %d 是错误的权威价值。"
+define:ROOM_IMPORT_UPLOAD_NOT_PERMIT_AUTH = "错误:%d 成员%s,权威[%d]不能设置。"
+define:ROOM_IMPORT_UPLOAD_NO_CHAGE = "没有变化。"
+define:ROOM_IMPORT_UPLOAD_LINE_OVER_ERR = "文件中的行数超过%d行。"
+define:ROOM_IMPORT_CONFIRM_ADMINUSER_WRAN = "会员“管理”不能改变基本权限。排除在这一进程。"
+define:ROOM_IMPORT_CONFIRM_MYSELF_WRAN = "不能改变自己管理局。排除在这一进程。"
+define:ROOM_IMPORT_CONFIRM_PUBLIC_OTHER_WRAN = "这是不可能改变在公共空间中的不参与。排除在这一进程。"
+define:ROOM_IMPORT_UPLOAD_NODATAS_ERR = "在文件中不存在的数据线。"
+
+[Room_View_Admin_Import_Confirm]
+room_import_confirm_message1 = "这个角色列表将被设置为%s的房间。"
+room_import_confirm_change_count = "%d人将被添加到%s。"
+room_import_confirm_message2 = "本次变动后中,的间客房的的角色设施将作如下安排。 "
+room_import_confirm_count = "%s %d"
+room_import_confirm_message3 = "您确定要继续吗?"
+room_import_confirm_warnMsg = "昵称「%s」"
+
+
+[Room_Action_Admin_Import_Confirm]
+room_import_confirm_message1 = "%s的房间已成立了这个角色列表"
+room_import_confirm_change_count = "%d人已被添加到的%s。"
+room_import_confirm_message2 = "角色房间的情况如下。 "
+room_import_confirm_count = "%s %d"
+
+room_import_confirm_warnMsg = "有一个问题。 而不可能改变成员下面描述的。"
+room_not_entry = "不参加"
+
diff --git a/html/webapp/modules/room/language/english/main.ini b/html/webapp/modules/room/language/english/main.ini
index ce5a3b7..90b0214 100644
--- a/html/webapp/modules/room/language/english/main.ini
+++ b/html/webapp/modules/room/language/english/main.ini
@@ -15,6 +15,7 @@ room_space_common="Open for all members"
room_admin = "Controler"
room_back_list = "Back"
room_admin_inf = "Edit"
+room_admin_import = "Import"
room_admin_edit = "Members"
room_confirm_roomdelete = "By deleting the room, %s, all the modules created in the room will vanish. Are you sure to proceed?"
room_list_display_flag_on = "Open"
@@ -50,7 +51,14 @@ room_name_error_mes = "There exists a room of the same name."
room_top_description ="Set the roles of the room members, and press %s button. To set the roles all at once, press %s button. If you wish to continue to add members, press %s button"
room_top_user_auth_id = "Authority"
room_selected_entry_users = "Search for the members"
+room_csv_export = "(Export participants authority list)"
+room_export_confirm_exp = "You can export the roles of the room members, exclude %s authorities. Are you sure to proceed? *The download csv files will be backup-file for this room. Please preserve this file carefully after downloading."
+room_export_exp = "The roles of this room members displayed in the list will be export.(exclude %s) "
+[Room_View_Admin_Export]
+define:ROOM_EXPORT_AUTHORITY_NAME = "Roles"
+[Room_View_Admin_Export:Room_Action_Admin_Export]
+define:ROOM_EXPORT_NONE = "There is no member to export."
[Room_View_Admin_Regist_Userslist:Room_View_Admin_Regist_Confirm]
room_subgroup_create_on ="Allowed"
@@ -85,4 +93,59 @@ room_entry_modules="Modules allowed to use"
confirm_selectmodules = "You are changing the set of modules which are allowed to be used. Are you sure to proceed?"
[Room_Action_Admin_Search]
-room_user_search_condition_limit = "Too many conditions."
\ No newline at end of file
+room_user_search_condition_limit = "Too many conditions."
+
+
+[Room_View_Admin_Import]
+room_import_title_description = "You can import the roles of room(%s) members."
+room_import_file = "Import file"
+room_import_select_file_description = "Please specify the import file to set the roles."
+room_import_select_file_note = "The first line is treated as a header line. Upper limit of the line is %d."
+room_import_help_label = "Help"
+room_import_help_title = "Detailed confirmation of import file settings"
+room_import_exp = "You can register the roles of room members from imported file. It becomes aborted if the role that can not give or member can not participate has been described, the import is not enforced. To avoid the error, please use the exported file. "
+room_import_import_imp = "Import is run"
+room_import_help_open = "Display"
+room_import_help_close = "Close"
+room_import_item = "Item"
+room_import_contents = "description"
+room_import_need_on = "Required fields"
+room_import_sel = "<option>"
+room_not_entry = "not entry"
+define:ROOM_IMPORT_ITEM_HANDLE = "Set handle."
+room_import_check_message = "%error_item% has not been selected."
+define:ROOM_IMPORT_HELP_AUTH_LABEL = "Role"
+define:ROOM_IMPORT_HELP_AUTH_EXP = "Set the role in this room."
+define:ROOM_IMPORT_UPLOAD_SYSERR = "A system error has occurred."
+define:ROOM_IMPORT_UPLOAD_OPEN_ERR = "File open error."
+define:ROOM_IMPORT_UPLOAD_NOROOM_ERR = "Room that does not exist was specified."
+define:ROOM_IMPORT_UPLOAD_NO_PERMISSION = "You do not have authority."
+define:ROOM_IMPORT_UPLOAD_COLUMN_ERR = "Error:%d line Number of columns in the CSV file is wrong."
+define:ROOM_IMPORT_UPLOAD_NOUSER_ERR = "Error:%d line Not exist, or member role is not possible, %s has been specified as the operation target."
+define:ROOM_IMPORT_UPLOAD_NOAUTH_ERR = "Error:%d line %d is wrong value for the role."
+define:ROOM_IMPORT_UPLOAD_NOT_PERMIT_AUTH = "Error:%d line Member %s, role [%d] can not be set."
+define:ROOM_IMPORT_UPLOAD_NO_CHAGE = "No changes."
+define:ROOM_IMPORT_UPLOAD_LINE_OVER_ERR = "This file has over %d lines."
+define:ROOM_IMPORT_CONFIRM_ADMINUSER_WRAN = "`manager` can not change the role. excluded from the process."
+define:ROOM_IMPORT_CONFIRM_MYSELF_WRAN = "Own role can not be changed. excluded from the process."
+define:ROOM_IMPORT_CONFIRM_PUBLIC_OTHER_WRAN = "It is not possible to change to the non-participation in the public space. excluded from the process."
+define:ROOM_IMPORT_UPLOAD_NODATAS_ERR = "Data line does not exist in the file."
+
+[Room_View_Admin_Import_Confirm]
+room_import_confirm_message1 = "This role list will be setting to %s room."
+room_import_confirm_change_count = "%d member will be added to %s."
+room_import_confirm_message2 = "After the change, roles of the room will be as follows. "
+room_import_confirm_count = "%s %d"
+room_import_confirm_message3 = "Are you sure to proceed?"
+room_import_confirm_warnMsg = "Handle - %s"
+
+
+[Room_Action_Admin_Import_Confirm]
+room_import_confirm_message1 = "This role list has been set to %s room."
+room_import_confirm_change_count = "%d member have been added to %s."
+room_import_confirm_message2 = "Roles of the room was as follows. "
+room_import_confirm_count = "%s %d"
+
+room_import_confirm_warnMsg = "There was a problem. It was not possible to change the members described below."
+room_not_entry = "not entry"
+
diff --git a/html/webapp/modules/room/language/japanese/main.ini b/html/webapp/modules/room/language/japanese/main.ini
index 9f50a0d..caf2367 100644
--- a/html/webapp/modules/room/language/japanese/main.ini
+++ b/html/webapp/modules/room/language/japanese/main.ini
@@ -16,6 +16,7 @@ room_admin = "管理"
room_back_list = "戻る"
room_admin_inf = "基本項目編集"
room_admin_edit = "参加者修正"
+room_admin_import = "参加者インポート"
room_confirm_roomdelete = "「%s」ルームに配置されたすべてのモジュールは完全に削除されます %sを削除してよろしいですか?"
room_list_display_flag_on = "公開中にする"
room_list_display_flag_off = "準備中にする"
@@ -50,6 +51,14 @@ room_name_error_mes = "同じ階層に同名のルームが存在します"
room_top_description ="このルームでの会員の役割を設定して、[%s]ボタンを押してください。[%s]ボタンより役割を一括で選択できます。 続けて参加会員を追加する場合、[%s]を押してください。"
room_top_user_auth_id = "ベース権限"
room_selected_entry_users = "対象会員の絞込み"
+room_csv_export = "(参加者権限一覧をエクスポート)"
+room_export_confirm_exp = "参加会員修正一覧に表示されている会員のうち、 %s以外の会員のルーム参加権限情報をエクスポートします。 よろしいですか? ※ダウンロードされたCSVは現在のルーム参加者の バックアップファイルとしても役立ちます。 ダウンロード後は必ず大切に保存しておいてください。"
+room_export_exp = "参加会員修正一覧に表示されている会員をエクスポートします。ただし、%sの会員情報はエクスポートできません。"
+
+[Room_View_Admin_Export]
+define:ROOM_EXPORT_AUTHORITY_NAME = "参加者権限"
+[Room_View_Admin_Export:Room_Action_Admin_Export]
+define:ROOM_EXPORT_NONE = "エクスポート可能な会員が見つかりませんでした。"
[Room_View_Admin_Regist_Userslist:Room_View_Admin_Regist_Confirm]
@@ -85,4 +94,58 @@ room_entry_modules="利用を許可したモジュール"
confirm_selectmodules = "内容を変更しようとしています。利用の許可を途中で取り消すと、 現在利用中のモジュールに蓄積されたデータが消滅するので注意してください。 この変更を確定しますか?"
[Room_Action_Admin_Search]
-room_user_search_condition_limit = "検索条件が多すぎます。条件を減らして再度検索してください。"
\ No newline at end of file
+room_user_search_condition_limit = "検索条件が多すぎます。条件を減らして再度検索してください。"
+
+[Room_View_Admin_Import]
+room_import_title_description = "ルーム「%s」へ参加者情報をインポートします。"
+room_import_file = "インポートファイル"
+room_import_select_file_description = "参加権限を設定したインポートファイルを指定して下さい。"
+room_import_select_file_note = "※1行目はヘッダ行として扱われます。 ※処理可能な行数は%d行までです。"
+room_import_help_label = "ヘルプ"
+room_import_help_title = "インポートファイル設定項目の詳細確認"
+room_import_exp = "ルームの参加者/参加権限を指定形式のファイルからインポートし、一括登録ができます。 参加できない会員や与えることのできない権限が記載されていた場合は処理中断となり、インポートは実施されません。 エラー発生を極力避けるため、エクスポートされたファイルを利用してください。 "
+room_import_import_imp = "インポート処理を実行します"
+room_import_help_open = "表示"
+room_import_help_close = "閉じる"
+room_import_item = "項目"
+room_import_contents = "内容"
+room_import_need_on = "※必須入力項目"
+room_import_sel = "<選択肢>"
+room_not_entry = "不参加"
+define:ROOM_IMPORT_ITEM_HANDLE = "ハンドルを設定します。"
+room_import_check_message = "%error_item%が選択されていません。"
+define:ROOM_IMPORT_HELP_AUTH_LABEL = "参加権限"
+define:ROOM_IMPORT_HELP_AUTH_EXP = "ルームにどのような権限で参加させるかの値を設定します。"
+define:ROOM_IMPORT_UPLOAD_SYSERR = "システムエラーが発生しました。"
+define:ROOM_IMPORT_UPLOAD_OPEN_ERR = "ファイルのオープンに失敗しました。"
+define:ROOM_IMPORT_UPLOAD_NOROOM_ERR = "存在しないルームが指定されました。"
+define:ROOM_IMPORT_UPLOAD_NO_PERMISSION = "操作権限がありません。"
+define:ROOM_IMPORT_UPLOAD_COLUMN_ERR = "エラー:%d行目 CSVファイルのカラム数が既定のものと異なります。内容を再度確認してください。"
+define:ROOM_IMPORT_UPLOAD_NOUSER_ERR = "エラー:%d行目 存在しない、または参加が不可能な会員「%s」が、操作対象として指定されています。"
+define:ROOM_IMPORT_UPLOAD_NOAUTH_ERR = "エラー:%d行目 %dは設定できる権限種別ではありません。"
+define:ROOM_IMPORT_UPLOAD_NOT_PERMIT_AUTH = "エラー:%d行目 会員%sに、権限[%d]は設定できません。"
+define:ROOM_IMPORT_UPLOAD_NO_CHAGE = "このCSVでは変更となる会員はありませんでした。"
+define:ROOM_IMPORT_UPLOAD_LINE_OVER_ERR = "ファイルの行数が%d行を超えています。"
+define:ROOM_IMPORT_CONFIRM_ADMINUSER_WRAN = "ベース権限が「管理」の会員は変更できません。処理対象から除外しました。"
+define:ROOM_IMPORT_CONFIRM_MYSELF_WRAN = "自分自身の権限は変更できません。処理対象から除外しました。"
+define:ROOM_IMPORT_CONFIRM_PUBLIC_OTHER_WRAN = "パブリック空間で不参加への変更はできません。不参加指定は処理対象から除外しました。"
+define:ROOM_IMPORT_UPLOAD_NODATAS_ERR = "ファイルにデータ行が存在しません。"
+
+[Room_View_Admin_Import_Confirm]
+room_import_confirm_message1 = "%sルームに対して、以下の設定をします。"
+room_import_confirm_change_count = "%d名を%sに変更します。"
+room_import_confirm_message2 = "変更後、ルームの人員構成は以下のとおりとなります。 "
+room_import_confirm_count = "%s %d名"
+room_import_confirm_message3 = "よろしいですか?"
+room_import_confirm_warnMsg = "ハンドル名「%s」"
+
+
+[Room_Action_Admin_Import_Confirm]
+room_import_confirm_message1 = "%sルームに対して、以下の設定をしました。"
+room_import_confirm_change_count = "%d名を%sに変更しました。"
+room_import_confirm_message2 = "ルームの人員構成は以下のとおりとなりました。 "
+room_import_confirm_count = "%s %d名"
+
+room_import_confirm_warnMsg = "何らかの設定変更がなされたようです。 以下の会員の変更ができませんでした。"
+room_not_entry = "不参加"
+
diff --git a/html/webapp/modules/room/templates/default/room_action_admin_import_confirm.html b/html/webapp/modules/room/templates/default/room_action_admin_import_confirm.html
new file mode 100644
index 0000000..1316846
--- /dev/null
+++ b/html/webapp/modules/room/templates/default/room_action_admin_import_confirm.html
@@ -0,0 +1,55 @@
+<{strip}>
+
+
+
+ <{$lang.room_import_confirm_message1|smarty:nodefaults|sprintf:$action.page.page_name}>
+
+
+ <{foreach item=num key=auth_name from=$action.added_auth_member_num}>
+ <{if $num!=0}>
+ <{$lang.room_import_confirm_change_count|sprintf:$num:$auth_name}>
+
+ <{/if}>
+ <{/foreach}>
+ <{if $action.deleted_auth_member_num > 0}>
+ <{$lang.room_import_confirm_change_count|sprintf:$action.deleted_auth_member_num:$lang.room_not_entry}>
+ <{/if}>
+
+
+
+ <{$lang.room_import_confirm_message2|smarty:nodefaults}>
+
+
+
+ <{foreach item=num key=auth_name from=$action.total_auth_member_num}>
+ <{if $num!=0}>
+
+ <{$auth_name}>
+ <{$num}>
+
+ <{/if}>
+ <{/foreach}>
+
+
+
+ <{if count($action.warnMsg)>0 && $action.warnMsg.0!=''}>
+
+ <{$lang.room_import_confirm_warnMsg|smarty:nodefaults}>
+
+ <{foreach item=handle from=$action.warnMsg}>
+ <{$handle}>
+ <{/foreach}>
+
+ <{/if}>
+
+
+ <{* 閉じる *}>
+
+
+
+
+
+
+<{include file="room_script.html"}>
+
+<{/strip}>
\ No newline at end of file
diff --git a/html/webapp/modules/room/templates/default/room_view_admin_import.html b/html/webapp/modules/room/templates/default/room_view_admin_import.html
new file mode 100644
index 0000000..df278ba
--- /dev/null
+++ b/html/webapp/modules/room/templates/default/room_view_admin_import.html
@@ -0,0 +1,98 @@
+<{strip}>
+
+
+ <{* 各種ボタン *}>
+
+
+
+ <{* キャンセル *}>
+
+
+
+
+<{include file="room_script.html"}>
+<{/strip}>
diff --git a/html/webapp/modules/room/templates/default/room_view_admin_import_confirm.html b/html/webapp/modules/room/templates/default/room_view_admin_import_confirm.html
new file mode 100644
index 0000000..5268080
--- /dev/null
+++ b/html/webapp/modules/room/templates/default/room_view_admin_import_confirm.html
@@ -0,0 +1,68 @@
+<{strip}>
+
+<{include file="room_script.html"}>
+
+<{/strip}>
\ No newline at end of file
diff --git a/html/webapp/modules/room/templates/default/room_view_admin_regist_selectusers.html b/html/webapp/modules/room/templates/default/room_view_admin_regist_selectusers.html
index 8c25c5f..4d7f761 100644
--- a/html/webapp/modules/room/templates/default/room_view_admin_regist_selectusers.html
+++ b/html/webapp/modules/room/templates/default/room_view_admin_regist_selectusers.html
@@ -21,6 +21,14 @@
+
+ <{* CSVエクスポート *}>
+
+
<{assign var="edit_current_page_id" value=$action.edit_current_page_id}>