Exemplo n.º 1
0
function smarty_function_wysiwyg($params = array(), $smarty)
{
    $name = 'ckeditor_content';
    $content = '';
    $defaults = array();
    //--------------------------
    //------ инициализация опций ----------
    // Установим инструментальную панель
    $defaults['type_toolbar'] = 'medium';
    // Установим парметры подключения файлового менеджера
    $defaults['filebrowserBrowseUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/browse.php?type=files');
    $defaults['filebrowserImageBrowseUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/browse.php?type=images');
    $defaults['filebrowserFlashBrowseUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/browse.php?type=flash');
    $defaults['filebrowserUploadUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/upload.php?type=files');
    $defaults['filebrowserImageUploadUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/upload.php?type=images');
    $defaults['filebrowserFlashUploadUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/upload.php?type=flash');
    // Установим язык интерфейса
    $defaults['language'] = Default_Plugin_SysBox::getTranslateLocale();
    // Установим высоту окна редактора
    $defaults['height'] = 300;
    foreach ($defaults as $k => $v) {
        $params[$k] = array_key_exists($k, $params) ? $params[$k] : $v;
    }
    $params['toolbar'] = getToolbar($params['type_toolbar']);
    if (isset($params['name'])) {
        $name = $params['name'];
    }
    if (isset($params['content'])) {
        $content = $params['content'];
    }
    $basePath = Default_Plugin_SysBox::getUrlRes('/js/ckeditor/') . '/';
    //------------- создание редактора --------------
    // При создании редактоа он скрывает textarea
    // но создает новый конпонент textarea с атрибутами в свойстве - textareaAttributes
    $ckeditor = new Default_Plugin_CkEditor($basePath);
    // Скроем вновь созданный элемент textarea
    $ckeditor->textareaAttributes = array("style" => "visibility: hidden; display: none;");
    $ckeditor->editor($name, $content, $params);
}
Exemplo n.º 2
0
 /**
  * Getting the code reference and the calendar image. Configure calendar.
  *
  * @return string
  */
 private function _getCalendarLink()
 {
     $request = new Zend_Controller_Request_Http();
     $basePath = $request->getBasePath();
     $locale = Default_Plugin_SysBox::getTranslateLocale();
     $dateFormat = $locale == 'en' ? '%m.%d.%Y' : '%d.%m.%Y';
     //--------------------------
     $calendarLink = '
         <a href="#" id="' . $this->getElement()->getName() . '_calendar">' . '<img class="calendar-image" src = "' . Default_Plugin_SysBox::getUrlRes('/js/calendar/calendar.gif') . '">
         </a>
 
         <script type="text/javascript">
             Calendar.setup(
               {
                 inputField  : "' . $this->getElement()->getName() . '",
                 ifFormat    : "' . $dateFormat . '",
                 button      : "' . $this->getElement()->getName() . '_calendar",
                 firstDay    : 1
               }
             );
         </script>
     ';
     return $calendarLink;
 }
