Index: /branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design.php
===================================================================
--- /branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design.php	(revision 20764)
+++ /branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design.php	(revision 20830)
@@ -28,5 +28,4 @@
  * デザイン管理 のページクラス.
  *
- * ターゲットID 0:未使用 1:レフトナビ 2:ライトナビ 3:イン画面上部 4:メイン画面下部  5:画面上部 6:画面下部 7:ヘッダより上 8:フッタより下 9:HEADタグ内 10:ヘッダ内部
  * @package Page
  * @author LOCKON CO.,LTD.
@@ -68,56 +67,19 @@
      * Page のアクション.
      *
-     * TODO パラメータの数値チェック
-     *
      * @return void
      */
     function action() {
         $objLayout = new SC_Helper_PageLayout_Ex();
-
-        // ページIDを取得
-        if (isset($_REQUEST['page_id']) && is_numeric($_REQUEST['page_id'])) {
-            $page_id = $_REQUEST['page_id'];
-        } else {
-            $page_id = 1; // FIXME $_REQUEST['page_id'] を受け取れない不具合時に不正処理が行なわれる原因となった
-        }
-        // 端末種別IDを取得
-        if (isset($_REQUEST['device_type_id'])
-            && is_numeric($_REQUEST['device_type_id'])) {
-            $device_type_id = $_REQUEST['device_type_id'];
-        } else {
-            $device_type_id = DEVICE_TYPE_PC;
-        }
-
-        //サブタイトルの追加
-        $this->tpl_subtitle .= ' - ' . $this->arrDeviceType[$device_type_id];
-
-        // 編集可能ページを取得
-        $this->arrEditPage = $objLayout->lfGetPageData("page_id <> 0 AND device_type_id = ?", array($device_type_id));
-
-        // レイアウト情報を取得
-        $arrBlocPos = $objLayout->lfGetNaviData($page_id, $device_type_id);
-
-        // データの存在チェックを行う
-        $arrPageData = $objLayout->lfGetPageData("page_id = ? AND device_type_id = ?", array($page_id, $device_type_id));
-
-        if (count($arrPageData) <= 0) {
-            $this->exists_page = 0;
-        }else{
-            $this->exists_page = 1;
-        }
-
-        // メッセージ表示
-        if (isset($_GET['msg']) && $_GET['msg'] == 'on') {
-            $this->complate_msg="alert('登録が完了しました。');";
-        }
-
-        // ブロックを取得
-        $objQuery = SC_Query_Ex::getSingletonInstance();
-        $arrBloc = $objQuery->select("*", "dtb_bloc", "device_type_id = ?", array($device_type_id));
+        $objFormParam = new SC_FormParam_Ex();
+        $this->lfInitParam($objFormParam, intval($_REQUEST['bloc_cnt']));
+        $objFormParam->setParam($_REQUEST);
+
+        $this->device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC);
+        $this->page_id = $objFormParam->getValue('page_id', 1);
 
         switch ($this->getMode()) {
         // 新規ブロック作成
         case 'new_bloc':
-            SC_Response_Ex::sendRedirect('bloc.php', array("device_type_id" => $device_type_id));
+            SC_Response_Ex::sendRedirect('bloc.php', array("device_type_id" => $this->device_type_id));
             exit;
             break;
@@ -125,95 +87,23 @@
         // 新規ページ作成
         case 'new_page':
-            SC_Response_Ex::sendRedirect('main_edit.php', array("device_type_id" => $device_type_id));
+            SC_Response_Ex::sendRedirect('main_edit.php', array("device_type_id" => $this->device_type_id));
             exit;
             break;
 
+        // プレビュー
+        case 'preview':
+            $this->placingBlocs($objFormParam, true);
+            $filename = $this->savePreviewData($this->page_id, $objLayout);
+            $_SESSION['preview'] = 'ON';
+            SC_Response_Ex::sendRedirectFromUrlPath('preview/' . DIR_INDEX_PATH, array('filename' => $filename));
+            exit;
+
+        // 編集実行
         case 'confirm':
-        case 'preview':
-            //TODO 要リファクタリング(MODE if利用)
-            $page_id = $_POST['page_id'];
-            if ($this->getMode() == 'preview') {
-                $page_id = '0';
-            }
-
-            // 更新用にデータを整える
-            $arrUpdBlocData = array();
-
-            // delete実行
-            $arrRet = $objQuery->delete("dtb_blocposition",
-                                        "page_id = ? AND device_type_id = ?",
-                                        array($page_id, $device_type_id));
-
-            $arrTargetFlip = array_flip($this->arrTarget);
-
-            // POSTのデータを使いやすいように修正
-            for ($upd_cnt = 1; $upd_cnt <= $_POST['bloc_cnt']; $upd_cnt++) {
-                if (!isset($_POST['id_'.$upd_cnt])) {
-                    break;
-                }
-
-                // ブロック名称
-                $arrUpdBlocData[$upd_cnt]['name']       = $_POST['name_'.$upd_cnt];
-                // ブロックID
-                $arrUpdBlocData[$upd_cnt]['id']         = $_POST['id_'.$upd_cnt];
-                // ターゲットID
-                $arrUpdBlocData[$upd_cnt]['target_id']  = $arrTargetFlip[$_POST['target_id_'.$upd_cnt]];
-                // TOP座標
-                $arrUpdBlocData[$upd_cnt]['top']        = $_POST['top_'.$upd_cnt];
-                // 全ページ適用か
-                $arrUpdBlocData[$upd_cnt]['anywhere']   = $_POST['anywhere_'.$upd_cnt];
-                // 更新URL
-                $arrUpdBlocData[$upd_cnt]['update_url'] = $_SERVER['HTTP_REFERER'];
-            }
-
-            // ブロックの順序を取得し、更新を行う
-            foreach ($arrUpdBlocData as $key => $val) {
-                if ($arrUpdBlocData[$key]['target_id'] == TARGET_ID_UNUSED) {
-                    continue;
-                }
-
-                // ブロックの順序を取得
-                $arrUpdBlocData[$key]['bloc_row'] = $this->lfGetRowID($arrUpdBlocData, $val);
-
-                // insertデータ生成
-                $arrInsData = array('device_type_id' => $device_type_id,
-                                    'page_id' => $page_id,
-                                    'target_id' => $arrUpdBlocData[$key]['target_id'],
-                                    'bloc_id' => $arrUpdBlocData[$key]['id'],
-                                    'bloc_row' => $arrUpdBlocData[$key]['bloc_row'],
-                                    'anywhere' => $arrUpdBlocData[$key]['anywhere'] ? 1 : 0);
-                $count = $objQuery->getOne("SELECT COUNT(*) FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ? AND device_type_id = ?",
-                                           array($arrUpdBlocData[$key]['id'], $device_type_id));
-
-                if ($arrUpdBlocData[$key]['anywhere'] == 1) {
-                    $count = $objQuery->getOne("SELECT COUNT(*) FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ? AND device_type_id = ?",
-                                               array($arrUpdBlocData[$key]['id'], $device_type_id));
-                    if ($count != 0) {
-                        continue;
-                    }
-                } else {
-                    if ($count > 0) {
-                        $objQuery->query("DELETE FROM dtb_blocposition WHERE anywhere = 1 AND bloc_id = ? AND device_type_id = ?",
-                                         array($arrUpdBlocData[$key]['id'], $device_type_id));
-                    }
-                }
-                // SQL実行
-                $arrRet = $objQuery->insert("dtb_blocposition", $arrInsData);
-            }
-
-            // プレビュー処理 TODO 要リファクタリング(MODE if利用)
-            if ($this->getMode() == 'preview') {
-                $this->lfSetPreData($arrPageData, $objLayout);
-
-                $_SESSION['preview'] = 'ON';
-
-                SC_Response_Ex::sendRedirectFromUrlPath('preview/' . DIR_INDEX_PATH, array('filename' => $arrPageData[0]['filename']));
-                exit;
-
-            } else {
-                $arrQueryString = array("device_type_id" => $device_type_id, "page_id" => $page_id, 'msg' => 'on');
-                SC_Response_Ex::reload($arrQueryString, true);
-                exit;
-            }
+            $this->placingBlocs($objFormParam);
+            $arrQueryString = array("device_type_id" => $this->device_type_id, "page_id" => $this->page_id, 'msg' => 'on');
+            SC_Response_Ex::reload($arrQueryString, true);
+            exit;
+
         break;
 
@@ -221,7 +111,7 @@
         case 'delete':
             //ベースデータでなければファイルを削除
-            if (!$objLayout->lfCheckBaseData($page_id, $device_type_id)) {
-                $objLayout->lfDelPageData($page_id, $device_type_id);
-                SC_Response_Ex::reload(array('device_type_id' => $device_type_id), true);
+            if ($objLayout->isEditablePage($this->device_type_id, $this->page_id)) {
+                $objLayout->lfDelPageData($this->page_id, $this->device_type_id);
+                SC_Response_Ex::reload(array('device_type_id' => $this->device_type_id), true);
                 exit;
             }
@@ -229,44 +119,18 @@
 
         default:
-        }
-
-        // ブロック情報を画面配置用に編集
-        $tpl_arrBloc = array();
-        $cnt = 0;
-        // 使用されているブロックデータを生成
-        foreach($arrBlocPos as $key => $val){
-            if ($val['page_id'] == $page_id) {
-                $tpl_arrBloc = $this->lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt);
-                $cnt++;
-            }
-        }
-        // 未使用のブロックデータを追加
-        foreach($arrBloc as $key => $val){
-            if (!$this->lfChkBloc($val, $tpl_arrBloc)) {
-                $val['target_id'] = TARGET_ID_UNUSED; // 未使用に追加する
-                $tpl_arrBloc = $this->lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt);
-                $cnt++;
-            }
-        }
-
-        $this->tpl_arrBloc = $tpl_arrBloc;
-        $this->bloc_cnt = count($tpl_arrBloc);
-        $this->page_id = $page_id;
-        $this->device_type_id = $device_type_id;
-
-        // ページ名称を取得
-        $arrPageData = $objLayout->lfGetPageData('page_id = ? AND device_type_id = ?', array($page_id, $device_type_id));
-        $this->arrPageData = $arrPageData[0];
-
-        global $GLOBAL_ERR;
-        $errCnt = 0;
-        if ($GLOBAL_ERR != "") {
-            $arrGlobalErr = explode("\n",$GLOBAL_ERR);
-            $errCnt = count($arrGlobalErr) - 8;
-            if ($errCnt < 0 ) {
-                $errCnt = 0;
-            }
-        }
-        $this->errCnt = $errCnt;
+            // 完了メッセージ表示
+            if (isset($_GET['msg']) && $_GET['msg'] == 'on') {
+                $this->tpl_onload="alert('登録が完了しました。');";
+            }
+        }
+
+        $this->arrBlocs = $this->getLayout($this->device_type_id, $this->page_id, $objLayout);
+        $this->bloc_cnt = count($this->arrBlocs);
+        // 編集中のページ
+        $this->arrPageData = $objLayout->getPageProperties($this->device_type_id, $this->page_id);
+        // 編集可能ページ一覧
+        $this->arrEditPage = $objLayout->getPageProperties($this->device_type_id, null);
+        //サブタイトルを取得
+        $this->tpl_subtitle .= ' - ' . $this->arrDeviceType[$this->device_type_id];
     }
 
