CKEditorStyleParser::parse PHP Method

parse() public static method

public static parse ( $css )
    public static function parse($css)
    {
        $css = preg_replace('/\\/\\*.*?\\*\\//s', '', $css);
        $data = array();
        $size = strlen($css);
        for ($i = 0; $i < $size; $i++) {
            $selector = '';
            $code = '';
            $comment = '';
            for (; $i < $size && $css[$i] !== '#'; $i++) {
            }
            for ($i++; $i < $size && $css[$i] !== "\n"; $i++) {
                $comment .= $css[$i];
            }
            $i += 1;
            for (; $i < $size && $css[$i] !== '{'; $i++) {
                $selector .= $css[$i];
            }
            for ($i++; $i < $size && $css[$i] !== '}'; $i++) {
                if ($css[$i] === '\'' || $css[$i] === '"') {
                    $code .= $css[$i];
                    $i++;
                    $code .= self::readString($css[$i - 1], $css, $size, $i);
                }
                $code .= $css[$i];
            }
            $selector = trim($selector);
            $data[] = array('name' => trim($comment) . '(' . $selector . ')', 'element' => trim($selector), 'styles' => self::parseCode($code));
        }
        return $data;
    }

Usage Example

 /**
  * [ADMIN] 固定ページ情報編集
  *
  * @param int $id (page_id)
  * @return void
  */
 public function admin_edit($id)
 {
     if (!$id && empty($this->request->data)) {
         $this->setMessage('無効なIDです。', true);
         $this->redirect(['action' => 'index']);
     }
     if (empty($this->request->data)) {
         $this->request->data = $this->Page->read(null, $id);
     } else {
         $isChangedStatus = $this->Content->isChangedStatus($id, $this->request->data);
         if (empty($this->request->data['Page']['page_type'])) {
             $this->request->data['Page']['page_type'] = 1;
         }
         // EVENT Pages.beforeEdit
         $event = $this->dispatchEvent('beforeEdit', ['data' => $this->request->data]);
         if ($event !== false) {
             $this->request->data = $event->result === true ? $event->data['data'] : $event->result;
         }
         $this->Page->set($this->request->data);
         if ($data = $this->Page->save()) {
             // タイトル、URL、公開状態が更新された場合、全てビューキャッシュを削除する
             if ($isChangedStatus) {
                 clearViewCache();
             } else {
                 clearViewCache($this->request->data['Content']['url']);
             }
             // 完了メッセージ
             $this->setMessage('固定ページ「' . $this->request->data['Content']['name'] . '」を更新しました。', false, true);
             // EVENT Pages.afterEdit
             $this->dispatchEvent('afterEdit', ['data' => $data]);
             // 同固定ページへリダイレクト
             $this->redirect(['action' => 'edit', $id]);
         } else {
             $this->setMessage('入力エラーです。内容を修正してください。', true);
         }
     }
     // 公開リンク
     $publishLink = '';
     if ($this->request->data['Content']['url']) {
         $publishLink = $this->request->data['Content']['url'];
     }
     // エディタオプション
     $editorOptions = ['editorDisableDraft' => false];
     if (!empty($this->siteConfigs['editor_styles'])) {
         App::uses('CKEditorStyleParser', 'Vendor');
         $CKEditorStyleParser = new CKEditorStyleParser();
         $editorOptions = array_merge($editorOptions, ['editorStylesSet' => 'default', 'editorStyles' => ['default' => $CKEditorStyleParser->parse($this->siteConfigs['editor_styles'])]]);
     }
     // ページテンプレートリスト
     $pageTemplateList = $this->Page->getPageTemplateList($this->request->data['Content']['id'], $this->siteConfigs['theme']);
     $this->set(compact('editorOptions', 'pageTemplateList', 'publishLink'));
     if (!empty($this->request->data['Content']['title'])) {
         $this->pageTitle = '固定ページ情報編集:' . $this->request->data['Content']['title'];
     } else {
         $this->pageTitle = '固定ページ情報編集:' . Inflector::Classify($this->request->data['Content']['name']);
     }
     $this->help = 'pages_form';
     $this->render('form');
 }
All Usage Examples Of CKEditorStyleParser::parse