OSDN Git Service

「wikiメイン」ウィジェットに凍結解凍の制限を追加。
authornaoki hirata <naoki@magic3.org>
Mon, 27 Jul 2015 05:52:45 +0000 (14:52 +0900)
committernaoki hirata <naoki@magic3.org>
Mon, 27 Jul 2015 05:52:45 +0000 (14:52 +0900)
include/sql/update/2015070201_to_2015072701.sql [new file with mode: 0644]
widgets/wiki_main/include/container/admin_wiki_mainConfigWidgetContainer.php
widgets/wiki_main/include/container/wiki_mainCommonDef.php
widgets/wiki_main/include/container/wiki_mainWidgetContainer.php
widgets/wiki_main/include/help/index.php
widgets/wiki_main/include/lib/auth.php
widgets/wiki_main/include/lib/wikiConfig.php
widgets/wiki_main/include/plugin/edit.inc.php
widgets/wiki_main/include/plugin/freeze.inc.php
widgets/wiki_main/include/plugin/unfreeze.inc.php
widgets/wiki_main/include/template/admin_config.tmpl.html

diff --git a/include/sql/update/2015070201_to_2015072701.sql b/include/sql/update/2015070201_to_2015072701.sql
new file mode 100644 (file)
index 0000000..3950ff1
--- /dev/null
@@ -0,0 +1,35 @@
+-- *
+-- * バージョンアップ用スクリプト
+-- *
+-- * PHP versions 5
+-- *
+-- * LICENSE: This source file is licensed under the terms of the GNU General Public License.
+-- *
+-- * @package    Magic3 Framework
+-- * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
+-- * @copyright  Copyright 2006-2015 Magic3 Project.
+-- * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
+-- * @version    SVN: $Id$
+-- * @link       http://www.magic3.org
+-- *
+-- --------------------------------------------------------------------------------------------------
+-- バージョンアップ用スクリプト
+-- --------------------------------------------------------------------------------------------------
+
+-- *** システムベーステーブル ***
+
+-- Wiki設定マスター
+DELETE FROM wiki_config;
+INSERT INTO wiki_config
+(wg_id,                     wg_value,        wg_name) VALUES
+('password',                '',              '共通パスワード'),
+('default_page',            'FrontPage',     'デフォルトページ'),
+('whatsnew_page',           'RecentChanges', '最終更新ページ'),
+('whatsdeleted_page',       'RecentDeleted', '最終削除ページ'),
+('auth_type',               'admin',     '認証タイプ'),
+('show_page_title',         '1',         'タイトル表示するかどうか'),
+('show_page_related',       '1',         '関連ページを表示するかどうか'),
+('show_page_attach_files',  '1',         '添付ファイルを表示するかどうか'),
+('show_page_last_modified', '1',         '最終更新を表示するかどうか'),
+('show_toolbar_for_all_user', '0',         'すべてのユーザにツールバーを表示するかどうか'),
+('user_limited_freeze',       '0',         '凍結・解凍機能のユーザ制限');
index 173e982..83e3406 100644 (file)
@@ -76,6 +76,7 @@ class admin_wiki_mainConfigWidgetContainer extends admin_wiki_mainBaseWidgetCont
                $showPageAttachFiles    = $request->trimCheckedValueOf('item_showpageattachfiles');             // 添付ファイルを表示するかどうか
                $showPageLastModified   = $request->trimCheckedValueOf('item_showlastmodified');                // 最終更新を表示するかどうか
                $showToolbarForAllUser  = $request->trimCheckedValueOf('item_show_toolbar_for_all_user');               // ツールバーを表示するかどうか