@@ -281,140 +145,150 @@
 
     /**
-     * ブロック情報の配列を生成する.
-     *
-     * @param array $arrBloc Bloc情報
-     * @param array $tpl_arrBloc データをセットする配列
-     * @param array $val DBから取得したブロック情報
+     * フォームパラメータの初期化を行う.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス.
+     * @param integer $bloc_cnt ブロック数
+     * @return void
+     */
+    function lfInitParam(&$objFormParam, $bloc_cnt = 0) {
+        $objFormParam->addParam("ページID", "page_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("端末種別ID", "device_type_id", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("ブロック数", "bloc_cnt", INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+
+        for ($i = 1; $i <= $bloc_cnt; $i++) {
+            $objFormParam->addParam("ブロック名", "name_" . $i, STEXT_LEN, 'a', array("MAX_LENGTH_CHECK", "GRAPH_CHECK"));
+            $objFormParam->addParam("ブロックID", "id_" . $i, INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+            $objFormParam->addParam("ターゲットID", "target_id_" . $i, STEXT_LEN, 'a', array("MAX_LENGTH_CHECK", "ALNUM_CHECK"));
+            $objFormParam->addParam("TOP座標", "top_" . $i, INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+            $objFormParam->addParam("全ページ", "anywhere_" . $i, INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        }
+    }
+
+    /**
+     * ブロックのレイアウト情報を取得する.
+     *
+     * @param integer $device_type_id 端末種別ID
+     * @param integer $page_id ページID
+     * @param SC_Helper_PageLayout $objLayout SC_Helper_PageLayout インスタンス
+     * @return array レイアウト情報の配列
+     */
+    function getLayout($device_type_id, $page_id, &$objLayout) {
+        $arrResults = array();
+        $i = 0;
+
+        // レイアウト済みのブロックデータを追加
+        $arrBlocPos = $objLayout->getBlocPositions($device_type_id, $page_id);
+        foreach($arrBlocPos as $arrBloc){
+            $this->copyBloc($arrResults, $arrBloc, $i);
+            $i++;
+        }
+
+        // 未使用のブロックデータを追加
+        $arrBloc = $objLayout->getBlocs($device_type_id);
+        foreach($arrBloc as $arrBloc){
+            if (!$this->existsBloc($arrBloc, $arrResults)) {
+                $arrBloc['target_id'] = TARGET_ID_UNUSED;
+                $this->copyBloc($arrResults, $arrBloc, $i);
+                $i++;
+            }
+        }
+        return $arrResults;
+    }
+
+    /**
+     * ブロック情報の配列をコピーする.
+     *
+     * @param array $arrDest コピー先ブロック情報
+     * @param array $arrFrom コピー元ブロック情報
      * @param integer $cnt 配列番号
-     * @return array データをセットした配列
-     */
-    function lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt) {
-
-        $tpl_arrBloc[$cnt]['target_id'] = $this->arrTarget[$val['target_id']];
-        $tpl_arrBloc[$cnt]['bloc_id'] = $val['bloc_id'];
-        $tpl_arrBloc[$cnt]['bloc_row'] =
-        isset($val['bloc_row']) ? $val['bloc_row'] : "";
-        $tpl_arrBloc[$cnt]['anywhere'] = $val['anywhere'];
-        if($val['anywhere'] == 1){
-            $tpl_arrBloc[$cnt]['anywhere_selected'] = 'checked="checked"';
-        }
-        foreach($arrBloc as $bloc_key => $bloc_val){
-            if ($bloc_val['bloc_id'] == $val['bloc_id']) {
-                $bloc_name = $bloc_val['bloc_name'];
-                break;
-            }
-        }
-        $tpl_arrBloc[$cnt]['name'] = $bloc_name;
-
-        return $tpl_arrBloc;
-    }
-
-    /**
-     * ブロックIDが配列に追加されているかのチェックを行う.
-     *
-     * @param array $arrBloc Bloc情報
-     * @param array $arrChkData チェックを行うデータ配列
+     * @return void
+     */
+    function copyBloc(&$arrDest, $arrFrom, $cnt) {
+        $arrDest[$cnt]['target_id'] = $this->arrTarget[$arrFrom['target_id']];
+        $arrDest[$cnt]['bloc_id'] = $arrFrom['bloc_id'];
+        $arrDest[$cnt]['bloc_row'] = $arrFrom['bloc_row'];
+        $arrDest[$cnt]['anywhere'] = $arrFrom['anywhere'];
+        $arrDest[$cnt]['name'] = $arrFrom['bloc_name'];
+    }
+
+    /**
+     * ブロックIDがコピー先の配列に追加されているかのチェックを行う.
+     *
+     * @param array $arrBloc ブロックの配列
+     * @param array $arrToBlocs チェックを行うデータ配列
      * @return bool 存在する場合 true
      */
-    function lfChkBloc($arrBloc, $arrChkData) {
-        foreach($arrChkData as $key => $val){
-            if ($val['bloc_id'] === $arrBloc['bloc_id'] ) {
-                // 配列に存在すればTrueを返す
+    function existsBloc($arrBloc, $arrToBlocs) {
+        foreach($arrToBlocs as $arrToBloc){
+            if ($arrBloc['bloc_id'] === $arrToBloc['bloc_id'] ) {
                 return true;
             }
         }
-
-        // 配列に存在しなければFlaseを返す
         return false;
     }
 
     /**
-     * ブロックIDが何番目に配置されているかを調べる.
-     *
-     * @param array $arrUpdData 更新情報
-     * @param array $arrObj チェックを行うデータ配列
-     * @return integer 順番
-     */
-    function lfGetRowID($arrUpdData, $arrObj){
-        $no = 0; // カウント用（同じデータが必ず1件あるので、初期値は0）
-
-        // 対象データが何番目に配置されているのかを取得する。
-        foreach ($arrUpdData as $key => $val) {
-            if ($val['target_id'] === $arrObj['target_id'] and $val['top'] <= $arrObj['top']){
-                $no++;
-            }
-        }
-        // 番号を返す
-        return $no;
-    }
-
-    /**
      * プレビューするデータを DB に保存する.
      *
-     * FIXME
-     *
-     * @param array $arrPageData ページ情報の配列
-     * @return void
-     */
-    function lfSetPreData($arrPageData, &$objLayout){
-        $objQuery = new SC_Query_Ex();     // DB操作オブジェクト
-        $sql = "";                      // データ更新SQL生成用
-        $ret = "";                      // データ更新結果格納用
-        $arrUpdData = array();          // 更新データ生成用
-        $filename = $arrPageData[0]['filename'];
-
-        $arrPreData = $objLayout->lfgetPageData(" page_id = ? " , array("0"));
-
-        // XXX tplファイルの削除
-        $del_tpl = USER_REALDIR . "templates/" . $filename . '.tpl';
-
-        if (file_exists($del_tpl)){
-            unlink($del_tpl);
-        }
-
-        // filename が空の場合にはMYページと判断
-        if($filename == ""){
-            $tplfile = TEMPLATE_REALDIR . "mypage/index";
-            $filename = 'mypage';
-        } else {
-            $tplfile = TEMPLATE_REALDIR . $filename;
-        }
-
-        // プレビュー用tplファイルのコピー
-        $copyTo = USER_REALDIR . "templates/preview/" . TEMPLATE_NAME . "/" . $filename . ".tpl";
-
-        if (!is_dir(dirname($copyTo))) {
-            mkdir(dirname($copyTo));
-        }
-
-        copy($tplfile . ".tpl", $copyTo);
-
-        // 更新データの取得
-        $sql = "select page_id,page_name, header_chk, footer_chk from dtb_pagelayout where page_id = ? OR page_id = ANY (SELECT page_id FROM dtb_blocposition WHERE anywhere = 1)" ;
-
-        $ret = $objQuery->getAll($sql, array($arrPageData[0]['page_id']));
-
-        // dbデータのコピー
-        $sql = " update dtb_pagelayout set ";
-        $sql .= "     page_name = ?";
-        $sql .= "     ,header_chk = ?";
-        $sql .= "     ,footer_chk = ?";
-        $sql .= "     ,url = ?";
-        $sql .= "     ,filename = ?";
-//      $sql .= "     ,anywhere = ?";
-        $sql .= " where page_id = 0";
-        var_dump($ret);
-                echo("####<br/>\n\n".__LINE__ ." in file:".__FILE__."<br/>\n\n ####");
-
-        $arrUpdData = array($ret[0]['page_id']
-        ,$ret[0]['page_id']
-        ,$ret[0]['page_id']
-        ,USER_DIR . "templates/" . TEMPLATE_NAME . "/"
-        ,$filename
-//      ,$ret[0]['anywhere']
-
-        );
-
-        $objQuery->query($sql,$arrUpdData);
+     * @param integer $page_id プレビューを行うページID
+     * @param SC_Helper_PageLayout $objLayout SC_Helper_PageLayout インスタンス
+     * @return string プレビューを行う tpl_mainpage ファイル名
+     */
+    function savePreviewData($page_id, &$objLayout){
+        $arrPageData = $objLayout->getPageProperties(DEVICE_TYPE_PC, $page_id);
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $arrPageData[0]['page_id'] = 0;
+        $objQuery->update('dtb_pagelayout', $arrPageData[0], 'page_id = 0 AND device_type_id = ?', array(DEVICE_TYPE_PC));
+        return $arrPageData[0]['filename'];
+    }
+
+    /**
+     * ブロックを配置する.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @param boolean $is_preview プレビュー時の場合 true
+     * @return void
+     */
+    function placingBlocs(&$objFormParam, $is_preview = false) {
+        $page_id = $is_preview ? 0 : $objFormParam->getValue('page_id');
+        $device_type_id = $objFormParam->getValue('device_type_id');
+        $bloc_cnt = $objFormParam->getValue('bloc_cnt');
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $objQuery->begin();
+        $objQuery->delete("dtb_blocposition", "page_id = ? AND device_type_id = ?",
+                          array($page_id, $device_type_id));
+        $arrTargetFlip = array_flip($this->arrTarget);
+        var_dump($objFormParam->getHashArray());
+        var_dump($_POST);
+        for ($i = 1; $i <= $bloc_cnt; $i++) {
+            // bloc_id が取得できない場合は INSERT しない
+            $id = $objFormParam->getValue('id_' . $i);
+            if (SC_Utils_Ex::isBlank($id)) {
+                continue;
+            }
+            // 未使用は INSERT しない
+            $arrParams['target_id']  = $arrTargetFlip[$objFormParam->getValue('target_id_' . $i)];
+            if ($arrParams['target_id'] == TARGET_ID_UNUSED) {
+                continue;
+            }
+
+            // 他のページに anywhere が存在する場合は INSERT しない
+            $arrParams['anywhere'] = intval($objFormParam->getValue('anywhere_' . $i));
+            if ($arrParams['anywhere'] == 1) {
+                $count = $objQuery->count('dtb_blocposition', 'anywhere = 1 AND bloc_id = ? AND device_type_id = ?',
+                                          array($id, $device_type_id));
+                if ($count > 0) {
+                    continue;
+                }
+            }
+
+            $arrParams['device_type_id'] = $device_type_id;
+            $arrParams['page_id'] = $page_id;
+            $arrParams['bloc_id'] = $id;
+            $arrParams['bloc_row'] = $objFormParam->getValue('top_' . $i);
+
+            $objQuery->insert("dtb_blocposition", $arrParams);
+        }
+        $objQuery->commit();
     }
 }
Index: /branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
===================================================================
--- /branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php	(revision 20813)
+++ /branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php	(revision 20830)
@@ -92,6 +92,5 @@
 
         // ページ一覧を取得
-        $this->arrPageList = $this->objLayout->lfGetPageData("page_id <> 0 AND device_type_id = ?",
-                                                             array($device_type_id));
+        $this->arrPageList = $this->objLayout->getPageProperties($device_type_id, null);
 
         // メッセージ表示
@@ -107,5 +106,5 @@
         switch ($this->getMode()) {
         case 'delete':
-            if (!$this->objLayout->lfCheckBaseData($page_id, $device_type_id)) {
+            if ($this->objLayout->isEditablePage($device_type_id, $page_id)) {
                 $this->lfDeletePageData($page_id, $device_type_id);
                 exit;
@@ -138,6 +137,5 @@
      */
     function lfGetPageData($page_id, $device_type_id, $objView){
-        $arrPageData = $this->objLayout->lfGetPageData("page_id = ? AND device_type_id = ?",
-                                                       array($page_id, $device_type_id));
+        $arrPageData = $this->objLayout->getPageProperties($device_type_id, $page_id);
 
         if (strlen($arrPageData[0]['filename']) == 0) {
@@ -183,9 +181,9 @@
             $page_id = $arrTmp['page_id'];
 
-            $arrTmp = $this->objLayout->lfGetPageData('page_id = ? AND device_type_id = ?', array($page_id, $device_type_id));
+            $arrTmp = $this->objLayout->getPageProperties($device_type_id, $page_id);
             $arrData = $arrTmp[0];
 
             // ベースデータでなければファイルを削除し、PHPファイルを作成する
-            if (!$this->objLayout->lfCheckBaseData($arrData['page_id'], $device_type_id)) {
+            if ($this->objLayout->isEditablePage($device_type_id, $arrData['page_id'])) {
                 // PHPファイル作成
                 $this->lfCreatePHPFile($_POST['url'], $device_type_id);
@@ -231,6 +229,5 @@
         // データが存在しているかチェックを行う
         if ($page_id !== ''){
-            $arrChk = $this->objLayout->lfGetPageData("page_id = ? AND device_type_id = ?",
-                                                      array($page_id, $device_type_id));
+            $arrChk = $this->objLayout->getPageProperties($device_type_id, $page_id);
         }
 
@@ -273,5 +270,5 @@
 
         // ベースデータの場合には変更しない。
-        if (!$this->objLayout->lfCheckBaseData($page_id, $device_type_id)) {
+        if ($this->objLayout->isEditablePage($device_type_id, $page_id)) {
             $arrUpdData['page_name']    = $page_name;
             $arrUpdData['url']          = $filename . '.php';
@@ -295,4 +292,6 @@
     /**
      * 入力項目のエラーチェックを行う.
+     *
+     * XXX $device_type_id が dtb_pagelayout の検索条件に入ってない
      *
      * @param array $arrData 入力データ
@@ -334,5 +333,6 @@
         }
 
-        $arrChk = $this->objLayout->lfgetPageData($sqlWhere , $params);
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $arrChk = $objQuery->select('*', 'dtb_pagelayout', $sqlWhere, $params);
 
         if (count($arrChk) >= 1) {
Index: /branches/version-2_11-dev/data/class/SC_FormParam.php
===================================================================
--- /branches/version-2_11-dev/data/class/SC_FormParam.php	(revision 20764)
+++ /branches/version-2_11-dev/data/class/SC_FormParam.php	(revision 20830)
@@ -415,5 +415,5 @@
             $cnt++;
         }
-        if(is_null($ret)){
+        if(SC_Utils_Ex::isBlank($ret)){
             $ret = $default;
         }
Index: /branches/version-2_11-dev/data/class/helper/SC_Helper_PageLayout.php
===================================================================
--- /branches/version-2_11-dev/data/class/helper/SC_Helper_PageLayout.php	(revision 20764)
+++ /branches/version-2_11-dev/data/class/helper/SC_Helper_PageLayout.php	(revision 20830)
@@ -35,9 +35,11 @@
 
     /**
-     * ページのレイアウト情報をセットする.
-     *
-     * LC_Page オブジェクトにページのレイアウト情報をセットする.
-     *
-     * @param LC_Page $objPage ページ情報のインスタンス
+     * ページのレイアウト情報を取得し, 設定する.
+     *
+     * 現在の URL に応じたページのレイアウト情報を取得し, LC_Page インスタンスに
+     * 設定する.
+     *
+     * @access public
+     * @param LC_Page $objPage LC_Page インスタンス
      * @param boolean $preview プレビュー表示の場合 true
      * @param string $url ページのURL($_SERVER['PHP_SELF'] の情報)
@@ -46,67 +48,107 @@
      */
     function sfGetPageLayout(&$objPage, $preview = false, $url = "", $device_type_id = DEVICE_TYPE_PC) {
-        $debug_message = "";
-        $arrPageLayout = array();
-
-        // 現在のURLの取得
+
+        // URLを元にページ情報を取得
         if ($preview === false) {
             $url = preg_replace('|^' . preg_quote(ROOT_URLPATH) . '|', '', $url);
-
-            // URLを元にページデザインを取得
-            $arrPageData = $this->lfGetPageData("device_type_id = ? AND url = ? AND page_id <> 0" , array($device_type_id, $url));
-        } else {
-            // TODO
-            $arrPageData = $this->lfGetPageData("device_type_id = ? AND page_id = 0", array($device_type_id));
-            $objPage->tpl_mainpage = $this->getTemplatePath($device_type_id) 
-                . "preview/" . $arrPageData[0]['filename'] . ".tpl";
-        }
-
-        $arrPageLayout = $arrPageData[0];
-
-        $objPage->tpl_mainpage = $this->getTemplatePath($device_type_id) . $arrPageLayout['filename'] . ".tpl";
+            $arrPageData = $this->getPageProperties($device_type_id, null, 'url = ?', array($url));
+        }
+        // プレビューの場合は, プレビュー用のデータを取得
+        else {
+            $arrPageData = $this->getPageProperties($device_type_id, 0);
+        }
+        $objPage->tpl_mainpage = $this->getTemplatePath($device_type_id) . $arrPageData[0]['filename'] . ".tpl";
+        $objPage->arrPageLayout =& $arrPageData[0];
 
         // ページタイトルを設定
-        if (!isset($objPage->tpl_title)) {
-            $objPage->tpl_title = $arrPageLayout['page_name'];
-        }
-
-        // 全ナビデータを取得する
-        $arrNavi = $this->lfGetNaviData($arrPageLayout['page_id'], $device_type_id);
+        if (SC_Utils_Ex::isBlank($objPage->tpl_title)) {
+            $objPage->tpl_title = $objPage->arrPageLayout['page_name'];
+        }
+
+        // 該当ページのブロックを取得し, 配置する
         $masterData = new SC_DB_MasterData();
         $arrTarget = $masterData->getMasterData("mtb_target");
-
-        foreach (array_keys($arrTarget) as $key) {
-            if (TARGET_ID_UNUSED != $key) {
-                $arrPageLayout[$arrTarget[$key]]
-                    = $this->lfGetNavi($arrNavi, $key, $device_type_id);
+        $arrBlocs = $this->getBlocPositions($device_type_id, $objPage->arrPageLayout['page_id']);
+        // php_path, tpl_path が存在するものを, 各ターゲットに配置
+        foreach (array_keys($arrTarget) as $target_id) {
+            foreach ($arrBlocs as $arrBloc) {
+                if ($arrBloc['target_id'] != $target_id) {
+                    continue;
+                }
+                if (is_file($arrBloc['php_path'])
+                    || is_file($arrBloc['tpl_path'])) {
+                    $objPage->arrPageLayout[$arrTarget[$target_id]][] = $arrBloc;
+                } else {
+                    $error = "ブロックが見つかりません\n"
+                        . "tpl_path: " . $arrBloc['tpl_path'] . "\n"
+                        . "php_path: " . $arrBloc['php_path'];
+                    GC_Utils_Ex::gfPrintLog($error);
+                }
             }
         }
-        $objPage->arrPageLayout = $arrPageLayout;
-
         // カラム数を取得する
-        $objPage->tpl_column_num = $this->lfGetColumnNum($arrPageLayout);
-    }
-
-    /**
-     * ページ情報を取得する.
-     *
-     * @param string $where クエリのWHERE句
-     * @param array $arrVal WHERE句の条件値
-     * @return array ページ情報を格納した配列
-     */
-    function lfGetPageData($where = 'page_id <> 0', $arrVal = array()) {
-        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $objPage->tpl_column_num = $this->getColumnNum($objPage->arrPageLayout);
+    }
+
+    /**
+     * ページの属性を取得する.
+     *
+     * この関数は, dtb_pagelayout の情報を検索する.
+     * $device_type_id は必須. デフォルト値は DEVICE_TYPE_PC.
+     * $page_id が null の場合は, $page_id が 0 以外のものを検索する.
+     *
+     * @access public
+     * @param integer $device_type_id 端末種別ID
+     * @param integer $page_id ページID; null の場合は, 0 以外を検索する.
+     * @param string $where 追加の検索条件
+     * @param array $arrParams 追加の検索パラメータ
+     * @return array ページ属性の配列
+     */
+    function getPageProperties($device_type_id = DEVICE_TYPE_PC, $page_id = null, $where = '', $arrParams = array()) {
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $where = 'device_type_id = ? ' . (SC_Utils_Ex::isBlank($where) ? $where : 'AND ' . $where);
+        if ($page_id === null) {
+            $where = 'page_id <> ? AND ' . $where;
+            $page_id = 0;
+        } else {
+            $where = 'page_id = ? AND ' . $where;
+        }
         $objQuery->setOrder('page_id');
-        return $objQuery->select("*", "dtb_pagelayout", $where, $arrVal);
-    }
-
-    /**
-     * ナビ情報を取得する.
-     *
+        $arrParams = array_merge(array($page_id, $device_type_id), $arrParams);
+        return $objQuery->select('*', 'dtb_pagelayout', $where, $arrParams);
+    }
+
+    /**
+     * ブロック情報を取得する.
+     *
+     * @access public
+     * @param integer $device_type_id 端末種別ID
+     * @param string $where 追加の検索条件
+     * @param array $arrParams 追加の検索パラメータ
+     * @param boolean $has_realpath php_path, tpl_path の絶対パスを含める場合 true
+     * @return array ブロック情報の配列
+     */
+    function getBlocs($device_type_id = DEVICE_TYPE_PC, $where = '', $arrParams = array(), $has_realpath = true) {
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        $where = 'device_type_id = ? ' . (SC_Utils_Ex::isBlank($where) ? $where : 'AND ' . $where);
+        $arrParams = array_merge(array($device_type_id), $arrParams);
+        $objQuery->setOrder('bloc_id');
+        $arrBlocs = $objQuery->select('*', 'dtb_bloc', $where, $arrParams);
+        if ($has_realpath) {
+            $this->setBlocPathTo($device_type_id, $arrBlocs);
+        }
+        return $arrBlocs;
+    }
+
+    /**
+     * ブロック配置情報を取得する.
+     *
+     * @access public
+     * @param integer $device_type_id 端末種別ID
      * @param integer $page_id ページID
-     * @param integer $device_type_id 端末種別ID
-     * @return array ナビ情報の配列
-     */
-    function lfGetNaviData($page_id, $device_type_id = DEVICE_TYPE_PC) {
+     * @param boolean $has_realpath php_path, tpl_path の絶対パスを含める場合 true
+     * @return array 配置情報を含めたブロックの配列
+     */
+    function getBlocPositions($device_type_id, $page_id, $has_realpath = true) {
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $table = <<< __EOF__
@@ -118,54 +160,10 @@
         $where = "bloc.device_type_id = ? AND (anywhere = 1 OR pos.page_id = ?)";
         $objQuery->setOrder('target_id, bloc_row');
-        return $objQuery->select("*", $table, $where,
-                                 array($device_type_id, $page_id));
-    }
-
-    /**
-     * 各部分のナビ情報を取得する.
-     *
-     * @param array $arrNavi ナビ情報の配列
-     * @param integer $target_id ターゲットID
-     * @param integer $device_type_id 端末種別ID
-     * @return array ブロック情報の配列
-     */
-    function lfGetNavi($arrNavi, $target_id, $device_type_id = DEVICE_TYPE_PC) {
-        $arrRet = array();
-        if (is_array($arrNavi)) {
-            foreach ($arrNavi as $key => $val) {
-                // 指定された箇所と同じデータだけを取得する
-                if ($target_id == $val['target_id'] ) {
-                    if ($val['php_path'] != '') {
-                        $arrNavi[$key]['php_path'] = HTML_REALDIR . $val['php_path'];
-                    } else {
-                        $arrNavi[$key]['tpl_path'] = $this->getTemplatePath($device_type_id) . BLOC_DIR . $val['tpl_path'];
-                    }
-                    // phpから呼び出されるか、tplファイルが存在する場合
-                    if ($val['php_path'] != '' || is_file($arrNavi[$key]['tpl_path'])) {
-                        $arrRet[] = $arrNavi[$key];
-                    } else {
-                        GC_Utils_Ex::gfPrintLog("ブロック読み込みエラー：" . $arrNavi[$key]['tpl_path']);
-                    }
-                }
-            }
-        }
-        return $arrRet;
-    }
-
-    /**
-     * カラム数を取得する.
-     *
-     * @param array $arrPageLayout レイアウト情報の配列
-     * @return integer $col_num カラム数
-     */
-    function lfGetColumnNum($arrPageLayout) {
-        // メインは確定
-        $col_num = 1;
-        // LEFT NAVI
-        if (count($arrPageLayout['LeftNavi']) > 0) $col_num++;
-        // RIGHT NAVI
-        if (count($arrPageLayout['RightNavi']) > 0) $col_num++;
-
-        return $col_num;
+        $arrBlocs = $objQuery->select("*", $table, $where,
+                                      array($device_type_id, $page_id));
+        if ($has_realpath) {
+            $this->setBlocPathTo($device_type_id, $arrBlocs);
+        }
+        return $arrBlocs;
     }
 
@@ -173,4 +171,7 @@
      * ページ情報を削除する.
      *
+     * XXX ファイルを確実に削除したかどうかのチェック
+     *
+     * @access public
      * @param integer $page_id ページID
      * @param integer $device_type_id 端末種別ID
@@ -183,6 +184,5 @@
         // page_id が空でない場合にはdeleteを実行
         if ($page_id != '') {
-
-            $arrPageData = $this->lfGetPageData("page_id = ? AND device_type_id = ?" , array($page_id, $device_type_id));
+            $arrPageData = $this->getPageProperties($device_type_id, $page_id);
             // SQL実行
             $ret = $objQuery->delete("dtb_pagelayout", "page_id = ? AND device_type_id = ?", array($page_id, $device_type_id));
@@ -198,4 +198,6 @@
      *
      * dtb_pagelayout の削除後に呼び出すこと。
+     *
+     * @access private
      * @param string $filename 
      * @param integer $device_type_id 端末種別ID
@@ -224,29 +226,29 @@
 
     /**
-     * データがベースデータかどうか.
-     *
+     * 編集可能ページかどうか.
+     *
+     * @access public
+     * @param integer $device_type_id 端末種別ID
      * @param integer $page_id ページID
-     * @param integer $device_type_id 端末種別ID
-     * @return boolean ベースデータの場合 true
-     */
-    function lfCheckBaseData($page_id, $device_type_id) {
-        $result = false;
-
+     * @return 編集可能ページの場合 true
+     */
+    function isEditablePage($device_type_id, $page_id) {
         if ($page_id == 0) {
-            return $result;
-        }
-
-        $arrChkData = $this->lfgetPageData("page_id = ? AND device_type_id = ?",
-            array($page_id, $device_type_id));
-
-        if ($arrChkData[0]['edit_flg'] == 2) {
-            $result = true;
-        }
-
-        return $result;
+            return false;
+        }
+        $arrPages = $this->getPageProperties($device_type_id, $page_id);
+        if ($arrPages[0]['edit_flg'] != 2) {
+            return true;
+        }
+        return false;
     }
 
     /**
      * テンプレートのパスを取得する.
+     *
+     * @access public
+     * @param integer $device_type_id 端末種別ID
+     * @param boolean $isUser USER_REALDIR 以下のパスを返す場合 true
+     * @return string テンプレートのパス
      */
     function getTemplatePath($device_type_id = DEVICE_TYPE_PC, $isUser = false) {
@@ -281,4 +283,5 @@
      * を取得する.
      *
+     * @access public
      * @param integer $device_type_id 端末種別ID
      * @param boolean $hasPackage パッケージのパスも含める場合 true
@@ -305,4 +308,42 @@
         return $userDir;
     }
+
+    // }}}
+    // {{{ private functions
+
+    /**
+     * ブロックの php_path, tpl_path を設定する.
+     *
+     * @access private
+     * @param integer $device_type_id 端末種別ID
+     * @param array $arrBlocs 設定するブロックの配列
+     * @return void
+     */
+    function setBlocPathTo($device_type_id = DEVICE_TYPE_PC, &$arrBlocs) {
+        foreach (array_keys($arrBlocs) as $key) {
+            $arrBloc =& $arrBlocs[$key];
+            $arrBloc['php_path'] = SC_Utils_Ex::isBlank($arrBloc['php_path']) ? '' : HTML_REALDIR . $arrBloc['php_path'];
+            $bloc_dir = $this->getTemplatePath($device_type_id) . BLOC_DIR;
+            $arrBloc['tpl_path'] = SC_Utils_Ex::isBlank($arrBloc['tpl_path']) ? '' : $bloc_dir . $arrBloc['tpl_path'];
+        }
+    }
+
+    /**
+     * カラム数を取得する.
+     *
+     * @access private
+     * @param array $arrPageLayout レイアウト情報の配列
+     * @return integer $col_num カラム数
+     */
+    function getColumnNum($arrPageLayout) {
+        // メインは確定
+        $col_num = 1;
+        // LEFT NAVI
+        if (count($arrPageLayout['LeftNavi']) > 0) $col_num++;
+        // RIGHT NAVI
+        if (count($arrPageLayout['RightNavi']) > 0) $col_num++;
+
+        return $col_num;
+    }
 }
 ?>
Index: /branches/version-2_11-dev/data/Smarty/templates/admin/design/index.tpl
===================================================================
--- /branches/version-2_11-dev/data/Smarty/templates/admin/design/index.tpl	(revision 20669)
+++ /branches/version-2_11-dev/data/Smarty/templates/admin/design/index.tpl	(revision 20830)
@@ -20,6 +20,6 @@
 <input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
 <input type="hidden" name="mode" value="" />
-<input type="hidden" name="page_id" value="<!--{$page_id}-->" />
-<input type="hidden" name="bloc_cnt" value="<!--{$bloc_cnt}-->" />
+<input type="hidden" name="page_id" value="<!--{$page_id|h}-->" />
+<input type="hidden" name="bloc_cnt" value="<!--{$bloc_cnt|h}-->" />
 <input type="hidden" name="device_type_id" value="<!--{$device_type_id|h}-->" />
 
@@ -35,5 +35,5 @@
                 <td colspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_HEAD]}-->" class="ui-sortable">
                     <!--{assign var="firstflg" value=false}-->
-                    <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                    <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                         <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_HEAD]}-->
                             <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -43,5 +43,5 @@
                                 <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                 <!--{$item.name}-->
-                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                             </div>
                             <!--{assign var="firstflg" value=true}-->
@@ -58,5 +58,5 @@
                 <td colspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_HEAD_TOP]}-->" class="ui-sortable">
                     <!--{assign var="firstflg" value=false}-->
-                    <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                    <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                         <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_HEAD_TOP]}-->
                             <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -66,5 +66,5 @@
                                 <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                 <!--{$item.name}-->
-                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                             </div>
                             <!--{assign var="firstflg" value=true}-->
@@ -79,5 +79,5 @@
                 <td colspan="2" id="<!--{$arrTarget[$smarty.const.TARGET_ID_HEADER_INTERNAL]}-->" class="ui-sortable">
                     <!--{assign var="firstflg" value=false}-->
-                    <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                    <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                         <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_HEADER_INTERNAL]}-->
                             <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -87,5 +87,5 @@
                                 <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                 <!--{$item.name}-->
-                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                             </div>
                             <!--{assign var="firstflg" value=true}-->
@@ -99,5 +99,5 @@
                 <td colspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_TOP]}-->" class="ui-sortable">
                     <!--{assign var="firstflg" value=false}-->
-                    <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                    <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                         <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_TOP]}-->
                             <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -107,5 +107,5 @@
                                 <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                 <!--{$item.name}-->
-                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                             </div>
                             <!--{assign var="firstflg" value=true}-->
@@ -121,5 +121,5 @@
                     <td colspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_MAIN_HEAD]}-->" class="ui-sortable">
                         <!--{assign var="firstflg" value=false}-->
-                        <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                        <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                             <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_MAIN_HEAD]}-->
                                 <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -129,5 +129,5 @@
                                     <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                     <!--{$item.name}-->
