OSDN Git Service

ウィジェットバージョンアップ機能更新。
authornaoki hirata <naoki@magic3.org>
Sat, 19 Apr 2014 13:12:48 +0000 (22:12 +0900)
committernaoki hirata <naoki@magic3.org>
Sat, 19 Apr 2014 13:12:48 +0000 (22:12 +0900)
include/manager/pageManager.php
widgets/admin_main/include/container/admin_mainWidgetlistWidgetContainer.php
widgets/admin_main/include/db/admin_mainDb.php
widgets/admin_main/include/locale/ja_JP.mo
widgets/admin_main/include/locale/ja_JP.po
widgets/admin_main/include/template/widgetlist.tmpl.html

index c59c75e..47973b2 100644 (file)
@@ -4229,7 +4229,7 @@ class PageManager extends Core
                } else {
                        // ウィジェットが存在する場合は実行
                        if (!file_exists($widgetIndexFile)) {
-                               echo 'widget not found error: ' . $widgetId;
+                               if ($gEnvManager->isSystemManageUser()) echo '<span class="error">widget not found error: ' . $widgetId . '</span>';            // システム運用者の場合はエラーメッセージ表示
                        } else {
                                // パラメータ初期化
                                $this->lastHeadCss = '';                        // 最後に設定したHTMLヘッダにCSS出力する文字列
@@ -4397,7 +4397,7 @@ class PageManager extends Core
                if (file_exists($widgetIndexFile)){
                        require($widgetIndexFile);
                } else {
-                       echo 'widget not found error: ' . $widgetId;
+                       if ($gEnvManager->isSystemManageUser()) echo '<span class="error">widget not found error: ' . $widgetId . '</span>';            // システム運用者の場合はエラーメッセージ表示
                }
                $msg = 'widget-end(' . $widgetId . ')';
                $gErrorManager->writeDebug(__METHOD__, $msg);           // 時間計測用
index 9f82ee6..0c64adb 100644 (file)
@@ -16,6 +16,7 @@
 require_once($gEnvManager->getCurrentWidgetContainerPath() .   '/admin_mainBaseWidgetContainer.php');
 require_once($gEnvManager->getCurrentWidgetDbPath() . '/admin_mainDb.php');
 require_once($gEnvManager->getLibPath()                                . '/pcl/pclzip.lib.php' );
+require_once($gEnvManager->getLibPath() .      '/gitRepo.php');
 require_once($gEnvManager->getCurrentWidgetContainerPath()             . '/admin_mainDef.php');                        // 定義クラス
 
 class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
@@ -183,7 +184,10 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
                        $updateAvailable = ($request->trimValueOf('item' . $selectedItemNo . '_available') == 'on') ? 1 : 0;            // 利用可能かどうか
                        $updateActive = ($request->trimValueOf('item' . $selectedItemNo . '_active') == 'on') ? 1 : 0;          // ウィジェット実行可能かどうか
                        
-                       $ret = $this->db->updateWidget($serial, $updateAvailable, $updateActive);
+                       $updateParams = array();
+                       $updateParams['wd_available'] = $updateAvailable;
+                       $updateParams['wd_active'] = $updateActive;
+                       $ret = $this->db->updateWidget($serial, $updateParams);
                        if ($ret){              // データ更新成功のとき
                                $this->setMsg(self::MSG_GUIDANCE, $this->_('Line updated.'));           // データを更新しました
                        } else {
@@ -483,6 +487,75 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
                $dest = preg_replace_callback($exp, array($this, '_update_widget_info_callback'), $infoSrc);
                        
                        $this->setMsg(self::MSG_GUIDANCE, $this->_('Latest widget information gotten.'));               // 最新のウィジェット情報を取得しました
+               } else if ($act == 'updatewidget'){             // ウィジェットの更新
+                       // ### 最新のバージョン番号をチェック ###
+                       $canUpdate = false;                     // 更新可能かどうか
+                       
+                       // 現在のバージョン取得
+                       $ret = $this->_db->getWidgetInfo($widgetId, $row);
+                       if ($ret) $version = $row['wd_version'];                // ウィジェットのバージョン
+                                                                                       
+                       // ウィジェットの最新情報ファイルを取得
+                       $infoSrc = file_get_contents(self::NEW_INFO_URL);
+
+                       // ウィジェットIDとバージョン番号を取得して登録
+                       $exp = '/^\(\'' . preg_quote($widgetId) . '\'.*\'([0-9\.]+[a-z]*)\'/m';                 // バージョン番号の最後の「b」(ベータ版)等は許可
+                       if (preg_match($exp, $infoSrc, $matches)){
+                               $latestVersion = $matches[1];
+                               
+                               if (!empty($version) && !empty($latestVersion) && version_compare($version, $latestVersion) == -1) $canUpdate = true;           // 最新バージョンが現在のバージョンよりも上の場合
+                       }
+                       if ($canUpdate){
+                               // GitHubからソースコードを取得
+                               $zipFilePath = $this->gEnv->getIncludePath() . '/widgets_update/' . $widgetId . '#' . date('Ymd') . '.zip';
+                               $repo = new GitRepo('magic3org', 'magic3');
+                               $ret = $repo->createZipArchive('/widgets/' . $widgetId, $zipFilePath);
+                               if ($ret){              // Zipファイル作成完了のとき
+                                       // 既存ウィジェットのバックアップ
+                                       $status = false;
+                                       $widgetDir = $this->gEnv->getWidgetsPath() . '/' . $widgetId;           // ウィジェットのディレクトリ
+                                       $zipFilePath = $this->gEnv->getIncludePath() . '/widgets_update/' . $widgetId . '.zip';
+                                       $zipFile = new PclZip($zipFilePath);
+                                       $ret = $zipFile->create($widgetDir, PCLZIP_OPT_REMOVE_PATH, dirname($widgetDir));
+                                       if ($ret){
+                                               // 作業ディレクトリを作成
+                                               $tmpDir = $this->gEnv->getTempDirBySession();           // セッション単位の作業ディレクトリを取得
+                                               if (file_exists($tmpDir)) rmDirectory($tmpDir);         // 存在する場合は一旦削除
+                                                       
+                                               // ダウンロードしたウィジェットと入れ替え
+                                               $zipFile = new PclZip($zipFilePath);
+                                               $ret = $zipFile->extract(PCLZIP_OPT_PATH, $tmpDir);
+                                               if ($ret){
+                                                       $ret = rmDirectory($widgetDir);
+                                                       if ($ret) $ret = mvDirectory($tmpDir . '/' . basename($widgetId), $widgetDir);
+                                                       if ($ret){              // 完了の場合はバージョン情報を更新
+                                                               $updateParams = array();
+                                                               $updateParams['wd_version'] = $latestVersion;
+                                                               $ret = $this->db->updateWidget($row['wd_serial'], $updateParams);
+                                                               if ($ret) $status = true;               // ウィジェット更新完了
+                                                       }
+                                               }
+                                       }
+                                       if ($status){
+                                               $msg = $this->_('Widget updated successfully.');                // ウィジェットの更新が完了しました。
+                                               $this->setGuidanceMsg($msg);
+                                       } else {
+                                               $msg = $this->_('Failed in updating widget.');          // ウィジェットの更新に失敗しました
+                                               $this->setAppErrorMsg($msg);
+                                       }
+                               } else {                // Zipファイル作成失敗のとき
+                                       $resCode = $repo->getResponseCode();
+                                       if ($resCode == 403){
+                                               $msg = $this->_('Connection count is over the limit. Wait a minute, connect again.');           // ウィジェットの更新に失敗しました
+                                       } else {
+                                               $msg = $this->_('Failed in connecting to GitHub.');             // GitHubへの接続に失敗しました
+                                       }
+                                       $this->setAppErrorMsg($msg);
+                               }
+                       } else {
+                               $msg = $this->_('The widget is already the latest version.');           // ウィジェットはすでに最新バージョンです
+                               $this->setAppErrorMsg($msg);
+                       }
                }
                // ウィジェットのタイプごとの処理
                switch ($this->widgetType){
@@ -538,6 +611,7 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
                $localeText['msg_delete_line'] = $this->_('Delete widget?');            // このウィジェットを削除しますか?
                $localeText['msg_no_upload_file'] = $this->_('File not selected.');             // アップロードするファイルが選択されていません
                $localeText['msg_upload_file'] = $this->_('Upload file.');              // ファイルをアップロードします
+               $localeText['msg_update_widget'] = $this->_('Update widget?');          // ウィジェットを更新しますか?
                $localeText['label_widget_list'] = $this->_('Widget List');                     // ウィジェット一覧
 //             $localeText['label_widget_type'] = $this->_('Widget Type:');                    // ウィジェットタイプ:
                $localeText['label_install_dir'] = $this->_('Install Directory:');                      // インストールディレクトリ:
@@ -764,7 +838,7 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
                        if (version_compare($version, $latestVersion) == -1){           // 最新バージョンが現在のバージョンよりも上の場合のみ表示
                                $optionVerStr = strtolower($matches[2]);
                                if (empty($optionVerStr)){              // 付加記号なしの場合
-                                       $latestVer = '<span class="available">' . $this->convertToDispString($latestVersion) . '</span>';
+                                       $latestVer = '<span class="available"><a href="javascript:void(0);" onclick="updateWidget(\'' . $widgetId . '\');">' . $this->convertToDispString($latestVersion) . '</a></span>';
                                } else {
                                        switch ($optionVerStr){
                                                case 'x':               // 緊急バージョンアップ
index 8e8a428..d3fae97 100644 (file)
@@ -304,11 +304,10 @@ class admin_mainDb extends BaseDb
         * ウィジェットの更新
         *
         * @param int $serial                   シリアル番号
-        * @param bool $available               利用可能かどうか
-        * @param bool $active  ウィジェット実行可能かどうか
+        * @param array $updateParams   更新パラメータ
         * @return bool                                 true=成功、false=失敗
         */
-       function updateWidget($serial, $available, $active)
+       function updateWidget($serial, $updateParams)
        {
                $userId = $this->gEnv->getCurrentUserId();      // 現在のユーザ
                $now = date("Y/m/d H:i:s");     // 現在日時
@@ -350,6 +349,8 @@ class admin_mainDb extends BaseDb
                $updateFields[] = 'wd_read_scripts'; $boolFields[] = 'wd_read_scripts';         // スクリプトディレクトリを自動読み込みするかどうか
                $updateFields[] = 'wd_read_css'; $boolFields[] = 'wd_read_css';                 // cssディレクトリを自動読み込みするかどうか
                $updateFields[] = 'wd_use_ajax'; $boolFields[] = 'wd_use_ajax';                 // Ajax共通ライブラリを読み込むかどうか
+       $updateFields[] = 'wd_active'; $boolFields[] = 'wd_use_ajax';                   // 一般ユーザが実行可能かどうか
+       $updateFields[] = 'wd_available'; $boolFields[] = 'wd_use_ajax';                // メニューから選択可能かどうか
                $updateFields[] = 'wd_editable'; $boolFields[] = 'wd_editable';                 // データ編集可能かどうか
                $updateFields[] = 'wd_edit_content'; $boolFields[] = 'wd_edit_content'; // 主要コンテンツ編集可能かどうか
                $updateFields[] = 'wd_has_admin'; $boolFields[] = 'wd_has_admin';                       // 管理画面があるかどうか
@@ -382,8 +383,8 @@ class admin_mainDb extends BaseDb
                
                // 指定のシリアルNoのレコードが削除状態でないかチェック
                $historyIndex = 0;              // 履歴番号
-               $queryStr  = 'select * from _widgets ';
-               $queryStr .=   'where wd_serial = ? ';
+               $queryStr  = 'SELECT * FROM _widgets ';
+               $queryStr .=   'WHERE wd_serial = ? ';
                $ret = $this->selectRecord($queryStr, array($serial), $row);
                if ($ret){              // 既に登録レコードがあるとき
                        if ($row['wd_deleted']){                // レコードが削除されていれば終了
@@ -406,10 +407,10 @@ class admin_mainDb extends BaseDb
                
                // ##### データ更新処理 #####
                // 呼び出しパラメータから取得値
-               $newParams = array();
-               $newParams['wd_available'] = intval($available);
-               $newParams['wd_active'] = intval($active);
-               $keys = array_keys($newParams);// キーを取得
+//             $newParams = array();
+//             $newParams['wd_available'] = intval($available);
+//             $newParams['wd_active'] = intval($active);
+               $keys = array_keys($updateParams);// キーを取得
                
                // クエリー作成
                $queryStr  = 'INSERT INTO _widgets (';
@@ -419,12 +420,19 @@ class admin_mainDb extends BaseDb
                $values = array($row['wd_id'], $historyIndex);
                // 呼び出しパラメータから取得値を連結
                for ($i = 0; $i < count($keys); $i++){
-                       $queryStr .= $keys[$i] . ', ';
+                       $fieldName = $keys[$i];
+                       $queryStr .= $fieldName . ', ';
                        $valueStr .= '?, ';
-                       $values[] = $newParams[$keys[$i]];
+//                     $values[] = $newParams[$keys[$i]];
+                       if (in_array($fieldName, $boolFields)){
+                               $values[] = intval($updateParams[$fieldName]);
+                       } else {
+                               $values[] = $updateParams[$fieldName];
+                       }
                }
                
                // 更新値を設定
+               /*
                if ($this->getDbType() == M3_DB_TYPE_PGSQL){// PostgreSQLの場合
                        for ($i = 0; $i < count($updateFields); $i++){
                                $fieldName = $updateFields[$i];
@@ -447,6 +455,18 @@ class admin_mainDb extends BaseDb
                                        $values[] = $row[$fieldName];
                                }
                        }
+               }*/
+               for ($i = 0; $i < count($updateFields); $i++){
+                       $fieldName = $updateFields[$i];
+                       if (!in_array($fieldName, $keys)){              // フィールドがないとき
+                               $queryStr .= $fieldName . ', ';
+                               $valueStr .= '?, ';
+                               if (in_array($fieldName, $boolFields)){
+                                       $values[] = intval($row[$fieldName]);
+                               } else {
+                                       $values[] = $row[$fieldName];
+                               }
+                       }
                }
 
                // レコードを追加
index 5773165..d4686ac 100644 (file)
Binary files a/widgets/admin_main/include/locale/ja_JP.mo and b/widgets/admin_main/include/locale/ja_JP.mo differ
index 7fe913a..e25f84e 100644 (file)
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-04-15 23:08+0900\n"
-"PO-Revision-Date: 2014-04-15 23:08+0900\n"
+"POT-Creation-Date: 2014-04-19 22:09+0900\n"
+"PO-Revision-Date: 2014-04-19 22:11+0900\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: ja_JP\n"
@@ -248,7 +248,7 @@ msgstr "追加CSSクラス"
 #: ../container/admin_mainSmenudefWidgetContainer.php:151
 #: ../container/admin_mainTemplistWidgetContainer.php:559
 #: ../container/admin_mainUserlistWidgetContainer.php:138
-#: ../container/admin_mainWidgetlistWidgetContainer.php:777
+#: ../container/admin_mainWidgetlistWidgetContainer.php:875
 msgid "Update"
 msgstr "更新"
 
@@ -309,7 +309,7 @@ msgstr "メール送信に失敗しました。メールアドレス:"
 
 #: ../container/admin_mainConfigsiteWidgetContainer.php:170
 #: ../container/admin_mainTemplistWidgetContainer.php:220
-#: ../container/admin_mainWidgetlistWidgetContainer.php:267
+#: ../container/admin_mainWidgetlistWidgetContainer.php:271
 #, php-format
 msgid "You are not allowed to write temporary directory. (directory: %s)"
 msgstr "一時ディレクトリに書き込み権限がありません。(ディレクトリ: %s)"
@@ -324,15 +324,15 @@ msgstr "画像の作成に失敗しました"
 
 #: ../container/admin_mainConfigsiteWidgetContainer.php:244
 #: ../container/admin_mainTemplistWidgetContainer.php:308
-#: ../container/admin_mainWidgetlistWidgetContainer.php:397
-#: ../container/admin_mainWidgetlistWidgetContainer.php:416
+#: ../container/admin_mainWidgetlistWidgetContainer.php:401
+#: ../container/admin_mainWidgetlistWidgetContainer.php:420
 msgid "Failed in uploading file."
 msgstr "ファイルのアップロードに失敗しました"
 
 #: ../container/admin_mainConfigsiteWidgetContainer.php:251
 #: ../container/admin_mainEditmenuWidgetContainer.php:330
 #: ../container/admin_mainTemplistWidgetContainer.php:316
-#: ../container/admin_mainWidgetlistWidgetContainer.php:424
+#: ../container/admin_mainWidgetlistWidgetContainer.php:428
 #, php-format
 msgid ""
 "Uploded file not found. (detail: The file may be over maximum size to be "
@@ -771,7 +771,7 @@ msgstr "未設定"
 #: ../container/admin_mainUserlistWidgetContainer.php:149
 #: ../container/admin_mainUserlistWidgetContainer.php:303
 #: ../container/admin_mainUserlistWidgetContainer.php:371
-#: ../container/admin_mainWidgetlistWidgetContainer.php:546
+#: ../container/admin_mainWidgetlistWidgetContainer.php:621
 #: ../help/help_menudef.php:43 ../help/help_userlist.php:47
 msgid "Name"
 msgstr "名前"
@@ -805,13 +805,13 @@ msgstr "管理メニュー定義ファイル"
 
 #: ../container/admin_mainEditmenuWidgetContainer.php:204
 #: ../container/admin_mainTemplistWidgetContainer.php:453
-#: ../container/admin_mainWidgetlistWidgetContainer.php:556
+#: ../container/admin_mainWidgetlistWidgetContainer.php:631
 msgid "Upload"
 msgstr "アップロード"
 
 #: ../container/admin_mainEditmenuWidgetContainer.php:205
 #: ../container/admin_mainTemplistWidgetContainer.php:561
-#: ../container/admin_mainWidgetlistWidgetContainer.php:779
+#: ../container/admin_mainWidgetlistWidgetContainer.php:877
 msgid "Download"
 msgstr "ダウンロード"
 
@@ -892,7 +892,7 @@ msgstr "パス:"
 #: ../container/admin_mainTemplistWidgetContainer.php:560
 #: ../container/admin_mainUserlistWidgetContainer.php:137
 #: ../container/admin_mainUserlistWidgetContainer.php:160
-#: ../container/admin_mainWidgetlistWidgetContainer.php:778
+#: ../container/admin_mainWidgetlistWidgetContainer.php:876
 msgid "Delete"
 msgstr "削除"
 
@@ -955,7 +955,7 @@ msgstr "ファイルを選択"
 
 #: ../container/admin_mainFilebrowseWidgetContainer.php:211
 #: ../container/admin_mainTemplistWidgetContainer.php:454
-#: ../container/admin_mainWidgetlistWidgetContainer.php:557
+#: ../container/admin_mainWidgetlistWidgetContainer.php:632
 msgid "Cancel"
 msgstr "キャンセル"
 
@@ -1197,7 +1197,7 @@ msgstr "編集"
 #: ../container/admin_mainPagedefWidgetContainer.php:138
 #: ../container/admin_mainSmenudefWidgetContainer.php:170
 #: ../container/admin_mainTemplistWidgetContainer.php:450
-#: ../container/admin_mainWidgetlistWidgetContainer.php:552
+#: ../container/admin_mainWidgetlistWidgetContainer.php:627
 #: ../help/help_menudef.php:67 ../help/help_templist.php:59
 #: ../help/help_widgetlist.php:59
 msgid "Operation"
@@ -1584,17 +1584,17 @@ msgid "Save"
 msgstr "保存"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:57
-#: ../container/admin_mainWidgetlistWidgetContainer.php:52
+#: ../container/admin_mainWidgetlistWidgetContainer.php:53
 msgid "For PC"
 msgstr "PC用"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:58
-#: ../container/admin_mainWidgetlistWidgetContainer.php:53
+#: ../container/admin_mainWidgetlistWidgetContainer.php:54
 msgid "For Mobile"
 msgstr "携帯用"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:59
-#: ../container/admin_mainWidgetlistWidgetContainer.php:54
+#: ../container/admin_mainWidgetlistWidgetContainer.php:55
 msgid "For Smartphone"
 msgstr "スマートフォン用"
 
@@ -1628,7 +1628,7 @@ msgid "Failed in deleting template directory. (directory: %s)"
 msgstr "テンプレートのディレクトリが削除できませんでした。(ディレクトリ: %s)"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:213
-#: ../container/admin_mainWidgetlistWidgetContainer.php:260
+#: ../container/admin_mainWidgetlistWidgetContainer.php:264
 msgid "Only zip format file is allowed to upload."
 msgstr "zip圧縮のファイルのみアップロード可能です"
 
@@ -1653,13 +1653,13 @@ msgid "Failed in moving directory. (directory: %s)"
 msgstr "ディレクトリの移動に失敗しました。(ディレクトリ: %s)"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:356
-#: ../container/admin_mainWidgetlistWidgetContainer.php:464
+#: ../container/admin_mainWidgetlistWidgetContainer.php:468
 #, php-format
 msgid "Failed in downloading file. (detail: %s)"
 msgstr "ファイルのアップロードに失敗しました。(要因: %s)"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:436
-#: ../container/admin_mainWidgetlistWidgetContainer.php:537
+#: ../container/admin_mainWidgetlistWidgetContainer.php:611
 msgid "Update line?"
 msgstr "行を更新しますか?"
 
@@ -1668,12 +1668,12 @@ msgid "Delete tmplate?"
 msgstr "テンプレートを削除しますか?"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:438
-#: ../container/admin_mainWidgetlistWidgetContainer.php:539
+#: ../container/admin_mainWidgetlistWidgetContainer.php:613
 msgid "File not selected."
 msgstr "アップロードするファイルが選択されていません"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:439
-#: ../container/admin_mainWidgetlistWidgetContainer.php:540
+#: ../container/admin_mainWidgetlistWidgetContainer.php:614
 msgid "Upload file."
 msgstr "ファイルをアップロードします"
 
@@ -1683,12 +1683,12 @@ msgid "Template List"
 msgstr "テンプレート一覧"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:442
-#: ../container/admin_mainWidgetlistWidgetContainer.php:543
+#: ../container/admin_mainWidgetlistWidgetContainer.php:618
 msgid "Install Directory:"
 msgstr "インストールディレクトリ:"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:443
-#: ../container/admin_mainWidgetlistWidgetContainer.php:544
+#: ../container/admin_mainWidgetlistWidgetContainer.php:619
 #: ../help/help_templist.php:71 ../help/help_widgetlist.php:71
 msgid "Reload directory"
 msgstr "ディレクトリ再読み込み"
@@ -1711,7 +1711,7 @@ msgid "Template Upload (zip compressed file)"
 msgstr "テンプレートアップロード(zip圧縮ファイル)"
 
 #: ../container/admin_mainTemplistWidgetContainer.php:452
-#: ../container/admin_mainWidgetlistWidgetContainer.php:554
+#: ../container/admin_mainWidgetlistWidgetContainer.php:629
 msgid "Select file to upload."
 msgstr "アップロードするファイルを選択してください"
 
@@ -1884,134 +1884,155 @@ msgstr "パスワード送信"
 msgid "Account"
 msgstr "アカウント"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:174
+#: ../container/admin_mainWidgetlistWidgetContainer.php:175
 #, php-format
 msgid "New widgets added. (widgets count=%d)"
 msgstr "新規ウィジェットを追加しました(追加数=%d)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:177
+#: ../container/admin_mainWidgetlistWidgetContainer.php:178
 msgid "No new widgets added."
 msgstr "新規ウィジェットはありません"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:188
+#: ../container/admin_mainWidgetlistWidgetContainer.php:192
 msgid "Line updated."
 msgstr "データを更新しました"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:190
+#: ../container/admin_mainWidgetlistWidgetContainer.php:194
 msgid "Failed in updating line."
 msgstr "データ更新に失敗しました"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:218
+#: ../container/admin_mainWidgetlistWidgetContainer.php:222
 #, php-format
 msgid "Widget deleted. (widget ID: %s)"
 msgstr "ウィジェットを削除しました。(ウィジェットID: %s)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:221
+#: ../container/admin_mainWidgetlistWidgetContainer.php:225
 #, php-format
 msgid "Failed in deleting widget directory. (directory: %s)"
 msgstr "ウィジェットのディレクトリが削除できませんでした。(ディレクトリ: %s)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:225
+#: ../container/admin_mainWidgetlistWidgetContainer.php:229
 #, php-format
 msgid "You are not allowed to delete widget directory. (directory: %s)"
 msgstr "ウィジェットのディレクトリの削除権限がありません。(ディレクトリ: %s)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:229
-#: ../container/admin_mainWidgetlistWidgetContainer.php:728
+#: ../container/admin_mainWidgetlistWidgetContainer.php:233
+#: ../container/admin_mainWidgetlistWidgetContainer.php:806
 msgid "Widget not found."
 msgstr "ウィジェットが見つかりません"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:276
+#: ../container/admin_mainWidgetlistWidgetContainer.php:280
 #, php-format
 msgid "The widget already exists. (widget ID: %s)"
 msgstr "ウィジェットがすでに存在します。(ウィジェットID: %s)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:306
+#: ../container/admin_mainWidgetlistWidgetContainer.php:310
 #, php-format
 msgid "Failed in getting file list from zip file. (detail: %s)"
 msgstr "zipファイルの内容のリスト取得に失敗しました。(要因:: %s)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:318
+#: ../container/admin_mainWidgetlistWidgetContainer.php:322
 msgid "Failed in deleting widget directory."
 msgstr "ウィジェットのディレクトリが削除できませんでした"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:381
+#: ../container/admin_mainWidgetlistWidgetContainer.php:385
 msgid "Widget installed successfully."
 msgstr "ウィジェットのインストールが完了しました。"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:385
+#: ../container/admin_mainWidgetlistWidgetContainer.php:389
+#: ../container/admin_mainWidgetlistWidgetContainer.php:540
 msgid "Widget updated successfully."
 msgstr "ウィジェットの更新が完了しました。"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:389
+#: ../container/admin_mainWidgetlistWidgetContainer.php:393
 #, php-format
 msgid "Current version is %s."
 msgstr "バージョンは%sです。"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:393
+#: ../container/admin_mainWidgetlistWidgetContainer.php:397
 #, php-format
 msgid "File uploaded. (widget ID: %s)"
 msgstr "ファイルのアップロードが完了しました。(ウィジェットID: %s)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:404
+#: ../container/admin_mainWidgetlistWidgetContainer.php:408
 #, php-format
 msgid "Failed in uploading file. (detail: %s)"
 msgstr "ファイルのアップロードに失敗しました。(要因: %s)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:410
+#: ../container/admin_mainWidgetlistWidgetContainer.php:414
 msgid "The zip filename is different from directory name."
 msgstr ""
 "zipファイルのファイル名とディレクトリ名が異なっているか、全角文字が含まれてい"
 "ます"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:485
+#: ../container/admin_mainWidgetlistWidgetContainer.php:489
 msgid "Latest widget information gotten."
 msgstr "最新のウィジェット情報を取得しました"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:536
+#: ../container/admin_mainWidgetlistWidgetContainer.php:543
+msgid "Failed in updating widget."
+msgstr "ウィジェットの更新に失敗しました"
+
+#: ../container/admin_mainWidgetlistWidgetContainer.php:550
+msgid "Connection count is over the limit. Wait a minute, connect again."
+msgstr "接続回数の上限を超えました。しばらく待ってから再度接続してください"
+
+#: ../container/admin_mainWidgetlistWidgetContainer.php:552
+msgid "Failed in connecting to GitHub."
+msgstr "GitHubへの接続に失敗しました"
+
+#: ../container/admin_mainWidgetlistWidgetContainer.php:557
+msgid "The widget is already the latest version."
+msgstr "ウィジェットはすでに最新バージョンです"
+
+#: ../container/admin_mainWidgetlistWidgetContainer.php:610
 msgid "Get new information of widgets?"
 msgstr "ウィジェットの最新情報を取得しますか?"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:538
+#: ../container/admin_mainWidgetlistWidgetContainer.php:612
 msgid "Delete widget?"
 msgstr "ウィジェットを削除しますか?"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:541
+#: ../container/admin_mainWidgetlistWidgetContainer.php:615
+msgid "Update widget?"
+msgstr "ウィジェットを更新しますか?"
+
+#: ../container/admin_mainWidgetlistWidgetContainer.php:616
 #: ../help/help_widgetlist.php:31
 msgid "Widget List"
 msgstr "ウィジェット一覧"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:547
+#: ../container/admin_mainWidgetlistWidgetContainer.php:622
 msgid "Version"
 msgstr "バージョン"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:548
+#: ../container/admin_mainWidgetlistWidgetContainer.php:623
 msgid "Latest"
 msgstr "最新"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:549
+#: ../container/admin_mainWidgetlistWidgetContainer.php:624
 #: ../help/help_widgetlist.php:51
 msgid "Available"
 msgstr "配置可"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:550
+#: ../container/admin_mainWidgetlistWidgetContainer.php:625
 #: ../help/help_widgetlist.php:55
 msgid "Active"
 msgstr "実行可"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:551
+#: ../container/admin_mainWidgetlistWidgetContainer.php:626
 msgid "Release Date"
 msgstr "リリース日"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:553
+#: ../container/admin_mainWidgetlistWidgetContainer.php:628
 msgid "Widget Upload (zip compressed file)"
 msgstr "ウィジェットアップロード(zip圧縮ファイル)"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:555
+#: ../container/admin_mainWidgetlistWidgetContainer.php:630
 msgid "Replace widget if exists."
 msgstr "ウィジェットが存在する場合は置き換え"
 
-#: ../container/admin_mainWidgetlistWidgetContainer.php:776
+#: ../container/admin_mainWidgetlistWidgetContainer.php:874
 msgid "Configure"
 msgstr "設定"
 
index 60f9503..208be5b 100644 (file)
@@ -44,6 +44,13 @@ function detailline(widgetId){
        m3ShowStandardWindow("?cmd=configwidget&openby=all&widget=" + widgetId);
        return false;
 }
+function updateWidget(widgetId){
+       if (!window.confirm('{_LC_MSG_UPDATE_WIDGET}')) return false;
+       document.main.act.value = 'updatewidget';
+       document.main.widget.value = widgetId;
+       document.main.submit();
+       return false;
+}
 function uploadCheck(){
        if (!document.upload.upfile.value){
                alert('{_LC_MSG_NO_UPLOAD_FILE}');