Exemplo n.º 3
0
 /**
  * Initialization form
  */
 public function init()
 {
     parent::init();
     //---------------- Форма ----------------
     // Указываем action формы
     $urlAction = $this->getUrl('edit', 'blogmanager');
     $urlAction .= '?id=' . $this->post->getId();
     $this->setAction($urlAction);
     //Зададим метод передачи данных
     $this->setMethod('post');
     // Задаем атрибут class для формы
     $this->setAttrib('class', 'myfrm');
     $this->setAttrib('id', 'blogpost-form');
     //------------ Добавим краткое название блога --------------
     $elTitle = new Zend_Form_Element_Text('title', array('label' => 'Название', 'maxlength' => '255', 'size' => '60', 'required' => true, 'validators' => array(array('StringLength', true, array(0, 255))), 'filters' => array(array('StringTrim'), array('StripTags'))));
     //Установим название, если блог существует
     $this->addElement($elTitle);
     if ($this->post->profile->title) {
         $this->setDefault('title', $this->post->profile->title);
     }
     //---------------- Дата создания записи в блоге ----------------
     // Элемент "Дата создания". Элемент содержит нестандартный декоратор - javascript календарь
     $elDatePost = new Zend_Form_Element_Text('ts_created', array('label' => 'Дата создания', 'maxlength' => '10', 'required' => true, 'validators' => array(array('Date', true, array('locale' => $this->_language))), 'filters' => array('StringTrim')));
     // Удаляем все существующие декораторы, назначенные по умолчанию
     $elDatePost->clearDecorators();
     // Назначаем новые, включая наш декоратор Calendar
     // Это необходимо для того что бы изображение календаря размещалось сразу за полем ввода
     $elDatePost->addDecorator('ViewHelper')->addDecorator('Calendar')->addDecorator('Errors')->addDecorator('HtmlTag', array('tag' => 'dd'))->addDecorator('Label', array('tag' => 'dt'));
     $this->addElement($elDatePost);
     //Установим дату по умолчанию
     //        $tsCreated = $this->post->ts_created;
     $locale = Default_Plugin_SysBox::getTranslateLocale();
     $format = Default_Plugin_SimpleDate::get_format_display_date($locale);
     $sd = new Default_Plugin_SimpleDate($this->post->ts_created);
     $this->setDefault('ts_created', $sd->to_display_date($format));
     //---------- Добавим элемент описания сообщения в блоге ------------
     //$this->addElement('textarea', 'content', array(
     $elDescription = new Zend_Form_Element_Textarea('ckeditor_description', array('label' => $this->Translate('Краткое описание сообщения') . ':', 'required' => false, 'validators' => array(), 'filters' => array('Sanitize')));
     $this->addElement($elDescription);
     //Установим краткое описание сообщения, если оно существует
     if ($this->post->profile->description) {
         $this->setDefault('ckeditor_description', $this->post->profile->description);
     }
     //---------- Добавим элемент содержания блога ------------
     //$this->addElement('textarea', 'content', array(
     $elContent = new Zend_Form_Element_Textarea('ckeditor_content', array('label' => $this->Translate('Ваше сообщение') . ':', 'required' => true, 'filters' => array('Sanitize')));
     $this->addElement($elContent);
     //Установим содержания блога, если оно существует
     if ($this->post->profile->content) {
         $this->setDefault('ckeditor_content', $this->post->profile->content);
     }
     //-------- Добавим кнопки --------------
     //Установим значение кнопки сохранить
     $this->addElement('submit', 'save', array('ignore' => true, 'label' => 'Сохранить'));
     $this->getElement('save')->setAttrib('class', 'btn btn-primary');
     //Перезапишем стандартные декораторы, для размещения двух кнопок рядом
     $this->getElement('save')->setDecorators(array('ViewHelper'));
     //Установим значение кнопки закрыть
     $this->addElement('submit', 'close', array('ignore' => true, 'label' => 'Закрыть'));
     $this->getElement('close')->setAttrib('class', 'btn');
     //Перезапишем стандартные декораторы, для размещения двух кнопок рядом
     $this->getElement('close')->setDecorators(array('ViewHelper'));
     //---------------- Группа данные блога ----------------
     // Группируем элементы
     // Группа полей связанных с авторизационными данными
     $this->addDisplayGroup(array('title', 'ts_created', 'ckeditor_description', 'ckeditor_content', 'save', 'close'), 'blogDataGroup', array('legend' => 'Подробная информация'));
 }
Exemplo n.º 4
0
/**
 * 
 * Get locale
 * 
 * @param Smarty $smarty
 * @return string 
 */