-                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                                 </div>
                                 <!--{assign var="firstflg" value=true}-->
@@ -146,5 +146,5 @@
                     <td colspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_MAIN_FOOT]}-->" class="ui-sortable">
                         <!--{assign var="firstflg" value=false}-->
-                        <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                        <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                             <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_MAIN_FOOT]}-->
                                 <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -154,5 +154,5 @@
                                     <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                     <!--{$item.name}-->
-                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                                 </div>
                                 <!--{assign var="firstflg" value=true}-->
@@ -166,5 +166,5 @@
                     <td rowspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_LEFT]}-->" class="ui-sortable">
                         <!--{assign var="firstflg" value=false}-->
-                        <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                        <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                             <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_LEFT]}-->
                                 <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -174,5 +174,5 @@
                                     <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                     <!--{$item.name}-->
-                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                                 </div>
                                 <!--{assign var="firstflg" value=true}-->
@@ -184,5 +184,5 @@
                     <td id="<!--{$arrTarget[$smarty.const.TARGET_ID_MAIN_HEAD]}-->" class="ui-sortable">
                         <!--{assign var="firstflg" value=false}-->
-                        <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                        <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                             <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_MAIN_HEAD]}-->
                                 <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -192,5 +192,5 @@
                                     <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                     <!--{$item.name}-->