+               $userLimitedFreeze              = $request->trimCheckedValueOf('item_user_limited_freeze');             // 凍結・解凍機能のユーザ制限
                
                $replaceNew = false;            // データを再取得するかどうか
                if (empty($act)){// 初期起動時
@@ -114,6 +115,8 @@ class admin_wiki_mainConfigWidgetContainer extends admin_wiki_mainBaseWidgetCont
                                
                                if ($ret) $ret = self::$_mainDb->updateConfig(wiki_mainCommonDef::CF_SHOW_TOOLBAR_FOR_ALL_USER, $showToolbarForAllUser);// ツールバーを表示するかどうか
                                
+                               if ($ret) $ret = self::$_mainDb->updateConfig(wiki_mainCommonDef::CF_USER_LIMITED_FREEZE, $userLimitedFreeze);          // 凍結・解凍機能のユーザ制限
+                               
                                if ($ret){
                                        $this->setMsg(self::MSG_GUIDANCE, 'データを更新しました');
                                        $replaceNew = true;                     // データ再取得
@@ -142,6 +145,8 @@ class admin_wiki_mainConfigWidgetContainer extends admin_wiki_mainBaseWidgetCont
                        if ($showPageLastModified == '') $showPageLastModified = '1';           // 最終更新を表示
                        $showToolbarForAllUser = self::$_mainDb->getConfig(wiki_mainCommonDef::CF_SHOW_TOOLBAR_FOR_ALL_USER);// ツールバーを表示するかどうか
                        if ($showToolbarForAllUser == '') $showToolbarForAllUser = '0';         // ツールバーを表示するかどうか
+                       $userLimitedFreeze = self::$_mainDb->getConfig(wiki_mainCommonDef::CF_USER_LIMITED_FREEZE);// 凍結・解凍機能のユーザ制限
+                       if ($userLimitedFreeze == '') $userLimitedFreeze = '0';
                }
                
                // 認証方法メニュー作成
@@ -159,6 +164,7 @@ class admin_wiki_mainConfigWidgetContainer extends admin_wiki_mainBaseWidgetCont
                $this->tmpl->addVar("_widget", "show_page_attach_files", $this->convertToCheckedString($showPageAttachFiles));  // 添付ファイルを表示するかどうか
                $this->tmpl->addVar("_widget", "show_last_modified", $this->convertToCheckedString($showPageLastModified));     // 最終更新を表示するかどうか
                $this->tmpl->addVar("_widget", "show_toolbar_for_all_user", $this->convertToCheckedString($showToolbarForAllUser));     // ツールバーを表示するかどうか
+               $this->tmpl->addVar("_widget", "user_limited_freeze", $this->convertToCheckedString($userLimitedFreeze));       // 凍結・解凍機能のユーザ制限
                
                // アップロードディレクトリ
                //$uploadDir = $this->gEnv->getCurrentWidgetRootPath() . '/upload';             // 暫定
index e172671..a1e6ee8 100644 (file)
@@ -32,6 +32,7 @@ class wiki_mainCommonDef
        const CF_SHOW_PAGE_ATTACH_FILES         = 'show_page_attach_files';             // 添付ファイル
        const CF_SHOW_PAGE_LAST_MODIFIED        = 'show_page_last_modified';    // 最終更新
        const CF_SHOW_TOOLBAR_FOR_ALL_USER      = 'show_toolbar_for_all_user';                          // ツールバーを表示するかどうか
+       const CF_USER_LIMITED_FREEZE            = 'user_limited_freeze';                                // 凍結・解凍機能のユーザ制限
 
        // ##### デフォルト値 #####
        const DEFAULT_DEFAULT_PAGE = 'FrontPage';               // デフォルトページ
index 1d90ac1..56bba6a 100644 (file)
@@ -477,8 +477,14 @@ class wiki_mainWidgetContainer extends BaseWidgetContainer
                if ($this->isPage){
                        $toolbar .= '&nbsp;';
                        if ($pageEditable){
-                               $toolbar .= $this->createToolbarButton('edit');
-                               if ($this->isRead && WikiConfig::isPageFreeze()){
+                               if (WikiConfig::isUserWithFreezeAuth()){                        // 解凍・凍結権限ありの場合
+                                       $toolbar .= $this->createToolbarButton('edit');
+                               } else if (!$this->isFreeze){            // 解凍・凍結権限なしの場合は、凍結されている場合は編集ボタン非表示
+                                       $toolbar .= $this->createToolbarButton('edit');
+                               }
+                               
+                       //      if ($this->isRead && WikiConfig::isPageFreeze() && WikiConfig::getFreezeButtonVisibility()){    // 凍結・解凍ボタンを表示する場合
+                               if ($this->isRead && WikiConfig::isPageFreeze() && WikiConfig::isUserWithFreezeAuth()){                 // 解凍・凍結権限ありの場合
                                        if ($this->isFreeze){
                                                $toolbar .= $this->createToolbarButton('unfreeze');
                                        } else {
index 65ef890..e839323 100644 (file)
@@ -9,7 +9,7 @@
  *
  * @package    Magic3 Framework
  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
- * @copyright  Copyright 2006-2008 Magic3 Project.
+ * @copyright  Copyright 2006-2015 Magic3 Project.
  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
  * @version    SVN: $Id: index.php 1176 2008-11-05 04:23:39Z fishbone $
  * @link       http://www.magic3.org
@@ -20,7 +20,7 @@ defined('M3_SYSTEM') or die('Access error: Direct access denied.');
 global $HELP;
 
 $HELP['auth_label']['title'] = '認証方法';
-$HELP['auth_label']['body'] = 'Wikiコンテンツのデータの編集を許可するユーザ認証方法を指定します。<br>「管理権限ユーザ」は管理権限のあるユーザでログインしたユーザのみ編集可能です。<br>「ログインユーザ」は管理権限に関係なくログインしたユーザのみ編集可能です。<br>「共通パスワード」はログインに関係なく共通のパスワードを入力したユーザが編集可能です。';
+$HELP['auth_label']['body'] = 'Wikiコンテンツのデータの編集を許可するユーザ認証方法を指定します。システム管理者またはシステム運用者は認証方法に関わらず常に編集可能です。<br>「管理権限ユーザ」はシステム管理者またはシステム運用者のみ編集可能です。<br>「ログインユーザ」は管理権限に関係なくログインしたユーザのみ編集可能です。<br>「共通パスワード」はログインに関係なく共通のパスワードを入力したユーザが編集可能です。';
 $HELP['default_page_label']['title'] = 'デフォルト画面';
 $HELP['default_page_label']['body'] = 'デフォルトで表示するWikiページを指定します。実際に存在するWikiページ名を指定します。';
 $HELP['visible_items_label']['title'] = '表示項目';
index 0919ec6..5baa8a3 100644 (file)
@@ -163,20 +163,12 @@ function check_editable($page, $auth_flag = TRUE, $exit_flag = TRUE)
                        return FALSE; // Without exit
                } else {
                        // With exit
-                       $body = $title = str_replace('$1',
-                               htmlspecialchars(strip_bracket($page)), $_title_cannotedit);
-                       // modified for Magic3 by naoki on 2008/10/10
-                       /*if (is_freeze($page))
-                               $body .= '(<a href="' . $script . '?cmd=unfreeze&amp;page=' .
-                                       rawurlencode($page) . '">' . $_msg_unfreeze . '</a>)';*/
-                       if (is_freeze($page)){
+                       $body = $title = str_replace('$1', htmlspecialchars(strip_bracket($page)), $_title_cannotedit);
+
+                       if (is_freeze($page) && WikiConfig::isUserWithFreezeAuth()){                    // 解凍・凍結権限ありの場合
                                $body .= '(<a href="' . $script . WikiParam::convQuery('?cmd=unfreeze&amp;page=' . rawurlencode($page)) . '">' . $_msg_unfreeze . '</a>)';
                        }
                        $page = str_replace('$1', make_search($page), $_title_cannotedit);
-                       // modified for Magic3 by naoki on 2008/9/29
-                       //catbody($title, $page, $body);
-                       //catbody($body);
-                       //exit;
                }
        }
 }
index 195c6c3..a5958ca 100644 (file)
@@ -309,6 +309,24 @@ class WikiConfig
                return $ret;
        }
        /**
+        * アクセス中のユーザにページ凍結・解凍権限があるかを判断
+        *
+        * @return bool         true=権限あり、false=権限なし
+        */
+       public static function isUserWithFreezeAuth()
+       {
+               global $gEnvManager;
+               
+               // 凍結解凍権限を制限する場合は、システム運用権限ユーザのみが凍結解凍権限あり
+               $ret = false;
+               if (self::$_configArray[wiki_mainCommonDef::CF_USER_LIMITED_FREEZE]){
+                       if ($gEnvManager->isSystemManageUser()) $ret = true;
+               } else {
+                       if (self::isUserWithEditAuth()) $ret = true;                    
+               }
+               return $ret;
+       }
+       /**
         * アクセス中のユーザにデータ参照権限があるかを判断
         *
         * @return bool         true=権限あり、false=権限なし
index 50b0c91..625e18a 100644 (file)
@@ -44,7 +44,7 @@ function plugin_edit_action()
                
        if (!check_editable($page, true, true)){                // 編集不可のとき
                $body = $title = str_replace('$1', make_pagelink($page), $_title_cannotedit);
-               if (is_freeze($page)){
+               if (is_freeze($page) && WikiConfig::isUserWithFreezeAuth()){                    // 解凍・凍結権限ありの場合
                        $body .= '(<a href="' . $script . WikiParam::convQuery('?cmd=unfreeze&amp;page=' . rawurlencode($page)) . '">' . $_msg_unfreeze . '</a>)';
                }
                return array('msg' => $title, 'body' => $body);
index ba7a733..3c9aa18 100644 (file)
@@ -41,14 +41,17 @@ function plugin_freeze_action()
                $body = str_replace('$1', htmlspecialchars(strip_bracket($page)), $_title_isfreezed);
        //} else if ($pass != '' && pkwk_login($pass)) {
        } else if (!empty($action)){                    // 「凍結」ボタン実行の場合
-               // ページをロックする
-               WikiPage::lockPage($page, true);
+               // 解凍・凍結権限ありの場合のみ凍結可能
+               if (WikiConfig::isUserWithFreezeAuth()){                        // 解凍・凍結権限ありの場合
+                       // ページをロックする
+                       WikiPage::lockPage($page, true);
 
-               // Update
-               is_freeze($page, TRUE);
-               WikiParam::setCmd('read');
-               $msg  = $_title_freezed;
-               $body = '';
+                       // Update
+                       is_freeze($page, TRUE);
+                       WikiParam::setCmd('read');
+                       $msg  = $_title_freezed;
+                       $body = '';
+               }
 //     } else if (!WikiConfig::isPasswordAuth() && !$editAuth){                        // パスワード認証以外(管理権限ユーザまたはログインユーザ)の場合で、編集権限がない場合
 //             $body = "<p><strong>$_msg_no_operation_allowed</strong></p>\n";
        } else {
index 3ba0d36..c8c80ad 100644 (file)
@@ -44,20 +44,23 @@ function plugin_unfreeze_action()
                $body = str_replace('$1', htmlspecialchars(strip_bracket($page)), $_title_isunfreezed);
        //} else if ($pass != '' && pkwk_login($pass)) {
        } else if (!empty($action)){                    // 「解凍」ボタン実行の場合
-               // ページをロックを解除
-               WikiPage::lockPage($page, false);
+               // 解凍・凍結権限ありの場合のみ凍結可能
+               if (WikiConfig::isUserWithFreezeAuth()){                        // 解凍・凍結権限ありの場合
+                       // ページをロックを解除
+                       WikiPage::lockPage($page, false);
 
-               // Update 
-               is_freeze($page, TRUE);
-               if (PLUGIN_UNFREEZE_EDIT) {
-                       WikiParam::setCmd('read');
-                       $msg  = $_title_unfreezed;
-                       //$body = edit_form($page, $postdata);
-                       $body = edit_form($page, get_source($page, true));
-               } else {
-                       WikiParam::setCmd('read');
-                       $msg  = $_title_unfreezed;
-                       $body = '';
+                       // Update 
+                       is_freeze($page, TRUE);
+                       if (PLUGIN_UNFREEZE_EDIT) {
+                               WikiParam::setCmd('read');
+                               $msg  = $_title_unfreezed;
+                               //$body = edit_form($page, $postdata);
+                               $body = edit_form($page, get_source($page, true));
+                       } else {
+                               WikiParam::setCmd('read');
+                               $msg  = $_title_unfreezed;
+                               $body = '';
+                       }
                }
 //     } else if (!WikiConfig::isPasswordAuth() && !$editAuth){                        // パスワード認証以外(管理権限ユーザまたはログインユーザ)の場合で、編集権限がない場合
 //             $body = "<p><strong>$_msg_no_operation_allowed</strong></p>\n";
index 37b3c7f..43b944a 100644 (file)
@@ -64,6 +64,14 @@ $(function(){
            </td>\r
        </tr>\r
     <tr>\r
+           <th><span {_HELP_DEFAULT_USER_ACCESS}>アクセス制御</span></th>\r
+           <td>\r
+               <div class="form-group clearfix">\r
+               <div class="checkbox m3config_inline_item"><label><input type="checkbox" name="item_user_limited_freeze" {USER_LIMITED_FREEZE} />凍結・解凍機能をシステム管理者,運用者に制限</label></div>\r
+               </div>\r
+               </td>\r
+       </tr>\r
+    <tr>\r
            <th><span {_HELP_DEFAULT_PAGE_LABEL}>画面</span></th>\r
            <td><div class="form-group clearfix"><div class="form-control-static col-sm-2 m3config_item text-right">デフォルト:</div><div class="col-sm-6 m3config_item"><input type="text" name="item_default_page" value="{DEFAULT_PAGE}" maxlength="50" /></div></div>\r
                <div class="form-group clearfix"><div class="form-control-static col-sm-2 m3config_item text-right">最終更新:</div><div class="col-sm-6 m3config_item"><input type="text" name="item_whatsnew_page" value="{WHATSNEW_PAGE}" maxlength="50" /></div></div>\r
@@ -83,10 +91,6 @@ $(function(){
                </div>\r
                <h4>ツールバー</h4>\r
                <div class="form-group clearfix"><div class="checkbox"><label><input type="checkbox" name="item_show_toolbar_for_all_user" {SHOW_TOOLBAR_FOR_ALL_USER} />常に表示</label></div></div>\r
-               <div class="form-group clearfix">\r
-               <span>表示項目:</span>\r
-               <div class="checkbox m3config_inline_item"><label><input type="checkbox" name="item_show_freeze_button" {SHOW_FREEZE_BUTTON} />凍結・解凍ボタン</label></div>\r
-               </div>\r
                <h4>その他</h4>\r
                <div class="form-group clearfix"><div class="checkbox"><label><input type="checkbox" name="item_show_top_link" {SHOW_TOP_LINK} />トップ移動リンクを表示</label></div></div>\r
            </td>\r