function smarty_function_getlang($smarty)
{
    return Default_Plugin_SysBox::getTranslateLocale();
}
Exemplo n.º 5
0
 /**
  * Action - edit
  * edit post
  * 
  * 
  * Access to the action is possible in the following paths:
  * - /blogmanager/edit
  *
  * @return void
  */
 public function editAction()
 {
     $request = $this->getRequest();
     $post_id = (int) $request->getQuery('id');
     $username = $this->_identity->username;
     $formBlogPost = new Default_Form_BlogPost($this->db, $this->_identity->user_id, $post_id);
     // Проверим тип запроса, если POST значит пришли данные формы
     if ($this->_request->isPost()) {
         // Если выходим из редактора сообщения
         if ($this->_request->getPost('close')) {
             if ($formBlogPost->post->isSaved()) {
                 //Перейдем на предварительный просмотр сообщения
                 $url = '/blogmanager/preview' . '?id=' . $formBlogPost->post->getId();
                 $this->_redirect($url);
             } else {
                 //Перейдем на управление блогом
                 $url = '/blogmanager';
                 $this->_redirect($url);
             }
         }
         // Проверяем на валидность поля формы
         $result = $formBlogPost->isValid($this->_getAllParams());
         if ($result) {
             // Get locale
             $locale = Default_Plugin_SysBox::getTranslateLocale();
             // Get timestamp
             $post_created = $formBlogPost->getValue('ts_created');
             $zDate = new Zend_Date($post_created, null, $locale);
             $timestamp = $zDate->get(Zend_date::TIMESTAMP);
             // Set post 'ts_created' to timestamp
             $formBlogPost->post->ts_created = $timestamp;
             //Получим заголовок сообщения
             $formBlogPost->post->profile->title = $formBlogPost->getValue('title');
             //Получим краткое описание сообщения
             $formBlogPost->post->profile->description = $formBlogPost->getValue('ckeditor_description');
             //Получим тело сообщение
             $content = $formBlogPost->getValue('ckeditor_content');
             $formBlogPost->post->profile->content = $content;
             // Если нет предварительного просмотра, то
             // установи признак публикации статьи в блоге
             $title = $formBlogPost->getValue('title');
             if ($formBlogPost->post->isSaved()) {
                 if ($formBlogPost->post->isLive()) {
                     $message = 'Сообщение отредактировано и опубликовано в блог.';
                     $message_log = "User-\"{$username}\" message-\"{$title}\" has been edited and published it in the blog";
                 } else {
                     $message = 'Сообщение отредактировано но не опубликовано в блог.';
                     $message_log = "User-\"{$username}\" message-\"{$title}\" has been edited but not posted to the blog";
                 }
             } else {
                 if ($formBlogPost->post->isLive()) {
                     $message = 'Создано новое сообщение и опубликовано в блог.';
                     $message_log = "User-\"{$username}\" creates a new message-\"{$title}\" and posted to the blog";
                 } else {
                     $message = 'Создано новое сообщение но не опубликовано в блог.';
                     $message_log = "User-\"{$username}\" creates a new message-\"{$title}\" but not published in the blog";
                 }
             }
             //Сохраним данные post
             if ($formBlogPost->post->save()) {
                 // Запомним в логе сообщений
                 $this->_logMsg->post_edit($message_log);
                 //Добавим сообщение о создании сообщения
                 $this->_flashMessenger->addMessage($this->Translate($message));
                 //Перейдем на предварительный просмотр сообщения
                 $url = '/blogmanager/preview' . '?id=' . $formBlogPost->post->getId();
                 $this->_redirect($url);
             } else {
                 // Ошибка в сообщении пользователя! Сообщение пользователя не соответствует стандарту XHTML.
                 $this->view->class_message = 'warning';
                 $this->view->message = $this->Translate('Ошибка в сообщении пользователя! Сообщение пользователя не соответствует стандарту XHTML.');
             }
         } else {
             // неверно заполнены поля формы
             $this->view->class_message = 'warning';
             $this->view->message = $this->getFormMessages($formBlogPost);
         }
     }
     //Добавим путь к действию
     if ($formBlogPost->post->isSaved()) {
         $this->_breadcrumbs->addStep($this->Translate('Просмотр сообщения') . ': ' . $formBlogPost->post->profile->title, $this->getUrl('preview') . '?id=' . $formBlogPost->post->getId());
         $this->_breadcrumbs->addStep($this->Translate('Редактировать сообщение в блоге'));
     } else {
         $this->_breadcrumbs->addStep($this->Translate('Создать новое сообщение в блоге'));
     }
     $this->view->formBlogPost = $formBlogPost;
 }