-                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                                 </div>
                                 <!--{assign var="firstflg" value=true}-->
@@ -202,5 +202,5 @@
                     <td rowspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_RIGHT]}-->" class="ui-sortable">
                         <!--{assign var="firstflg" value=false}-->
-                        <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                        <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                             <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_RIGHT]}-->
                                 <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -210,5 +210,5 @@
                                     <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                     <!--{$item.name}-->
-                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                                 </div>
                                 <!--{assign var="firstflg" value=true}-->
@@ -227,5 +227,5 @@
                     <td id="<!--{$arrTarget[$smarty.const.TARGET_ID_MAIN_FOOT]}-->" class="ui-sortable">
                         <!--{assign var="firstflg" value=false}-->
-                        <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                        <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                             <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_MAIN_FOOT]}-->
                                 <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -235,5 +235,5 @@
                                     <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                     <!--{$item.name}-->
-                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                    <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                                 </div>
                                 <!--{assign var="firstflg" value=true}-->
@@ -248,5 +248,5 @@
                 <td colspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_BOTTOM]}-->" class="ui-sortable">
                     <!--{assign var="firstflg" value=false}-->
-                    <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                    <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                         <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_BOTTOM]}-->
                             <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -256,5 +256,5 @@
                                 <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                 <!--{$item.name}-->
