From bd11ba2d2c98e21a81f2db3588b6887b3674479c Mon Sep 17 00:00:00 2001 From: bols-blue Date: Tue, 21 May 2013 20:15:36 +0900 Subject: [PATCH 001/109] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=81=8C=E5=B4=A9=E3=82=8C=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=E3=81=AE=E3=81=A7=E3=83=87=E3=82=A3=E3=83=AC=E3=82=AF=E3=83=88?= =?UTF-8?q?=E3=83=AA=E3=81=AE=E9=9B=B0=E5=9B=B2=E6=B0=97=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=81=A6=E7=9B=B4=E3=81=97=E3=81=9F=E3=80=82?= =?UTF-8?q?=20=E6=A9=9F=E8=83=BD=E3=82=84=E9=96=A2=E6=95=B0=E3=81=AE?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=81=AB=E9=96=A2=E3=81=99=E3=82=8B=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E7=82=B9=E3=81=AF=E3=81=82=E3=82=8A=E3=81=BE=E3=81=9B?= =?UTF-8?q?=E3=82=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/Filter_RequestCheck.class.php | 182 +++++++++--------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/html/maple/filter/Filter_RequestCheck.class.php b/html/maple/filter/Filter_RequestCheck.class.php index e1491ed..2e97ac3 100644 --- a/html/maple/filter/Filter_RequestCheck.class.php +++ b/html/maple/filter/Filter_RequestCheck.class.php @@ -18,130 +18,130 @@ * @access public */ class Filter_RequestCheck extends Filter { - + var $_container; var $_log; var $_filterChain; - + var $_actionChain; - + var $_request; - + var $_className; - - /** - * コンストラクター - * - * @access public - */ - function Filter_RequestCheck() { - parent::Filter(); - } - - /** - * Viewの処理を実行 - * - * @access public - **/ - function execute() { - $this->_container =& DIContainerFactory::getContainer(); + + /** + * コンストラクター + * + * @access public + */ + function Filter_RequestCheck() { + parent::Filter(); + } + + /** + * Viewの処理を実行 + * + * @access public + **/ + function execute() { + $this->_container =& DIContainerFactory::getContainer(); $this->_log =& LogFactory::getLog(); $this->_filterChain =& $this->_container->getComponent("FilterChain"); $this->_actionChain =& $this->_container->getComponent("ActionChain"); $this->_request =& $this->_container->getComponent("Request"); - + $this->_className = get_class($this); - - $this->_prefilter(); - + + $this->_prefilter(); + $this->_log->trace("{$this->_className}の前処理が実行されました", "{$this->_className}#execute"); - + $this->_filterChain->execute(); $this->_postfilter(); $this->_log->trace("{$this->_className}の後処理が実行されました", "{$this->_className}#execute"); - } - - /** + } + + /** * プレフィルタ * 初期処理を行う * @access private */ function _prefilter() { - $errorList =& $this->_actionChain->getCurErrorList(); - if ($errorList->isExists()) { - //既にエラーがあればそのまま返却 - return; - } - //アクション名取得 - $action_name = $this->_actionChain->getCurActionName(); - $pathList = explode("_", $action_name); - $attributes = $this->getAttributes(); - if (isset($attributes["request"])) { - if ($attributes["request"] == "BOTH" || $this->_request->getMethod() == $attributes["request"]) { - //登録処理の場合、リファラチェック - if ($this->_request->getMethod() == "POST" && $this->_refcheck()) { - return; - } else if($this->_request->getMethod() == "GET"){ - return; - } - } - } else if ($this->_request->getMethod() == "POST" && isset($_FILES) && (0 < count($_FILES))) { - //ファイルアップロード処理の場合、リファラチェック - if ($this->_refcheck()) { - return; - } - } else { - //Default - //system_view(action)_XXXX - $i = 1; - //if($pathList[1] == "system" && isset($pathList[2])) { - // $i = 2; - //} - if($pathList[$i] != "action" && $pathList[$i] != "view") { - //module名_action or module名_viewのどちらでもない場合、チェックしない - return; - }else if ($this->_request->getMethod() == "POST" && $pathList[$i] == "action") { - //登録処理の場合、リファラチェック - if (isset($attributes["refcheck"]) && $attributes["refcheck"] == "none") { - return; - } - if ($this->_refcheck()) { - return; - } - } else if($this->_request->getMethod() == "GET" && $pathList[$i] == "view"){ - return; - } - } - //エラー - $errorList->add("RquestCheck_Error", sprintf(_REQUESTCHECK_FAILURE,CURRENT_URL)); - $errorList->setType(VALIDATE_ERROR_TYPE); //VALIDATE_ERRORとする - return; - + $errorList =& $this->_actionChain->getCurErrorList(); + if ($errorList->isExists()) { + //既にエラーがあればそのまま返却 + return; + } + //アクション名取得 + $action_name = $this->_actionChain->getCurActionName(); + $pathList = explode("_", $action_name); + $attributes = $this->getAttributes(); + if (isset($attributes["request"])) { + if ($attributes["request"] == "BOTH" || $this->_request->getMethod() == $attributes["request"]) { + //登録処理の場合、リファラチェック + if ($this->_request->getMethod() == "POST" && $this->_refcheck()) { + return; + } else if($this->_request->getMethod() == "GET"){ + return; + } + } + } else if ($this->_request->getMethod() == "POST" && isset($_FILES) && (0 < count($_FILES))) { + //ファイルアップロード処理の場合、リファラチェック + if ($this->_refcheck()) { + return; + } + } else { + //Default + //system_view(action)_XXXX + $i = 1; + //if($pathList[1] == "system" && isset($pathList[2])) { + // $i = 2; + //} + if($pathList[$i] != "action" && $pathList[$i] != "view") { + //module名_action or module名_viewのどちらでもない場合、チェックしない + return; + }else if ($this->_request->getMethod() == "POST" && $pathList[$i] == "action") { + //登録処理の場合、リファラチェック + if (isset($attributes["refcheck"]) && $attributes["refcheck"] == "none") { + return; + } + if ($this->_refcheck()) { + return; + } + } else if($this->_request->getMethod() == "GET" && $pathList[$i] == "view"){ + return; + } + } + //エラー + $errorList->add("RquestCheck_Error", sprintf(_REQUESTCHECK_FAILURE,CURRENT_URL)); + $errorList->setType(VALIDATE_ERROR_TYPE); //VALIDATE_ERRORとする + return; + } - + /** * リファラチェック * @access private */ function _refcheck() { - $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; - if ($ref != '' && strpos($ref, BASE_URL) === 0) { - return true; - } - // httpsの場合 - $ssl_base_url = preg_replace("/^http:\/\//i","https://", BASE_URL); - if ($ref != '' && strpos($ref, $ssl_base_url) === 0) { - return true; - } - return false; + $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; + if ($ref != '' && strpos($ref, BASE_URL) === 0) { + return true; + } + // httpsの場合 + $ssl_base_url = preg_replace("/^http:\/\//i","https://", BASE_URL); + if ($ref != '' && strpos($ref, $ssl_base_url) === 0) { + return true; + } + return false; } - + /** * ポストフィルタ * @access private From 3716dcdd7b113cbbf7c39a08541e63fffb4ebeee 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: Tue, 4 Jun 2013 23:22:32 +0900 Subject: [PATCH 002/109] =?UTF-8?q?Thumbs.db=E5=89=8A=E9=99=A4=E5=8F=8A?= =?UTF-8?q?=E3=81=B3=E3=80=81=E7=84=A1=E8=A6=96=E5=AF=BE=E8=B1=A1=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=EF=BC=88Mac=E3=80=81Windows?= =?UTF-8?q?=E3=82=B7=E3=82=B9=E3=83=86=E3=83=A0=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=EF=BC=89=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 14 ++++++++++++++ .../db/adodb/cute_icons_for_site/Thumbs.db | Bin 6144 -> 0 bytes .../modules/pm/files/images/default/Thumbs.db | Bin 17408 -> 0 bytes 3 files changed, 14 insertions(+) delete mode 100644 html/maple/nccore/db/adodb/cute_icons_for_site/Thumbs.db delete mode 100644 html/webapp/modules/pm/files/images/default/Thumbs.db diff --git a/.gitignore b/.gitignore index 71a9b13..36b49f3 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,17 @@ /.settings /.buildpath /.project + +# MacOSXシステムファイル無視設定 +.DS_Store +__MACOSX +thumbs.db +._* +.Spotlight-V100 +.Trashes + +# Windowsシステムファイル無視設定 +Thumbs.db +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ diff --git a/html/maple/nccore/db/adodb/cute_icons_for_site/Thumbs.db b/html/maple/nccore/db/adodb/cute_icons_for_site/Thumbs.db deleted file mode 100644 index 0ae45f37bf38975ddd71be83e0a8aedfaf4a0b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 zcmeI0c|6qH-@wlpyX`m_vyL6r{~pup68$EdEGPfo^#IUbI$ksSzoNH*ySYGx$>Y0APX*MxTzN=<%VpXe%Rs447dOSs;v@vq9J) z91ube`-V_csCV&}(<#52N7yqm#cG#|L*o#(lq*Z&crH z>O;-3?`r?P;_JN`_1~S%$QdJcjGX*e-+wNsUjyNWFha)*fjwXkk%X*+NI|3_>mf1_S%@4&9-;u*08xZ&glvK+L6jjX5LJj8L>;mj!dO3= z5G{x{L7VxR5n$w$u?9q7QqlM5N5Hqs%+d^CFc@$cz5v<_ zOaPXNiSdSo8NONASy-5vSvc9)SlQQbu35vy$;HLZBf!Va!_ULT#V5kYFDN7|EWCzS zR7^xjOh8Cjh;b1N7S3U2;b39m5aQEE6-9VKp2b4fTMTpG81MV+X6Ctvj3SaUspqiRtWe z#?PvR?b>JLwSEdd!@(&cDz;W!VT0nvO-kB2x_Vpmx0>uUH8Z!c+-1LSzk{RGfrB1L zJiWY+`uK)~hMfqHI2n2N-1!T!7cX7De&gn?+evqlQyykyWrfqT-U$ z>YCcR`i92WO&!F}x9_^%clQhqk%oU886EpHK07zRu(-5LURh=Mg#p;#-TKqBzxc%u z{bFKf#xk=p{K7DWL$LhJEHWCb0y}Kk+>Z;&YMy2nGEPi?R>dKwWj7=IQ*b+{h`jco z!YsqJFP{CFV`u(bp8e_Azx&k#)?hI(d02jc12pN`wglCMZA+WSbxT7@OwqAWK-+QeYV7;%dF?S5D2Fc8)!&`6CCHiKBiBpNUJ_4;~J- zK8)V_c*&cCw|1NCoG zb_7$AmGvQ+OZXLJPLan**{4(z1xKY+iBwas8vok~(cbHtQdlH<+ zwj#XVXpaq5+$W8ik{rC>TsP z#G$~b1NlhYgM#5w++PJ#hQz5AyA^zA%>H)Ts}!Vd5e28z=@u@<$jUOg;4%s>oSQ)b zm12p4vsPLtxIXr;qKU$Jn`~D{gcZ1(l*GkeB@KRVFfL@U^cL>#o;HVsbO@ zJg=5d<#2GYy}du;NMblr)#c8TB0Pd=c^Q^av6 zb{wO)_ERw_C-2FI=sPs8o4)((;e z)E;MZZ9Gz1dhH?0HIlmIrjX6+dgR&8x|!TOhF_x854j>s{r#!xtXVVFL2Mt!i`)doT1RWLRm<~uQ>B~DoX=my1Ujnl z8as(EqhLs~dP*e#1ygmSD6r8ZnwE_P)50l)1S)oMAX;K#uB{pc1x2whSe~`#P3laY zaD2NcftzwJ1mlVL*w1Pnw;Rgg!nj+_+B3bFdHRZFjuh?Y5d*O`kFfkVX-$eI<$n(5gp^Zf47oNiBj_9>K(d6OTqH~}^i5#|}=+Yy?fj~vwr|BJe z&*$O=PMvhQ#}{+Xku)&1ma;p_Y6jmxkQg(Po=vzk`DCixG{-#1+dHqn{<76@B|FK| zINt?42+MbyHM>Nbjy)tp6x~NYO`DK@ogVB=#IUgd(}Xc>vSB6xKX>L7b9Xx4V$&257edH z&r8NTAMoqqGCIF>SK0YY(7xLOdaLddqD}qJEV^AjYE`Y`YLA>TdrQ}e$n>o>D_e*T zvehsNT-BjxVAPye9>h6qiND8|c)W}?fgD@RT=J@%z)Roh=91>IP-a8EpYEF*sM2d& ztS9Au(LA&7KHWJWDrSOg!}ca|T*)%bAllo7j3B;~OGS?PhI<+tcj=sO-lSB?cg&ob z$)IaUuQn(FCq@?{KZ*uXR<<0`^h#G!$XH`6yEmLCwOQRTk2BH1H_G6T29Jex7<(>bg|evfp<5{p+T%<+zwO*k~bq&9|!Ow9Dr9q@k}#^ra{dH3P*RR6ZD?b&zloL~DB ztJ5j1*TO4{ne^5)F@OJsi$REY`(p`ZmI6epwrA(z`-u&5Y8+d_EVar)u*$-oI;*bO zsoC&&bJ|Y0<90|Kd^4{+`qafHuJQ3u_Tb>!P5bUfedr>mP&6;~*>i}G3*10BsfjBd zeiTh=_-%=?!k{zH$1jCsm_AIGQs{U%M`E9lzrz!5pmAlsidAF&aH8ddnASAug< z9-W5DUV}Jp@eYg3#IQc~wp0ht4SUL;oZ>5ESF-L33^{|dr#2ZjExBFn&LDQ%Q}8_l zZSQL+x@qBLBylC@D#K!~l{*@v z_*&=nJ_RM4C%e4ef&$I#%==1y$vQ8V!mayhrAy+?IgbjF*cIsuC=grB=XQ#DkK+%d znvPn!2MlpL`xI#gS=M#d>$2*ZHTp}5g2u^n+F+Rf^9cbr!|7c;(_oMLb?SaMn=ps0oGEIX;*Iu#itLAHzP{=F@+wkaH~IR<$h{?^s@&9W;OjCU|U)mQu(ZdPk6 zBz>Cky@y=MuT(=nIZr-y_Dwq8Yg~4~@{&k&d(QkQz!ocQRH++on`(nj?^hShQ1CvB zkoB4d8r3I@s3?e~3a(Jey+Z`n2*TbMgqhZtnJICiTW@{Fhw0QN<=M%~w_I&uNAyn` zUWt82@FjSQv{emsHzJ+9HYgyf+?p`*^m3_~7LQP;R|_Jagj=KDh1a2ALh`8-;{JMa zysED)W%(vjdbQk$cYHjvBtN1ebLy%(b;~P z(n%Vi1pHy9m015xT#fW=5kt7Pb1RafkA3L9_6%lxe*k?U=;2_~f%%Q|N-t3m>AEs) zTG!~r=vK^6n60WA88;;F&m9QAN)^X_T19BG#aaE)z7isB2~iR#a3iAN)4IB_k7*Py zX?le{jM|W=gKm~R!^FP5iKGNkq>GAMH4QMEcc9u168L)}$_|!2d-L1dTpf;#lB>>s z7X`i6UzUxRPvn`bwE^*)NAZ`Y$@=iPlz+ zQXHhD3Z*@`Ixn|}xh5s+lFa7!qQEPnh<=VTP30;;0cipG58cJ8MZ+K(wi5+aAt;bT z{7mRE<|trt8?h>HFYd&3r>deL-G~B3lPDn5r2j==Uyp(}+ia+!xH;*Uo2Lv_$yNENSINpmwWH z0SN_cNEftt)%^G#ddqAOjbnL$Eb5JdhH(^}r)mu;6U4@nih3k_tn%)w6!EII*76cU z1$GMW4A$>U#tdW52Zo&b`IwlBU;W;|a~<|)1F9|MGw%iz2E_Zldyw5(Xh8^DbWKY} zyT2Z*{_~m-J}G3JybgZ@qyP0;&(B~7JeO<2L*!0)CO3v>b5;1HNguZKVM`lIH$$x| i?CZgi46P<*MO3pU;4(d6%DWYPx;@Dz`p^S`uP3; diff --git a/html/webapp/modules/pm/files/images/default/Thumbs.db b/html/webapp/modules/pm/files/images/default/Thumbs.db deleted file mode 100644 index 73ab261085cb75f16c6ff8f679e4a603be700f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17408 zcmeI32|Scr8^GT&)**~tZYoBR5=tdY)Mrn!6m5hg2{GBCWNRTUM1@G3y^=;`FK$$% zl8RJAQHp4hNb@~MGi|rqC%WBVee>|2GiIK%z3+L>`gG(1jK=nfCTUdFbWtAAe}Mv^cT8Zzg<(!FgN&F zhmFB>Fjq)DFkiSUgBKAPF^r3X#?d#$xYqRSwn`ixl(dxIYtoZ%X8YEctQZT9Q9nw* zrTgi3hNuxB%I}jQzoPoloQR4WZ2ic7;?cwjGUa_TgG%uhz;7j{Q^9Y&)(AiS8v49jH4Io_^NXG%=0a-u} zm;lHF6M;#90)TWCAw}Z{-9vO8rvfU#G+;U~15gEK0%`!tqXDTVFbmKEw1L^c9N<5I z4xkI@0s4RefbtnZIu|eo<^d+ae83bi1Iz&nU;(fYKzXbnT?8x!mHtc11tw@ z0Xx7RKzSS>T?se>s{kipHQ)@a0bBrAzztXnxC0&l%DWCyPrwWC27G|sz?Jlq6s?h(8K{3CdYyxiRUBK$-_Az@)*9zIbq5g{=FAz>j@2o4W&j=&|1`By5Lx#jqDtpTm)`Vpzwo*;_)o3 zc+_gp-T>cYtVA|}u}a$Pf~K|{Qtm>^fxDA9rDtcA3Y%T+Bu%mN2;w4$h>D4ilo>Z( zR&K&nm1)ywsLq`8A01sieFH;tiv$NxPZr-|GPi<;` z@UW%z(c`wR=PzEq>VDnxrWf@KhvDCM>qF1J=obgTqTH*rc!0PP}c@}Hn@%j4XI}zI`*+&^%xHx z2R9E-1Osg7(QYcy^5bvsUv@i2iQu54MCHgeX(}VNQ`QU4Lvx4qr zZz(qkk!0Pe71mH{d4`WH(^y5l(NTM`onm4C)E`SZ{Kt#j*Cz}*ubiV{qwe`6>&2DJ zQ7;(_oV#ybDYDm33@#k`V>+12undT3-J)l0CeZ)yLr;1KKkH7nC-bvPht` z8?HAJA{V-$jDf3d0dpKiV@v`z3?zzdGnHqt}ntDZ`PW^xqIF6s6bC z^nVB8*#ATG*PKoo_IA^{d%fM^G)zm#R0sQhHhFr3p}C;3;rykulBO}}-Qp@7o6mmwayHHy5A&L;%l%6An96$l^mNiGu&oVvtH zy>XgYvX#SrI~~oHx2oH7mlIA>8xoxBH;Sx|=`9YL*fBBQAerm9?WqZISk8_neb~j| zBc}2CHYbp^Mt|E2VAzi-(|(x#>(BLHd)=CMmb=*8@80u{lzZ)!Mu2{C!HqT7R;e`3 zzEgi!&ri98Wc7fUp}9DPkZ-kTMrQHt7Z=`<}kBfQNzThghy3M#7Yq?jkx1qt#s zlU(DtT&A3D$(bf1nVxA@25MH7tDg7g7=?S; zlBhwWE}nS4xxSixN^INl<#MT@%cXH>)^whFsj#}TP zR417?sOI(M)L+{8`cAjZwo>(?89p!t1YB-Nt(v^$h=tolN?~J;VO<>!`?lfHogRk$ zaWn0YX@5W0{`%w%i}Q|-=(h=vhL8ktRXq-;jNm51=pISwU7fJ8ozOK+) zmSGoqvir2(YV|nX_p91Cz4Jz2N!P)^m+2uK*wN1K_hDpXdu5@ousd_uFKXIenTcb{wmcXeS`LdR5jwpMa)~ITBTq5bT zc(u~a!gYOxb2U1)49are8xX^OMi0?`&>6{a1g$?{SAF1Ic(CgqOVF2x_98*&GsBUg ztbbNOg?s7s&w&$|b-)@pQ9)-e-z#vs@ZtP(u>B`PB_8zkuj0T7*7w%>QJ)>IKRTmB z<6yA$`-1LxdjEg^`3=+me}69Z>+c`qudX@md@I()+3LpO;-Weg37-Wjmu^{v6vmKn z0`pT2zcvltG+o{K^#Sd4dxwBS{@T~uTO$2d73c6w>!M-j=6J8aDdJ-5(RO`~{I0wh z>EInHC2QmEz6*5lq(1U&FiOO?txu|*{LI?7&RJC|H^^vz!ql=eSjg?kcP6ket5&{j z;E+@~Yiq$|nd0DA8j4mnRi5stZF{HP6o~dSup4txffQY7kF~1n9^Mp&as17k%9uaH zhd6)!Z2J+!1expS-{kyd=H4>p4LKe44f;ieeG`M^WI~e`+%dJm`-iQc*?mH(C%r4t zG}waD=@!@?ac}!GMN);{GIe59aasrdxWRl?)n<*V_MCJ-`(}v^0!W_I?2xvXh$GWT%xim!|+wizjXB47Gxk2Kx+Hu5Wh;C8$?MsK*WR%L{+%KQ+@^fps&)F((6$&cA4TK#7hJv+=pU6zC)W2&3z-fRaDgK)c~+2brPa0Bv;o ziVoUgXXvbiw%I~$pY{Vq%b;E8k2+uP?>JE5{6x<40jI3ON40H8dHkRAk*fJ4Ax;0SOOI0hsGDL^Wa2B16{kY)nM zffK+F?wX1B1^F@h0jmoDZi9?l;XQzEDh26q6(Mdd*@fa8LE= zqxRZ3vx|GG89gafZtA$ORU6V zwcXvbQ0uZ`yog!@X*mR_-iDF&bz%6QAuRvS`Hj*KSbu(MEMM>C=bvtdKT*6B66N97 zKM zhDjTUzx>hh2h8)kfA9Qmc4zC`@Oqp6_2o3|AVK!frdi*Zs9?-XPd{oZ$eQO~HPMt{9ivRB-WEz?$cP)FoZcvP>rz-n}~)kR(o<0CA} z(|RYr9b+v{!;;7bG^|9dxF=RNqt-62#@lhg*ci`$8F(Hr<2RV`_h0?Tf`2CdsBd;t z>-@qxl|!DX?e=G4TP!2}+O?~f%rDxkVnr(^|y>WuI8 zyqoH_VcfyxMOnFZ9d33?l!)4`mx^=^q{t)B>T{_1@n7VoVSH_(BQ@?Gm=*HMz%8j( zMZ8@_-YY9o`j6Mjm6S-M(8+>_Q+)35^a(E%mn3vrZq?gfFg+lEnqMU~YG#WsS8PZ9 zL!v{@9{ssNbL7S?)JhX#!5fVAC9TB%8qC44pA6>w&pbc=x#!2dJ1u%Dn$d;)BO+Qcp>`w(G535g_U2L&ixS1XG2s0CfLaO-i=tuuX<_o!3rIODyY)W$S&Z>J z)brcnoy5ow^^}{W z2dxs_<@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>OF&#m0z 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)}> +
  • + "> + <{$menu.page_name}> + <{* 準備中 *}> + <{if $menu.page_id == $menu.room_id && $menu.display_flag == _OFF}><{$lang.menu_prepared|smarty:nodefaults}><{/if}> + + <{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}> + + + + + + + + + <{/if}> + @@ -136,6 +152,17 @@ + + + + + + + + <{$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}> +
+ +
+<{/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 $action.reserve_block.display_timeframe == $smarty.const._ON && $action.timeframe_list_count!=0}> +
+ + + <{$lang.reservation_time_pause|smarty:nodefaults}> + + + <{/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}>> <{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);'> <{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}>> <{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}> + + + + + + + + +<{/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 @@ +
+
+
+ " alt="" title="" /> + <{$lang.reservation_timeframe_add_title}> +
+ +
+ + <{if $action.timeframe_list_count == 0}> + <{$lang.reservation_timeframe_no_exists|smarty:nodefaults}> + <{else}> + + <{foreach item=timeframe from=$action.timeframe_list }> + + + + + + + + + + +
+
<{$timeframe.timeframe_name}>
+
+
<{$timeframe.start_time|timezone_date:false:$lang._short_time_format}><{$lang.reservation_time_pause}><{$timeframe.end_time|timezone_date:false:$lang._short_time_format}>
+ <{if ($smarty.session._timezone_offset != $timeframe.timezone_offset) }> +
<{$timeframe.timezone_string}> <{$timeframe.start_time_original_str}><{$lang.reservation_time_pause}><{$timeframe.end_time_original_str}>
+ <{/if}> +
+
+
+ <{$lang._edit}> + <{$lang._separator|smarty:nodefaults}> + <{$lang._delete}> +
+ + <{foreachelse}> + <{$lang.reservation_timeframe_no_exists|smarty:nodefaults}> + <{/foreach}> + <{/if}> + +
+
+
\ 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}> + +
+ +
+ + <{foreach name="week_list" key="wday" item="week" from=$action.week_list}> + + <{/foreach}> + + + + + + + + + + + + + + + + +
+ + +
+ + +   + + + <{$lang.reservation_time_pause|smarty:nodefaults}> + + +   + + + <{if $action.timeframe_id != null && ($smarty.session._timezone_offset != $action.timeframe.timezone_offset) }> +
+ <{include file="reservation_view_timezone.html" timezone_offset=$action.timeframe.timezone_constant_string}> + <{/if}> + +
+ + +
+ +
+ +   + +
+ +
+ +
+ +<{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}> + + + + <{/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}> - + - + From c8fdcbd774fa41a880fe34899e2a4a479895124e Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 11:03:34 +0900 Subject: [PATCH 077/109] =?UTF-8?q?#61=20=E4=BB=B6=E5=90=8D=E7=AD=89?= =?UTF-8?q?=E3=81=AE=E6=83=85=E5=A0=B1=E3=81=8C=E5=85=A5=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 日誌のコメント削除の他に、日誌のトラックバック削除も同様の現象があったため処理を共通化 --- .../action/main/comment/Comment.class.php | 8 +- .../action/main/confirm/Confirm.class.php | 22 +-- .../action/main/delete/Delete.class.php | 18 +-- .../journal/action/main/delete/maple.ini | 1 + .../main/deltrackback/Deltrackback.class.php | 22 +-- .../action/main/deltrackback/maple.ini | 2 +- .../journal/action/main/post/Post.class.php | 1 - .../journal/components/Action.class.php | 150 ++++-------------- 8 files changed, 57 insertions(+), 167 deletions(-) mode change 100644 => 100755 html/webapp/modules/journal/action/main/comment/Comment.class.php mode change 100644 => 100755 html/webapp/modules/journal/action/main/confirm/Confirm.class.php mode change 100644 => 100755 html/webapp/modules/journal/action/main/delete/Delete.class.php mode change 100644 => 100755 html/webapp/modules/journal/action/main/delete/maple.ini mode change 100644 => 100755 html/webapp/modules/journal/action/main/deltrackback/Deltrackback.class.php mode change 100644 => 100755 html/webapp/modules/journal/action/main/deltrackback/maple.ini mode change 100644 => 100755 html/webapp/modules/journal/action/main/post/Post.class.php mode change 100644 => 100755 html/webapp/modules/journal/components/Action.class.php diff --git a/html/webapp/modules/journal/action/main/comment/Comment.class.php b/html/webapp/modules/journal/action/main/comment/Comment.class.php old mode 100644 new mode 100755 index 2f18c1c..ffd3476 --- a/html/webapp/modules/journal/action/main/comment/Comment.class.php +++ b/html/webapp/modules/journal/action/main/comment/Comment.class.php @@ -47,7 +47,7 @@ function execute() }else { $agree_flag = JOURNAL_STATUS_AGREE_VALUE; } - + if(empty($this->comment_id)) { $params = array( "journal_id" => $this->journal_obj['journal_id'], @@ -75,8 +75,8 @@ function execute() if($result === false) { return 'error'; } - - if($comment_before_update[0]['agree_flag'] == JOURNAL_STATUS_WAIT_AGREE_VALUE && + + if($comment_before_update[0]['agree_flag'] == JOURNAL_STATUS_WAIT_AGREE_VALUE && $agree_flag == JOURNAL_STATUS_AGREE_VALUE && $this->journal_obj['comment_agree_mail_flag'] == _ON) { $this->session->setParameter("journal_confirm_mail_post_id", $this->comment_id); @@ -87,7 +87,7 @@ function execute() $this->session->setParameter("journal_mail_post_id", array("post_id" => $this->comment_id, "agree_flag" => JOURNAL_STATUS_WAIT_AGREE_VALUE)); } //--新着情報関連 Start-- - $result = $this->journalAction->setCommentWhatsnew($this->comment_id); + $result = $this->journalAction->setWhatsnew($this->post_id); if($result === false) { return 'error'; } diff --git a/html/webapp/modules/journal/action/main/confirm/Confirm.class.php b/html/webapp/modules/journal/action/main/confirm/Confirm.class.php old mode 100644 new mode 100755 index 560a6be..e69c586 --- a/html/webapp/modules/journal/action/main/confirm/Confirm.class.php +++ b/html/webapp/modules/journal/action/main/confirm/Confirm.class.php @@ -17,7 +17,7 @@ class Journal_Action_Main_Confirm extends Action // リクエストパラメータを受け取るため var $block_id = null; var $post_id = null; - + // バリデートによりセット var $journal_obj = null; @@ -27,19 +27,19 @@ class Journal_Action_Main_Confirm extends Action var $journalAction = null; // 値をセットするため - + /** * [[機能説明]] * * @access public */ function execute() - { + { $post_before_update = $this->db->selectExecute("journal_post", array("post_id" => $this->post_id)); if (empty($post_before_update)) { return 'error'; } - + $params = array( "agree_flag" => JOURNAL_STATUS_AGREE_VALUE ); @@ -52,28 +52,28 @@ function execute() if($this->journal_obj['mail_flag'] == _ON && empty($post_before_update[0]['parent_id'])) { $this->session->setParameter("journal_mail_post_id", array("post_id" => $this->post_id, "agree_flag" => JOURNAL_STATUS_AGREE_VALUE)); } - - if((empty($post_before_update[0]['parent_id']) && $this->journal_obj['agree_mail_flag'] == _ON) + + if((empty($post_before_update[0]['parent_id']) && $this->journal_obj['agree_mail_flag'] == _ON) || (!empty($post_before_update[0]['parent_id']) && $this->journal_obj['comment_agree_mail_flag'] == _ON && (empty($post_before_update[0]['direction_flag']) || (!empty($post_before_update[0]['direction_flag']) && strpos($post_before_update[0]['tb_url'], BASE_URL) !== false)))) { $this->session->setParameter("journal_confirm_mail_post_id", $this->post_id); } - + //トラックバックの処理 $this->journalAction->setTrackBack($this->journal_obj, $this->post_id, $post_before_update[0]); - + //--新着情報関連 Start-- if(empty($post_before_update[0]['parent_id'])) { $result = $this->journalAction->setWhatsnew($this->post_id); }else { - $result = $this->journalAction->setCommentWhatsnew($this->post_id); + $result = $this->journalAction->setWhatsnew($post_before_update[0]['parent_id']); } if($result === false) { return 'error'; } //--新着情報関連 End-- - + // --- 投稿回数更新 --- - + $before_post = isset($post_before_update[0]) ? $post_before_update[0] : null; $result = $this->journalAction->setMonthlynumber(_ON, JOURNAL_POST_STATUS_REREASED_VALUE, $before_post['status'], $before_post); if ($result === false) { diff --git a/html/webapp/modules/journal/action/main/delete/Delete.class.php b/html/webapp/modules/journal/action/main/delete/Delete.class.php old mode 100644 new mode 100755 index e5c0617..b6707ff --- a/html/webapp/modules/journal/action/main/delete/Delete.class.php +++ b/html/webapp/modules/journal/action/main/delete/Delete.class.php @@ -24,6 +24,7 @@ class Journal_Action_Main_Delete extends Action var $session = null; var $whatsnewAction = null; var $request = null; + var $journalAction = null; // 値をセットするため var $comment_flag = null; @@ -79,23 +80,10 @@ function execute() } } else { // コメント削除 - $count = $this->db->countExecute("journal_post", array("parent_id"=>$this->post_id)); - if ($count === false) { + $result = $this->journalAction->setWhatsnew($this->post_id); + if($result === false) { return 'error'; } - if($count == 0) { - $result = $this->whatsnewAction->delete($this->post_id, _ON); - } else { - $whatsnew = array( - "unique_id" => $this->post_id, - "count_num" => $count, - "child_flag" => _ON - ); - $result = $this->whatsnewAction->auto($whatsnew); - if($result === false) { - return 'error'; - } - } } //--新着情報関連 End-- diff --git a/html/webapp/modules/journal/action/main/delete/maple.ini b/html/webapp/modules/journal/action/main/delete/maple.ini old mode 100644 new mode 100755 index 667e6af..8239f4e --- a/html/webapp/modules/journal/action/main/delete/maple.ini +++ b/html/webapp/modules/journal/action/main/delete/maple.ini @@ -16,6 +16,7 @@ comment_id.journal.commentEditAuth:g = "1:lang._invalid_auth" session = "ref:Session" whatsnewAction = "ref:whatsnewAction" request = "ref:Request" +journalAction = "ref:journalAction" [View] post = "location_script:" diff --git a/html/webapp/modules/journal/action/main/deltrackback/Deltrackback.class.php b/html/webapp/modules/journal/action/main/deltrackback/Deltrackback.class.php old mode 100644 new mode 100755 index 9a0519c..f6d119d --- a/html/webapp/modules/journal/action/main/deltrackback/Deltrackback.class.php +++ b/html/webapp/modules/journal/action/main/deltrackback/Deltrackback.class.php @@ -23,7 +23,7 @@ class Journal_Action_Main_Deltrackback extends Action // 使用コンポーネントを受け取るため var $db = null; - var $whatsnewAction = null; + var $journalAction = null; // 値をセットするため @@ -44,26 +44,10 @@ function execute() } //--新着情報関連 Start-- - $count = $this->db->countExecute("journal_post", array("parent_id"=>$this->post_id, "direction_flag != " . JOURNAL_TRACKBACK_TRANSMIT => null)); - if ($count === false) { + $result = $this->journalAction->setWhatsnew($this->post_id); + if($result === false) { return 'error'; } - if($this->post['agree_flag'] != JOURNAL_STATUS_AGREE_VALUE) { - $whatsnew = array( - "unique_id" => $this->post_id, - "count_num" => $count, - "child_flag" => _ON - ); - $result = $this->whatsnewAction->auto($whatsnew); - if($result === false) { - return 'error'; - } - }else { - if($count == 0) { - $result = $this->whatsnewAction->delete($this->post_id, _ON); - } - } - //--新着情報関連 End-- return 'success'; diff --git a/html/webapp/modules/journal/action/main/deltrackback/maple.ini b/html/webapp/modules/journal/action/main/deltrackback/maple.ini old mode 100644 new mode 100755 index c88163f..6342291 --- a/html/webapp/modules/journal/action/main/deltrackback/maple.ini +++ b/html/webapp/modules/journal/action/main/deltrackback/maple.ini @@ -9,7 +9,7 @@ trackback_id.journal.existTrackback:g = "1:lang._invalid_input" key:trackback_id.journal.postEditAuth:g = "1:lang._invalid_auth" [Action] -whatsnewAction = "ref:whatsnewAction" +journalAction = "ref:journalAction" [View] success = "action:journal_view_main_detail" diff --git a/html/webapp/modules/journal/action/main/post/Post.class.php b/html/webapp/modules/journal/action/main/post/Post.class.php old mode 100644 new mode 100755 index 0720322..038d946 --- a/html/webapp/modules/journal/action/main/post/Post.class.php +++ b/html/webapp/modules/journal/action/main/post/Post.class.php @@ -41,7 +41,6 @@ class Journal_Action_Main_Post extends Action var $journalView = null; var $journalAction = null; var $db = null; - var $whatsnewAction = null; var $request = null; var $session = null; var $configView = null; diff --git a/html/webapp/modules/journal/components/Action.class.php b/html/webapp/modules/journal/components/Action.class.php old mode 100644 new mode 100755 index c16b546..48ddb7d --- a/html/webapp/modules/journal/components/Action.class.php +++ b/html/webapp/modules/journal/components/Action.class.php @@ -234,41 +234,13 @@ function saveTrackback($trackback) { return false; } $block_id = isset($journal_block[0]) ? $journal_block[0]['block_id'] : 0; - $count = $this->_db->countExecute("journal_post", array("parent_id"=>$trackback['post_id'], "direction_flag != " . JOURNAL_TRACKBACK_TRANSMIT => null)); - if ($count === false) { + $commonMain =& $this->_container->getComponent("commonMain"); + $parameters = "post_id=". $trackback['post_id'] . "&trackback_flag=1&block_id=".$block_id."#".$commonMain->getTopId($block_id); + + $result = $this->setWhatsnew($trackback['post_id'], $parameters); + if ($result === false) { return false; } - if($agree_flag == JOURNAL_STATUS_AGREE_VALUE) { - $commonMain =& $this->_container->getComponent("commonMain"); - $time = timezone_date(); - if(intval($time) < intval($post[0]['journal_date'])) { - // 未来ならば、日誌の記事の時間をセット - $time = $post[0]['journal_date']; - } - $whatsnew = array( - "unique_id" => $trackback['post_id'], - "title" => $post[0]['title'], - "description" => $post[0]['content'], - "action_name" => "journal_view_main_detail", - "parameters" => "post_id=". $trackback['post_id'] . "&trackback_flag=1&block_id=".$block_id."#".$commonMain->getTopId($block_id), - "count_num" => $count, - "child_flag" => _ON, - "room_id" => $post[0]['room_id'], - "insert_time" => $time, - "insert_user_id" => $post[0]['insert_user_id'], - "insert_user_name" => $post[0]['insert_user_name'] - ); - $whatsnewAction =& $this->_container->getComponent("whatsnewAction"); - $result = $whatsnewAction->auto($whatsnew, _ON); - if($result === false) { - return false; - } - }else { - if($count == 0) { - $result = $whatsnewAction->delete($trackback['post_id'], _ON); - } - } - //--新着情報関連 End-- }else { @@ -481,7 +453,7 @@ function getWeblogMsg(){ * @return bool * @access public */ - function setWhatsnew($post_id) { + function setWhatsnew($post_id, $parameters="") { $params = array("post_id" => $post_id); $posts = $this->_db->selectExecute("journal_post", $params); @@ -492,46 +464,47 @@ function setWhatsnew($post_id) { $whatsnewAction =& $this->_container->getComponent("whatsnewAction"); if ($posts[0]["status"] == JOURNAL_POST_STATUS_REREASED_VALUE && $posts[0]["agree_flag"] == JOURNAL_STATUS_AGREE_VALUE) { + $commentParams = array( + "parent_id" => $post_id, + "direction_flag != " . JOURNAL_TRACKBACK_TRANSMIT => null, + "agree_flag" => JOURNAL_STATUS_AGREE_VALUE + ); + $count = $this->_db->countExecute("journal_post", $commentParams); + if ($count === false) { + return false; + } + + $time = timezone_date(); + if ($time < $posts[0]['journal_date'] || $count == 0) { + // 未来記事もしくは子記事が無いならば、日誌の記事の時間をセット + $child_update_time = $posts[0]['journal_date']; + } else { + //過去(現在)ならば、コメントのMAX日時と日誌の記事の日時の大きい方をセット + $child_update_time = $this->_db->maxExecute("journal_post", "insert_time", $commentParams); + if ($child_update_time < $posts[0]['journal_date']) { + $child_update_time = $posts[0]['journal_date']; + } + } + if ($parameters == "") { + $parameters = "post_id=". $post_id . "&comment_flag=1"; + } $whatsnew = array( "unique_id" => $post_id, "title" => $posts[0]["title"], "description" => $posts[0]["content"]."

".$posts[0]["more_content"], "action_name" => "journal_view_main_detail", - "parameters" => "post_id=". $post_id . "&comment_flag=1", + "parameters" => $parameters, "insert_time" => $posts[0]["journal_date"], "insert_user_id" => $posts[0]["insert_user_id"], "insert_user_name" => $posts[0]["insert_user_name"], - "update_time" => $posts[0]["journal_date"], - "child_update_time" => $posts[0]["journal_date"] + "count_num" => $count, + "child_update_time" => $child_update_time, + "room_id" => $posts[0]['room_id'], ); $result = $whatsnewAction->auto($whatsnew); if ($result === false) { return false; } - - // journal_dateが、未来かどうかを判断し、 - // 未来ならば、コメントの新着も未来に書き換え - // 未来でなければ、コメントのデータのMAXをとり、 - // その日付に更新 - $where_params = array( - "root_id" => $post_id - ); - $insert_time = $this->_db->maxExecute("journal_post", "insert_time", $where_params); - if(isset($insert_time)) { - // コメントあり - $time = timezone_date(); - $journal_date = $posts[0]["journal_date"]; - $whatsnew['child_flag'] = _ON; - if(intval($journal_date) < intval($time)) { - // 過去 - $whatsnew['insert_time'] = $journal_date; - $whatsnew['child_update_time'] = $insert_time; - } - $result = $whatsnewAction->auto($whatsnew, _OFF); - if ($result === false) { - return false; - } - } } else { $result = $whatsnewAction->delete($post_id); if($result === false) { @@ -541,61 +514,6 @@ function setWhatsnew($post_id) { return true; } - /** - * 新着情報にセットする(コメント) - * - * @return bool - * @access public - */ - function setCommentWhatsnew($comment_id) { - $params = array("post_id" => $comment_id); - $comment = $this->_db->selectExecute("journal_post", $params); - if (empty($comment)) { - return false; - } - $whatsnewAction =& $this->_container->getComponent("whatsnewAction"); - $count = $this->_db->countExecute("journal_post", array("parent_id"=>$comment[0]['parent_id'], "direction_flag != " . JOURNAL_TRACKBACK_TRANSMIT => null)); - if ($count === false) { - return false; - } - - if ($comment[0]["agree_flag"] == JOURNAL_STATUS_AGREE_VALUE) { - $journal_post = $this->_db->selectExecute("journal_post", array("post_id"=>$comment[0]['parent_id'])); - if ($journal_post === false && !isset($journal_post[0])) { - return false; - } - $time = timezone_date(); - if(intval($time) < intval($journal_post[0]['journal_date'])) { - // 未来ならば、日誌の記事の時間をセット - $time = $journal_post[0]['journal_date']; - } - - $whatsnew = array( - "unique_id" => $comment[0]['parent_id'], - "title" => $journal_post[0]['title'], - "description" => $journal_post[0]['content'], - "action_name" => "journal_view_main_detail", - "parameters" => "post_id=". $comment[0]['parent_id'] . "&comment_flag=1", - "count_num" => $count, - "child_flag" => _ON, - "child_update_time" => $time, - "insert_time" => $journal_post[0]['journal_date'], - "insert_user_id" => $journal_post[0]['insert_user_id'], - "insert_user_name" => $journal_post[0]['insert_user_name'] - ); - $result = $whatsnewAction->auto($whatsnew); - if($result === false) { - return false; - } - }else { - if($count == 0) { - $result = $whatsnewAction->delete($comment[0]['parent_id'], _ON); - } - } - - return true; - } - /** * 投稿回数をセットする * From 3938905be19083df103279e627cbf0a5f270115a Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 11:04:42 +0900 Subject: [PATCH 078/109] =?UTF-8?q?#61=20=E6=B1=8E=E7=94=A8DB=E3=81=AE?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E5=89=8A=E9=99=A4=E3=82=82?= =?UTF-8?q?=E5=90=8C=E6=A7=98=E3=81=AE=E4=B8=8D=E5=85=B7=E5=90=88=E3=81=8C?= =?UTF-8?q?=E3=81=82=E3=82=8B=E3=81=9F=E3=82=81=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/delcomment/Delcomment.class.php | 21 +++++++++++++++++++ .../action/main/delcomment/maple.ini | 1 + 2 files changed, 22 insertions(+) diff --git a/html/webapp/modules/multidatabase/action/main/delcomment/Delcomment.class.php b/html/webapp/modules/multidatabase/action/main/delcomment/Delcomment.class.php index 95ac94f..5e4bac2 100644 --- a/html/webapp/modules/multidatabase/action/main/delcomment/Delcomment.class.php +++ b/html/webapp/modules/multidatabase/action/main/delcomment/Delcomment.class.php @@ -21,6 +21,7 @@ class Multidatabase_Action_Main_Delcomment extends Action // 使用コンポーネントを受け取るため var $db = null; var $whatsnewAction = null; + var $mdbAction = null; // バリデートによりセットするため @@ -45,8 +46,28 @@ function execute() if($count == 0) { $result = $this->whatsnewAction->delete($this->content_id, _ON); } else { + $params = array(); + $whereParams = array('content_id' => $this->content_id); + $sql = "SELECT M.multidatabase_id, M.title_metadata_id " + . "FROM {multidatabase_content} MC " + . "INNER JOIN {multidatabase} M " + . "ON MC.multidatabase_id = M.multidatabase_id" + . $this->db->getWhereSQL($params, $whereParams); + $multidatabase = $this->db->execute($sql, $params); + if (empty($multidatabase)) { + return 'error'; + } + + $whatsnewTitle = $this->mdbAction->getWhatsnewTitle($this->content_id, $multidatabase[0]['title_metadata_id']); + if ($whatsnewTitle === false) { + return 'error'; + } $whatsnew = array( "unique_id" => $this->content_id, + "title" => $whatsnewTitle["title"], + "description" => $whatsnewTitle["description"], + "action_name" => "multidatabase_view_main_detail", + "parameters" => "content_id=". $this->content_id . "&multidatabase_id=" . $multidatabase[0]["multidatabase_id"], "count_num" => $count, "child_flag" => _ON ); diff --git a/html/webapp/modules/multidatabase/action/main/delcomment/maple.ini b/html/webapp/modules/multidatabase/action/main/delcomment/maple.ini index 52b4ddb..442d754 100644 --- a/html/webapp/modules/multidatabase/action/main/delcomment/maple.ini +++ b/html/webapp/modules/multidatabase/action/main/delcomment/maple.ini @@ -10,6 +10,7 @@ comment_id.multidatabase.commentExists="1:lang._invalid_input" [Action] whatsnewAction = "ref:whatsnewAction" +mdbAction = "ref:mdbAction" [View] success = "action:multidatabase_view_main_detail" From db0fe700adda1a3a0d9fc1ce3c1ee9023923f847 Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 11:10:03 +0900 Subject: [PATCH 079/109] =?UTF-8?q?#65=20=E3=83=AD=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=97=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84=E3=81=A8?= =?UTF-8?q?=E6=A4=9C=E7=B4=A2=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E6=A4=9C=E7=B4=A2=E3=81=A7=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=8C=E7=99=BA=E7=94=9F=E3=81=99=E3=82=8B=E3=81=9F=E3=82=81?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../validator/Validator_UserAuthCheck.class.php | 11 +++++------ .../circular/view/admin/search/Search.class.php | 7 +++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/html/webapp/modules/circular/validator/Validator_UserAuthCheck.class.php b/html/webapp/modules/circular/validator/Validator_UserAuthCheck.class.php index e47b1e1..9b7d243 100644 --- a/html/webapp/modules/circular/validator/Validator_UserAuthCheck.class.php +++ b/html/webapp/modules/circular/validator/Validator_UserAuthCheck.class.php @@ -24,18 +24,17 @@ class Circular_Validator_UserAuthCheck extends Validator function validate($attributes, $errStr, $params) { $container =& DIContainerFactory::getContainer(); - $session =& $container->getComponent('Session'); - - if (!$session->getParameter('_user_id')) { - return $errStr; - } - $actionChain =& $container->getComponent('ActionChain'); $actionName = $actionChain->getCurActionName(); if ($actionName == "circular_view_admin_search") { return; } + $session =& $container->getComponent('Session'); + if (!$session->getParameter('_user_id')) { + return $errStr; + } + if ($session->getParameter('_auth_id') < _AUTH_GENERAL) { $filterChain =& $container->getComponent('FilterChain'); $smartyAssign =& $filterChain->getFilterByName('SmartyAssign'); diff --git a/html/webapp/modules/circular/view/admin/search/Search.class.php b/html/webapp/modules/circular/view/admin/search/Search.class.php index 9c01117..c42a15a 100644 --- a/html/webapp/modules/circular/view/admin/search/Search.class.php +++ b/html/webapp/modules/circular/view/admin/search/Search.class.php @@ -40,15 +40,14 @@ class Circular_View_Admin_Search extends Action */ function execute() { - if ($this->block_id_arr) { - $sqlwhere = ' WHERE block.block_id IN ('.implode(',', $this->block_id_arr).')'; - } else { + $user_id = $this->session->getParameter('_user_id'); + if ($user_id === '0' || $user_id === null || !$this->block_id_arr) { return 'success'; } + $sqlwhere = ' WHERE block.block_id IN ('.implode(',', $this->block_id_arr).')'; $sqlwhere .= $this->sqlwhere; $sqlwhere .= ' AND (circular.post_user_id = ? OR user.receive_user_id = ?)'; - $user_id = $this->session->getParameter('_user_id'); $this->params[] = $user_id; $this->params[] = $user_id; From 8a67ec8f3e7b13f726f41aa2f3f496a2f2491b4e Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 12:36:30 +0900 Subject: [PATCH 080/109] =?UTF-8?q?#66=2012/31=E3=81=AE=E5=B9=B4=E5=8D=98?= =?UTF-8?q?=E4=BD=8D=E3=81=AE=E7=B9=B0=E3=82=8A=E8=BF=94=E3=81=97=E3=81=8C?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E3=81=AB=E7=99=BB=E9=8C=B2=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/calendar/Action.class.php | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) mode change 100644 => 100755 html/webapp/components/calendar/Action.class.php diff --git a/html/webapp/components/calendar/Action.class.php b/html/webapp/components/calendar/Action.class.php old mode 100644 new mode 100755 index a96a882..84a9a46 --- a/html/webapp/components/calendar/Action.class.php +++ b/html/webapp/components/calendar/Action.class.php @@ -713,6 +713,7 @@ function _insertYearly($params, &$rrule, $first=false, $bymonthday=0) $bymonthday = intval(substr($start_date,6,2)); } + $result = true; $current_month = intval(substr($start_date,4,2)); foreach ($rrule["BYMONTH"] as $i=>$month) { if ($first && $current_month > $month) { continue; } @@ -724,7 +725,8 @@ function _insertYearly($params, &$rrule, $first=false, $bymonthday=0) } else { $params["start_date"] = substr($start_date,0,4).sprintf("%02d",$month)."01"; $params["start_time"] = $start_time; - $params["end_date"] = substr($end_date,0,4).sprintf("%02d",$month).sprintf("%02d", 1 + $diff_num); + // end_dateにはstart_date + $diff_numの日付をセット(12/31の場合に翌年がセットされるため) + $params["end_date"] = substr($start_date,0,4) . sprintf("%02d", $month) . sprintf("%02d", 1 + $diff_num); $params["end_time"] = $end_time; } if (!empty($rrule["BYDAY"]) && count($rrule["BYDAY"]) > 0) { @@ -736,10 +738,16 @@ function _insertYearly($params, &$rrule, $first=false, $bymonthday=0) return false; } } - $params["start_date"] = timezone_date($start_date.$start_time, true, "Ymd"); - $params["start_time"] = timezone_date($start_date.$start_time, true, "His"); - $params["end_date"] = timezone_date($end_date.$end_time, true, "Ymd"); - $params["end_time"] = timezone_date($end_date.$end_time, true, "His"); + $startDate = $start_date.$start_time; + $endDate = $end_date.$end_time; + if (is_array($result)) { + list($startDate, $endDate) = $result; + } + + $params["start_date"] = timezone_date($startDate, true, "Ymd"); + $params["start_time"] = timezone_date($startDate, true, "His"); + $params["end_date"] = timezone_date($endDate, true, "Ymd"); + $params["end_time"] = timezone_date($endDate, true, "His"); if (!empty($rrule["BYDAY"]) && count($rrule["BYDAY"]) > 0) { return $this->_insertYearly($params, $rrule); @@ -749,8 +757,10 @@ function _insertYearly($params, &$rrule, $first=false, $bymonthday=0) } /** - * 登録処理 + * 登録処理(年単位-開始日と同日) * + * @return mixed boolean true:登録せず終了 false:失敗 + * array 登録成功: array(登録した開始年月日時分秒, 登録した終了年月日時分秒) * @access private */ function __insertYearlyByMonthday($params, &$rrule, $bymonthday, $first) @@ -798,13 +808,15 @@ function __insertYearlyByMonthday($params, &$rrule, $bymonthday, $first) if ($calendar_id === false) { return false; } else { - return true; + return array($start_date.$start_time, $end_date.$end_time); } } /** - * 登録処理 + * 登録処理(年単位-第○週○曜日) * + * @return mixed boolean true:登録せず終了 false:失敗 + * array 登録成功: array(登録した開始年月日時分秒, 登録した終了年月日時分秒) * @access private */ function __insertYearlyByday($params, &$rrule, $first=false) @@ -862,7 +874,7 @@ function __insertYearlyByday($params, &$rrule, $first=false) if ($calendar_id === false) { return false; } else { - return true; + return array($start_date.$start_time, $end_date.$end_time); } } From d12bd2c451ce542b5f80db84425c0a1f4ae31048 Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 12:38:58 +0900 Subject: [PATCH 081/109] =?UTF-8?q?#81=20=E9=87=8D=E8=A4=87=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=82=8B=E6=9D=A1=E4=BB=B6=E5=BC=8F=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/multidatabase_mobile_metadata_detail_feature.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/webapp/modules/multidatabase/templates/default/multidatabase_mobile_metadata_detail_feature.html b/html/webapp/modules/multidatabase/templates/default/multidatabase_mobile_metadata_detail_feature.html index 01e3c56..b13c76f 100644 --- a/html/webapp/modules/multidatabase/templates/default/multidatabase_mobile_metadata_detail_feature.html +++ b/html/webapp/modules/multidatabase/templates/default/multidatabase_mobile_metadata_detail_feature.html @@ -8,7 +8,7 @@ <{/if}> -<{if $metadata.type == $smarty.const.MULTIDATABASE_META_TYPE_TEXT || $metadata.type == MULTIDATABASE_META_TYPE_MAIL || $metadata.type == MULTIDATABASE_META_TYPE_MAIL}> +<{if $metadata.type == $smarty.const.MULTIDATABASE_META_TYPE_TEXT || $metadata.type == MULTIDATABASE_META_TYPE_MAIL}> <{* テキスト *}>
From 7c8034951c71bb9ec8ff87bff5f22a4557790670 Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 13:01:38 +0900 Subject: [PATCH 082/109] =?UTF-8?q?#82=20text=E3=81=AE=E3=83=87=E3=83=BC?= =?UTF-8?q?=E3=82=BF=E5=9E=8B=E3=81=AEDefault=E6=8C=87=E5=AE=9A=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/circular/sql/mysql/table.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/webapp/modules/circular/sql/mysql/table.sql b/html/webapp/modules/circular/sql/mysql/table.sql index 39f8356..cdd7715 100644 --- a/html/webapp/modules/circular/sql/mysql/table.sql +++ b/html/webapp/modules/circular/sql/mysql/table.sql @@ -87,7 +87,7 @@ CREATE TABLE `circular_config` ( `room_id` int(11) NOT NULL default '0', `create_authority` tinyint(1) NOT NULL default '0', `mail_subject` varchar(255) default '', - `mail_body` text NOT NULL default '', + `mail_body` text NOT NULL, `insert_time` varchar(14) NOT NULL default '', `insert_site_id` varchar(40) NOT NULL default '', `insert_user_id` varchar(40) NOT NULL default '', From 99f1af6db4f37b39e9a24634af8b351bd08caca8 Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 15:15:33 +0900 Subject: [PATCH 083/109] =?UTF-8?q?#101=20YouTube=E3=81=AE=E5=9F=8B?= =?UTF-8?q?=E3=82=81=E8=BE=BC=E3=81=BF=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AE?= =?UTF-8?q?URL=E3=81=8C=E3=80=8Chttps=E3=80=8D=E3=81=A8=E3=81=AA=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81=E8=A8=B1=E5=8F=AF=E3=81=99=E3=82=8B?= =?UTF-8?q?URL=E3=81=AB=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../install/sql/mysql/default/common_insert.data.php | 2 ++ html/webapp/modules/module/update/Update.class.php | 12 ++++++++++++ 2 files changed, 14 insertions(+) mode change 100644 => 100755 html/webapp/modules/install/sql/mysql/default/common_insert.data.php mode change 100644 => 100755 html/webapp/modules/module/update/Update.class.php diff --git a/html/webapp/modules/install/sql/mysql/default/common_insert.data.php b/html/webapp/modules/install/sql/mysql/default/common_insert.data.php old mode 100644 new mode 100755 index 4721387..91f1d93 --- a/html/webapp/modules/install/sql/mysql/default/common_insert.data.php +++ b/html/webapp/modules/install/sql/mysql/default/common_insert.data.php @@ -560,6 +560,8 @@ INSERT INTO `textarea_video_url` (`url`, `action_name`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES ('', 'multimedia_view_main_play', '', '', '0', '', '', '', '0', ''); INSERT INTO `textarea_video_url` (`url`, `action_name`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES ('http://www.youtube-nocookie.com/', '', '', '', '0', '', '', '', '0', ''); INSERT INTO `textarea_video_url` (`url`, `action_name`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES ('//www.youtube.com/', '', '', '', '0', '', '', '', '0', ''); +INSERT INTO `textarea_video_url` (`url`, `action_name`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES ('https://www.youtube.com/', '', '', '', '0', '', '', '', '0', ''); +INSERT INTO `textarea_video_url` (`url`, `action_name`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES ('https://www.youtube-nocookie.com/', '', '', '', '0', '', '', '', '0', ''); "; ?> \ No newline at end of file diff --git a/html/webapp/modules/module/update/Update.class.php b/html/webapp/modules/module/update/Update.class.php old mode 100644 new mode 100755 index 47dfa31..21f297f --- a/html/webapp/modules/module/update/Update.class.php +++ b/html/webapp/modules/module/update/Update.class.php @@ -504,6 +504,18 @@ function execute() } } + // WYSIWYGの許可するVideoURLに「https://www.youtube.com/」「https://www.youtube-nocookie.com/」を追加 + $textarea_video_url = $this->db->selectExecute("textarea_video_url", array("url"=> 'https://www.youtube.com/')); + if($textarea_video_url !== false && count($textarea_video_url) == 0) { + $sql = "INSERT INTO `".$this->db->getPrefix()."textarea_video_url` (`url`, `action_name`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES + ('https://www.youtube.com/', '', '', '', '0', '', '', '', '0', ''), + ('https://www.youtube-nocookie.com/', '', '', '', '0', '', '', '', '0', '')"; + $result = $this->db->execute($sql); + if ($result === false) { + return false; + } + } + // WYSIWYGの許可するタグに「em」,「i」,「strike」,「s」を追加 $textarea_tag = $this->db->selectExecute("textarea_tag", array("tag"=> 'em')); if($textarea_tag !== false && count($textarea_tag) == 0) { From 8ead773e68d4e8c9b442bc872a615280499faf06 Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 18:37:32 +0900 Subject: [PATCH 084/109] =?UTF-8?q?XAMPP=E3=81=AE=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=80=81fopen=E3=81=97=E3=81=9F=E5=BE=8C=E3=81=ABfclose?= =?UTF-8?q?=E3=81=9B=E3=81=9Aunlink=E3=81=99=E3=82=8B=E3=81=A8warning?= =?UTF-8?q?=E3=81=8C=E7=99=BA=E7=94=9F=E3=81=99=E3=82=8B=E4=B8=8D=E5=85=B7?= =?UTF-8?q?=E5=90=88=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [参考] http://d.hatena.ne.jp/sutara_lumpur/20120715/1342330181 --- .../validator/Validator_Import.class.php | 6 ++++ .../view/admin/import/upload/Upload.class.php | 36 ++++++++++--------- .../view/admin/import/upload/Upload.class.php | 16 +++++++-- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/html/webapp/modules/reservation/validator/Validator_Import.class.php b/html/webapp/modules/reservation/validator/Validator_Import.class.php index f89fab6..79c9f12 100644 --- a/html/webapp/modules/reservation/validator/Validator_Import.class.php +++ b/html/webapp/modules/reservation/validator/Validator_Import.class.php @@ -50,6 +50,7 @@ function validate($attributes, $errStr, $params) //利用できるグループのチェック $attributes["reserve_room_id"] = intval($attributes["reserve_room_id"]); if ($attributes["reserve_room_id"] != 0 && !in_array($attributes["reserve_room_id"], $attributes["allow_add_rooms"])) { + fclose($handle); return _INVALID_INPUT; } @@ -57,12 +58,14 @@ function validate($attributes, $errStr, $params) $row_csv_header = $csvMain->fgets($handle); if (empty($row_csv_header)) { $uploadsAction->delUploadsById($filelist[0]["upload_id"]); + fclose($handle); return RESERVATION_ERR_FILE_FORMAT; } $header_format = explode("|", RESERVATION_IMPORT_FORMAT); foreach ($header_format as $i=>$val) { if (mb_convert_encoding($row_csv_header[$i], "UTF-8", _CLIENT_OS_CHARSET) != $val) { $uploadsAction->delUploadsById($filelist[0]["upload_id"]); + fclose($handle); return RESERVATION_ERR_FILE_FORMAT; } } @@ -180,6 +183,7 @@ function validate($attributes, $errStr, $params) } if ($attributes["location"]["duplication_flag"] == _ON) { + fclose($handle); return true; } @@ -258,9 +262,11 @@ function validate($attributes, $errStr, $params) continue; } else { $dbObject->addError(); + fclose($handle); return false; } } + fclose($handle); //エラーがあれば出力する if (!empty($error)) { diff --git a/html/webapp/modules/room/view/admin/import/upload/Upload.class.php b/html/webapp/modules/room/view/admin/import/upload/Upload.class.php index 9187a7e..4a776aa 100755 --- a/html/webapp/modules/room/view/admin/import/upload/Upload.class.php +++ b/html/webapp/modules/room/view/admin/import/upload/Upload.class.php @@ -112,24 +112,23 @@ function execute() // その後のファイルの内容を展開し // 1行ずつチェックしていく // 成功した行はセッション変数に覚えさせる - // エラーがあったら速攻リターン $chg_num = 0; $delete_num = 0; $line = -1; + $errorMessage = ''; while( ($row=$this->csvMain->fgets($handle)) != false ) { if($line>=ROOM_IMPORT_LINE_LIMIT) { - $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_LINE_OVER_ERR."(%s)", ROOM_IMPORT_LINE_LIMIT, $filename)); - $this->cleanup($file); - return 'error'; + $errorMessage = sprintf(ROOM_IMPORT_UPLOAD_LINE_OVER_ERR."(%s)", ROOM_IMPORT_LINE_LIMIT, $filename); + break; } - // SJISで来るので文字コード変換 + // 文字コード変換 $row = $this->convertCsv($row); // CSVのカラム数チェック おかしな行が1行でもあれば処理を中断 if(count($row) != ROOM_IMPORT_ITEM_COLUMN) { - $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_COLUMN_ERR."(%s)", $line+1, $filename)); - $this->cleanup($file); - return 'error'; + // FIXME おかしな行が1行でもあれば、1回目のループで条件に入ってくるため、どこがおかしいかがメッセージからわからない + $errorMessage = sprintf(ROOM_IMPORT_UPLOAD_COLUMN_ERR."(%s)", $line+1, $filename); + break; } $line++; @@ -139,9 +138,8 @@ function execute() else { // その人は会員情報に存在するのか? if(!isset($room_users[$row[0]])) { - $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NOUSER_ERR, $line+1, $row[0])); - $this->cleanup($file); - return 'error'; + $errorMessage = sprintf(ROOM_IMPORT_UPLOAD_NOUSER_ERR, $line+1, $row[0]); + break; } else { $target_user = $room_users[$row[0]]; @@ -186,15 +184,13 @@ function execute() else { // それは存在する権限IDか if(!isset($target_user['permitted_auth'][$row[1]])) { - $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NOAUTH_ERR, $line+1, $row[1])); - $this->cleanup($file); - return 'error'; + $errorMessage = sprintf(ROOM_IMPORT_UPLOAD_NOAUTH_ERR, $line+1, $row[1]); + break; } // このユーザーに許可された権限か if(!($target_user['permitted_auth'][$row[1]])) { - $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NOT_PERMIT_AUTH, $line+1, $row[0], $row[1])); - $this->cleanup($file); - return 'error'; + $errorMessage = sprintf(ROOM_IMPORT_UPLOAD_NOT_PERMIT_AUTH, $line+1, $row[0], $row[1]); + break; } // それは現在設定されている権限IDと一緒?それとも異なる? if($now_auth != $row[1]) { @@ -212,6 +208,12 @@ function execute() fclose($handle); $this->_delImportFile($file); + if ($errorMessage !== '') { + $errorList->add(get_class($this), $errorMessage); + $this->cleanup($file); + return 'error'; + } + // ファイルの中身が空エラー if($line<1) { $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NODATAS_ERR."(%s)", $filename)); diff --git a/html/webapp/modules/user/view/admin/import/upload/Upload.class.php b/html/webapp/modules/user/view/admin/import/upload/Upload.class.php index e042580..bc8c0cb 100644 --- a/html/webapp/modules/user/view/admin/import/upload/Upload.class.php +++ b/html/webapp/modules/user/view/admin/import/upload/Upload.class.php @@ -79,7 +79,7 @@ function execute() } if (!isset($showitems) || !is_array($showitems)) { $errorList->add(get_class($this), sprintf("show items error")); - $this->_delImportFile($file); + $this->_delImportFile($file, $handle); return 'error'; } @@ -89,7 +89,7 @@ function execute() $row_data_headers = mb_convert_encoding($row_data_headers, "UTF-8", _CLIENT_OS_CHARSET); if (empty($row_data_headers)) { $errorList->add(get_class($this), sprintf(USER_IMPORT_UPLOAD_NODATA."(%s)", $filelist[0]['file_name'])); - $this->_delImportFile($file); + $this->_delImportFile($file, $handle); return 'error'; } $row_data_headers = explode(",", $row_data_headers); @@ -703,8 +703,18 @@ function dataCheck_infile_mail() return $errlist; } - function _delImportFile($file_path) { + /** + * インポートファイルの削除 + * @param string $file_path + * @param resource $handle ファイルハンドラ + * @return void + * @access private + */ + function _delImportFile($file_path, $handle = null) { if(file_exists($file_path)) { + if (!is_null($handle)) { + fclose($handle); + } @chmod($file_path, 0777); unlink($file_path); } From b36db19f3164d88a49b184891e722b778fac0b0e Mon Sep 17 00:00:00 2001 From: ohga Date: Wed, 4 Mar 2015 19:04:14 +0900 Subject: [PATCH 085/109] =?UTF-8?q?2015/9/22=20=E3=81=AE=E5=9B=BD=E6=B0=91?= =?UTF-8?q?=E3=81=AE=E4=BC=91=E6=97=A5=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/holiday/sql/holiday.sql | 2 ++ 1 file changed, 2 insertions(+) mode change 100644 => 100755 html/webapp/modules/holiday/sql/holiday.sql diff --git a/html/webapp/modules/holiday/sql/holiday.sql b/html/webapp/modules/holiday/sql/holiday.sql old mode 100644 new mode 100755 index 403a5c9..249b043 --- a/html/webapp/modules/holiday/sql/holiday.sql +++ b/html/webapp/modules/holiday/sql/holiday.sql @@ -992,6 +992,7 @@ INSERT INTO `holiday` (`holiday_id`, `rrule_id`, `lang_dirname`, `holiday`, `sum INSERT INTO `holiday` (`holiday_id`, `rrule_id`, `lang_dirname`, `holiday`, `summary`, `holiday_type`) VALUES (988, 172, 'japanese', '20310720150000', '海の日', 0); INSERT INTO `holiday` (`holiday_id`, `rrule_id`, `lang_dirname`, `holiday`, `summary`, `holiday_type`) VALUES (989, 172, 'japanese', '20320718150000', '海の日', 0); INSERT INTO `holiday` (`holiday_id`, `rrule_id`, `lang_dirname`, `holiday`, `summary`, `holiday_type`) VALUES (990, 172, 'japanese', '20330717150000', '海の日', 0); +INSERT INTO `holiday` (`holiday_id`, `rrule_id`, `lang_dirname`, `holiday`, `summary`, `holiday_type`) VALUES (991, 173, 'japanese', '20150921150000', '国民の休日', 0); -- -- テーブルのダンプデータ `holiday_rrule` @@ -1169,6 +1170,7 @@ INSERT INTO `holiday_rrule` (`rrule_id`, `varidable_flag`, `substitute_flag`, `s INSERT INTO `holiday_rrule` (`rrule_id`, `varidable_flag`, `substitute_flag`, `start_time`, `end_time`, `rrule`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES (170, 0, 0, '20060503150000', '20060503150000', '', '', 0, 0, '', '', 0, 0, ''); INSERT INTO `holiday_rrule` (`rrule_id`, `varidable_flag`, `substitute_flag`, `start_time`, `end_time`, `rrule`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES (171, 0, 1, '19960719150000', '20020719150000', 'FREQ=YEARLY;INTERVAL=1;BYMONTH=7;UNTIL=20020719T150000', '', 0, 0, '', '', 0, 0, ''); INSERT INTO `holiday_rrule` (`rrule_id`, `varidable_flag`, `substitute_flag`, `start_time`, `end_time`, `rrule`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES (172, 1, 0, '20030720150000', '20330717150000', 'FREQ=YEARLY;INTERVAL=1;BYMONTH=7;BYDAY=3MO;UNTIL=20330717T150000', '', 0, 0, '', '', 0, 0, ''); +INSERT INTO `holiday_rrule` (`rrule_id`, `varidable_flag`, `substitute_flag`, `start_time`, `end_time`, `rrule`, `insert_time`, `insert_site_id`, `insert_user_id`, `insert_user_name`, `update_time`, `update_site_id`, `update_user_id`, `update_user_name`) VALUES (173, 0, 0, '20150921150000', '20150921150000', '', '', 0, 0, '', '', 0, 0, ''); -- -- テーブルのダンプデータ `holiday_seq_id` From 9b9482b8874f4ed14628926999c41eab99220678 Mon Sep 17 00:00:00 2001 From: ohga Date: Thu, 5 Mar 2015 14:59:28 +0900 Subject: [PATCH 086/109] =?UTF-8?q?[php5.4=E4=BB=A5=E4=B8=8A=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C]=E6=96=87=E5=AD=97=E3=82=92=E5=85=A5=E5=8A=9B?= =?UTF-8?q?=E3=81=9B=E3=81=9A=E3=81=AB=E6=9B=B8=E3=81=8D=E8=BE=BC=E3=81=BF?= =?UTF-8?q?=E3=82=92=E3=81=99=E3=82=8B=E3=81=A8warning=E3=81=8C=E5=87=BA?= =?UTF-8?q?=E3=82=8B=E5=95=8F=E9=A1=8C=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/chat/files/js/default/chat.js | 3 +++ 1 file changed, 3 insertions(+) mode change 100644 => 100755 html/webapp/modules/chat/files/js/default/chat.js diff --git a/html/webapp/modules/chat/files/js/default/chat.js b/html/webapp/modules/chat/files/js/default/chat.js old mode 100644 new mode 100755 index 1bec06a..ff8dfae --- a/html/webapp/modules/chat/files/js/default/chat.js +++ b/html/webapp/modules/chat/files/js/default/chat.js @@ -50,6 +50,9 @@ clsChat.prototype = { var top_el = $("chat_form" + this.id); var val_el = Element.getChildElementByClassName(top_el, "chat_text"); var chat_text = val_el ? val_el.value : null; + if (chat_text === '' || chat_text === null) { + return; + } var params = new Object(); params["method"] = "post"; params["top_el"] = top_el; From cee54098ddc16ec76b1a8a31113a43612ed7137c Mon Sep 17 00:00:00 2001 From: ohga Date: Fri, 13 Mar 2015 11:37:59 +0900 Subject: [PATCH 087/109] =?UTF-8?q?=E8=84=86=E5=BC=B1=E6=80=A7=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../circular/action/main/add/maple.ini | 2 +- .../circular/components/Action.class.php | 61 +++++++++---------- .../validator/Validator_ReceiveUser.class.php | 57 +++++++++++++++++ .../circular/view/main/users/Users.class.php | 2 +- .../circular/view/main/users/maple.ini | 3 + .../modules/journal/components/View.class.php | 6 +- .../modules/language/update/Update.class.php | 2 +- .../modules/module/update/Update.class.php | 11 +++- .../multidatabase/components/View.class.php | 2 +- .../modules/pm/components/Action.class.php | 7 ++- .../modules/pm/components/View.class.php | 6 +- .../Validator_FilterActionRequired.class.php | 37 +++++------ .../validator/Validator_AnswerFlag.class.php | 18 ++++-- .../reservation/components/View.class.php | 2 +- .../main/searchresult/Searchresult.class.php | 8 +++ .../view/admin/import/export/Export.class.php | 8 +++ 16 files changed, 163 insertions(+), 69 deletions(-) mode change 100644 => 100755 html/webapp/modules/circular/action/main/add/maple.ini mode change 100644 => 100755 html/webapp/modules/circular/components/Action.class.php create mode 100755 html/webapp/modules/circular/validator/Validator_ReceiveUser.class.php mode change 100644 => 100755 html/webapp/modules/circular/view/main/users/Users.class.php mode change 100644 => 100755 html/webapp/modules/circular/view/main/users/maple.ini mode change 100644 => 100755 html/webapp/modules/journal/components/View.class.php mode change 100644 => 100755 html/webapp/modules/language/update/Update.class.php mode change 100644 => 100755 html/webapp/modules/multidatabase/components/View.class.php mode change 100644 => 100755 html/webapp/modules/pm/components/Action.class.php mode change 100644 => 100755 html/webapp/modules/pm/components/View.class.php mode change 100644 => 100755 html/webapp/modules/pm/validator/Validator_FilterActionRequired.class.php mode change 100644 => 100755 html/webapp/modules/quiz/validator/Validator_AnswerFlag.class.php mode change 100644 => 100755 html/webapp/modules/reservation/components/View.class.php mode change 100644 => 100755 html/webapp/modules/user/action/main/searchresult/Searchresult.class.php mode change 100644 => 100755 html/webapp/modules/user/view/admin/import/export/Export.class.php diff --git a/html/webapp/modules/circular/action/main/add/maple.ini b/html/webapp/modules/circular/action/main/add/maple.ini old mode 100644 new mode 100755 index 6db5e47..035fe32 --- a/html/webapp/modules/circular/action/main/add/maple.ini +++ b/html/webapp/modules/circular/action/main/add/maple.ini @@ -11,7 +11,7 @@ circular_subject.required:g="1:lang._required,lang.circular_subject" circular_subject.maxlength = "1,_VALIDATOR_TITLE_LEN:lang._maxlength_error,lang.circular_subject,_VALIDATOR_TITLE_LEN" circular_body.required:g="1:lang._required,lang.circular_body" circular_body.maxlength = "1,_VALIDATOR_TEXTAREA_LEN:lang._maxlength_error,lang.circular_body,_VALIDATOR_TEXTAREA_LEN" -receive_user_ids.required:g="1:lang.circular_required_select" +receive_user_ids.circular.receiveUser = "1:lang.circular_required_select" key:choice_value,reply_type,choice_id.circular.circularChoice:choice = "1:lang.circular_choice_not_exist" period.date:period = "1:lang._invalid_date,lang.circular_period" key:period_checkbox,period.circular.period = "1:lang.circular_period_invalid" diff --git a/html/webapp/modules/circular/components/Action.class.php b/html/webapp/modules/circular/components/Action.class.php old mode 100644 new mode 100755 index ccac87b..fb31768 --- a/html/webapp/modules/circular/components/Action.class.php +++ b/html/webapp/modules/circular/components/Action.class.php @@ -149,7 +149,6 @@ function registCircular() $circularId = intval($circularId); $receiveUserIds = $this->_request->getParameter('receive_user_ids'); - $receiveUserIds = explode(",", $receiveUserIds); foreach ($receiveUserIds as $userID) { $insertParams = array( 'room_id' => $roomId, @@ -476,39 +475,39 @@ function updateUserSeen($type) return true; } - /** - * 新着情報にセットする - * + /** + * 新着情報にセットする + * * @param string $circularId 回覧ID * @return boolean (true:正常/false:異常) - * @access public - */ - function setWhatsnew($circularId) - { - $posts = $this->_db->selectExecute("circular", array("circular_id"=>$circularId)); - if (empty($posts)) { - return false; - } - + * @access public + */ + function setWhatsnew($circularId) + { + $posts = $this->_db->selectExecute("circular", array("circular_id"=>$circularId)); + if (empty($posts)) { + return false; + } + $pageId = $this->_request->getParameter("page_id"); - $whatsnewAction =& $this->_container->getComponent("whatsnewAction"); - - $whatsnew = array( - "unique_id" => $circularId, - "title" => $posts[0]["circular_subject"], - "description" => $posts[0]["circular_body"], - "action_name" => "circular_view_main_detail", - "parameters" => "circular_id=". $circularId . "&page_id=" . $pageId, - "insert_time" => $posts[0]["update_time"], - "update_time" => $posts[0]["update_time"] - ); - $result = $whatsnewAction->auto($whatsnew); - if ($result === false) { - return false; - } - - return true; - } + $whatsnewAction =& $this->_container->getComponent("whatsnewAction"); + + $whatsnew = array( + "unique_id" => $circularId, + "title" => $posts[0]["circular_subject"], + "description" => $posts[0]["circular_body"], + "action_name" => "circular_view_main_detail", + "parameters" => "circular_id=". $circularId . "&page_id=" . $pageId, + "insert_time" => $posts[0]["update_time"], + "update_time" => $posts[0]["update_time"] + ); + $result = $whatsnewAction->auto($whatsnew); + if ($result === false) { + return false; + } + + return true; + } /** * 期限を更新する diff --git a/html/webapp/modules/circular/validator/Validator_ReceiveUser.class.php b/html/webapp/modules/circular/validator/Validator_ReceiveUser.class.php new file mode 100755 index 0000000..ddab603 --- /dev/null +++ b/html/webapp/modules/circular/validator/Validator_ReceiveUser.class.php @@ -0,0 +1,57 @@ +getComponent('ActionChain'); + $actionName = $actionChain->getCurActionName(); + + if (empty($attributes)) { + if ($actionName === 'circular_view_main_users') { + return; + } + return $errStr; + } + $db =& $container->getComponent('DbObject'); + + $params = explode(',', $attributes); + $inClauseValue = str_repeat(",?", count($params)); + $sql = "SELECT user_id" . + " FROM {users}" . + " WHERE user_id IN (" . substr($inClauseValue, 1) . ")"; + $users = $db->execute($sql, $params); + if ($users === false) { + return _INVALID_INPUT; + } + $receiveUserIdArr = array(); + foreach ($users as $user) { + $receiveUserIdArr[] = $user['user_id']; + } + $request =& $container->getComponent('Request'); + $request->setParameter('receive_user_ids', $receiveUserIdArr); + + return; + } +} +?> diff --git a/html/webapp/modules/circular/view/main/users/Users.class.php b/html/webapp/modules/circular/view/main/users/Users.class.php old mode 100644 new mode 100755 index e5e0135..62d01cd --- a/html/webapp/modules/circular/view/main/users/Users.class.php +++ b/html/webapp/modules/circular/view/main/users/Users.class.php @@ -31,7 +31,7 @@ class Circular_View_Main_Users extends Action */ function execute() { - $users = explode(',', $this->receive_user_ids); + $users = (array)$this->receive_user_ids; if (intval($this->selected_room_id) == 0) { $result = $this->circularView->getGroupInfo($this->selected_group_id, $users); if ($result === false) { diff --git a/html/webapp/modules/circular/view/main/users/maple.ini b/html/webapp/modules/circular/view/main/users/maple.ini old mode 100644 new mode 100755 index 4f50e6b..f1e7f72 --- a/html/webapp/modules/circular/view/main/users/maple.ini +++ b/html/webapp/modules/circular/view/main/users/maple.ini @@ -1,6 +1,9 @@ [TokenExtra] mode="nobuild" +[ValidateDef] +receive_user_ids.circular.receiveUser = "1:lang._invalid_input" + [View] define:theme = 0 success = "circular_select_user_list.html" \ No newline at end of file diff --git a/html/webapp/modules/journal/components/View.class.php b/html/webapp/modules/journal/components/View.class.php old mode 100644 new mode 100755 index 2f3eb3c..67cfadd --- a/html/webapp/modules/journal/components/View.class.php +++ b/html/webapp/modules/journal/components/View.class.php @@ -448,7 +448,7 @@ function getPostList($journal_id, $category_id, $disp_cnt, $begin) { $params[] = ""; $request =& $this->_container->getComponent("Request"); - $module_id = $request->getParameter("module_id"); + $module_id = (int)$request->getParameter("module_id"); $sql = "SELECT P.*, C.category_name, URL.short_url ". "FROM {journal_post} P". @@ -484,7 +484,7 @@ function getPostDetail($post_id) { $params[] = $post_id; $request =& $this->_container->getComponent("Request"); - $module_id = $request->getParameter("module_id"); + $module_id = (int)$request->getParameter("module_id"); $sql = "SELECT P.*, C.category_name, URL.short_url ". "FROM {journal_post} P". @@ -564,7 +564,7 @@ function getPostDetailData($post_id) { $post_id ); - $module_id = $request->getParameter("module_id"); + $module_id = (int)$request->getParameter("module_id"); $sql = "SELECT P.*, C.category_name, URL.short_url ". "FROM {journal_post} P". diff --git a/html/webapp/modules/language/update/Update.class.php b/html/webapp/modules/language/update/Update.class.php old mode 100644 new mode 100755 index e05e363..a423a99 --- a/html/webapp/modules/language/update/Update.class.php +++ b/html/webapp/modules/language/update/Update.class.php @@ -42,7 +42,7 @@ function execute() } } - $sql = "SELECT {blocks}.*, {pages}.room_id FROM {blocks}, {pages} WHERE {blocks}.page_id={pages}.page_id AND {blocks}.module_id=".$this->module_id; + $sql = "SELECT {blocks}.*, {pages}.room_id FROM {blocks}, {pages} WHERE {blocks}.page_id={pages}.page_id AND {blocks}.module_id=".(int)$this->module_id; $blocks = $this->db->execute($sql); if($blocks === false) return false; if(!empty($blocks)) { diff --git a/html/webapp/modules/module/update/Update.class.php b/html/webapp/modules/module/update/Update.class.php index 21f297f..8840f90 100755 --- a/html/webapp/modules/module/update/Update.class.php +++ b/html/webapp/modules/module/update/Update.class.php @@ -166,9 +166,14 @@ function execute() //lang_dirname項目の更新 // $config_lang =& $this->configView->getConfigByConfname(_SYS_CONF_MODID, 'language'); - $defualt_lang = empty($config_lang['conf_value'])?'japanese':$config_lang['conf_value']; - $result = $this->db->execute("UPDATE {pages} SET {pages}.lang_dirname='".$defualt_lang. - "' WHERE {pages}.space_type="._SPACE_TYPE_PUBLIC." AND {pages}.display_position="._DISPLAY_POSITION_CENTER." AND {pages}.thread_num!=0"); + $default_lang = empty($config_lang['conf_value']) ? 'japanese' : $config_lang['conf_value']; + $params = array('lang_dirname' => $default_lang); + $where_params = array( + 'space_type' => _SPACE_TYPE_PUBLIC, + 'display_position' => _DISPLAY_POSITION_CENTER, + 'thread_num!' => 0, + ); + $result = $this->db->updateExecute('pages', $params, $where_params); if($result === false) return false; } diff --git a/html/webapp/modules/multidatabase/components/View.class.php b/html/webapp/modules/multidatabase/components/View.class.php old mode 100644 new mode 100755 index cdf7e1a..382644a --- a/html/webapp/modules/multidatabase/components/View.class.php +++ b/html/webapp/modules/multidatabase/components/View.class.php @@ -1360,7 +1360,7 @@ function &_getSqlContentWhereStatement($multidatabaseId, $whereValues, $keywordB */ function &_getAbbreviateUrlJoinStatement() { $request =& $this->_container->getComponent('Request'); - $moduleId = $request->getParameter('module_id'); + $moduleId = (int)$request->getParameter('module_id'); $joinStatement = 'LEFT JOIN {abbreviate_url} URL ' . "ON URL.module_id = '" . $moduleId . "' " diff --git a/html/webapp/modules/pm/components/Action.class.php b/html/webapp/modules/pm/components/Action.class.php old mode 100644 new mode 100755 index acb3289..eac672b --- a/html/webapp/modules/pm/components/Action.class.php +++ b/html/webapp/modules/pm/components/Action.class.php @@ -880,9 +880,14 @@ function setFilter() $filter_id, $user_id, ); + $actionIdArr = array(); + foreach ($actions as $actionId) { + $actionIdArr[] = (int)$actionId; + } + $sql = "DELETE FROM {pm_filter_action_link} ". "WHERE filter_id = ? AND insert_user_id = ? AND ". - "action_id NOT IN (" . join(",", $actions) . ")"; + "action_id NOT IN (" . join(",", $actionIdArr) . ")"; if (!$this->_db->execute($sql, $params)) { return false; diff --git a/html/webapp/modules/pm/components/View.class.php b/html/webapp/modules/pm/components/View.class.php old mode 100644 new mode 100755 index 0968380..d8ec749 --- a/html/webapp/modules/pm/components/View.class.php +++ b/html/webapp/modules/pm/components/View.class.php @@ -102,10 +102,10 @@ function &generateMessagesQuery($action = 'common', $count = false){ $sortColumn = $this->_request->getParameter("sort_col"); $sortDirection = $this->_request->getParameter("sort_dir"); - if (empty($sortColumn)) { + if (!in_array($sortColumn, array('r.insert_user_name', 'm.receivers_list', 'm.subject', 'm.sent_time'))) { $sortColumn = "m.sent_time"; } - if (empty($sortDirection)) { + if ((empty($sortDirection) || ($sortDirection != 'ASC' && $sortDirection != 'asc'))) { $sortDirection = "DESC"; } $orderParams[$sortColumn] = $sortDirection; @@ -819,7 +819,7 @@ function &_getFilterSql($filter) if (sizeof($tagFilter) == 2) { if ($tagFilter[0] == PM_FILTER_TAG) { $tag_id = $tagFilter[1]; - $filterSql = " AND receiver_id IN (SELECT receiver_id FROM {pm_message_tag_link} WHERE tag_id = " . $tag_id . ")"; + $filterSql = " AND receiver_id IN (SELECT receiver_id FROM {pm_message_tag_link} WHERE tag_id = " . (int)$tag_id . ")"; } } } diff --git a/html/webapp/modules/pm/validator/Validator_FilterActionRequired.class.php b/html/webapp/modules/pm/validator/Validator_FilterActionRequired.class.php old mode 100644 new mode 100755 index 208fa99..32f19a0 --- a/html/webapp/modules/pm/validator/Validator_FilterActionRequired.class.php +++ b/html/webapp/modules/pm/validator/Validator_FilterActionRequired.class.php @@ -14,25 +14,26 @@ */ class Pm_Validator_FilterActionRequired extends Validator { - /** - * フィルタ処理内容必須チェックバリデータ - * - * @param mixed $attributes チェックする値 - * @param string $errStr エラー文字列 - * @param array $params オプション引数 - * @return string エラー文字列(エラーの場合) - * @access public - */ - function validate($attributes, $errStr, $params) - { - - $filter_actions = $attributes["0"]; - - if ($filter_actions == null) { + /** + * フィルタ処理内容必須チェックバリデータ + * + * @param mixed $attributes チェックする値 + * @param string $errStr エラー文字列 + * @param array $params オプション引数 + * @return string エラー文字列(エラーの場合) + * @access public + */ + function validate($attributes, $errStr, $params) + { + if (empty($attributes)) { return $errStr; } - - return; - } + foreach ($attributes as $filterActionId) { + if (!is_numeric($filterActionId)) { + return _INVALID_INPUT; + } + } + return; + } } ?> \ No newline at end of file diff --git a/html/webapp/modules/quiz/validator/Validator_AnswerFlag.class.php b/html/webapp/modules/quiz/validator/Validator_AnswerFlag.class.php old mode 100644 new mode 100755 index 2abc072..2f67452 --- a/html/webapp/modules/quiz/validator/Validator_AnswerFlag.class.php +++ b/html/webapp/modules/quiz/validator/Validator_AnswerFlag.class.php @@ -25,13 +25,21 @@ class Quiz_Validator_AnswerFlag extends Validator */ function validate($attributes, $errStr, $params) { - foreach (array_keys($attributes["answer_flag"]) as $index) { - if ($attributes["answer_flag"][$index] != QUIZ_ANSWER_NOT_MARK_VALUE && - $attributes["answer_flag"][$index] != QUIZ_ANSWER_CORRECT_VALUE && - $attributes["answer_flag"][$index] != QUIZ_ANSWER_WRONG_VALUE) { + $answerFlagArr = array(); + foreach ($attributes["answer_flag"] as $answerId => $answerValue) { + if (!is_numeric($answerId) || + ($answerValue !== QUIZ_ANSWER_NOT_MARK_VALUE && + $answerValue !== QUIZ_ANSWER_CORRECT_VALUE && + $answerValue !== QUIZ_ANSWER_WRONG_VALUE) + ) { return $errStr; } - } + $answerFlagArr[(int)$answerId] = $answerValue; + } + + $container =& DIContainerFactory::getContainer(); + $request =& $container->getComponent('Request'); + $request->setParameter('answer_flag', $answerFlagArr); return; } diff --git a/html/webapp/modules/reservation/components/View.class.php b/html/webapp/modules/reservation/components/View.class.php old mode 100644 new mode 100755 index bbadea8..0ce0385 --- a/html/webapp/modules/reservation/components/View.class.php +++ b/html/webapp/modules/reservation/components/View.class.php @@ -498,7 +498,7 @@ function getLocations($category_id = null, $limit = null, $offset = null, $func= $sql .= "WHERE 1=1 "; } if (isset($category_id)) { - $sql .= "AND location.category_id = ".$category_id." "; + $sql .= "AND location.category_id = ".(int)$category_id." "; } $sql .= "ORDER BY category.display_sequence, location.display_sequence"; diff --git a/html/webapp/modules/user/action/main/searchresult/Searchresult.class.php b/html/webapp/modules/user/action/main/searchresult/Searchresult.class.php old mode 100644 new mode 100755 index 2a4a2fa..5caa915 --- a/html/webapp/modules/user/action/main/searchresult/Searchresult.class.php +++ b/html/webapp/modules/user/action/main/searchresult/Searchresult.class.php @@ -51,6 +51,14 @@ function execute() //初期化 $this->sort_col = ($this->sort_col == null) ? $this->sort_col ="user_authority_id" : $this->sort_col; $this->sort_dir = ($this->sort_dir == null) ? $this->sort_dir ="DESC" : $this->sort_dir; + if (!in_array($this->sort_col, array( + 'handle', 'login_id', 'user_name', 'user_authority_id', 'active_flag', 'insert_time', 'last_login_time') + )) { + $this->sort_col = "user_authority_id"; + } + if ((empty($this->sort_dir) || ($this->sort_dir != 'ASC' && $this->sort_dir != 'asc'))) { + $this->sort_dir = "DESC"; + } $this->user_id = $this->session->getParameter("_user_id"); //$module_link_where_params = array( // "role_authority_id" => $this->session->getParameter("_role_auth_id"), diff --git a/html/webapp/modules/user/view/admin/import/export/Export.class.php b/html/webapp/modules/user/view/admin/import/export/Export.class.php old mode 100644 new mode 100755 index cbc22a9..2cde912 --- a/html/webapp/modules/user/view/admin/import/export/Export.class.php +++ b/html/webapp/modules/user/view/admin/import/export/Export.class.php @@ -41,6 +41,14 @@ function execute() /* データ */ $this->sort_col = ($this->sort_col == null) ? $this->sort_col ="user_authority_id" : $this->sort_col; $this->sort_dir = ($this->sort_dir == null) ? $this->sort_dir ="DESC" : $this->sort_dir; + if (!in_array($this->sort_col, array( + 'handle', 'login_id', 'user_name', 'user_authority_id', 'active_flag', 'insert_time', 'last_login_time') + )) { + $this->sort_col = "user_authority_id"; + } + if ((empty($this->sort_dir) || ($this->sort_dir != 'ASC' && $this->sort_dir != 'asc'))) { + $this->sort_dir = "DESC"; + } $order_params = array( $this->sort_col => $this->sort_dir, "{users}.system_flag" => "DESC", From be9591f5fd10f30e3c452ac56aef5343ceb2ac87 Mon Sep 17 00:00:00 2001 From: Ryuji Masukawa Date: Fri, 13 Mar 2015 16:14:24 +0900 Subject: [PATCH 088/109] =?UTF-8?q?=E8=84=86=E5=BC=B1=E6=80=A7=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=88=E4=B8=80=E8=A6=A7=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/maple/nccore/db/DbObjectAdodb.class.php | 19 ++++++++++++++++--- .../assignment/components/View.class.php | 2 +- .../modules/bbs/components/View.class.php | 2 +- .../modules/cabinet/components/View.class.php | 9 ++++++++- .../modules/journal/components/View.class.php | 2 +- .../linklist/components/View.class.php | 2 +- .../multidatabase/components/View.class.php | 2 +- .../photoalbum/components/View.class.php | 2 +- .../questionnaire/components/View.class.php | 2 +- .../modules/quiz/components/View.class.php | 2 +- .../registration/components/View.class.php | 2 +- .../modules/todo/components/View.class.php | 2 +- 12 files changed, 34 insertions(+), 14 deletions(-) diff --git a/html/maple/nccore/db/DbObjectAdodb.class.php b/html/maple/nccore/db/DbObjectAdodb.class.php index 570489a..81c7e25 100644 --- a/html/maple/nccore/db/DbObjectAdodb.class.php +++ b/html/maple/nccore/db/DbObjectAdodb.class.php @@ -299,6 +299,15 @@ function execute($sql, $params = array(), $limit = 0, $offset = 0, $key_flag = t else $this->_conn->SetFetchMode(ADODB_FETCH_NUM); + // paramsのvalueに配列の入力パラメータがはいった場合、adodb内で複数のSQLを実行しようとするため、ここで対処。 + if (is_array($params)) { + foreach($params as $param) { + if (is_array($param)) { + return false; + } + } + } + if ($limit || $offset) { $result =& $this->_conn->SelectLimit($sql, $limit, $offset, $params); } else { @@ -556,7 +565,7 @@ function &getSelectSQL($tableName, &$params, &$where_params, &$order_params) * パラメータよりwhere文を生成し返す * @param array $params WHERE句のデータ配列 * @param array $where_params キー名称配列、whereデータ配列 - * @param array $where_prefix_flag 接頭語句をANDでなくwhereにして返す場合、true defaut:true + * @param array $where_prefix_flag 接頭語句をANDでなくwhereにして返す場合、true default:true * @return string where文 * @access public */ @@ -583,15 +592,19 @@ function &getWhereSQL(&$params, &$where_params, $where_prefix_flag = true) /** * パラメータよりorder文を生成し返す * @param array $order_params キー名称配列、orderデータ配列 + * @param array $allow_keys キー名称で設定できるカラムの配列 * @return string order文 * @access public */ - function &getOrderSQL(&$order_params) + function &getOrderSQL(&$order_params, $allow_keys = array()) { $sql_order = ""; if (!empty($order_params)) { foreach ($order_params as $key=>$item) { - $sql_order .= ",".$key." ".(empty($item) ? "ASC" : $item); + if (!empty($allow_keys) && !in_array($key, $allow_keys)) { + $key = $allow_keys[0]; + } + $sql_order .= ",".$key." ".((empty($item) || ($item != 'DESC' && $item != 'desc')) ? "ASC" : $item); } } $sql_order = ($sql_order ? " ORDER BY ".substr($sql_order,1) : ""); diff --git a/html/webapp/modules/assignment/components/View.class.php b/html/webapp/modules/assignment/components/View.class.php index 0f83b04..d3609c1 100644 --- a/html/webapp/modules/assignment/components/View.class.php +++ b/html/webapp/modules/assignment/components/View.class.php @@ -172,7 +172,7 @@ function &getAssignments() " ON (Assign.assignment_id = Submitter.assignment_id)". " WHERE Assign.room_id = ?" . " GROUP BY Assign.assignment_id". - " ".$this->_db->getOrderSQL($order); + " ".$this->_db->getOrderSQL($order, array('Assign.assignment_id', 'assignment_name', 'activity', 'insert_user_name', 'insert_time')); $assignments = $this->_db->execute($sql, $params, $limit, $offset, true); if ($assignments === false) { diff --git a/html/webapp/modules/bbs/components/View.class.php b/html/webapp/modules/bbs/components/View.class.php index f50520d..32c1541 100644 --- a/html/webapp/modules/bbs/components/View.class.php +++ b/html/webapp/modules/bbs/components/View.class.php @@ -160,7 +160,7 @@ function &getBbses() $sql = "SELECT bbs_id, bbs_name, activity, insert_time, insert_user_id, insert_user_name ". "FROM {bbs} ". "WHERE room_id = ? ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('bbs_name', 'activity', 'insert_user_name', 'insert_time')); $bbses = $this->_db->execute($sql, $params, $limit, $offset); if ($bbses === false) { $this->_db->addError(); diff --git a/html/webapp/modules/cabinet/components/View.class.php b/html/webapp/modules/cabinet/components/View.class.php index 0c235fd..98faa62 100644 --- a/html/webapp/modules/cabinet/components/View.class.php +++ b/html/webapp/modules/cabinet/components/View.class.php @@ -201,7 +201,7 @@ function &getCabinets() $sort_col = "insert_time"; } $sort_dir = $this->_request->getParameter("sort_dir"); - if (empty($sort_dir)) { + if ((empty($sort_dir) || ($sort_dir != 'ASC' && $sort_dir != 'asc'))) { $sort_dir = "DESC"; } @@ -215,6 +215,9 @@ function &getCabinets() if ($sort_col == "total_size") { $sql .= " ORDER BY ".$sort_col." ".$sort_dir; } else { + if(!in_array($sort_col, array('cabinet_name', 'total_size', 'insert_user_name', 'insert_time'))) { + $sort_col = "insert_time"; + } $sql .= " ORDER BY manage.".$sort_col." ".$sort_dir; } $sql .= ", manage.cabinet_id DESC"; @@ -672,6 +675,10 @@ function getFileList($offset, $limit) $sort_dir = $this->_request->getParameter("sort_dir"); if (isset($sort_col)) { + if(!in_array($sort_col, array('file_name', 'size', 'insert_user_name', 'insert_time', 'update_user_name', 'update_time', 'comment'))) { + $sort_col = 'file_name'; + } + $sort_dir = (empty($sort_dir) || ($sort_dir != 'DESC' && $sort_dir != 'desc')) ? 'ASC' : 'DESC'; if ($sort_col == "comment") { $order_params = array( "F.file_type" => ($sort_dir == "ASC" ? "DESC" : "ASC"), diff --git a/html/webapp/modules/journal/components/View.class.php b/html/webapp/modules/journal/components/View.class.php index af3afe3..2f3eb3c 100644 --- a/html/webapp/modules/journal/components/View.class.php +++ b/html/webapp/modules/journal/components/View.class.php @@ -98,7 +98,7 @@ function &getJournals() { $sql = "SELECT journal_id, journal_name, active_flag, insert_time, insert_user_id, insert_user_name ". "FROM {journal} ". "WHERE room_id = ? ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('journal_name', 'active_flag', 'insert_user_name', 'insert_time')); $result = $this->_db->execute($sql, $params, $limit, $offset); if ($result === false) { $this->_db->addError(); diff --git a/html/webapp/modules/linklist/components/View.class.php b/html/webapp/modules/linklist/components/View.class.php index 14e4807..ec46065 100644 --- a/html/webapp/modules/linklist/components/View.class.php +++ b/html/webapp/modules/linklist/components/View.class.php @@ -151,7 +151,7 @@ function &getLinklists() $sql = "SELECT linklist_id, linklist_name, insert_time, insert_user_id, insert_user_name ". "FROM {linklist} ". "WHERE room_id = ? ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('linklist_id', 'linklist_name', 'insert_user_name', 'insert_time')); $linklists = $this->_db->execute($sql, $params, $limit, $offset); if ($linklists === false) { $this->_db->addError(); diff --git a/html/webapp/modules/multidatabase/components/View.class.php b/html/webapp/modules/multidatabase/components/View.class.php index 197ac45..cdf7e1a 100644 --- a/html/webapp/modules/multidatabase/components/View.class.php +++ b/html/webapp/modules/multidatabase/components/View.class.php @@ -351,7 +351,7 @@ function &getMdbs() { $sql = "SELECT multidatabase_id, multidatabase_name, active_flag, insert_time, insert_user_id, insert_user_name ". "FROM {multidatabase} ". "WHERE room_id = ? ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('multidatabase_id', 'multidatabase_name', 'insert_user_name', 'insert_time')); $result = $this->_db->execute($sql, $params, $limit, $offset); if ($result === false) { $this->_db->addError(); diff --git a/html/webapp/modules/photoalbum/components/View.class.php b/html/webapp/modules/photoalbum/components/View.class.php index 065b012..8dfd431 100644 --- a/html/webapp/modules/photoalbum/components/View.class.php +++ b/html/webapp/modules/photoalbum/components/View.class.php @@ -174,7 +174,7 @@ function &getPhotoalbums() $sql = "SELECT photoalbum_id, photoalbum_name, insert_time, insert_user_id, insert_user_name ". "FROM {photoalbum} ". "WHERE room_id = ? ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('photoalbum_id', 'photoalbum_name', 'insert_user_name', 'insert_time')); $photoalbums = $this->_db->execute($sql, $params, $limit, $offset); if ($photoalbums === false) { $this->_db->addError(); diff --git a/html/webapp/modules/questionnaire/components/View.class.php b/html/webapp/modules/questionnaire/components/View.class.php index 211d2f2..8e95773 100644 --- a/html/webapp/modules/questionnaire/components/View.class.php +++ b/html/webapp/modules/questionnaire/components/View.class.php @@ -176,7 +176,7 @@ function &getQuestionnaires() "WHERE Q.room_id = ? ". "GROUP BY Q.questionnaire_id, Q.questionnaire_name, Q.icon_name, Q.status, ". "Q.insert_time, Q.insert_user_id, Q.insert_user_name ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('questionnaire_id', 'questionnaire_name', 'status', 'insert_user_name', 'insert_time')); $questionnaires = $this->_db->execute($sql, $params, $limit, $offset); if ($questionnaires === false) { $this->_db->addError(); diff --git a/html/webapp/modules/quiz/components/View.class.php b/html/webapp/modules/quiz/components/View.class.php index 14acf52..d82af26 100644 --- a/html/webapp/modules/quiz/components/View.class.php +++ b/html/webapp/modules/quiz/components/View.class.php @@ -175,7 +175,7 @@ function &getQuizzes() "WHERE Q.room_id = ? ". "GROUP BY Q.quiz_id, Q.quiz_name, Q.icon_name, Q.status, ". "Q.insert_time, Q.insert_user_id, Q.insert_user_name ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('quiz_id', 'quiz_name', 'status', 'insert_user_name', 'insert_time')); $quizzes = $this->_db->execute($sql, $params, $limit, $offset); if ($quizzes === false) { $this->_db->addError(); diff --git a/html/webapp/modules/registration/components/View.class.php b/html/webapp/modules/registration/components/View.class.php index efffefc..581c002 100644 --- a/html/webapp/modules/registration/components/View.class.php +++ b/html/webapp/modules/registration/components/View.class.php @@ -159,7 +159,7 @@ function &getRegistrations() "ON R.registration_id = D.registration_id ". "WHERE R.room_id = ? ". "GROUP BY R.registration_id, R.registration_name, R.active_flag, R.insert_time, R.insert_user_id, R.insert_user_name ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('R.registration_id', 'R.registration_name', 'data_count', 'R.active_flag', 'R.insert_user_name', 'R.insert_time')); $registrations = $this->_db->execute($sql, $params, $limit, $offset); if ($registrations === false) { $this->_db->addError(); diff --git a/html/webapp/modules/todo/components/View.class.php b/html/webapp/modules/todo/components/View.class.php index 97c12af..53519c7 100644 --- a/html/webapp/modules/todo/components/View.class.php +++ b/html/webapp/modules/todo/components/View.class.php @@ -271,7 +271,7 @@ function &getTodos() $sql = "SELECT todo_id, todo_name, insert_time, insert_user_id, insert_user_name ". "FROM {todo} ". "WHERE room_id = ? ". - $this->_db->getOrderSQL($orderParams); + $this->_db->getOrderSQL($orderParams, array('todo_id', 'todo_name', 'insert_user_name', 'insert_time')); $todos = $this->_db->execute($sql, $params); if ($todos === false) { $this->_db->addError(); From 214020de7bb4d2cdfa18e5d697ee023c234fb1bc Mon Sep 17 00:00:00 2001 From: Ryuji Masukawa Date: Fri, 13 Mar 2015 18:29:34 +0900 Subject: [PATCH 089/109] =?UTF-8?q?=E8=84=86=E5=BC=B1=E6=80=A7=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/components/holiday/View.class.php | 6 ++++++ .../multidatabase/view/main/init/Init.class.php | 3 +++ .../view/main/search/result/Result.class.php | 3 +++ .../modules/questionnaire/components/View.class.php | 6 +++--- html/webapp/modules/quiz/components/View.class.php | 2 +- .../modules/registration/components/View.class.php | 10 ++++++++-- html/webapp/modules/todo/components/View.class.php | 5 ++++- 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/html/webapp/components/holiday/View.class.php b/html/webapp/components/holiday/View.class.php index 2b544c1..2f81c74 100644 --- a/html/webapp/components/holiday/View.class.php +++ b/html/webapp/components/holiday/View.class.php @@ -116,6 +116,12 @@ function getYear($year=null, $lang=null, $sort_col="holiday", $sort_dir="ASC") $session =& $this->_container->getComponent("Session"); $lang = $session->getParameter("_lang"); } + if (!in_array($sort_col, array('holiday', 'summary'))) { + $sort_col = 'holiday'; + } + if ($sort_dir != 'DESC') { + $sort_dir = 'ASC'; + } $sql = "SELECT * FROM {holiday} "; $sql .= "WHERE lang_dirname = ? "; $sql .= "AND holiday >= ? "; diff --git a/html/webapp/modules/multidatabase/view/main/init/Init.class.php b/html/webapp/modules/multidatabase/view/main/init/Init.class.php index 17338e3..0fd92c0 100644 --- a/html/webapp/modules/multidatabase/view/main/init/Init.class.php +++ b/html/webapp/modules/multidatabase/view/main/init/Init.class.php @@ -104,6 +104,9 @@ function execute() $where_params = array(); if(!empty($this->sort_section)) { foreach($this->sort_section as $key => $val) { + if (!isset($this->section_metadatas[$key])) { + return 'error'; + } $where_params["m_content".$key.".content"] = $val; } } diff --git a/html/webapp/modules/multidatabase/view/main/search/result/Result.class.php b/html/webapp/modules/multidatabase/view/main/search/result/Result.class.php index 4e72509..23bee1f 100644 --- a/html/webapp/modules/multidatabase/view/main/search/result/Result.class.php +++ b/html/webapp/modules/multidatabase/view/main/search/result/Result.class.php @@ -183,6 +183,9 @@ function execute() $where_params = array(); if(!empty($this->sort_section)) { foreach($this->sort_section as $key => $val) { + if (!isset($this->section_metadatas[$key])) { + return 'error'; + } $where_params["m_content".$key.".content"]= $val; } } diff --git a/html/webapp/modules/questionnaire/components/View.class.php b/html/webapp/modules/questionnaire/components/View.class.php index 8e95773..54eda84 100644 --- a/html/webapp/modules/questionnaire/components/View.class.php +++ b/html/webapp/modules/questionnaire/components/View.class.php @@ -831,12 +831,12 @@ function &getSummaries() $offset = $this->_request->getParameter("offset"); $sortColumn = $this->_request->getParameter("sort_col"); - if (empty($sortColumn)) { + if (empty($sortColumn) || !in_array($sortColumn, array('answer_number', 'answer_time'))) { $sortColumn = "summary_id"; } $sortDirection = $this->_request->getParameter("sort_dir"); - if (empty($sortDirection)) { - $sortDirection = ($mobile_flag==_ON ? "DESC" : "ASC"); + if (empty($sortDirection) || $sortDirection != 'DESC') { + $sortDirection = "ASC"; } $orderParams[$sortColumn] = $sortDirection; diff --git a/html/webapp/modules/quiz/components/View.class.php b/html/webapp/modules/quiz/components/View.class.php index d82af26..ae3bfcb 100644 --- a/html/webapp/modules/quiz/components/View.class.php +++ b/html/webapp/modules/quiz/components/View.class.php @@ -872,7 +872,7 @@ function &getSummaries($statistics = null) $offset = $this->_request->getParameter("offset"); $sortColumn = $this->_request->getParameter("sort_col"); - if (empty($sortColumn)) { + if (empty($sortColumn) || !in_array($sortColumn, array('answer_number', 'answer_time', 'summary_score'))) { $sortColumn = "summary_id"; } $sortDirection = $this->_request->getParameter("sort_dir"); diff --git a/html/webapp/modules/registration/components/View.class.php b/html/webapp/modules/registration/components/View.class.php index 581c002..5c39cea 100644 --- a/html/webapp/modules/registration/components/View.class.php +++ b/html/webapp/modules/registration/components/View.class.php @@ -632,8 +632,14 @@ function &getDataList($limit = null, $offset = null) $sortColumn = "file_name". $sortItemID; $sortDirection = "ASC"; } else { - $sortColumn = "item_data_value". $sortItemID; - $sortDirection = "ASC"; + $items = $this->_request->getParameter("items"); + if (isset($items[$sortItemID])) { + $sortColumn = "item_data_value". $sortItemID; + $sortDirection = "ASC"; + } else { + $sortColumn = "D.insert_time"; + $sortDirection = "DESC"; + } } $orderParams[$sortColumn] = $sortDirection; diff --git a/html/webapp/modules/todo/components/View.class.php b/html/webapp/modules/todo/components/View.class.php index 53519c7..83b7c3c 100644 --- a/html/webapp/modules/todo/components/View.class.php +++ b/html/webapp/modules/todo/components/View.class.php @@ -508,7 +508,10 @@ function &getTasks() $sortColumn = "task_value"; } } - if (empty($sortDirection)) { + if (!in_array($sortColumn, array('task_sequence', 'priority', 'state', 'period', 'progress', 'task_value'))) { + $sortColumn = "task_sequence"; + } + if (empty($sortDirection) || $sortDirection != 'DESC') { $sortDirection = "ASC"; } $orderParams[$sortColumn] = $sortDirection; From dbb97a814a29bfa1a9cd1f2ecff615001264068e Mon Sep 17 00:00:00 2001 From: Ryuji Masukawa Date: Fri, 13 Mar 2015 19:03:39 +0900 Subject: [PATCH 090/109] =?UTF-8?q?=E8=84=86=E5=BC=B1=E6=80=A7=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/assignment/components/View.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/webapp/modules/assignment/components/View.class.php b/html/webapp/modules/assignment/components/View.class.php index d3609c1..d47fc46 100644 --- a/html/webapp/modules/assignment/components/View.class.php +++ b/html/webapp/modules/assignment/components/View.class.php @@ -749,7 +749,7 @@ function &getSubmitters($yet_submit=false) $sort_col = "submit_time"; } $sort_dir = $this->_request->getParameter("sort_dir"); - if (empty($sort_dir)) { + if (empty($sort_dir) || $sort_dir != 'ASC') { $sort_dir = "DESC"; } From 7d20246d5dfe5bf795d3935e93c5415457a7d88d Mon Sep 17 00:00:00 2001 From: Ryuji Masukawa Date: Tue, 17 Mar 2015 09:54:17 +0900 Subject: [PATCH 091/109] =?UTF-8?q?=E8=84=86=E5=BC=B1=E6=80=A7=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/login/view/main/init/Init.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/webapp/modules/login/view/main/init/Init.class.php b/html/webapp/modules/login/view/main/init/Init.class.php index 66d37a8..c9766a9 100644 --- a/html/webapp/modules/login/view/main/init/Init.class.php +++ b/html/webapp/modules/login/view/main/init/Init.class.php @@ -52,7 +52,7 @@ function execute() $this->redirect_url = $this->request->getParameter('_redirect_url'); $this->redirect_url = str_replace("#", "@@", $this->redirect_url); $this->redirect_url = str_replace("&", "@", $this->redirect_url); - $this->redirect_url = str_replace("?action=", "?_sub_action=", $this->redirect_url); + $this->redirect_url = htmlspecialchars(str_replace("?action=", "?_sub_action=", $this->redirect_url), ENT_QUOTES); //if(!isset($_SERVER['HTTPS']) && $this->session->getParameter("_user_id")) { if($this->session->getParameter("_user_id") From 374ffb227d9bb37fc5920d842a78e8e8a0bf8cd3 Mon Sep 17 00:00:00 2001 From: ohga Date: Mon, 16 Mar 2015 20:05:58 +0900 Subject: [PATCH 092/109] =?UTF-8?q?=E8=84=86=E5=BC=B1=E6=80=A7=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/components/common/Main.class.php | 4 +-- .../login/view/main/init/Init.class.php | 2 +- .../templates/main/mobile_redirect.html | 12 ++++---- html/webapp/templates/main/redirect.html | 28 +++++++++++-------- 4 files changed, 24 insertions(+), 22 deletions(-) mode change 100644 => 100755 html/webapp/modules/login/view/main/init/Init.class.php mode change 100644 => 100755 html/webapp/templates/main/mobile_redirect.html mode change 100644 => 100755 html/webapp/templates/main/redirect.html diff --git a/html/webapp/components/common/Main.class.php b/html/webapp/components/common/Main.class.php index feec79f..460b2c0 100755 --- a/html/webapp/components/common/Main.class.php +++ b/html/webapp/components/common/Main.class.php @@ -465,13 +465,11 @@ function redirectHeader($url="", $time = 2, $message = "") if($url == "") { $url = BASE_URL.INDEX_FILE_NAME."?".ACTION_KEY."=".DEFAULT_ACTION; } - //$url = htmlspecialchars(str_replace("?action=","?_sub_action=",str_replace("&","@",BASE_URL.INDEX_FILE_NAME.$this->_request->getStrParameters(false))), ENT_QUOTES); $renderer =& SmartyTemplate::getInstance(); $renderer->assign('header_field',$meta); $renderer->assign('time', $time); - $renderer->assign('url',$url); - $renderer->assign('lang_ifnotreload', sprintf(_IFNOTRELOAD,$url)); + $renderer->assign('redirect_url', $url); if($message != "") { $renderer->assign('redirect_message', $message); } else { diff --git a/html/webapp/modules/login/view/main/init/Init.class.php b/html/webapp/modules/login/view/main/init/Init.class.php old mode 100644 new mode 100755 index c9766a9..66d37a8 --- a/html/webapp/modules/login/view/main/init/Init.class.php +++ b/html/webapp/modules/login/view/main/init/Init.class.php @@ -52,7 +52,7 @@ function execute() $this->redirect_url = $this->request->getParameter('_redirect_url'); $this->redirect_url = str_replace("#", "@@", $this->redirect_url); $this->redirect_url = str_replace("&", "@", $this->redirect_url); - $this->redirect_url = htmlspecialchars(str_replace("?action=", "?_sub_action=", $this->redirect_url), ENT_QUOTES); + $this->redirect_url = str_replace("?action=", "?_sub_action=", $this->redirect_url); //if(!isset($_SERVER['HTTPS']) && $this->session->getParameter("_user_id")) { if($this->session->getParameter("_user_id") diff --git a/html/webapp/templates/main/mobile_redirect.html b/html/webapp/templates/main/mobile_redirect.html old mode 100644 new mode 100755 index 8824282..69e6ce4 --- a/html/webapp/templates/main/mobile_redirect.html +++ b/html/webapp/templates/main/mobile_redirect.html @@ -23,14 +23,12 @@
-<{if (!empty($lang_ifnotreload|smarty:nodefaults)) }> - <{$lang_ifnotreload|smarty:nodefaults}> -<{elseif (!empty($action.redirect_url|smarty:nodefaults)) }> - <{$smarty.const._IFNOTRELOAD|sprintf:$action.redirect_url|smarty:nodefaults}> -<{else}> - <{assign var="redirect_url" value=$smarty.const.BASE_URL|cat:$smarty.const.INDEX_FILE_NAME|smarty:nodefaults}> - <{$smarty.const._IFNOTRELOAD|sprintf:$redirect_url|smarty:nodefaults}> +<{if isset($action.redirect_url|smarty:nodefaults)}> + <{assign var="redirect_url" value=$action.redirect_url|smarty:nodefaults}> +<{elseif empty($redirect_url|smarty:nodefaults)}> + <{assign var="redirect_url" value=$smarty.const.BASE_URL|cat:$smarty.const.INDEX_FILE_NAME}> <{/if}> +<{$smarty.const._IFNOTRELOAD|smarty:nodefaults|sprintf:$redirect_url}> diff --git a/html/webapp/templates/main/redirect.html b/html/webapp/templates/main/redirect.html old mode 100644 new mode 100755 index 0869964..79650e8 --- a/html/webapp/templates/main/redirect.html +++ b/html/webapp/templates/main/redirect.html @@ -2,8 +2,22 @@ +<{if isset($action.redirect_url|smarty:nodefaults)}> + <{assign var="redirect_url" value=$action.redirect_url|smarty:nodefaults}> +<{elseif empty($redirect_url|smarty:nodefaults)}> + <{assign var="redirect_url" value=$smarty.const.BASE_URL|cat:$smarty.const.INDEX_FILE_NAME}> +<{/if}> -<{else}><{$url|replace:"&":"&"}><{/if}>" /> + <{$header_field.sitename}> <{$smarty.const.INDEX_FILE_NAME}>?<{$smarty.const.ACTION_KEY}>=common_download_css" /> <{$header_field.script_header|smarty:nodefaults}> @@ -26,22 +40,14 @@
+
+ <{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 ($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}> + + <{/if}> @@ -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`"}> - + <{/if}> + + - + <{/section}> <{/if}> <{/section}> + <{if $action.reserve_block.display_timeframe == $smarty.const._ON}> + + <{/if}> + 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}> +
+
+
+ /images/common/blank.gif" alt="" title="" /> + /images/common/blank.gif" alt="" title="" />
@@ -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}> +
+
<{$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}>
+ /images/common/blank.gif" alt="" title="" />
+ <{foreach item=num key=auth_name from=$action.total_auth_member_num}> + <{if $num!=0}> + + + + + <{/if}> + <{/foreach}> +
<{$auth_name}><{$num}>
+
+ + <{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}> +
+ +
+ +
+ <{$lang.room_import_title_description|sprintf:$action.room_name|smarty:nodefaults}> +
+ <{$lang.room_import_select_file_description|smarty:nodefaults}> +
+ <{$lang.room_import_select_file_note|sprintf:$smarty.const.ROOM_IMPORT_LINE_LIMIT|smarty:nodefaults}> +
+
+
+ + +
+
+
+ + <{$lang.room_import_help_label}> + +
+ <{$lang.room_import_exp|smarty:nodefaults}> +
+ +
<{$lang.room_import_help_title}> +
+ + +
+
+
+ +
+ +
+ + <{* 各種ボタン *}> +
+ +   + <{* キャンセル *}> + +
+ + +<{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}> +
+ +
+ +
+ <{$lang.room_import_confirm_message1|smarty:nodefaults|sprintf:$action.page.page_name}> +
+ <{if count($action.warnMsg)>0 }> +
+ <{foreach key=handle item=msg from=$action.warnMsg}> + <{if $msg!=""}> + <{$lang.room_import_confirm_warnMsg|sprintf:$handle|smarty:nodefaults}> +
+     <{$msg}> +
+ <{/if}> + <{/foreach}> +
+ <{/if}> + +

+ <{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.delete_num > 0}> + <{$lang.room_import_confirm_change_count|sprintf:$action.delete_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}> + + + + + <{/if}> + <{/foreach}> +
<{$auth_name}><{$num}>
+
+ + <{$lang.room_import_confirm_message3|smarty:nodefaults}> + +
+ <{* OK *}> + +   + <{* 戻る *}> + +
+ +
+ +
+<{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}>
<{*ヘッダー表示部分*}> diff --git a/html/webapp/modules/room/templates/default/room_view_admin_roomlist.html b/html/webapp/modules/room/templates/default/room_view_admin_roomlist.html index 822ba1d..9869a99 100644 --- a/html/webapp/modules/room/templates/default/room_view_admin_roomlist.html +++ b/html/webapp/modules/room/templates/default/room_view_admin_roomlist.html @@ -92,6 +92,12 @@ ','display_flag':<{$room.display_flag}>,'space_type_common':<{$room.default_entry_flag}>}); return false;"> <{$lang.room_admin_edit}> + <{$lang._separator|smarty:nodefaults}> + <{* 参加者インポート *}> + ','prefix_id_name':'room_popup_import'}, {'top_el':$('<{$id}>'),'center_flag':1,'modal_flag':1}); return false;"> + <{$lang.room_admin_import}> + + <{* 深さが0の編集する権限は、管理者のみ *}> <{if $room.private_flag != _ON}> <{$lang._separator|smarty:nodefaults}> diff --git a/html/webapp/modules/room/validator/Validator_ImportRoomIdCheck.class.php b/html/webapp/modules/room/validator/Validator_ImportRoomIdCheck.class.php new file mode 100644 index 0000000..bdb0b81 --- /dev/null +++ b/html/webapp/modules/room/validator/Validator_ImportRoomIdCheck.class.php @@ -0,0 +1,55 @@ +getComponent("Session"); + $request =& $container->getComponent("Request"); + + $parent_page_id = intval($attributes[0]); + $edit_current_page_id = intval($attributes[1]); + if($parent_page_id!==false && $edit_current_page_id!=false) { + return; + } + + $parent_page_id = $session->getParameter(array('room', 'import', 'parent_page_id')); + if(is_null($parent_page_id)) { + return $errStr; + } + $edit_current_page_id = $session->getParameter(array('room', 'import', 'edit_current_page_id')); + if(is_null($edit_current_page_id)) { + return $errStr; + } + + $request->setParameter('parent_page_id', $parent_page_id); + $request->setParameter('edit_current_page_id', $edit_current_page_id); + + return; + } +} +?> \ No newline at end of file diff --git a/html/webapp/modules/room/view/admin/export/Export.class.php b/html/webapp/modules/room/view/admin/export/Export.class.php new file mode 100644 index 0000000..06699e5 --- /dev/null +++ b/html/webapp/modules/room/view/admin/export/Export.class.php @@ -0,0 +1,168 @@ +>ルーム一覧>>参加者修正>>エクスポート + * + * @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_View_Admin_Export extends Action +{ + // リクエストパラメータをセットするため + + // 使用コンポーネントを受け取るため + var $db = null; + var $csvMain = null; + var $session = null; + var $configView = null; + var $pagesView = null; + var $usersView = null; + + var $actionChain = null; + + // validatorでセット + + // 値をセットするため + var $page = null; + var $parent_page = null; + + /** + * execute実行 + * + * @access public + */ + function execute() + { + $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']; + $default_entry_role_auth_private = $config['default_entry_role_auth_private']['conf_value']; + + + $edit_current_page_id =& $this->session->getParameter(array('room', 'export', 'current_page_id')); + $edit_current_page_name =& $this->session->getParameter(array('room', 'export', 'current_page_name')); + + $this->page =& $this->pagesView->getPageById($edit_current_page_id); + $this->parent_page =& $this->pagesView->getPageById($edit_current_page_name); + + $select_str =& $this->session->getParameter(array('room', $edit_current_page_id, 'selected_select_str')); + $from_str =& $this->session->getParameter(array('room', $edit_current_page_id, 'selected_from_str')); + $add_from_str =& $this->session->getParameter(array('room', $edit_current_page_id, 'selected_add_from_str')); + $where_str =& $this->session->getParameter(array('room', $edit_current_page_id, 'selected_where_str')); + $add_where_str =& $this->session->getParameter(array('room', $edit_current_page_id,'selected_add_where_str')); + $export_add_where_str = ' AND {authorities}.user_authority_id != ?'; + $params =& $this->session->getParameter(array('room', $edit_current_page_id, 'selected_params')); + $from_params =& $this->session->getParameter(array('room', $edit_current_page_id, 'selected_from_params')); + $where_params =& $this->session->getParameter(array('room', $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); + + $order_params = array("system_flag"=>"DESC", "hierarchy"=>"DESC" , "user_authority_id"=>"DESC" , "handle"=>"ASC"); + $order_str = $this->db->getOrderSQL($order_params); + + $sql = $select_str.$from_str.$add_from_str.$where_str.$add_where_str.$export_add_where_str.$order_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'; + } + + // ヘッダ + // handle の項目名と + // 権限の項目名->[参加者権限]固定 + $handle_item = $this->usersView->getItemById($this->usersView->getItemIdByTagName('handle')); + if(defined($handle_item['item_name'])) { + $name = constant($handle_item['item_name']); + } + else { + $name = $handle_item['item_name']; + } + $header_name = array($name, ROOM_EXPORT_AUTHORITY_NAME); + $this->csvMain->add($header_name); + + + // DBからデータを取得 + $data_limit = 1000; + for ($data_offset=0; $data_offset<$data_count; $data_offset=$data_offset+$data_limit) { + + $datas =& $this->db->execute($sql, $sql_params, intval($data_limit), intval($data_offset), true, array($this, "_fetchcallback"), array($default_entry_role_auth_public, $default_entry_role_auth_group)); + + if (isset($datas) && is_array($datas)) { + foreach($datas as $data) { + $this->csvMain->add($data); + } + } + + } + if($data_count > 0) { + // + // ファイル名決定 ルームID+ルーム名+YYYYMMDD + // + $formatfilename = $edit_current_page_id . '_' . $edit_current_page_name . '_' . timezone_date(null,false,'Ymd'); + + $this->csvMain->download($formatfilename); + } + + $this->session->removeParameter(array('room','export')); + exit; +// return 'success'; + } + function &_fetchcallback($result, $func_params) { + + $default_entry_flag = $this->page['default_entry_flag']; + $default_entry_role_auth_public = $func_params[0]; + $default_entry_role_auth_group = $func_params[1]; + + + $ret = array(); + while ($row = $result->fetchRow()) { + + // default参加のルームかどうかで判断が変わる + if(is_null($row['authority_id'])) { + if($default_entry_flag == _ON) { + if($this->page['private_flag'] == _ON) { + $auth_id = strval(_AUTH_OTHER); // ありえない + } + else if($this->page['space_type'] == _SPACE_TYPE_GROUP) { + $auth_id = $default_entry_role_auth_group; + } + else { + $auth_id = $default_entry_role_auth_public; + } + } + else { + $auth_id = strval(_AUTH_OTHER); + } + } + else { + $auth_id = $row['authority_id']; + } + + $ret[] = array('handle'=>$row['handle'], 'authority_id'=>$auth_id); + } + return $ret; + } +} +?> \ No newline at end of file diff --git a/html/webapp/modules/room/view/admin/export/dicon.ini b/html/webapp/modules/room/view/admin/export/dicon.ini new file mode 100644 index 0000000..d1e2a82 --- /dev/null +++ b/html/webapp/modules/room/view/admin/export/dicon.ini @@ -0,0 +1,3 @@ +[DIContainer] +uploadsView = "uploads.view" +csvMain = "csv.Main" diff --git a/html/webapp/modules/room/view/admin/export/maple.ini b/html/webapp/modules/room/view/admin/export/maple.ini new file mode 100644 index 0000000..312d62d --- /dev/null +++ b/html/webapp/modules/room/view/admin/export/maple.ini @@ -0,0 +1,26 @@ +[TokenExtra] +mode="nobuild" + +[TokenExtra::TokenExtraExport] +mode="check" +action = "room_view_admin_regist_selectusers" + +[DIContainer] +filename_export = "dicon.ini" + +[SmartyAssign::items] +global = items.ini + +[Action] +db = "ref:DbObject" +session = "ref:Session" +configView = "ref:configView" +pagesView = "ref:pagesView" +usersView = "ref:usersView" +csvMain = "ref:csvMain" +actionChain = "ref:ActionChain" + +[View] +define:theme = 0 +success = "main:true.html" +error = "main:error.html" diff --git a/html/webapp/modules/room/view/admin/import/Import.class.php b/html/webapp/modules/room/view/admin/import/Import.class.php new file mode 100644 index 0000000..a8ba3c3 --- /dev/null +++ b/html/webapp/modules/room/view/admin/import/Import.class.php @@ -0,0 +1,85 @@ +>ルーム一覧>>参加者インポート(ファイル選択) + * + * @package NetCommons + * @author Toshihide Hashimoto, Rika Fujiwara + * @copyright 2012 AllCreator Co., Ltd. + * @project NC Support Project, provided by AllCreator Co., Ltd. + * @license http://www.netcommons.org/license.txt NetCommons License + * @access public + */ +class Room_View_Admin_Import extends Action +{ + // リクエストパラメータを受け取るため + var $room_name = null; + var $parent_page_id = null; + var $edit_current_page_id = null; + + // 使用コンポーネントを受け取るため + var $session = null; + var $usersView = null; + var $authoritiesView = null; + + + // Filterによりセット + + // validatorから受け取るため + + // 値をセットするため + var $help = null; // ヘルプの内容 + + + /** + * execute実行 + * + * @access public + */ + function execute() + { + $handle_item = $this->usersView->getItemById($this->usersView->getItemIdByTagName('handle')); + + $this->help[0]['name'] = defined($handle_item['item_name']) ? constant($handle_item['item_name']) : $handle_item['item_name']; + $this->help[0]['need'] = _ON; + $this->help[0]['desc'] = $handle_item['description']; + $this->help[0]['exp'] = ROOM_IMPORT_ITEM_HANDLE; + $this->help[0]['item'] = null; + + + // + // モデレータの細分化された一覧を取得 + // + $mod_where_params = array("user_authority_id" => _AUTH_MODERATE); + $mod_order_params = array("hierarchy" => "DESC"); + $authorities = $this->authoritiesView->getAuthorities($mod_where_params, $mod_order_params); + if($authorities === false) { + return 'error'; + } + + $this->help[1]['name'] = ROOM_IMPORT_HELP_AUTH_LABEL; + $this->help[1]['need'] = _ON; + $this->help[1]['desc'] = "";// ない + $this->help[1]['exp'] = ROOM_IMPORT_HELP_AUTH_EXP; + // 現在使用できる権限を取得して設定する + $this->help[1]['item'][] = array('name' => _AUTH_CHIEF_NAME, 'num' => _ROLE_AUTH_CHIEF); + foreach($authorities as $auth) { + $this->help[1]['item'][] = array('name'=>$auth['role_authority_name'], 'num'=>$auth['role_authority_id']); + } + $this->help[1]['item'][] = array('name' => _AUTH_GENERAL_NAME, 'num' => _ROLE_AUTH_GENERAL); + $this->help[1]['item'][] = array('name' => _AUTH_GUEST_NAME, 'num' => _ROLE_AUTH_GUEST); + $this->help[1]['item'][] = array('name' => _AUTH_OTHER_NAME, 'num' => _ROLE_AUTH_OTHER); + + + // + // 編集中のページIDをセッションに記録 + // + $this->session->setParameter(array('room', 'import', 'parent_page_id'), $this->parent_page_id); + $this->session->setParameter(array('room', 'import', 'edit_current_page_id'), $this->edit_current_page_id); + + return 'success'; + } +} +?> diff --git a/html/webapp/modules/room/view/admin/import/confirm/Confirm.class.php b/html/webapp/modules/room/view/admin/import/confirm/Confirm.class.php new file mode 100644 index 0000000..46ddfbf --- /dev/null +++ b/html/webapp/modules/room/view/admin/import/confirm/Confirm.class.php @@ -0,0 +1,60 @@ +added_auth_member_num = array(); + $this->total_auth_member_num = array(); + $authorities = $this->authoritiesView->getAuthorities(array('(system_flag ='. _ON . ' OR user_authority_id = '. _AUTH_MODERATE. ') AND user_authority_id != '. _AUTH_ADMIN => null)); + foreach($authorities as $a) { + $this->added_auth_member_num[$a['role_authority_name']] = $this->session->getParameter(array('room', 'import', 'count', $a['role_authority_id'], 'added_num')); + $this->total_auth_member_num[$a['role_authority_name']] = $this->session->getParameter(array('room', 'import', 'count', $a['role_authority_id'], 'new_total')); + } + // 不参加への変更数 + $this->delete_num = $this->session->getParameter(array('room', 'import', 'count', 'delete_num')); + + // UPLOAD受け取り処理時に発生した警告文 + $this->warnMsg = $this->session->getParameter(array('room', 'import', 'warn')); + return 'succsess'; + } +} +?> diff --git a/html/webapp/modules/room/view/admin/import/confirm/maple.ini b/html/webapp/modules/room/view/admin/import/confirm/maple.ini new file mode 100644 index 0000000..c182eea --- /dev/null +++ b/html/webapp/modules/room/view/admin/import/confirm/maple.ini @@ -0,0 +1,8 @@ +[Action] +session = "ref:Session" + +[View] +define:theme = 1 +succsess = "room_view_admin_import_confirm.html" +error = "main:error.html" + diff --git a/html/webapp/modules/room/view/admin/import/maple.ini b/html/webapp/modules/room/view/admin/import/maple.ini new file mode 100644 index 0000000..9527674 --- /dev/null +++ b/html/webapp/modules/room/view/admin/import/maple.ini @@ -0,0 +1,20 @@ +[SmartyAssign::items] +global = items.ini + +[ValidateDef] +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" +usersView = "ref:usersView" +authoritiesView = "ref:authoritiesView" + + + +[View] +define:theme = 1 +success = "room_view_admin_import.html" +error = "main:error.html" \ No newline at end of file diff --git a/html/webapp/modules/room/view/admin/import/upload/Upload.class.php b/html/webapp/modules/room/view/admin/import/upload/Upload.class.php new file mode 100644 index 0000000..81d237f --- /dev/null +++ b/html/webapp/modules/room/view/admin/import/upload/Upload.class.php @@ -0,0 +1,277 @@ +actionChain->getCurErrorList(); + + // アップロードされたファイルを取得します + $garbage_flag = _ON; + $filelist = $this->uploadsAction->uploads($garbage_flag); + + $file = FILEUPLOADS_DIR.'room/'.$filelist[0]['physical_file_name']; + $filename = $filelist[0]['file_name']; + + // アップロードフィルタ側で何らかのエラーが発生していたようであればエラーリターンする + if(isset($filelist['error_mes']) && $filelist['error_mes'] != '') { + $errorList->add(get_class($this), sprintf(_FILE_UPLOAD_ERR_FAILURE.'(%s)', $filelist['error_mes'])); + return 'error'; + } + else if($filelist[0]['extension'] != 'csv') { + // ファイル種別チェック + // 拡張子がCSVでない場合はエラーとする + $errorList->add(get_class($this), sprintf(_FILE_UPLOAD_ERR_FILENAME_REJECRED.'(%s)', $filename)); + $this->_delImportFile($file); + return 'error'; + } + + // ファイルを開く + $handle = fopen($file, 'r'); + if($handle == false) { // ファイルオープンエラー + $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_OPEN_ERR.'(%s)', $file)); + $this->_delImportFile($file); + return 'error'; + } + + // + // 過去のセッションにあるインポートデータを削除する + // + $this->session->removeParameter(array('room', 'import', 'data')); + $this->session->removeParameter(array('room', 'import', 'count')); + $this->session->removeParameter(array('room', 'import', 'warn')); + + // 対象となる権限達 + $tmp_authorities = $this->authoritiesView->getAuthorities(array('(system_flag ='. _ON . ' OR user_authority_id = '. _AUTH_MODERATE. ') AND user_authority_id != '. _AUTH_ADMIN => null)); + $authorities = array(); + foreach($tmp_authorities as $a) { + $a['new_total'] = 0; + $a['added_num'] = 0; + $authorities[$a['role_authority_id']] = $a; + } + + // 該当ルームへの参加者情報を取得する + $room_users = $this->roomView->getRoomUsersList($this->page, $this->parent_page, $authorities); + if($room_users == false) { + $errorList->add(get_class($this), ROOM_IMPORT_UPLOAD_NOROOM_ERR); + $this->_delImportFile($file); + return 'error'; + } + + // ところで、操作しているあなたは、このルームの主担権限をもっているの? + if(isset($room_users[ $this->session->getParameter('_handle')])) { + if($room_users[ $this->session->getParameter('_handle')]['authority_id'] != _ROLE_AUTH_CHIEF) { + $errorList->add(get_class($this), ROOM_IMPORT_UPLOAD_NO_PERMISSION); + $this->_delImportFile($file); + return 'error'; + } + } + else { // ルーム情報にない? + $errorList->add(get_class($this), ROOM_IMPORT_UPLOAD_NO_PERMISSION); + $this->_delImportFile($file); + return 'error'; + } + + $my_handle = $this->session->getParameter("_handle"); + + // その後のファイルの内容を展開し + // 1行ずつチェックしていく + // 成功した行はセッション変数に覚えさせる + // エラーがあったら速攻リターン + $chg_num = 0; + $delete_num = 0; + $line = -1; + while( ($row=$this->csvMain->fgets($handle)) != false ) { + if($line>=ROOM_IMPORT_LINE_LIMIT) { + $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_LINE_OVER_ERR."(%s)", ROOM_IMPORT_LINE_LIMIT, $filename)); + $this->cleanup($file); + return 'error'; + } + + // SJISで来るので文字コード変換 + $row = $this->convertCsv($row); + // CSVのカラム数チェック おかしな行が1行でもあれば処理を中断 + if(count($row) != ROOM_IMPORT_ITEM_COLUMN) { + $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_COLUMN_ERR."(%s)", $line+1, $filename)); + $this->cleanup($file); + return 'error'; + } + + $line++; + // 1行目はヘッダ扱いとしてスキップ + if($line == 0) { + } + else { + // その人は会員情報に存在するのか? + if(!isset($room_users[$row[0]])) { + $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NOUSER_ERR, $line+1, $row[0])); + $this->cleanup($file); + return 'error'; + } + else { + $target_user = $room_users[$row[0]]; + } + + $now_auth = $target_user['authority_id']; + $room_users[$row[0]]['authority_id'] = $now_auth; + + // 権限欄が空の場合はスキップ + if($row[1]=='') { + continue; + } + // ハンドル名が空の場合はスキップ + if($row[0] =='') { + continue; + } + // 自分自身がCSVにある場合はスキップ + if($target_user['handle'] == $my_handle) { + $this->session->setParameter(array("room", "import", "warn", $row[0]), ROOM_IMPORT_CONFIRM_MYSELF_WRAN); + continue; + } + // ベース権限が管理者はスキップ + if($target_user['user_authority_id'] == _AUTH_ADMIN) { + $this->session->setParameter(array("room", "import", "warn", $row[0]), ROOM_IMPORT_CONFIRM_ADMINUSER_WRAN); + continue; + } + // 不参加に変更 + if($row[1]==_ROLE_AUTH_OTHER) { + //Public空間の場合はスキップ + if($this->page['space_type']==_SPACE_TYPE_PUBLIC) { + $this->session->setParameter(array("room", "import", "warn", $row[0]), ROOM_IMPORT_CONFIRM_PUBLIC_OTHER_WRAN); + continue; + } + // 現状の権限が不参加状態でないなら、削除データをセッション記録 + if($now_auth != _ROLE_AUTH_OTHER) { + $this->session->setParameter(array("room", "import", "data", $row[0]), $row[1]); + $room_users[$row[0]]['new_authority'] = _ROLE_AUTH_OTHER; + $delete_num++; + } + } + // 参加状態 権限指定 + else { + // それは存在する権限IDか + if(!isset($target_user['permitted_auth'][$row[1]])) { + $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NOAUTH_ERR, $line+1, $row[1])); + $this->cleanup($file); + return 'error'; + } + // このユーザーに許可された権限か + if(!($target_user['permitted_auth'][$row[1]])) { + $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NOT_PERMIT_AUTH, $line+1, $row[0], $row[1])); + $this->cleanup($file); + return 'error'; + } + // それは現在設定されている権限IDと一緒?それとも異なる? + if($now_auth != $row[1]) { + // 異なるならば、変更対象として処理続行 + $this->session->setParameter(array("room", "import", "data", $row[0]), $row[1]); + $room_users[$row[0]]['new_authority'] = $row[1]; + // 移行人数カウントアップ + $authorities[$row[1]]['added_num']++; + $chg_num++; + } + } + } + } + // ファイルクローズ&削除 + fclose($handle); + $this->_delImportFile($file); + + // ファイルの中身が空エラー + if($line<1) { + $errorList->add(get_class($this), sprintf(ROOM_IMPORT_UPLOAD_NODATAS_ERR."(%s)", $filename)); + $this->_delImportFile($file); + return 'error'; + } + // 変更となる人がいない場合はエラー + if($chg_num==0 && $delete_num==0) { + $errorList->add(get_class($this), ROOM_IMPORT_UPLOAD_NO_CHAGE); + $this->_delImportFile($file); + return 'error'; + } + foreach($room_users as $handle=>$user) { + if(isset($user['new_authority'])) { + $count_auth = $user['new_authority']; + } + else { + $count_auth = $user['authority_id']; + } + if($count_auth != _ROLE_AUTH_OTHER) { + if(isset($authorities[$count_auth])) { + $authorities[$count_auth]['new_total']++; + } + } + } + foreach($authorities as $key=>$a) { + $this->session->setParameter(array('room', 'import', 'count', $key, 'added_num'), $a['added_num']); + $this->session->setParameter(array('room', 'import', 'count', $key, 'new_total'), $a['new_total']); + } + $this->session->setParameter(array('room', 'import', 'count', 'delete_num'), $delete_num); + return 'success'; + } + function cleanup($file) { + $this->session->removeParameter(array('room', 'import', 'data')); + $this->session->removeParameter(array('room', 'import', 'count')); + $this->session->removeParameter(array('room', 'import', 'warn')); + $this->_delImportFile($file); + } + /** + * 配列のデータそれぞれを文字エンコード + * + * @access private + */ + function convertCsv($row) { + $ret = array(); + foreach($row as $index=>$value) { + $ret[$index] = mb_convert_encoding($value, _CHARSET, 'SJIS'); + } + return $ret; + } + /** + * インポートファイルの掃除 + * + * @access private + */ + function _delImportFile($file_path) { + if(file_exists($file_path)) { + @chmod($file_path, 0777); + unlink($file_path); + } + } +} +?> \ No newline at end of file diff --git a/html/webapp/modules/room/view/admin/import/upload/dicon.ini b/html/webapp/modules/room/view/admin/import/upload/dicon.ini new file mode 100644 index 0000000..83aec89 --- /dev/null +++ b/html/webapp/modules/room/view/admin/import/upload/dicon.ini @@ -0,0 +1,4 @@ +[DIContainer] +uploadsAction = "uploads.action" +csvMain = "csv.Main" +roomView = "modules://room.components.view" diff --git a/html/webapp/modules/room/view/admin/import/upload/maple.ini b/html/webapp/modules/room/view/admin/import/upload/maple.ini new file mode 100644 index 0000000..e343b5a --- /dev/null +++ b/html/webapp/modules/room/view/admin/import/upload/maple.ini @@ -0,0 +1,24 @@ +[RequestCheck] +request = "POST" + +[DIContainer] +filename = "/modules/room/view/admin/import/upload/dicon.ini" + +[FileUpload] +name = room_import_file_select +allow_attachment=_ALLOW_ATTACHMENT_ALL +allow_extension="true" + +[Action] +db = "ref:DbObject" +session = "ref:Session" +actionChain = "ref:ActionChain" +uploadsAction = "ref:uploadsAction" +csvMain = "ref:csvMain" +authoritiesView = "ref:authoritiesView" +roomView = "ref:roomView" + +[View] +define:attachment = 1 +error = "main:error.html" + diff --git a/html/webapp/modules/room/view/admin/regist/selectusers/Selectusers.class.php b/html/webapp/modules/room/view/admin/regist/selectusers/Selectusers.class.php index 4502c82..5772f45 100644 --- a/html/webapp/modules/room/view/admin/regist/selectusers/Selectusers.class.php +++ b/html/webapp/modules/room/view/admin/regist/selectusers/Selectusers.class.php @@ -39,6 +39,7 @@ class Room_View_Admin_Regist_Selectusers extends Action var $users = null; var $count = 0; var $select_auth_flag = 0; + var $not_export_authorities_str = null; /** * ルーム作成-編集 参加会員編集画面 @@ -84,7 +85,7 @@ function execute() $params = array(); $select_str = "SELECT {users}.*, ". "{authorities}.user_authority_id,". - "{authorities}.role_authority_id,". + "{authorities}.role_authority_id AS au_role_authority_id,". "{authorities}.role_authority_name,". "{authorities}.public_createroom_flag,". "{authorities}.group_createroom_flag,". @@ -188,7 +189,19 @@ function execute() $this->session->setParameter(array("room", $this->edit_current_page_id,"authorities"), $authorities); $this->session->setParameter(array("room", $this->edit_current_page_id,"authorities_count"), $authorities_count); - + + + // エクスポートできない権限の一覧を文字列として取得 + $not_export_where_params = array("user_authority_id" => _AUTH_ADMIN); + $not_export_order_params = array("hierarchy" => "DESC"); + $not_export_authorities = $this->authoritiesView->getAuthorities($not_export_where_params, $not_export_order_params); + if($authorities === false) { + return 'error'; + } + foreach($not_export_authorities as $authority) { + if($this->not_export_authorities_str != "") $this->not_export_authorities_str .= ","; + $this->not_export_authorities_str .= $authority['role_authority_name']; + } return 'success'; } From a6051507133023f7d1fe3c5b6c207350578d8140 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: Tue, 4 Jun 2013 23:09:54 +0900 Subject: [PATCH 010/109] =?UTF-8?q?Thumbs.db=E5=89=8A=E9=99=A4=E5=8F=8A?= =?UTF-8?q?=E3=81=B3=E3=80=81=E7=84=A1=E8=A6=96=E5=AF=BE=E8=B1=A1=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=EF=BC=88Mac=E3=80=81Windows?= =?UTF-8?q?=E3=82=B7=E3=82=B9=E3=83=86=E3=83=A0=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=EF=BC=89=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 14 ++++++++++++++ .../db/adodb/cute_icons_for_site/Thumbs.db | Bin 6144 -> 0 bytes .../modules/pm/files/images/default/Thumbs.db | Bin 17408 -> 0 bytes 3 files changed, 14 insertions(+) delete mode 100644 html/maple/nccore/db/adodb/cute_icons_for_site/Thumbs.db delete mode 100644 html/webapp/modules/pm/files/images/default/Thumbs.db diff --git a/.gitignore b/.gitignore index 71a9b13..36b49f3 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,17 @@ /.settings /.buildpath /.project + +# MacOSXシステムファイル無視設定 +.DS_Store +__MACOSX +thumbs.db +._* +.Spotlight-V100 +.Trashes + +# Windowsシステムファイル無視設定 +Thumbs.db +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ diff --git a/html/maple/nccore/db/adodb/cute_icons_for_site/Thumbs.db b/html/maple/nccore/db/adodb/cute_icons_for_site/Thumbs.db deleted file mode 100644 index 0ae45f37bf38975ddd71be83e0a8aedfaf4a0b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 zcmeI0c|6qH-@wlpyX`m_vyL6r{~pup68$EdEGPfo^#IUbI$ksSzoNH*ySYGx$>Y0APX*MxTzN=<%VpXe%Rs447dOSs;v@vq9J) z91ube`-V_csCV&}(<#52N7yqm#cG#|L*o#(lq*Z&crH z>O;-3?`r?P;_JN`_1~S%$QdJcjGX*e-+wNsUjyNWFha)*fjwXkk%X*+NI|3_>mf1_S%@4&9-;u*08xZ&glvK+L6jjX5LJj8L>;mj!dO3= z5G{x{L7VxR5n$w$u?9q7QqlM5N5Hqs%+d^CFc@$cz5v<_ zOaPXNiSdSo8NONASy-5vSvc9)SlQQbu35vy$;HLZBf!Va!_ULT#V5kYFDN7|EWCzS zR7^xjOh8Cjh;b1N7S3U2;b39m5aQEE6-9VKp2b4fTMTpG81MV+X6Ctvj3SaUspqiRtWe z#?PvR?b>JLwSEdd!@(&cDz;W!VT0nvO-kB2x_Vpmx0>uUH8Z!c+-1LSzk{RGfrB1L zJiWY+`uK)~hMfqHI2n2N-1!T!7cX7De&gn?+evqlQyykyWrfqT-U$ z>YCcR`i92WO&!F}x9_^%clQhqk%oU886EpHK07zRu(-5LURh=Mg#p;#-TKqBzxc%u z{bFKf#xk=p{K7DWL$LhJEHWCb0y}Kk+>Z;&YMy2nGEPi?R>dKwWj7=IQ*b+{h`jco z!YsqJFP{CFV`u(bp8e_Azx&k#)?hI(d02jc12pN`wglCMZA+WSbxT7@OwqAWK-+QeYV7;%dF?S5D2Fc8)!&`6CCHiKBiBpNUJ_4;~J- zK8)V_c*&cCw|1NCoG zb_7$AmGvQ+OZXLJPLan**{4(z1xKY+iBwas8vok~(cbHtQdlH<+ zwj#XVXpaq5+$W8ik{rC>TsP z#G$~b1NlhYgM#5w++PJ#hQz5AyA^zA%>H)Ts}!Vd5e28z=@u@<$jUOg;4%s>oSQ)b zm12p4vsPLtxIXr;qKU$Jn`~D{gcZ1(l*GkeB@KRVFfL@U^cL>#o;HVsbO@ zJg=5d<#2GYy}du;NMblr)#c8TB0Pd=c^Q^av6 zb{wO)_ERw_C-2FI=sPs8o4)((;e z)E;MZZ9Gz1dhH?0HIlmIrjX6+dgR&8x|!TOhF_x854j>s{r#!xtXVVFL2Mt!i`)doT1RWLRm<~uQ>B~DoX=my1Ujnl z8as(EqhLs~dP*e#1ygmSD6r8ZnwE_P)50l)1S)oMAX;K#uB{pc1x2whSe~`#P3laY zaD2NcftzwJ1mlVL*w1Pnw;Rgg!nj+_+B3bFdHRZFjuh?Y5d*O`kFfkVX-$eI<$n(5gp^Zf47oNiBj_9>K(d6OTqH~}^i5#|}=+Yy?fj~vwr|BJe z&*$O=PMvhQ#}{+Xku)&1ma;p_Y6jmxkQg(Po=vzk`DCixG{-#1+dHqn{<76@B|FK| zINt?42+MbyHM>Nbjy)tp6x~NYO`DK@ogVB=#IUgd(}Xc>vSB6xKX>L7b9Xx4V$&257edH z&r8NTAMoqqGCIF>SK0YY(7xLOdaLddqD}qJEV^AjYE`Y`YLA>TdrQ}e$n>o>D_e*T zvehsNT-BjxVAPye9>h6qiND8|c)W}?fgD@RT=J@%z)Roh=91>IP-a8EpYEF*sM2d& ztS9Au(LA&7KHWJWDrSOg!}ca|T*)%bAllo7j3B;~OGS?PhI<+tcj=sO-lSB?cg&ob z$)IaUuQn(FCq@?{KZ*uXR<<0`^h#G!$XH`6yEmLCwOQRTk2BH1H_G6T29Jex7<(>bg|evfp<5{p+T%<+zwO*k~bq&9|!Ow9Dr9q@k}#^ra{dH3P*RR6ZD?b&zloL~DB ztJ5j1*TO4{ne^5)F@OJsi$REY`(p`ZmI6epwrA(z`-u&5Y8+d_EVar)u*$-oI;*bO zsoC&&bJ|Y0<90|Kd^4{+`qafHuJQ3u_Tb>!P5bUfedr>mP&6;~*>i}G3*10BsfjBd zeiTh=_-%=?!k{zH$1jCsm_AIGQs{U%M`E9lzrz!5pmAlsidAF&aH8ddnASAug< z9-W5DUV}Jp@eYg3#IQc~wp0ht4SUL;oZ>5ESF-L33^{|dr#2ZjExBFn&LDQ%Q}8_l zZSQL+x@qBLBylC@D#K!~l{*@v z_*&=nJ_RM4C%e4ef&$I#%==1y$vQ8V!mayhrAy+?IgbjF*cIsuC=grB=XQ#DkK+%d znvPn!2MlpL`xI#gS=M#d>$2*ZHTp}5g2u^n+F+Rf^9cbr!|7c;(_oMLb?SaMn=ps0oGEIX;*Iu#itLAHzP{=F@+wkaH~IR<$h{?^s@&9W;OjCU|U)mQu(ZdPk6 zBz>Cky@y=MuT(=nIZr-y_Dwq8Yg~4~@{&k&d(QkQz!ocQRH++on`(nj?^hShQ1CvB zkoB4d8r3I@s3?e~3a(Jey+Z`n2*TbMgqhZtnJICiTW@{Fhw0QN<=M%~w_I&uNAyn` zUWt82@FjSQv{emsHzJ+9HYgyf+?p`*^m3_~7LQP;R|_Jagj=KDh1a2ALh`8-;{JMa zysED)W%(vjdbQk$cYHjvBtN1ebLy%(b;~P z(n%Vi1pHy9m015xT#fW=5kt7Pb1RafkA3L9_6%lxe*k?U=;2_~f%%Q|N-t3m>AEs) zTG!~r=vK^6n60WA88;;F&m9QAN)^X_T19BG#aaE)z7isB2~iR#a3iAN)4IB_k7*Py zX?le{jM|W=gKm~R!^FP5iKGNkq>GAMH4QMEcc9u168L)}$_|!2d-L1dTpf;#lB>>s z7X`i6UzUxRPvn`bwE^*)NAZ`Y$@=iPlz+ zQXHhD3Z*@`Ixn|}xh5s+lFa7!qQEPnh<=VTP30;;0cipG58cJ8MZ+K(wi5+aAt;bT z{7mRE<|trt8?h>HFYd&3r>deL-G~B3lPDn5r2j==Uyp(}+ia+!xH;*Uo2Lv_$yNENSINpmwWH z0SN_cNEftt)%^G#ddqAOjbnL$Eb5JdhH(^}r)mu;6U4@nih3k_tn%)w6!EII*76cU z1$GMW4A$>U#tdW52Zo&b`IwlBU;W;|a~<|)1F9|MGw%iz2E_Zldyw5(Xh8^DbWKY} zyT2Z*{_~m-J}G3JybgZ@qyP0;&(B~7JeO<2L*!0)CO3v>b5;1HNguZKVM`lIH$$x| i?CZgi46P<*MO3pU;4(d6%DWYPx;@Dz`p^S`uP3; diff --git a/html/webapp/modules/pm/files/images/default/Thumbs.db b/html/webapp/modules/pm/files/images/default/Thumbs.db deleted file mode 100644 index 73ab261085cb75f16c6ff8f679e4a603be700f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17408 zcmeI32|Scr8^GT&)**~tZYoBR5=tdY)Mrn!6m5hg2{GBCWNRTUM1@G3y^=;`FK$$% zl8RJAQHp4hNb@~MGi|rqC%WBVee>|2GiIK%z3+L>`gG(1jK=nfCTUdFbWtAAe}Mv^cT8Zzg<(!FgN&F zhmFB>Fjq)DFkiSUgBKAPF^r3X#?d#$xYqRSwn`ixl(dxIYtoZ%X8YEctQZT9Q9nw* zrTgi3hNuxB%I}jQzoPoloQR4WZ2ic7;?cwjGUa_TgG%uhz;7j{Q^9Y&)(AiS8v49jH4Io_^NXG%=0a-u} zm;lHF6M;#90)TWCAw}Z{-9vO8rvfU#G+;U~15gEK0%`!tqXDTVFbmKEw1L^c9N<5I z4xkI@0s4RefbtnZIu|eo<^d+ae83bi1Iz&nU;(fYKzXbnT?8x!mHtc11tw@ z0Xx7RKzSS>T?se>s{kipHQ)@a0bBrAzztXnxC0&l%DWCyPrwWC27G|sz?Jlq6s?h(8K{3CdYyxiRUBK$-_Az@)*9zIbq5g{=FAz>j@2o4W&j=&|1`By5Lx#jqDtpTm)`Vpzwo*;_)o3 zc+_gp-T>cYtVA|}u}a$Pf~K|{Qtm>^fxDA9rDtcA3Y%T+Bu%mN2;w4$h>D4ilo>Z( zR&K&nm1)ywsLq`8A01sieFH;tiv$NxPZr-|GPi<;` z@UW%z(c`wR=PzEq>VDnxrWf@KhvDCM>qF1J=obgTqTH*rc!0PP}c@}Hn@%j4XI}zI`*+&^%xHx z2R9E-1Osg7(QYcy^5bvsUv@i2iQu54MCHgeX(}VNQ`QU4Lvx4qr zZz(qkk!0Pe71mH{d4`WH(^y5l(NTM`onm4C)E`SZ{Kt#j*Cz}*ubiV{qwe`6>&2DJ zQ7;(_oV#ybDYDm33@#k`V>+12undT3-J)l0CeZ)yLr;1KKkH7nC-bvPht` z8?HAJA{V-$jDf3d0dpKiV@v`z3?zzdGnHqt}ntDZ`PW^xqIF6s6bC z^nVB8*#ATG*PKoo_IA^{d%fM^G)zm#R0sQhHhFr3p}C;3;rykulBO}}-Qp@7o6mmwayHHy5A&L;%l%6An96$l^mNiGu&oVvtH zy>XgYvX#SrI~~oHx2oH7mlIA>8xoxBH;Sx|=`9YL*fBBQAerm9?WqZISk8_neb~j| zBc}2CHYbp^Mt|E2VAzi-(|(x#>(BLHd)=CMmb=*8@80u{lzZ)!Mu2{C!HqT7R;e`3 zzEgi!&ri98Wc7fUp}9DPkZ-kTMrQHt7Z=`<}kBfQNzThghy3M#7Yq?jkx1qt#s zlU(DtT&A3D$(bf1nVxA@25MH7tDg7g7=?S; zlBhwWE}nS4xxSixN^INl<#MT@%cXH>)^whFsj#}TP zR417?sOI(M)L+{8`cAjZwo>(?89p!t1YB-Nt(v^$h=tolN?~J;VO<>!`?lfHogRk$ zaWn0YX@5W0{`%w%i}Q|-=(h=vhL8ktRXq-;jNm51=pISwU7fJ8ozOK+) zmSGoqvir2(YV|nX_p91Cz4Jz2N!P)^m+2uK*wN1K_hDpXdu5@ousd_uFKXIenTcb{wmcXeS`LdR5jwpMa)~ITBTq5bT zc(u~a!gYOxb2U1)49are8xX^OMi0?`&>6{a1g$?{SAF1Ic(CgqOVF2x_98*&GsBUg ztbbNOg?s7s&w&$|b-)@pQ9)-e-z#vs@ZtP(u>B`PB_8zkuj0T7*7w%>QJ)>IKRTmB z<6yA$`-1LxdjEg^`3=+me}69Z>+c`qudX@md@I()+3LpO;-Weg37-Wjmu^{v6vmKn z0`pT2zcvltG+o{K^#Sd4dxwBS{@T~uTO$2d73c6w>!M-j=6J8aDdJ-5(RO`~{I0wh z>EInHC2QmEz6*5lq(1U&FiOO?txu|*{LI?7&RJC|H^^vz!ql=eSjg?kcP6ket5&{j z;E+@~Yiq$|nd0DA8j4mnRi5stZF{HP6o~dSup4txffQY7kF~1n9^Mp&as17k%9uaH zhd6)!Z2J+!1expS-{kyd=H4>p4LKe44f;ieeG`M^WI~e`+%dJm`-iQc*?mH(C%r4t zG}waD=@!@?ac}!GMN);{GIe59aasrdxWRl?)n<*V_MCJ-`(}v^0!W_I?2xvXh$GWT%xim!|+wizjXB47Gxk2Kx+Hu5Wh;C8$?MsK*WR%L{+%KQ+@^fps&)F((6$&cA4TK#7hJv+=pU6zC)W2&3z-fRaDgK)c~+2brPa0Bv;o ziVoUgXXvbiw%I~$pY{Vq%b;E8k2+uP?>JE5{6x<40jI3ON40H8dHkRAk*fJ4Ax;0SOOI0hsGDL^Wa2B16{kY)nM zffK+F?wX1B1^F@h0jmoDZi9?l;XQzEDh26q6(Mdd*@fa8LE= zqxRZ3vx|GG89gafZtA$ORU6V zwcXvbQ0uZ`yog!@X*mR_-iDF&bz%6QAuRvS`Hj*KSbu(MEMM>C=bvtdKT*6B66N97 zKM zhDjTUzx>hh2h8)kfA9Qmc4zC`@Oqp6_2o3|AVK!frdi*Zs9?-XPd{oZ$eQO~HPMt{9ivRB-WEz?$cP)FoZcvP>rz-n}~)kR(o<0CA} z(|RYr9b+v{!;;7bG^|9dxF=RNqt-62#@lhg*ci`$8F(Hr<2RV`_h0?Tf`2CdsBd;t z>-@qxl|!DX?e=G4TP!2}+O?~f%rDxkVnr(^|y>WuI8 zyqoH_VcfyxMOnFZ9d33?l!)4`mx^=^q{t)B>T{_1@n7VoVSH_(BQ@?Gm=*HMz%8j( zMZ8@_-YY9o`j6Mjm6S-M(8+>_Q+)35^a(E%mn3vrZq?gfFg+lEnqMU~YG#WsS8PZ9 zL!v{@9{ssNbL7S?)JhX#!5fVAC9TB%8qC44pA6>w&pbc=x#!2dJ1u%Dn$d;)BO+Qcp>`w(G535g_U2L&ixS1XG2s0CfLaO-i=tuuX<_o!3rIODyY)W$S&Z>J z)brcnoy5ow^^}{W z2dxs_<@4 zX?9;RksOm$UMWBBMtj^P#UTQ6$Ibry>*KOSC`2 g(D=BXwEfF!5}k~oeI$l1`fqro_4#@hDf~Y2UyzMDWB>pF From 801e0f25370777b495e493e50d56ac64b8683d71 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Fri, 23 Aug 2013 15:46:32 +0900 Subject: [PATCH 011/109] =?UTF-8?q?#7=20PHP5.4=E5=AF=BE=E5=BF=9C=E3=81=A7S?= =?UTF-8?q?TRICT=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=AE=E6=8A=91=E5=88=B6?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/htdocs/index.php | 2 +- html/index.php | 2 +- html/maple/filter/Filter_SetConfig.class.php | 2 +- html/maple/generate/script/generate.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/html/htdocs/index.php b/html/htdocs/index.php index 047f140..bc87e65 100644 --- a/html/htdocs/index.php +++ b/html/htdocs/index.php @@ -15,7 +15,7 @@ * @access public */ if (version_compare(phpversion(), '5.3.0', '>=')) { - error_reporting(E_ALL ^ E_DEPRECATED); + error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); } else { error_reporting(E_ALL); } diff --git a/html/index.php b/html/index.php index 907e236..23b2e18 100644 --- a/html/index.php +++ b/html/index.php @@ -15,7 +15,7 @@ * @access public */ if (version_compare(phpversion(), '5.3.0', '>=')) { - error_reporting(E_ALL ^ E_DEPRECATED); + error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); } else { error_reporting(E_ALL); } diff --git a/html/maple/filter/Filter_SetConfig.class.php b/html/maple/filter/Filter_SetConfig.class.php index efa0554..637e1bc 100644 --- a/html/maple/filter/Filter_SetConfig.class.php +++ b/html/maple/filter/Filter_SetConfig.class.php @@ -387,7 +387,7 @@ function _prefilter() $this->_session->setParameter("_php_debug",$php_debug); if ($php_debug && version_compare(phpversion(), '5.3.0', '>=')) { - error_reporting(E_ALL ^ E_DEPRECATED); + error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); } elseif ($php_debug) { error_reporting(E_ALL); } else { diff --git a/html/maple/generate/script/generate.php b/html/maple/generate/script/generate.php index 6c74f17..943c7ad 100644 --- a/html/maple/generate/script/generate.php +++ b/html/maple/generate/script/generate.php @@ -23,7 +23,7 @@ define('BASE_DIR', dirname(dirname(dirname(dirname(__FILE__))))); -error_reporting(E_ALL ^ E_DEPRECATED); +error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); //error_reporting(0); define('DEBUG_MODE', 0); From a74619e581d367a48a4fbe0780c78e1d5c250fcc 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: Mon, 26 Aug 2013 20:50:40 +0900 Subject: [PATCH 012/109] =?UTF-8?q?todo=E3=81=AB=E3=83=96=E3=83=AD?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=81=AE=E3=82=B3=E3=83=94=E3=83=BC=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/operation/Operation.class.php | 139 +++++++++++++++++- .../todo/action/admin/operation/maple.ini | 1 + html/webapp/modules/todo/install.ini | 3 +- 3 files changed, 138 insertions(+), 5 deletions(-) diff --git a/html/webapp/modules/todo/action/admin/operation/Operation.class.php b/html/webapp/modules/todo/action/admin/operation/Operation.class.php index c1e7c56..3ce5e59 100644 --- a/html/webapp/modules/todo/action/admin/operation/Operation.class.php +++ b/html/webapp/modules/todo/action/admin/operation/Operation.class.php @@ -30,18 +30,19 @@ class Todo_Action_Admin_Operation extends Action var $db = null; var $commonOperation = null; var $whatsnewAction = null; + var $session = null; function execute() { switch ($this->mode) { - case "move": - //存在チェック + case "move": + //存在チェック $where_params = array( "todo_id"=> intval($this->unique_id), "room_id"=> intval($this->room_id) ); - $result = $this->db->selectExecute("todo", $where_params); - if($result === false || !isset($result[0])) { + $result = $this->db->selectExecute("todo", $where_params); + if($result === false || !isset($result[0])) { return "false"; } @@ -107,6 +108,136 @@ function execute() } //--新着情報関連 End-- + break; + + case "copy": + $user_id = $this->session->getParameter("_user_id"); + $user_name = $this->session->getParameter("_handle"); + $time = timezone_date(); + + //todoテーブルの取得 + $where_params = array( + "todo_id"=> intval($this->unique_id), + "room_id"=> intval($this->room_id) + ); + $result = $this->db->selectExecute("todo", $where_params); + if($result === false || !isset($result[0])) { + return "false"; + } + $todo = $result[0]; + + //todoテーブルのコピー + unset($todo["todo_id"]); + $todo["room_id"] = $this->move_room_id; + $todo['insert_user_id'] = $user_id; + $todo['update_user_id'] = $user_id; + $todo['insert_user_name'] = $user_name; + $todo['update_user_name'] = $user_name; + $todo['insert_time'] = $time; + $todo['update_time'] = $time; + + $copy_todo_id = $this->db->insertExecute("todo", $todo, false, "todo_id"); + if ($copy_todo_id === false) { + return 'error'; + } + + //todo_categoryテーブルのコピー + $sql = "INSERT INTO {todo_category}" + . " SELECT " + . "category_id" //item_type_id + . ", ?" //todo_id + . ", category_name" + . ", display_sequence" + . ", ?" //room_id + . ", ?" //insert_time + . ", insert_site_id" + . ", ?" //insert_user_id + . ", ?" //insert_user_name + . ", ?" //update_time + . ", update_site_id" + . ", ?" //update_user_id + . ", ?" //update_user_name + . " FROM {todo_category}" + . " WHERE todo_id = ? AND room_id = ?"; + + $params = array( + "copy_todo_id" => $copy_todo_id, + "copy_room_id" => $this->move_room_id, + "insert_time" => $time, + "insert_user_id" => $user_id, + "insert_user_name" => $user_name, + "update_time" => $time, + "update_user_id" => $user_id, + "update_user_name" => $user_name, + "org_todo_id" => $this->unique_id, + "org_room_id" => $this->room_id, + ); + + $result = $this->db->execute($sql, $params); + if ( $result === false ) { + // エラーが発生した場合、エラーリストに追加 + $this->db->addError(); + return 'error'; + } + + //todo_taskテーブルの取得 + $where_params = array( + "todo_id"=> intval($this->unique_id), + "room_id"=> intval($this->room_id) + ); + $orgTasks = $this->db->selectExecute("todo_task", $where_params); + if($orgTasks === false) { + return "false"; + } + + //todo_taskテーブルのコピー + foreach ($orgTasks as $i=>$task) { + unset($task["task_id"]); + $task["todo_id"] = $copy_todo_id; + $task["state"] = _OFF; + $task["period"] = ""; + $task["calendar_id"] = _OFF; + $task["progress"] = _OFF; + $task["room_id"] = $this->move_room_id; + $task['insert_user_id'] = $user_id; + $task['update_user_id'] = $user_id; + $task['insert_user_name'] = $user_name; + $task['update_user_name'] = $user_name; + $task['insert_time'] = $time; + $task['update_time'] = $time; + + $task_id = $this->db->insertExecute("todo_task", $task, false, "task_id"); + if ($task_id === false) { + return 'error'; + } + } + + //todo_blockテーブルの取得 + $where_params = array( + "block_id"=> intval($this->block_id) + ); + $result = $this->db->selectExecute("todo_block", $where_params); + if($result === false || !isset($result[0])) { + return "false"; + } + $block = $result[0]; + + //todo_blockテーブルのコピー + $block["block_id"] = $this->move_block_id; + $block["todo_id"] = $copy_todo_id; + $block["room_id"] = $this->move_room_id; + $block['insert_user_id'] = $user_id; + $block['update_user_id'] = $user_id; + $block['insert_user_name'] = $user_name; + $block['update_user_name'] = $user_name; + $block['insert_time'] = $time; + $block['update_time'] = $time; + + $result = $this->db->insertExecute("todo_block", $block, false); + if ($result === false) { + return 'error'; + } + break; default: return "false"; diff --git a/html/webapp/modules/todo/action/admin/operation/maple.ini b/html/webapp/modules/todo/action/admin/operation/maple.ini index f624e4d..5188eb2 100644 --- a/html/webapp/modules/todo/action/admin/operation/maple.ini +++ b/html/webapp/modules/todo/action/admin/operation/maple.ini @@ -14,6 +14,7 @@ mode = "nobuild" db = "ref:DbObject" commonOperation = "ref:commonOperation" whatsnewAction = "ref:whatsnewAction" +session = "ref:Session" [View] define:nouse = 1 \ No newline at end of file diff --git a/html/webapp/modules/todo/install.ini b/html/webapp/modules/todo/install.ini index 297fe38..1e8c4b0 100644 --- a/html/webapp/modules/todo/install.ini +++ b/html/webapp/modules/todo/install.ini @@ -4,6 +4,7 @@ edit_action_name = "todo_view_edit_list" block_add_action = "todo_view_edit_entry" search_action = "todo_view_admin_search" move_action = "todo_action_admin_operation" +copy_action = "todo_action_admin_operation" module_update_action="todo_update" whatnew_flag = 1 @@ -30,4 +31,4 @@ todo_task.calendar_id=calendar.calendar_id [Operation] select_sql = "SELECT {todo}.todo_id,{todo}.todo_name FROM {todo_block},{todo} WHERE {todo_block}.todo_id = {todo}.todo_id AND {todo_block}.block_id = ?" -select_args = "block_id" +select_args = "block_id" \ No newline at end of file From 7ddcc2d38ba7aa55c159a11cff212318737b49c6 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: Mon, 26 Aug 2013 21:14:16 +0900 Subject: [PATCH 013/109] =?UTF-8?q?IE10=E3=81=A7=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=88=E3=82=A2=E3=83=AB=E3=83=90=E3=83=A0=E3=81=8C=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C=20#84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/photoalbum/files/js/default/photoalbum.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/webapp/modules/photoalbum/files/js/default/photoalbum.js b/html/webapp/modules/photoalbum/files/js/default/photoalbum.js index 7106dbc..a40d1e0 100644 --- a/html/webapp/modules/photoalbum/files/js/default/photoalbum.js +++ b/html/webapp/modules/photoalbum/files/js/default/photoalbum.js @@ -283,7 +283,7 @@ clsPhotoalbum.prototype = { } photo.style.filter = slideType; - photo.filters[0].Apply(); + if (browser.version < 10) photo.filters[0].Apply(); } photo.src = this.photos[index]["src"].replace("&","&"); @@ -302,7 +302,7 @@ clsPhotoalbum.prototype = { } } if (browser.isIE) { - photo.filters[0].Play(); + if (browser.version < 10) photo.filters[0].Play(); } var oldPhotoIndex = this.currentPhotoIndex; From 8218e7eacdb865234b5976078d39e3d761c235d8 Mon Sep 17 00:00:00 2001 From: Rika Fujiwara Date: Tue, 27 Aug 2013 15:22:27 +0900 Subject: [PATCH 014/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=80=80=E3=83=91?= =?UTF-8?q?=E3=83=96=E3=83=AA=E3=83=83=E3=82=AF=E3=83=AB=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E3=81=AF=E3=83=97=E3=83=AB=E3=83=80=E3=82=A6=E3=83=B3=E3=81=A7?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sideflat, header系のメニューと同等の表示機能を持つよう、メニュー項目を取得するロジックに、flat系、header系に加え、pldwn系も同様の処理を行うようロジック追加 --- html/webapp/modules/menu/components/View.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/webapp/modules/menu/components/View.class.php b/html/webapp/modules/menu/components/View.class.php index 1817993..d93d67b 100644 --- a/html/webapp/modules/menu/components/View.class.php +++ b/html/webapp/modules/menu/components/View.class.php @@ -117,7 +117,7 @@ function &getShowPageById($id=0, $page_id = 0, $root_id = 0, $parent_id = 0, $ro " AND {pages}.display_flag != ". _PAGES_DISPLAY_FLAG_DISABLED ." "; } - if(preg_match("/(flat|header)/i", $temp_name) && $mode == "init") { + if(preg_match("/(flat|header|pldwn)/i", $temp_name) && $mode == "init") { $sql .= " AND (({pages}.space_type = "._SPACE_TYPE_GROUP." AND {pages}.thread_num < 2) OR {pages}.space_type = "._SPACE_TYPE_PUBLIC." OR {pages}.parent_id = ". $page_id . " OR {pages}.parent_id = ". $parent_id . " OR {pages}.room_id = ". $room_id . ") "; } else if($thread_num == null) { $sql .= " AND ({pages}.thread_num < 2 OR {pages}.parent_id = ". $page_id . " OR {pages}.parent_id = ". $parent_id . " OR {pages}.room_id = ". $room_id . ") "; From 152266a8e20945198ea4cad93e1fd53a35e618d2 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 27 Aug 2013 16:41:24 +0900 Subject: [PATCH 015/109] =?UTF-8?q?=E3=82=AD=E3=83=BC=E3=83=95=E3=83=AC?= =?UTF-8?q?=E3=83=BC=E3=82=BA=E3=80=81=E5=9B=9E=E7=AD=94=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E9=9D=9E=E8=A1=A8=E7=A4=BA=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=AB=E3=83=88=E5=80=A4=E5=AE=9A=E7=BE=A9=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 --- html/webapp/modules/questionnaire/install.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/html/webapp/modules/questionnaire/install.ini b/html/webapp/modules/questionnaire/install.ini index ce2452e..d601b04 100644 --- a/html/webapp/modules/questionnaire/install.ini +++ b/html/webapp/modules/questionnaire/install.ini @@ -16,8 +16,11 @@ questionnaire_type = "QUESTIONNAIRE_TYPE_LIST_VALUE" nonmember_flag = "_OFF" image_authentication = "_OFF" anonymity_flag = "_OFF" +keypass_use_flag = "_OFF" +keypass_phrase = "" repeat_flag = "_OFF" total_flag = "_ON" +answer_show_flag = "_OFF" question_type = "QUESTIONNAIRE_QUESTION_TYPE_RADIO_VALUE" require_flag = "_ON" From 4b9c33bca010e9b771d2e6b636e6b5813ab9f126 Mon Sep 17 00:00:00 2001 From: Rika Fujiwara Date: Tue, 27 Aug 2013 17:42:23 +0900 Subject: [PATCH 016/109] =?UTF-8?q?=E3=82=AD=E3=83=BC=E3=83=95=E3=83=AC?= =?UTF-8?q?=E3=83=BC=E3=82=BA=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB?= =?UTF-8?q?=E3=83=88=E5=80=A4=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/questionnaire/install.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/webapp/modules/questionnaire/install.ini b/html/webapp/modules/questionnaire/install.ini index d601b04..1b913bc 100644 --- a/html/webapp/modules/questionnaire/install.ini +++ b/html/webapp/modules/questionnaire/install.ini @@ -17,7 +17,7 @@ nonmember_flag = "_OFF" image_authentication = "_OFF" anonymity_flag = "_OFF" keypass_use_flag = "_OFF" -keypass_phrase = "" +keypass_phrase = "netcommons" repeat_flag = "_OFF" total_flag = "_ON" answer_show_flag = "_OFF" From 4e156a3f4b19ef124ca54bfcc4d8172e83480ff5 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 27 Aug 2013 19:12:36 +0900 Subject: [PATCH 017/109] =?UTF-8?q?=E5=A4=89=E6=8F=9B=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E5=AD=90=E3=82=92=E6=AD=A3=E3=81=97=E3=81=8F=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/room/language/chinese/main.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/html/webapp/modules/room/language/chinese/main.ini b/html/webapp/modules/room/language/chinese/main.ini index 9742150..9e26a0d 100644 --- a/html/webapp/modules/room/language/chinese/main.ini +++ b/html/webapp/modules/room/language/chinese/main.ini @@ -52,8 +52,8 @@ room_top_description ="设置房间内所有成员的角色,然后按%s。按% room_top_user_auth_id = "权限" room_selected_entry_users = "检索成员" room_csv_export = "(出口参与者权限列表)" -room_export_confirm_exp = "您可以导出室成员的角色,排除%当局。
您确定要继续吗?

*下载CSV文件,将备份文件,这个房间。
下载后,请仔细保存这个文件。" -room_export_exp = "这个房间里的角色成员列表中显示的将是出口。(是否排除%s)" +room_export_confirm_exp = "您可以导出室成员的角色,排除%s当局。
您确定要继续吗?

*下载CSV文件,将备份文件,这个房间。
下载后,请仔细保存这个文件。" +room_export_exp = "这个房间里的角色成员列表中显示的将是出口。(是否排除%s)" [Room_View_Admin_Export] define:ROOM_EXPORT_AUTHORITY_NAME = "角色" @@ -97,7 +97,7 @@ room_user_search_condition_limit = "选项过多" [Room_View_Admin_Import] -room_import_title_description = "你可以导入的房间(%)成员的角色。" +room_import_title_description = "你可以导入的房间(%s)成员的角色。" room_import_file = "导入文件" room_import_select_file_description = "请指定导入文件设置的角色。" room_import_select_file_note = "第一行被视为一个标题行。
行上限为%d。" From 008d4ddc97578cc469eb86d60889489fab2accab Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Wed, 28 Aug 2013 14:52:46 +0900 Subject: [PATCH 018/109] =?UTF-8?q?=E3=81=B1=E3=82=93=E3=81=8F=E3=81=9A?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=88=E3=83=86=E3=83=B3=E3=83=97=E3=83=AC?= =?UTF-8?q?=E3=83=BC=E3=83=88=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../topic_path/menu_mobile_detail.html | 60 +++++++++ .../topic_path/menu_mobile_init.html | 32 +++++ .../menu_mobile_recursive_block.html | 51 +++++++ .../menu_mobile_recursive_page.html | 74 +++++++++++ .../menu_mobile_recursive_room.html | 39 ++++++ .../topic_path/menu_view_main_detail.html | 6 + .../topic_path/menu_view_main_init.html | 23 ++++ .../topic_path/menu_view_main_list.html | 124 ++++++++++++++++++ 8 files changed, 409 insertions(+) create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_mobile_detail.html create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_mobile_init.html create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_block.html create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_page.html create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_room.html create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_view_main_detail.html create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_view_main_init.html create mode 100644 html/webapp/modules/menu/templates/topic_path/menu_view_main_list.html diff --git a/html/webapp/modules/menu/templates/topic_path/menu_mobile_detail.html b/html/webapp/modules/menu/templates/topic_path/menu_mobile_detail.html new file mode 100644 index 0000000..c660c6c --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_mobile_detail.html @@ -0,0 +1,60 @@ +<{strip}> +<{* 携帯詳細表示用テンプレート *}> + +

+ <{$action.page_name|smarty:nodefaults}> +

+ +<{if ($action.count > 0) }> +
+ <{assign var="blocks" value=$action.blocks.0}> + <{include file="menu_mobile_recursive_block.html"}> +
+<{else}> +
<{$lang.menu_no_page|smarty:nodefaults}>
+<{/if}> +
+ +<{if ( $action.page_id == $action.room_id && $action.each_room_flag == _ON ) }> +
+ <{if !empty($action.pageTree|smarty:nodefaults)}> + <{ if $action.pageCount > 0 }> +

+ <{$lang.menu_in_room_select|smarty:nodefaults}> +

+ <{assign var="pages" value=$action.topPage}> + <{assign var="minusIndentFirstCheckLevel" value=1}> + <{assign var="minusIndentFirst" value=0}> + <{include file="menu_mobile_recursive_page.html"}> + <{/if}> + <{/if}> +
+<{/if}> + +
+
+ <{if $action.each_room_flag==_ON && $action.room_id != $action.page_id }> + + <{else}> + + <{/if}> + + <{$lang._btn_prev_arrow|smarty:nodefaults}> + +
+
+
+ +<{if $action.each_room_flag == $smarty.const._ON }> +

+ <{$lang.menu_room_select|smarty:nodefaults}> +

+
+ <{assign var="menu_redirect_action" value=$conf.menu_redirect_action}> + <{assign var="next_thread_num" value=0}> + <{assign var="next_parent_id" value=0}> + <{assign var="room_list" value=$action.room_arr.$next_thread_num.$next_parent_id}> + <{include file="menu_mobile_recursive_room.html"}> +
+<{/if}> +<{/strip}> \ No newline at end of file diff --git a/html/webapp/modules/menu/templates/topic_path/menu_mobile_init.html b/html/webapp/modules/menu/templates/topic_path/menu_mobile_init.html new file mode 100644 index 0000000..81d0d68 --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_mobile_init.html @@ -0,0 +1,32 @@ +<{strip}> +<{* 携帯メニュー表示用テンプレート *}> + +

+ <{$lang.menu_page_select|smarty:nodefaults}> +

+ +
+ <{if !empty($action.pageTree|smarty:nodefaults)}> + <{assign var="pages" value=$action.topPage}> + <{assign var="minusIndentFirstCheckLevel" value=1}> + <{assign var="minusIndentFirst" value=0}> + <{include file="menu_mobile_recursive_page.html" page_counter_param=$page_counter_param}> + <{else}> + <{$lang.menu_no_page|smarty:nodefaults}> + <{/if}> +
+
+ +<{if $action.each_room_flag == $smarty.const._ON }> +

+ <{$lang.menu_room_select|smarty:nodefaults}> +

+
+ <{assign var="menu_redirect_action" value=$conf.menu_redirect_action}> + <{assign var="next_thread_num" value=0}> + <{assign var="next_parent_id" value=0}> + <{assign var="room_list" value=$action.room_arr.$next_thread_num.$next_parent_id}> + <{include file="menu_mobile_recursive_room.html"}> +
+<{/if}> +<{/strip}> \ No newline at end of file diff --git a/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_block.html b/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_block.html new file mode 100644 index 0000000..a09a814 --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_block.html @@ -0,0 +1,51 @@ +<{strip}> +<{* ブロック一覧表示用テンプレート *}> +<{foreach name="block" key="block_id" key=blockId item="block" from=$blocks}> + <{if $block.module_id != 0 }> + <{if ($block.block_name == "" )}> + <{if ( $block.content != "" ) }> + <{if ($action.html_flag == _ON) }> +
+ + <{$lang._mobile_view_text|smarty:nodefaults}> + +
+
+ <{$block.content|smarty:nodefaults|img_style_rgb_to_hex|wysiwig_convert_url}> + <{else}> +
+ + <{$lang._mobile_view_html|smarty:nodefaults}> + +
+
+ <{$block.content|html_to_text|smarty:nodefaults|nl2br}> + <{/if}> + + <{if ( $block.more_title != "" ) }> +
+
+ + <{$block.more_title}> + +
+ <{/if}> + <{else}> + + <{$block.module_name}> + + <{/if}> + <{else}> + + <{$block.block_name}> + + <{/if}> +
+ <{/if}> + + <{if !empty($action.blocks.$blockId|smarty:nodefaults)}> + <{assign var="blocks" value=$action.blocks.$blockId}> + <{include file="menu_mobile_recursive_block.html"}> + <{/if}> +<{/foreach}> +<{/strip}> \ No newline at end of file diff --git a/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_page.html b/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_page.html new file mode 100644 index 0000000..6b0e9d4 --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_page.html @@ -0,0 +1,74 @@ +<{strip}> +<{* ページデータツリー表示用テンプレート *}> + +<{foreach name="pageLoop" from=$pages|smarty:nodefaults key=pageId item=page}> + <{if ( !empty($page.depth|smarty:nodefaults) ) }> + <{assign var="remake_depth" value=$page.depth-1}> + <{else}> + <{assign var="remake_depth" value=$page.depth}> + <{/if}> + + <{if ( !empty($page.depth|smarty:nodefaults) ) || ($action.each_room_flag==$smarty.const._OFF && $page.disabled==false) }> + <{if empty($remake_depth|smarty:nodefaults) }> + <{assign var="minusIndent" value=-1}> + <{/if}> + + <{if $page.mobileModule == true && $page.visible == true}> + + <{if $page.disabled==false || $action.menu_display_type==$smarty.const.MOBILE_MENU_DISPLAY_TREE }> +
+   + <{/if}> + + <{if $action.menu_display_type == $smarty.const.MOBILE_MENU_DISPLAY_TREE}> + <{if !empty($remake_depth|smarty:nodefaults)}> + <{textformat indent=$minusIndentFirst indent_char=$lang.menu_indent_space|smarty:nodefaults}> + <{textformat indent=$remake_depth-1-$minusIndent indent_char=$lang.menu_indent_mark1}> + <{if $page.lastChild == true}> + <{$lang.menu_indent_mark3|smarty:nodefaults|indent:$minusIndent-$minusIndentFirst:$lang.menu_indent_space|smarty:nodefaults}> + <{else}> + <{$lang.menu_indent_mark2|smarty:nodefaults|indent:$minusIndent-$minusIndentFirst:$lang.menu_indent_space|smarty:nodefaults}> + <{/if}> + <{/textformat}> + <{/textformat}> + <{/if}> + <{/if}> + + + <{if $page.disabled == true}> + <{if $action.menu_display_type == $smarty.const.MOBILE_MENU_DISPLAY_TREE }> + <{$page.page_name}> + <{/if}> + <{elseif $page.blockCount > 1 }> + + <{$page.page_name}> + + <{else}> + + <{$page.page_name}> + + <{/if}> + + + <{if $page.disabled==false || $action.menu_display_type==$smarty.const.MOBILE_MENU_DISPLAY_TREE }> +
+ <{/if}> + <{/if}> + <{/if}> + + <{if !empty($action.pageTree.$pageId|smarty:nodefaults)}> + <{if ($action.menu_display_type==$smarty.const.MOBILE_MENU_DISPLAY_TREE && $page.visible==true)||$action.menu_display_type==$smarty.const.MOBILE_MENU_DISPLAY_FLAT}> + <{if $remake_depth==$minusIndentFirstCheckLevel && $page.lastChild == true}> + <{assign var="minusIndentFirst" value=$minusIndentFirst+1}> + <{assign var="minusIndentFirstCheckLevel" value=$minusIndentFirstCheckLevel+1}> + <{/if}> + + <{if empty($remake_depth|smarty:nodefaults) || $page.lastChild == true}> + <{assign var="minusIndent" value=$minusIndent+1}> + <{/if}> + <{assign var="pages" value=$action.pageTree.$pageId}> + <{include file="menu_mobile_recursive_page.html"}> + <{/if}> + <{/if}> +<{/foreach}> +<{/strip}> \ No newline at end of file diff --git a/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_room.html b/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_room.html new file mode 100644 index 0000000..b759106 --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_mobile_recursive_room.html @@ -0,0 +1,39 @@ +<{strip}> +<{* ルームデータツリー表示用テンプレート *}> + +<{foreach name="room_`$next_parent_id`" item="room_obj" from=$room_list}> + <{assign var="indent" value=$room_obj.thread_num}> + + <{if ( $room_obj.visible_flag==_ON ) }> + <{if ($room_obj.private_flag == _OFF && $room_obj.thread_num == 0) }> + <{else}> + <{" "|str_repeat:$indent}> + <{/if}> + + <{if ($room_obj.space_type != _SPACE_TYPE_PUBLIC && $room_obj.private_flag == _OFF && $room_obj.thread_num == 0) }> + <{$lang._mobile_node|smarty:nodefaults}> + <{$room_obj.page_name}> +
+ <{else}> + <{$lang._mobile_node|smarty:nodefaults}> + <{if ($room_obj.page_id == $action.room_id) }> + <{$room_obj.page_name}> + <{elseif ($room_obj.disable_flag == _ON) }> + <{$room_obj.page_name}> + <{else}> + + <{$room_obj.page_name}> + + <{/if}> +
+ <{/if}> + <{/if}> + + <{assign var="next_thread_num" value=$room_obj.thread_num+1}> + <{assign var="next_parent_id" value=$room_obj.page_id}> + <{assign var="room_list" value=$action.room_arr.$next_thread_num.$next_parent_id}> + <{if ($room_list) }> + <{include file="menu_mobile_recursive_room.html"}> + <{/if}> +<{/foreach}> +<{/strip}> \ No newline at end of file diff --git a/html/webapp/modules/menu/templates/topic_path/menu_view_main_detail.html b/html/webapp/modules/menu/templates/topic_path/menu_view_main_detail.html new file mode 100644 index 0000000..837c8fd --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_view_main_detail.html @@ -0,0 +1,6 @@ +<{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}> +<{include file="menu_view_main_list.html"}> +<{/strip}> \ No newline at end of file diff --git a/html/webapp/modules/menu/templates/topic_path/menu_view_main_init.html b/html/webapp/modules/menu/templates/topic_path/menu_view_main_init.html new file mode 100644 index 0000000..be58d8e --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_view_main_init.html @@ -0,0 +1,23 @@ +<{strip}> +<{*トップページ*}> + +<{* カレントがトップページの場合はリンクしない *}> +<{if ( $action.main_page_id == $action.top_page_arr.page_id )}> + <{$action.top_page_arr.page_name}>  +<{else}> + <{* アンカーの後のスペース表現でメニューの半角・全角の高さの違いを吸収 *}> + <{if $action.top_page_arr.visibility_flag}> + + <{$action.top_page_arr.page_name}> +   + <{/if}> +<{/if}> +<{assign var="menus" value=$action.menus.0.0}> +<{* div のコメントアウト topic_path_menu_page *}> +<{*
*}> +<{include file="menu_view_main_list.html"}> +<{* div のコメントアウト topic_path_menu_page *}> +<{*
*}> +<{include file="../menu_script.html"}> + +<{/strip}> \ No newline at end of file diff --git a/html/webapp/modules/menu/templates/topic_path/menu_view_main_list.html b/html/webapp/modules/menu/templates/topic_path/menu_view_main_list.html new file mode 100644 index 0000000..1fedb31 --- /dev/null +++ b/html/webapp/modules/menu/templates/topic_path/menu_view_main_list.html @@ -0,0 +1,124 @@ +<{strip}> +<{foreach from=$menus item=menu}> + <{* ノードかどうかでクラス変更 *}> + <{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}> + <{if $thread_num <= 0}> + <{assign var="display_flag" value=$smarty.const._ON}> + <{/if}> + <{else}> + <{assign var="thread_num" value=$menu.thread_num}> + <{/if}> + <{if ($menu.thread_num != 0 && !($menu.space_type == _SPACE_TYPE_PUBLIC && $menu.thread_num == 1 && $menu.display_sequence == 1)) || + ($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}> + <{*アクティブかどうか*}> + +<{********** スタイルシートの設定部分は削除 by topic_path **********}> + +<{******************** 削除 by topic_path +* <{if $action.main_page_id == $menu.page_id}> +* <{assign var="class_name" value="nowrap highlight _menu_active"}> +* <{else}> +* <{assign var="class_name" value="nowrap"}> +* <{/if}> +********************}> + <{* スペースタイプでクラス変更 *}> +<{******************** 削除 by topic_path +* <{if $menu.space_type == _SPACE_TYPE_PUBLIC}> +* <{assign var="top_class_name" value="menu_top_public"}> +* <{assign var="space_type_class_name" value="menu_public"}> +* <{elseif $menu.space_type == _SPACE_TYPE_GROUP}> +* <{assign var="top_class_name" value="menu_top_group"}> +* <{assign var="space_type_class_name" value="menu_group"}> +* <{/if}> +********************}> + <{*プライベートかいなか*}> +<{******************** 削除 by topic_path +* <{if $menu.private_flag}> +* <{assign var="top_class_name" value="menu_top_private"}> +* <{assign var="space_type_class_name" value="menu_private"}> +* <{/if}> +********************}> + <{*マージン*}> +<{******************** 削除 by topic_path +* <{if $thread_num == 0}> +* <{assign var="now_margin" value=$thread_num*$conf.menu_top_left_margin}> +* <{else}> +* <{assign var="now_margin" value=$thread_num*$conf.menu_left_margin}> +* <{/if}> +********************}> + + <{*ノードで下にページ(ノード)がない場合、表示しない*}> + <{*if $menu.page_name != "" && ($menu.action_name!="" || $action.menus.$next_thread_num.$now_page_id)*}> + <{if $menu.page_name != "" && $menu.visibility_flag == _ON && !($menu.page_id == $menu.room_id && $menu.display_flag == _OFF && $menu.authority_id < _AUTH_CHIEF)}> + + <{********** + 追加 :以下の2つの条件を満たしていれば、表示対象とする。 by topic_path + 条件 1:テンプレート内のdisplay_flag が_ON の場合、カレントページの上位階層である + 条件 2:$action.main_page_id == $menu.page_id でカレントページが判定できる + **********}> + <{if $display_flag == _ON || $action.main_page_id == $menu.page_id}> + + <{if $menu.thread_num == 0 && $menu.space_type == 2 && $menu.private_flag == 0}> + <{* "グループスペース"なので、表示しない *}> + <{else}> + + <{********** ここは元のまま by topic_path **********}> + <{if $menu.node_flag == 1 && $menu.action_name==""}> + <{assign var="onclick" value=" onclick=\"menuCls['`$id`'].menuNodeClick(event,'`$menu.page_id`');return false;\""}> + <{else}> + <{assign var="onclick" value=""}> + <{/if}> + + <{********** 追加:カレントページなら、リンクしない by topic_path **********}> + <{if $action.main_page_id == $menu.page_id}> + > <{$menu.page_name}>  + <{else}> + >  + + <{********** 変更:元のリンクをコメント by topic_path **********}> + <{* "<{$onclick|smarty:nodefaults}> style="margin-left:<{$now_margin}>px;"> *}> + + <{********** 変更:CSS を取り、シンプルなリンクに変更 by topic_path **********}> + "<{$onclick|smarty:nodefaults}>> + + <{* アイコン *}> +<{********** アイコンをコメント by topic_path +* <{if $menu.node_flag == _ON}> +* <{else}><{"down_arrow.gif"|get_themes_image}><{/if}>" alt="" /> +* <{else}> +* " alt="" /> +* <{/if}> +**********}> + <{$menu.page_name}> + <{* 準備中 *}> + <{if $menu.page_id == $menu.room_id && $menu.display_flag == _OFF}><{$lang.menu_prepared|smarty:nodefaults}><{/if}> + + +<{********** 追加した判定の閉じタグ:ここから by topic_path **********}> + <{/if}> + <{/if}> + <{/if}> +<{********** 追加した判定の閉じタグ:ここまで by topic_path **********}> + + <{/if}> + <{/if}> + <{if $action.menus.$next_thread_num.$now_page_id && !($menu.page_id == $menu.room_id && $menu.display_flag == _OFF && $menu.authority_id < _AUTH_CHIEF)}> + + <{********** div のコメントアウト topic_path_menu_page +
+ **********}> + + <{assign var="menus" value=$action.menus.$next_thread_num.$now_page_id}> + <{include file="menu_view_main_list.html"}> + + <{********** div のコメントアウト topic_path_menu_page +
+ **********}> + + <{/if}> +<{/foreach}> +<{/strip}> \ No newline at end of file From 6176e89208eced4d7dc55850bd9c32e009b3ea16 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Wed, 28 Aug 2013 19:00:44 +0900 Subject: [PATCH 019/109] =?UTF-8?q?#7=20include=E6=99=82=E3=81=AE=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E5=88=B6=E5=BE=A1=E6=BC=94=E7=AE=97=E5=AD=90?= =?UTF-8?q?=E3=82=92=E9=99=A4=E5=8E=BB=E3=80=81=E3=81=8A=E3=82=88=E3=81=B3?= =?UTF-8?q?=E3=80=81=E5=BC=95=E6=95=B0=E3=81=AE&=E3=82=92=E9=99=A4?= =?UTF-8?q?=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/maple/core/FilterChain.class.php | 2 +- html/maple/filter/Filter_AllowIdList.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/html/maple/core/FilterChain.class.php b/html/maple/core/FilterChain.class.php index 7f44f14..e32ed17 100644 --- a/html/maple/core/FilterChain.class.php +++ b/html/maple/core/FilterChain.class.php @@ -114,7 +114,7 @@ function add($name, $alias = '') // // ファイルが存在していなければエラー // - if (!(@include_once $filename) or !class_exists($className)) { + if (!(include_once $filename) or !class_exists($className)) { $log->error("存在していないFilterが指定されています(${name}[alias:${alias}])", "FilterChain#add"); return false; } diff --git a/html/maple/filter/Filter_AllowIdList.class.php b/html/maple/filter/Filter_AllowIdList.class.php index 483fe6d..c59abf4 100644 --- a/html/maple/filter/Filter_AllowIdList.class.php +++ b/html/maple/filter/Filter_AllowIdList.class.php @@ -285,7 +285,7 @@ function setShowPagesList() { $params = array(); if($where_params) { - $where_str = $this->_db->getWhereSQL(&$params, &$where_params, false); + $where_str = $this->_db->getWhereSQL($params, $where_params, false); $sql .= $where_str; if(!empty($sql2)) $sql2 .= $where_str; From 82592423577ec97f98c9d499fb59281a5478aedb Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Thu, 29 Aug 2013 11:07:37 +0900 Subject: [PATCH 020/109] =?UTF-8?q?#7=20=E9=85=8D=E5=88=97=E3=81=A8?= =?UTF-8?q?=E6=96=87=E5=AD=97=E5=88=97=E3=82=92=E9=80=A3=E7=B5=90=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=9F=E3=81=9F=E3=82=81=E3=80=81=E6=96=87?= =?UTF-8?q?=E5=AD=97=E5=88=97=E3=82=92=E9=80=A3=E7=B5=90=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/maple/nccore/TokenExtra.class.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/html/maple/nccore/TokenExtra.class.php b/html/maple/nccore/TokenExtra.class.php index 19693a0..d15a3da 100644 --- a/html/maple/nccore/TokenExtra.class.php +++ b/html/maple/nccore/TokenExtra.class.php @@ -74,11 +74,17 @@ function build() //_nameを付与することにより複雑にした //多次元配列化 $token_value = $this->getName(); + + $tokenString = $this->_name; + if (is_array($tokenString)) { + $tokenString = '_token'; + } + if(is_array($token_value)) { $token_value = array_merge(array("_token"), $token_value); - $this->_session->setParameter($token_value, md5($this->_name.uniqid(rand(),1))); + $this->_session->setParameter($token_value, md5($tokenString . uniqid(rand(),1))); } else { - $this->_session->setParameter(array("_token",$this->getName()), md5($this->_name.uniqid(rand(),1))); + $this->_session->setParameter(array("_token",$this->getName()), md5($tokenString . uniqid(rand(),1))); } } From 2db9d4b15517bfa7f9b16ec4f1917d1b7bb39bd4 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Thu, 29 Aug 2013 17:04:07 +0900 Subject: [PATCH 021/109] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E3=81=AE=E8=BF=BD=E8=A8=98=E3=80=81=E3=81=8A=E3=82=88=E3=81=B3?= =?UTF-8?q?=E3=80=81=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E5=AE=9A?= =?UTF-8?q?=E7=BE=A9=E3=81=AE=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/CHANGES.txt | 18 ++++++++++++++++++ html/webapp/config/version.php | 2 +- html/webapp/modules/calendar/install.ini | 2 +- html/webapp/modules/login/install.ini | 2 +- html/webapp/modules/menu/install.ini | 2 +- html/webapp/modules/photoalbum/install.ini | 2 +- html/webapp/modules/pm/install.ini | 2 +- html/webapp/modules/questionnaire/install.ini | 2 +- html/webapp/modules/reservation/install.ini | 2 +- html/webapp/modules/room/install.ini | 2 +- html/webapp/modules/todo/install.ini | 2 +- html/webapp/modules/user/install.ini | 2 +- 12 files changed, 29 insertions(+), 11 deletions(-) diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index f8888ac..2a9eef1 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -1,6 +1,24 @@ NetComomns2 Changelog =============================== +2013/08/29: Version 2.4.2.0 +- メニューでプルダウンテンプレートを追加 +- メニューでパンくずリストテンプレートを追加 +- ルーム管理で参加会員エクスポート、インポート機能を追加 +- 施設予約で時間枠機能を追加 +- アンケートでキーフレーズ機能を追加 +- アンケートで回答非表示機能を追加 +- Todoにブロックコピー機能を追加 +- PHP5.4暫定対応 +- GitHub無視ファイルの定義を追加 +- Thumbs.dbファイルを削除 +- ソースコードのインデントを一部修正 +- 会員登録で択一選択の必須入力エラーメッセージが正しく表示されるように修正 +- カレンダーでセンターカラム以外に配置した時のデフォルトルームを表示しているルームになるように修正 +- フォトアルバムがIE10で動作しない不具合を修正 + + + 2013/05/20: Version 2.4.1.0 =============================== - 会員の新規申込みで複数選択項目があった場合、その項目を条件とした会員検索にヒットしないバグを修正 diff --git a/html/webapp/config/version.php b/html/webapp/config/version.php index c35760a..623cf8c 100644 --- a/html/webapp/config/version.php +++ b/html/webapp/config/version.php @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/html/webapp/modules/calendar/install.ini b/html/webapp/modules/calendar/install.ini index c43cbfe..3bfe17d 100644 --- a/html/webapp/modules/calendar/install.ini +++ b/html/webapp/modules/calendar/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.1" +version = "2.4.0.2" action_name="calendar_view_main_init" edit_action_name="calendar_view_edit_init" search_action = "calendar_view_admin_search" diff --git a/html/webapp/modules/login/install.ini b/html/webapp/modules/login/install.ini index 763f7ac..19ee237 100644 --- a/html/webapp/modules/login/install.ini +++ b/html/webapp/modules/login/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.1" +version = "2.4.0.2" action_name="login_view_main_init" [Mobile] diff --git a/html/webapp/modules/menu/install.ini b/html/webapp/modules/menu/install.ini index 8b854d0..8a001a3 100644 --- a/html/webapp/modules/menu/install.ini +++ b/html/webapp/modules/menu/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.1" +version = "2.4.0.2" action_name="menu_view_main_init" edit_action_name="menu_view_edit_init" block_delete_action="auto" diff --git a/html/webapp/modules/photoalbum/install.ini b/html/webapp/modules/photoalbum/install.ini index 490c407..05911ef 100644 --- a/html/webapp/modules/photoalbum/install.ini +++ b/html/webapp/modules/photoalbum/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.1" +version = "2.4.0.2" action_name = "photoalbum_view_main_init" edit_action_name = "photoalbum_view_edit_list" block_add_action = "photoalbum_view_edit_entry" diff --git a/html/webapp/modules/pm/install.ini b/html/webapp/modules/pm/install.ini index 77b0246..130744f 100644 --- a/html/webapp/modules/pm/install.ini +++ b/html/webapp/modules/pm/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.1" +version = "2.4.0.2" action_name="pm_view_main_init" delete_action = "pm_action_admin_operation" module_update_action="pm_update" diff --git a/html/webapp/modules/questionnaire/install.ini b/html/webapp/modules/questionnaire/install.ini index 1b913bc..7534835 100644 --- a/html/webapp/modules/questionnaire/install.ini +++ b/html/webapp/modules/questionnaire/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.0" +version = "2.4.2.0" action_name = "questionnaire_view_main_init" edit_action_name = "questionnaire_view_edit_questionnaire_list" block_add_action = "questionnaire_view_edit_questionnaire_entry" diff --git a/html/webapp/modules/reservation/install.ini b/html/webapp/modules/reservation/install.ini index c42eb78..566ffd8 100644 --- a/html/webapp/modules/reservation/install.ini +++ b/html/webapp/modules/reservation/install.ini @@ -1,4 +1,4 @@ -version = "2.4.1.0" +version = "2.4.2.0" action_name = "reservation_view_main_init" edit_action_name = "reservation_view_edit_style_init" block_add_action = "reservation_action_edit_addblock" diff --git a/html/webapp/modules/room/install.ini b/html/webapp/modules/room/install.ini index 7cc88f5..1d9ca3d 100644 --- a/html/webapp/modules/room/install.ini +++ b/html/webapp/modules/room/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.1" +version = "2.4.0.2" action_name="room_view_admin_init" module_icon="room.gif" system_flag=1 diff --git a/html/webapp/modules/todo/install.ini b/html/webapp/modules/todo/install.ini index 1e8c4b0..9ff33b3 100644 --- a/html/webapp/modules/todo/install.ini +++ b/html/webapp/modules/todo/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.0" +version = "2.4.0.1" action_name = "todo_view_main_init" edit_action_name = "todo_view_edit_list" block_add_action = "todo_view_edit_entry" diff --git a/html/webapp/modules/user/install.ini b/html/webapp/modules/user/install.ini index a1b5f2c..674a5cf 100644 --- a/html/webapp/modules/user/install.ini +++ b/html/webapp/modules/user/install.ini @@ -1,4 +1,4 @@ -version = "2.4.0.1" +version = "2.4.0.2" action_name="user_view_main_search" system_flag=1 module_icon="user.gif" From d830bc9592316efb13ccee53f4aac5f7eb58cf7e Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Thu, 29 Aug 2013 17:43:36 +0900 Subject: [PATCH 022/109] =?UTF-8?q?=E6=99=82=E9=96=93=E6=9E=A0=E3=81=AE?= =?UTF-8?q?=E5=88=A9=E7=94=A8=E8=A1=A8=E7=A4=BA=E9=A0=85=E7=9B=AE=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/reservation/sql/mysql/table.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/html/webapp/modules/reservation/sql/mysql/table.sql b/html/webapp/modules/reservation/sql/mysql/table.sql index 4041cb4..a77293d 100644 --- a/html/webapp/modules/reservation/sql/mysql/table.sql +++ b/html/webapp/modules/reservation/sql/mysql/table.sql @@ -63,6 +63,7 @@ CREATE TABLE `reservation_reserve_details` ( CREATE TABLE `reservation_block` ( `block_id` int(11) unsigned NOT NULL, `display_type` tinyint unsigned NOT NULL default '0', + `display_timeframe` tinyint(1) NOT NULL default '0', `display_start_time` varchar(64) NOT NULL default '', `display_interval` tinyint unsigned NOT NULL default '0', `category_id` int(11) unsigned NOT NULL default '0', From 6399ad257eadd1359ea09c301901d5698468e8de 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: Tue, 10 Sep 2013 13:40:42 +0900 Subject: [PATCH 023/109] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=82=B3=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=AE=E5=89=8A=E9=99=A4=E3=81=A8=E5=A4=89?= =?UTF-8?q?=E6=95=B0=E5=90=8D=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/pm/language/chinese/main.ini | 4 ---- html/webapp/modules/pm/language/english/main.ini | 4 ---- html/webapp/modules/pm/language/japanese/main.ini | 4 ---- .../modules/reservation/language/chinese/main.ini | 10 +++++----- .../modules/reservation/language/english/main.ini | 10 +++++----- .../modules/reservation/language/japanese/main.ini | 10 +++++----- .../default/reservation_view_edit_import_init.html | 12 ++++++------ 7 files changed, 21 insertions(+), 33 deletions(-) diff --git a/html/webapp/modules/pm/language/chinese/main.ini b/html/webapp/modules/pm/language/chinese/main.ini index 227b6bc..26525bf 100644 --- a/html/webapp/modules/pm/language/chinese/main.ini +++ b/html/webapp/modules/pm/language/chinese/main.ini @@ -168,10 +168,6 @@ pm_body = PM_MESSAGE_BODY pm_message_address_no_exist = "这个收件人地址不存在。" pm_message_required = "必须输入" define:PM_MAIL_SUBJECT = "[{X-SITE_NAME}]短消息的通知" -; define:PM_MAIL_BODY = "Researchmapの上で、あなたへのプライベートメッセージが届きました。\n\n件名:{X-TITLE}\n差出人:{X-USER}\n差出日時;; -; :{X-INPUT_TIME}\n\n{X-BODY}\n\nこのプライベートメッセージを確認するには、下記アドレスへ\n{X-URL}" -;define:PM_MAIL_BODY = "あなたへのプライベートメッセージが届きましたので、お知らせします。\n\n件名:{X-TITLE}\n差出人:{X-USER}\n差出日時 -;:{X-INPUT_TIME}\n\n{X-BODY}\n\nこのプライベートメッセージを見るには、下記アドレスへ\n{X-URL}" define:PM_MAIL_BODY = "您有新的短消息。\n\n主题:{X-TITLE}\n发件人:{X-USER}\n发送日期:{X-INPUT_TIME}\n\n{X-BODY}\n\n浏览详细信息,请点击下面的链接\n{X-URL}" define:PM_SUBJECT_FORMAT = "Fw%s: %s" diff --git a/html/webapp/modules/pm/language/english/main.ini b/html/webapp/modules/pm/language/english/main.ini index f946e38..4d72ffc 100644 --- a/html/webapp/modules/pm/language/english/main.ini +++ b/html/webapp/modules/pm/language/english/main.ini @@ -168,10 +168,6 @@ pm_body = PM_MESSAGE_BODY pm_message_address_no_exist = "This address does not exist." pm_message_required = "is required" define:PM_MAIL_SUBJECT = "[{X-SITE_NAME}]Private message notifications" -; define:PM_MAIL_BODY = "Researchmapの上で、あなたへのプライベートメッセージが届きました。\n\n件名:{X-TITLE}\n差出人:{X-USER}\n差出日時;; -; :{X-INPUT_TIME}\n\n{X-BODY}\n\nこのプライベートメッセージを確認するには、下記アドレスへ\n{X-URL}" -;define:PM_MAIL_BODY = "あなたへのプライベートメッセージが届きましたので、お知らせします。\n\n件名:{X-TITLE}\n差出人:{X-USER}\n差出日時 -;:{X-INPUT_TIME}\n\n{X-BODY}\n\nこのプライベートメッセージを見るには、下記アドレスへ\n{X-URL}" define:PM_MAIL_BODY = "You have a new private message\n\n:Subject{X-TITLE}\nFrom:{X-USER}\nDate:{X-INPUT_TIME}\n\n{X-BODY}\n\nTo verify this private message, please click the following url\n{X-URL}" define:PM_SUBJECT_FORMAT = "Fw%s: %s" diff --git a/html/webapp/modules/pm/language/japanese/main.ini b/html/webapp/modules/pm/language/japanese/main.ini index 04a4edf..f574507 100644 --- a/html/webapp/modules/pm/language/japanese/main.ini +++ b/html/webapp/modules/pm/language/japanese/main.ini @@ -168,10 +168,6 @@ pm_body = PM_MESSAGE_BODY pm_message_address_no_exist = "この宛先は存在しません。" pm_message_required = "を入力してください" define:PM_MAIL_SUBJECT = "[{X-SITE_NAME}]プライベートメッセージの通知" -; define:PM_MAIL_BODY = "Researchmapの上で、あなたへのプライベートメッセージが届きました。\n\n件名:{X-TITLE}\n差出人:{X-USER}\n差出日時;; -; :{X-INPUT_TIME}\n\n{X-BODY}\n\nこのプライベートメッセージを確認するには、下記アドレスへ\n{X-URL}" -;define:PM_MAIL_BODY = "あなたへのプライベートメッセージが届きましたので、お知らせします。\n\n件名:{X-TITLE}\n差出人:{X-USER}\n差出日時 -;:{X-INPUT_TIME}\n\n{X-BODY}\n\nこのプライベートメッセージを見るには、下記アドレスへ\n{X-URL}" define:PM_MAIL_BODY = "あなたへのプライベートメッセージが届きましたので、お知らせします。\n\n件名:{X-TITLE}\n差出人:{X-USER}\n差出日時:{X-INPUT_TIME}\n\n{X-BODY}\n\nこのプライベートメッセージを確認するには、下記アドレスへ\n{X-URL}" define:PM_SUBJECT_FORMAT = "Fw%s: %s" diff --git a/html/webapp/modules/reservation/language/chinese/main.ini b/html/webapp/modules/reservation/language/chinese/main.ini index 84f18ca..d1f0531 100644 --- a/html/webapp/modules/reservation/language/chinese/main.ini +++ b/html/webapp/modules/reservation/language/chinese/main.ini @@ -327,11 +327,11 @@ reservation_all_delete_mess1 = "選択している施設に対して、全ての reservation_all_delete_mess2 = "選択している施設・利用するグループに対して、予約を削除してインポートします。\n本当によろしいですか。" reservation_duplication = "重複した件名と予約日時は無視する" reservation_select_upload = "请指定您要导入的CSV文件。" -researchmap_file_name = "CSV文件: " -researchmap_download_format = "下载格式" -researchmap_download_format_title = "CSVファイルからデータを取り込みます。" -researchmap_download_desc = "各項目の説明" -researchmap_download_desc_title = "各項目を説明します。" +reservation_file_name = "CSV文件: " +reservation_download_format = "下载格式" +reservation_download_format_title = "CSVファイルからデータを取り込みます。" +reservation_download_desc = "各項目の説明" +reservation_download_desc_title = "各項目を説明します。" reservation_import = "导入" reservation_help_desc = "インポートファイルへの設定項目の詳細は、下記を参照ください。

なお、各項目を無指定とする場合、空白の代わりに文字列「null」を設定してください。

また、無指定(「null」指定)または指定外の設定をした場合、未設定 とします。" reservation_help_header_item = "选项" diff --git a/html/webapp/modules/reservation/language/english/main.ini b/html/webapp/modules/reservation/language/english/main.ini index 0ed8d01..2b31be1 100644 --- a/html/webapp/modules/reservation/language/english/main.ini +++ b/html/webapp/modules/reservation/language/english/main.ini @@ -328,11 +328,11 @@ reservation_all_delete_mess1 = "Delete all reservation items and import.\nAre yo reservation_all_delete_mess2 = "Delete reservation items and import.\nAre you sure?" reservation_duplication = "The duplicate subject name and reservation time are disregarded. " reservation_select_upload = "Please designate CSV file for import." -researchmap_file_name = "CSV file " -researchmap_download_format = "Download format" -researchmap_download_format_title = "Import from CSV file." -researchmap_download_desc = "Explanations of items" -researchmap_download_desc_title = "Explain items." +reservation_file_name = "CSV file " +reservation_download_format = "Download format" +reservation_download_format_title = "Import from CSV file." +reservation_download_desc = "Explanations of items" +reservation_download_desc_title = "Explain items." reservation_import = "Import" reservation_help_desc = "To see details of import file item settings, please see below.

Further, for itesm that have no settings, enter 'null' instead of blank spaces.

Also, in the case of no setting (setting of 'null') or outside range setting, it is changed to 'no setting'." reservation_help_header_item = "Item" diff --git a/html/webapp/modules/reservation/language/japanese/main.ini b/html/webapp/modules/reservation/language/japanese/main.ini index 8575a0f..fc8cfb3 100644 --- a/html/webapp/modules/reservation/language/japanese/main.ini +++ b/html/webapp/modules/reservation/language/japanese/main.ini @@ -327,11 +327,11 @@ reservation_all_delete_mess1 = "選択している施設に対して、全予約 reservation_all_delete_mess2 = "選択している施設・利用グループに対して、全予約を削除してインポートします。\n本当によろしいですか。" reservation_duplication = "件名と予約日時が一致するデータは無視する" reservation_select_upload = "インポートファイルを指定してください。" -researchmap_file_name = "CSVファイル " -researchmap_download_format = "フォーマットのダウンロード" -researchmap_download_format_title = "CSVファイルからデータを取り込みます。" -researchmap_download_desc = "各項目の説明" -researchmap_download_desc_title = "各項目を説明します。" +reservation_file_name = "CSVファイル " +reservation_download_format = "フォーマットのダウンロード" +reservation_download_format_title = "CSVファイルからデータを取り込みます。" +reservation_download_desc = "各項目の説明" +reservation_download_desc_title = "各項目を説明します。" reservation_import = "取り込み" reservation_help_desc = "インポートファイルへの設定項目の詳細は、下記を参照ください。

なお、各項目を無指定とする場合、空白の代わりに文字列「null」を設定してください。

また、無指定(「null」指定)または指定外の設定をした場合、未設定 とします。" reservation_help_header_item = "項目" diff --git a/html/webapp/modules/reservation/templates/default/reservation_view_edit_import_init.html b/html/webapp/modules/reservation/templates/default/reservation_view_edit_import_init.html index 6c1b384..6cd6268 100644 --- a/html/webapp/modules/reservation/templates/default/reservation_view_edit_import_init.html +++ b/html/webapp/modules/reservation/templates/default/reservation_view_edit_import_init.html @@ -49,7 +49,7 @@
<{* CSVファイル *}>
@@ -57,13 +57,13 @@ @@ -78,7 +78,7 @@ <{* 各項目の説明 *}>
- -
<{$lang.system_meta_keywords_note|smarty:nodefaults}>
+ +
<{$lang.system_meta_description_note|smarty:nodefaults}>
- -
<{$lang.system_meta_description_note|smarty:nodefaults}>
+ +
<{$lang.system_meta_keywords_note|smarty:nodefaults}>
  - <{if isset($lang_ifnotreload|smarty:nodefaults)}> - <{$lang_ifnotreload|smarty:nodefaults}> - <{elseif isset($action.redirect_url|smarty:nodefaults)}> - <{assign var="redirect_url" value=$action.redirect_url|smarty:nodefaults}> - <{$smarty.const._IFNOTRELOAD|smarty:nodefaults|sprintf:$redirect_url}> - <{else}> - <{assign var="redirect_url" value=$smarty.const.BASE_URL|cat:$smarty.const.INDEX_FILE_NAME}> - <{$smarty.const._IFNOTRELOAD|smarty:nodefaults|sprintf:$redirect_url}> - <{/if}> + <{$smarty.const._IFNOTRELOAD|smarty:nodefaults|sprintf:$redirect_url}>
+ From 909fdcadc30a3d4cf209546bbb5fce1bb8f920ff Mon Sep 17 00:00:00 2001 From: Ryuji Masukawa Date: Tue, 4 Oct 2016 13:59:28 +0900 Subject: [PATCH 107/109] =?UTF-8?q?=E6=BA=96=E5=82=99=E4=B8=AD=E3=81=AE?= =?UTF-8?q?=E3=82=82=E3=81=AE=E3=81=8C=E4=B8=80=E9=83=A8=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=82=8B=E4=B8=8D=E5=85=B7=E5=90=88=E3=81=AB?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/chgdisplay/Chgdisplay.class.php | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) mode change 100755 => 100644 html/webapp/modules/room/action/admin/chgdisplay/Chgdisplay.class.php diff --git a/html/webapp/modules/room/action/admin/chgdisplay/Chgdisplay.class.php b/html/webapp/modules/room/action/admin/chgdisplay/Chgdisplay.class.php old mode 100755 new mode 100644 index 173d264..4e7ec24 --- a/html/webapp/modules/room/action/admin/chgdisplay/Chgdisplay.class.php +++ b/html/webapp/modules/room/action/admin/chgdisplay/Chgdisplay.class.php @@ -53,10 +53,15 @@ function execute() // --- 準備中->公開中に変更した場合、そのサブグループも公開中にする // ---------------------------------------------------------------------- if($this->page['display_flag'] != $display_flag) { - $where_params = array( - "parent_id" => intval($this->edit_current_page_id) + $rooms_where_params = array( + "room_id = ".intval($this->edit_current_page_id)." OR parent_id = ".intval($this->edit_current_page_id) => null ); - $subgroup_pages_id_arr =& $this->pagesView->getPages($where_params, null, null, null, array($this, "_subpagesFetchcallback")); + $rooms_id_arr =& $this->pagesView->getPages($rooms_where_params, null, null, null, array($this, "_roomsFetchcallback")); + $pages_where_params = array( + " room_id IN (". implode(",", $rooms_id_arr). ") " => null + ); + $subgroup_pages_id_arr =& $this->pagesView->getPages($pages_where_params, null, null, null, array($this, "_subpagesFetchcallback")); + if(count($subgroup_pages_id_arr) > 0) { $params = array( "display_flag" => $display_flag @@ -71,7 +76,22 @@ function execute() } } } - + + // add by mutaguchi@opensource-workshop.jp + /** + * fetch時コールバックメソッド + * @param result adodb object + * @return array items + * @access private + */ + function &_roomsFetchcallback($result) { + $ret = array(); + while ($row = $result->fetchRow()) { + $ret[$row['room_id']] = $row['room_id']; + } + return $ret; + } + /** * fetch時コールバックメソッド * @param result adodb object From b4fb8b6f6fc7077bd2ccc9a4a10aacdf6fe4d6a5 Mon Sep 17 00:00:00 2001 From: kteraguchi Date: Tue, 25 Apr 2017 18:04:04 +0900 Subject: [PATCH 108/109] Fix script tag escape --- html/webapp/components/escape/Text.class.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/html/webapp/components/escape/Text.class.php b/html/webapp/components/escape/Text.class.php index c3e1ae6..7572899 100644 --- a/html/webapp/components/escape/Text.class.php +++ b/html/webapp/components/escape/Text.class.php @@ -445,6 +445,11 @@ function _escapeWysiwygAllowHtmltag($string) { $script_flag = false; foreach ($parts as $part) { // script-/scriptまではそのまま連結 + if(preg_match("/<\/script>$/u", $part)) { + $script_flag = false; + $string .= $part; + continue; + } if(preg_match("/^/u", $part) || $script_flag == true) { $script_flag = true; if (preg_match("/<\!\-\-comment\-\->/u", $part)) { @@ -453,10 +458,6 @@ function _escapeWysiwygAllowHtmltag($string) { } $string .= $part; continue; - } else if(preg_match("/<\/script>$/u", $part)) { - $script_flag = false; - $string .= $part; - continue; } if (preg_match("/<\!\-\-comment\-\->/u", $part)) { From c06abd188c5e04d4f52ae58b587d9915f23341bf Mon Sep 17 00:00:00 2001 From: Ryuji Masukawa Date: Wed, 17 Jan 2018 18:52:29 +0900 Subject: [PATCH 109/109] =?UTF-8?q?=E4=BB=A5=E4=B8=8B=E3=81=AE=E4=B8=8D?= =?UTF-8?q?=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3=20=E2=91=A0?= =?UTF-8?q?=E6=96=B0=E8=A6=8F=E3=81=A7ToDo=E3=82=92=E4=BD=9C=E6=88=90=20?= =?UTF-8?q?=E2=91=A1ToDo=E3=82=92=E8=BF=BD=E5=8A=A0=EF=BC=88=E3=82=AB?= =?UTF-8?q?=E3=83=AC=E3=83=B3=E3=83=80=E3=83=BC=E3=81=AB=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=95=E3=81=9B=E3=82=8B=EF=BC=89=20=E2=91=A2=E3=82=BB?= =?UTF-8?q?=E3=83=83=E3=83=86=E3=82=A3=E3=83=B3=E3=82=B0=E3=83=A2=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=81=A7ToDo=E3=83=AA=E3=82=B9=E3=83=88=E4=B8=80?= =?UTF-8?q?=E8=A6=A7=E8=A1=A8=E7=A4=BA=E3=81=AE=E7=8A=B6=E6=85=8B=E3=81=A7?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=88=E9=81=B8=E6=8A=9E=E3=80=81=E3=80=8C?= =?UTF-8?q?=E5=89=8A=E9=99=A4=E3=80=8D=E3=83=9C=E3=82=BF=E3=83=B3=E6=8A=BC?= =?UTF-8?q?=E4=B8=8B=20=E2=91=A3=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E4=BA=88=E5=AE=9A=E3=81=8C=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=9A=E6=AE=8B=E3=81=A3=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=82=8B=E7=8A=B6=E6=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/webapp/modules/todo/action/dicon.ini | 3 ++- .../todo/action/edit/delete/Delete.class.php | 14 ++++++++++++++ .../modules/todo/action/edit/delete/maple.ini | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/html/webapp/modules/todo/action/dicon.ini b/html/webapp/modules/todo/action/dicon.ini index a22cc43..d94360c 100644 --- a/html/webapp/modules/todo/action/dicon.ini +++ b/html/webapp/modules/todo/action/dicon.ini @@ -1,3 +1,4 @@ [DIContainer] todoAction = "modules://todo.components.action" -todoView = "modules://todo.components.view" \ No newline at end of file +todoView = "modules://todo.components.view" +calendarPlanAction = "calendar.action" diff --git a/html/webapp/modules/todo/action/edit/delete/Delete.class.php b/html/webapp/modules/todo/action/edit/delete/Delete.class.php index bf49ca8..d2d0144 100644 --- a/html/webapp/modules/todo/action/edit/delete/Delete.class.php +++ b/html/webapp/modules/todo/action/edit/delete/Delete.class.php @@ -19,6 +19,7 @@ class Todo_Action_Edit_Delete extends Action // 使用コンポーネントを受け取るため var $todoAction = null; var $db = null; + var $calendarPlanAction = null; /** * Todo削除アクション @@ -27,6 +28,19 @@ class Todo_Action_Edit_Delete extends Action */ function execute() { + $whereParams = array( + "todo_id" => $this->todo_id, + "calendar_id!=0" => null + ); + $tasks = $this->db->selectExecute('todo_task', $whereParams); + if(!empty($tasks)) { + foreach($tasks as $task) { + if (!$this->calendarPlanAction->deletePlan($task["calendar_id"], CALENDAR_PLAN_EDIT_THIS)) { + return false; + } + } + } + $whereParams = array( "todo_id" => $this->todo_id ); diff --git a/html/webapp/modules/todo/action/edit/delete/maple.ini b/html/webapp/modules/todo/action/edit/delete/maple.ini index ba8de50..6bf5c35 100644 --- a/html/webapp/modules/todo/action/edit/delete/maple.ini +++ b/html/webapp/modules/todo/action/edit/delete/maple.ini @@ -6,6 +6,7 @@ key:room_id,block_id,todo_id.todo.todoExists = "1:lang._invalid_input" [Action] db = "ref:DbObject" +calendarPlanAction = "ref:calendarPlanAction" [View] success = "action:todo_view_edit_list" \ No newline at end of file