Exemplo n.º 6
0
 /**
  * Get text markdown markup file
  * file is selected according to the localization
  * 
  * @param array $params Set params for [filename, content, type]
  * @return string
  */
 public function getMarkdown($params)
 {
     $arBox = new Default_Plugin_ArrayBox();
     $strBox = new Default_Plugin_String();
     $filename = isset($params['filename']) ? $params['filename'] : '';
     $strFile = isset($params['content']) ? $params['content'] : '';
     $type = isset($params['type']) ? $params['type'] : 'github';
     //Type of Markdown: traditional, github, extra
     $title = '';
     $locale = Default_Plugin_SysBox::getTranslateLocale();
     $locale = $locale == 'uk' ? 'ru' : $locale;
     $title = "";
     $filename = trim($filename);
     $filename = str_replace('\\', '/', $filename);
     //-------------------------------------------
     if ($filename) {
         if (is_file($filename)) {
             $lastFilename = $arBox->set($filename, "/")->getLast();
             // Set title
             $title = $lastFilename;
             // Check word in uppercase
             $upperFilename = $strBox->set($lastFilename)->toUpper()->get();
             $isUpper = $arBox->set($lastFilename, ".")->get(0) == $arBox->set($upperFilename, ".")->get(0);
             if ($isUpper) {
                 $locale = strtoupper($locale);
             }
             // Get the name of the file to a different locale
             $lastFilename = $arBox->set($lastFilename, ".")->get(0) . "-{$locale}.md";
             $localeFilename = $arBox->set($filename, "/")->pop()->join('/') . "/{$lastFilename}";
             // Get file content
             if (is_file($localeFilename)) {
                 // Set title
                 $title = $lastFilename;
                 $strFile = file_get_contents($localeFilename);
             } else {
                 $strFile = file_get_contents($filename);
             }
         } else {
             // Get file name
             $filename = APPLICATION_TEMPLATES . "/{$this->_params['controller']}/{$filename}";
             if (!is_file($filename)) {
                 throw new Exception("File '{$filename}' does not exist.");
             }
             $lastFilename = $arBox->set($filename, "/")->getLast();
             // Set title
             $title = $lastFilename;
             // Check word in uppercase
             $upperFilename = $strBox->set($lastFilename)->toUpper()->get();
             $isUpper = $arBox->set($lastFilename, ".")->get(0) == $arBox->set($upperFilename, ".")->get(0);
             if ($isUpper) {
                 $locale = strtoupper($locale);
             }
             // Get the name of the file to a different locale
             $lastFilename = $arBox->set($lastFilename, ".")->get(0) . "-{$locale}.md";
             $localeFilename = $arBox->set($filename, "/")->pop()->join('/') . "/{$lastFilename}";
             // Get file content
             if (is_file($localeFilename)) {
                 // Set title
                 $title = $lastFilename;
                 $strFile = file_get_contents($localeFilename);
             } else {
                 $strFile = file_get_contents($filename);
             }
         }
     }
     switch ($type) {
         case 'traditional':
             $markdown = new \cebe\markdown\Markdown();
             break;
         case 'github':
             $markdown = new \cebe\markdown\GithubMarkdown();
             break;
         case 'extra':
             $markdown = new \cebe\markdown\MarkdownExtra();
             break;
         default:
             break;
     }
     // Get markdown parser text
     $text = $markdown->parse($strFile);
     // Get content
     $content = array('title' => $title, 'text' => "<div class=\"markdown-body\">{$text}</div>");
     return $content;
 }
Exemplo n.º 7
0
 /**
  * Initialization form
  * 
  * return void
  */
 public function init()
 {
     parent::init();
     // Получим объект переводчика
     $translate = Zend_Registry::get('Zend_Translate');
     // Задаем объект переводчика для формы
     $this->setTranslator($translate);
     /* Specifies the prefix for samopisnyh elements, validators, filters, and decorators.
        This Zend Form will know where to find our custom items */
     $this->addElementPrefixPath('Default_Form_Validate', APPLICATION_PATH . '/forms/validate/', 'validate');
     $this->addElementPrefixPath('Default_Form_Filter', APPLICATION_PATH . '/forms/filter/', 'filter');
     $this->addElementPrefixPath('Default_Form_Decorator', APPLICATION_PATH . '/forms/decorator/', 'decorator');
     $this->addPrefixPath('Default_Form_Element', APPLICATION_PATH . '/forms/element/', 'element');
     // Получим язык сайта
     $this->_language = Default_Plugin_SysBox::getTranslateLocale();
     // Set
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $identity = $auth->getIdentity();
         $this->_user_type = $identity->user_type;
     } else {
         $this->_user_type = 'guest';
     }
 }