-                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                             </div>
                             <!--{assign var="firstflg" value=true}-->
@@ -271,5 +271,5 @@
                 <td colspan="3" id="<!--{$arrTarget[$smarty.const.TARGET_ID_FOOTER_BOTTOM]}-->" class="ui-sortable">
                     <!--{assign var="firstflg" value=false}-->
-                    <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                    <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                         <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_FOOTER_BOTTOM]}-->
                             <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -279,5 +279,5 @@
                                 <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                 <!--{$item.name}-->
-                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}--> />全ページ)</label>
+                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                             </div>
                             <!--{assign var="firstflg" value=true}-->
@@ -300,5 +300,5 @@
                 <td id="<!--{$arrTarget[$smarty.const.TARGET_ID_UNUSED]}-->" class="ui-sortable" style="width: 145px;">
                     <!--{assign var="firstflg" value=false}-->
-                    <!--{foreach key=key item=item from=$tpl_arrBloc name="bloc_loop"}-->
+                    <!--{foreach key=key item=item from=$arrBlocs name="bloc_loop"}-->
                         <!--{if $item.target_id == $arrTarget[$smarty.const.TARGET_ID_UNUSED]}-->
                             <div class="sort<!--{if !$firstflg}--> first<!--{/if}-->">
@@ -308,5 +308,5 @@
                                 <input type="hidden" class="top" name="top_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="<!--{$item.bloc_row}-->" />
                                 <!--{$item.name}-->
-                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{$item.anywhere_selected}-->    />全ページ)</label>
+                                <label class="anywherecheck">(<input type="checkbox" class="anywhere" name="anywhere_<!--{$smarty.foreach.bloc_loop.iteration}-->" value="1" <!--{if $item.anywhere == 1}-->checked="checked"<!--{/if}--> />全ページ)</label>
                             </div>
                             <!--{assign var="firstflg" value=true}-->
@@ -322,5 +322,5 @@
             <ul>
             <!--{if $device_type_id == $smarty.const.DEVICE_TYPE_PC}-->
-                <li><a class="btn-action" href="javascript:;" name='preview' onclick="doPreview();"<!--{if $page_id == "0" or $exists_page == "0"}--> DISABLED<!--{/if}-->><span class="btn-prev">プレビュー</span></a></li>
+                <li><a class="btn-action" href="javascript:;" name='preview' onclick="doPreview();"><span class="btn-prev">プレビュー</span></a></li>
             <!--{/if}-->
                 <li><a class="btn-action" href="javascript:;" name='subm' onclick="fnTargetSelf(); fnFormModeSubmit('form1','confirm','',''); return false;"><span class="btn-next">登録する</span></a></li>
