Ejemplo n.º 1
0
    public function pageLock($args)
    {
        $lockName = $args['lockName'];
        $returnUrl = (array_key_exists('returnUrl', $args) ? $args['returnUrl'] : null);
        $ignoreEmptyLock = (array_key_exists('ignoreEmptyLock', $args) ? $args['ignoreEmptyLock'] : false);

        $uname = UserUtil::getVar('uname');

        $lockedHtml = '';

        if (!empty($lockName) || !$ignoreEmptyLock) {
            PageUtil::AddVar('javascript', 'zikula.ui');
            PageUtil::AddVar('javascript', 'system/PageLock/javascript/pagelock.js');
            PageUtil::AddVar('stylesheet', ThemeUtil::getModuleStylesheet('pagelock'));

            $lockInfo = ModUtil::apiFunc('pagelock', 'user', 'requireLock',
                    array('lockName'      => $lockName,
                    'lockedByTitle' => $uname,
                    'lockedByIPNo'  => $_SERVER['REMOTE_ADDR']));

            $hasLock = $lockInfo['hasLock'];

            if (!$hasLock) {
                $view = Zikula_View::getInstance('pagelock');
                $view->assign('lockedBy', $lockInfo['lockedBy']);
                $lockedHtml = $view->fetch('PageLock_lockedwindow.tpl');
            }
        } else {
            $hasLock = true;
        }

        $html = "<script type=\"text/javascript\">/* <![CDATA[ */ \n";

        if (!empty($lockName)) {
            if ($hasLock) {
                $html .= "document.observe('dom:loaded', PageLock.UnlockedPage);\n";
            } else {
                $html .= "document.observe('dom:loaded', PageLock.LockedPage);\n";
            }
        }

        $lockedHtml = str_replace("\n", "", $lockedHtml);
        $lockedHtml = str_replace("\r", "", $lockedHtml);

        // Use "PageLockLifetime*2/3" to add a good margin to lock timeout when pinging

        // disabled due to #2556 and #2745
        // $returnUrl = DataUtil::formatForDisplayHTML($returnUrl);

        $html .= "
PageLock.LockName = '$lockName';
PageLock.ReturnUrl = '$returnUrl';
PageLock.PingTime = " . (PageLockLifetime*2/3) . ";
PageLock.LockedHTML = '" . $lockedHtml . "';
 /* ]]> */</script>";

        PageUtil::addVar('header', $html);

        return true;
    }
Ejemplo n.º 2
0
/**
 * Smarty function to wrap Zikula_Form_View generated form controls with suitable form tags.
 *
 * @param array            $params  Parameters passed in the block tag.
 * @param string           $content Content of the block.
 * @param Zikula_Form_View $view    Reference to Zikula_Form_View object.
 *
 * @return string The rendered output.
 */
function smarty_block_form($params, $content, $view)
{
    if ($content) {
        PageUtil::AddVar('stylesheet', 'system/ThemeModule/Resources/public/css/form/style.css');
        $action = htmlspecialchars(System::getCurrentUri());
        $classString = '';
        $roleString = '';
        if (isset($params['cssClass'])) {
            $classString = "class=\"{$params['cssClass']}\" ";
        }
        if (isset($params['role'])) {
            $roleString = "role=\"{$params['role']}\" ";
        }
        $enctype = array_key_exists('enctype', $params) ? $params['enctype'] : null;
        // if enctype is not set directly, check whenever upload plugins were used;
        // if so - set proper enctype for file upload
        if (is_null($enctype)) {
            $uploadPlugins = array_filter($view->plugins, function ($plugin) {
                return $plugin instanceof Zikula_Form_Plugin_UploadInput;
            });
            if (!empty($uploadPlugins)) {
                $enctype = 'multipart/form-data';
            }
        }
        $encodingHtml = !is_null($enctype) ? " enctype=\"{$enctype}\"" : '';
        $onSubmit = isset($params['onsubmit']) ? " onSubmit=\"{$params['onsubmit']}\"" : '';
        $view->postRender();
        $formId = $view->getFormId();
        $out = "\n<form id=\"{$formId}\" {$roleString}{$classString}action=\"{$action}\" method=\"post\"{$encodingHtml}{$onSubmit}>\n    {$content}\n    <div>\n        {$view->getStateHTML()}\n        {$view->getStateDataHTML()}\n        {$view->getIncludesHTML()}\n        {$view->getCsrfTokenHtml()}\n        <input type=\"hidden\" name=\"__formid\" id=\"form__id\" value=\"{$formId}\" />\n        <input type=\"hidden\" name=\"FormEventTarget\" id=\"FormEventTarget\" value=\"\" />\n        <input type=\"hidden\" name=\"FormEventArgument\" id=\"FormEventArgument\" value=\"\" />\n        <script type=\"text/javascript\">\n        <!--\n            function FormDoPostBack(eventTarget, eventArgument)\n            {\n                var f = document.getElementById('{$formId}');\n                if (!f.onsubmit || f.onsubmit()) {\n                    f.FormEventTarget.value = eventTarget;\n                    f.FormEventArgument.value = eventArgument;\n                    f.submit();\n                }\n            }\n        // -->\n        </script>\n    </div>\n</form>\n";
        return $out;
    }
}
Ejemplo n.º 3
0
 /**
  * Event listener for 'core.postinit' event.
  * 
  * @param Zikula_Event $event
  *
  * @return void
  */
 public static function coreinit(Zikula_Event $event)
 {
     // get the module name
     $args = array();
     $args['modulename'] = ModUtil::getName();
     $module = $args['modulename'];
     // exit if Content module active - to avoid double loadings if user has given ids and functions
     if ($args['modulename'] == 'content') {
         return;
     }
     // Security check if user has COMMENT permission for scribite
     if (!SecurityUtil::checkPermission('Scribite::', "{$module}::", ACCESS_COMMENT)) {
         return;
     }
     // get passed func
     $func = FormUtil::getPassedValue('func', isset($args['func']) ? $args['func'] : null, 'GET');
     // get config for current module
     $modconfig = array();
     $modconfig = ModUtil::apiFunc('Scribite', 'user', 'getModuleConfig', array('modulename' => $args['modulename']));
     // return if module is not supported or editor is not set
     if (!$modconfig['mid'] || $modconfig['modeditor'] == '-') {
         return;
     }
     // check if current func is fine for editors or funcs is empty (or all funcs)
     if (is_array($modconfig['modfuncs']) && (in_array($func, $modconfig['modfuncs']) || $modconfig['modfuncs'][0] == 'all')) {
         $args['areas'] = $modconfig['modareas'];
         $args['editor'] = $modconfig['modeditor'];
         $scribite = ModUtil::apiFunc('Scribite', 'user', 'loader', array('modulename' => $args['modulename'], 'editor' => $args['editor'], 'areas' => $args['areas']));
         // add the scripts to page header
         if ($scribite) {
             PageUtil::AddVar('header', $scribite);
         }
     }
 }
Ejemplo n.º 4
0
/**
 * CoType
 *
 * @copyright (C) 2007, Jorn Wildt
 * @link http://www.elfisk.dk
 * @version $Id$
 * @license See license.txt
 */
function smarty_function_cotypeEditor($params, &$render)
{
    $inputId = $params['inputId'];
    $documentId = (int) $params['documentId'];
    static $firstTime = true;
    if ($firstTime) {
        PageUtil::AddVar('javascript', 'javascript/ajax/prototype.js');
        $moduleStylesheet = '../../../../' . ThemeUtil::getModuleStylesheet('cotype', 'editor.css');
        $url = System::getBaseUrl();
        $head = "<script type=\"text/javascript\">\nCoTypeStylesheet = '{$moduleStylesheet}';\nCoTypeDocumentId = {$documentId};\n</script>";
        PageUtil::AddVar('header', $head);
    }
    $firstTime = false;
    $html = "";
    return $html;
}
Ejemplo n.º 5
0
 /**
  * Display a html snippet with buttons for inserting Scribites into a textarea
  * NOTE:
  *   Zikula_DisplayHook extends Zikula\Core\Hook\DisplayHook
  *   SO - this method SHOULD be backward compatible with old hooks.
  *
  * @param DisplayHook $hook
  *
  * @return void
  */
 public function uiEdit(DisplayHook $hook)
 {
     // get the module name
     $module = $hook->getCaller();
     // Security check if user has COMMENT permission for scribite
     if (!SecurityUtil::checkPermission('Scribite::', "{$module}::", ACCESS_COMMENT)) {
         return;
     }
     // load the editor
     $scribiteheader = $this->loader(array('modulename' => $module));
     // add the scripts to page header
     if ($scribiteheader) {
         PageUtil::AddVar('header', $scribiteheader);
     }
     $response = new Zikula_Response_DisplayHook(Scribite_Version::PROVIDER_UIAREANAME, $this->view, 'hook/scribite.tpl');
     $hook->setResponse($response);
 }
 function render(&$render)
 {
     $dom = ZLanguage::getModuleDomain('mediashare');
     PageUtil::AddVar('javascript', 'javascript/ajax/prototype.js');
     PageUtil::AddVar('javascript', 'javascript/ajax/scriptaculous.js');
     PageUtil::AddVar('javascript', 'javascript/ajax/pnajax.js');
     PageUtil::AddVar('javascript', 'javascript/ajax/lightbox.js');
     PageUtil::AddVar('stylesheet', 'javascript/ajax/lightbox/lightbox.css');
     PageUtil::AddVar('javascript', 'modules/mediashare/pnjavascript/finditem.js');
     PageUtil::AddVar('stylesheet', ThemeUtil::getModuleStylesheet('mediashare'));
     $thumbnailSize = (int) pnModGetVar('mediashare', 'thumbnailSize') + 10;
     $html = "<div class=\"mediashareItemSelector\">\n<table><tr>\n";
     $mediadir = pnModAPIFunc('mediashare', 'user', 'getRelativeMediadir');
     if (!($albums = pnModAPIFunc('mediashare', 'user', 'getAllAlbums', array('albumId' => 1)))) {
         return false;
     }
     if ($this->selectedItemId != null) {
         $mediaItem = pnModAPIFunc('mediashare', 'user', 'getMediaItem', array('mediaId' => $this->selectedItemId));
         if ($mediaItem === false) {
             return false;
         }
         $selectedMediaId = $mediaItem['id'];
         $selectedAlbumId = $mediaItem['parentAlbumId'];
     } else {
         $mediaItem = null;
         $selectedMediaId = null;
         $selectedAlbumId = count($albums) > 0 ? $albums[0]['id'] : null;
     }
     $imgSrc = null;
     $itemOptionsHtml = '';
     if ($selectedAlbumId != null) {
         $items = pnModAPIFunc('mediashare', 'user', 'getMediaItems', array('albumId' => $selectedAlbumId));
         foreach ($items as $item) {
             if ($selectedMediaId == null) {
                 $selectedMediaId = $item['id'];
             }
             if ($selectedMediaId == $item['id']) {
                 $imgSrc = $mediadir . $item['thumbnailRef'];
                 $selected = ' selected="selected"';
             } else {
                 $selected = '';
             }
             $itemOptionsHtml .= "<option value=\"{$item['id']}\"{$selected}>" . DataUtil::formatForDisplay($item['title']) . "</option>\n";
         }
     }
     $html .= "<td class=\"img\" style=\"height: {$thumbnailSize}px; width: {$thumbnailSize}px;\">\n";
     if ($imgSrc != null) {
         $imgStyle = '';
     } else {
         $imgStyle = ' style="display: none"';
     }
     $html .= "<img id=\"{$this->id}_img\" src=\"{$imgSrc}\" alt=\"\"{$imgStyle}/><br/>\n";
     $html .= "</td>\n";
     $html .= "<td class=\"selector\">\n";
     $html .= "<label for=\"{$this->id}_album\">" . __('Album', $dom) . "</label><br/>";
     $html .= "<select id=\"{$this->id}_album\" name=\"{$this->inputName}_album\" onchange=\"mediashare.itemSelector.albumChanged(this,'{$this->id}', '" . $mediadir . "')\">\n";
     foreach ($albums as $album) {
         $title = '';
         for ($i = 1, $cou = (int) $album['nestedSetLevel']; $i < $cou; ++$i) {
             $title .= '+ ';
         }
         if ($selectedAlbumId == $album['id']) {
             $selected = ' selected="selected"';
         } else {
             $selected = '';
         }
         $html .= "<option value=\"{$album['id']}\"{$selected}>" . $title . DataUtil::formatForDisplay($album['title']) . "</option>\n";
     }
     $html .= "</select><br/>\n";
     $html .= "<label for=\"{$this->id}_item\">" . __('Media item', $dom) . "</label><br/> ";
     $html .= "<select id=\"{$this->id}_item\" name=\"{$this->inputName}\" onchange=\"mediashare.itemSelector.itemChanged(this,'{$this->id}', '" . $mediadir . "')\">\n";
     if ($selectedAlbumId != null) {
         $items = pnModAPIFunc('mediashare', 'user', 'getMediaItems', array('albumId' => $selectedAlbumId));
         $html .= $itemOptionsHtml;
     }
     $html .= "</select>";
     $html .= "</td></tr>\n";
     if ($this->enableUpload) {
         $html .= "<tr><td colspan=\"2\"><a href=\"javascript:void(0)\" id=\"mediashare_upload_collapse\">" . __('Upload', $dom) . "</a><div id=\"mediashare_upload\">\n";
         $html .= __('Select an item or upload a file directly', $dom) . '<br/>';
         $html .= "<label for=\"{$this->id}_upload\">" . __('Upload', $dom) . "</label>\n";
         $html .= "<input type=\"file\" id=\"{$this->id}_upload\" name=\"{$this->inputName}_upload\" class=\"file\"/>\n";
         if ($this->enableAddAlbum) {
             $html .= '<br/>' . __('Optional name of a new album to place the upload in', $dom) . '<br/>';
             $html .= "<label for=\"{$this->id}_newalbum\">" . __('Album', $dom) . "</label>\n";
             $html .= "<input type=\"text\" id=\"{$this->id}_newalbum\" name=\"{$this->inputName}_newalbum\"/>\n";
         }
         $html .= "</div></td></tr>\n";
     }
     $html .= "</table>\n";
     $html .= "<script type=\"text/javascript\">Event.observe(window,'load',function(){mediashare.itemSelector.onLoad('{$this->id}');});\n</script>\n";
     $html .= "</div>\n";
     return $html;
 }
Ejemplo n.º 7
0
 public function postInitialize()
 {
     PageUtil::AddVar('javascript', 'prototype');
     $this->view->setCaching(false);
 }
Ejemplo n.º 8
0
 /**
  * DataBound event handler.
  *
  * @param Zikula_Form_View $view Reference to Zikula_Form_View object.
  * @param array            &$params Parameters passed from the Zikula_View plugin function.
  *
  * @see    Zikula_Form_AbstractPlugin
  * @return void
  */
 public function dataBound(Zikula_Form_View $view, &$params)
 {
     PageUtil::AddVar('javascript', 'system/ThemeModule/Resources/public/js/form/form.js');
     PageUtil::AddVar('javascript', 'javascript/ajax/prototype.js');
 }
Ejemplo n.º 9
0
    /**
     * List the files in server folder
     * @author: Albert Pérez Monfort
     * @param:  args   the folder name where to list the files and subfolders
     * @return: The list of files and folders
     */
    public function getFiles($args)
    {
        $hook = FormUtil::getPassedValue('hook', isset($args['hook']) ? $args['hook'] : 0, 'GET');
	$editor = FormUtil::getPassedValue('editor', isset($args['editor']) ? $args['editor'] : false, 'GET');
        PageUtil::AddVar('javascript', 'modules/Files/javascript/getFiles.js');
        // get arguments
        $root = FormUtil::getPassedValue('root', isset($args['root']) ? $args['root'] : null, 'REQUEST');
        $lastFolder = isset($_SESSION['filesModuleLastFolder']) ? $_SESSION['filesModuleLastFolder'] : null;
        $folder = FormUtil::getPassedValue('folder', isset($args['folder']) ? $args['folder'] : null, 'REQUEST');
        $folder = (is_null($folder) && !is_null($lastFolder) && is_null($root)) ? $lastFolder : $folder; 
        $_SESSION['filesModuleLastFolder'] = $folder;
        $folder = str_replace("|", "/", $folder);
        // security check
        if (!SecurityUtil::checkPermission( 'Files::', '::', ACCESS_ADD) || !UserUtil::isLoggedIn()) {
            $errorMsg = $this->__('Sorry! You have not been granted access to this page.');
            $this->view->assign('errorMsg', $errorMsg);
            $this->view->assign('external', 1);
            $this->view->display('Files_user_errorMsg.tpl');
            exit;
        }
        $oFolder = $folder;
        // gets root folder for the user
        $check = ModUtil::func('Files', 'user', 'checkingModule');
        if ($check['status'] != 'ok') {
	    $this->view->assign('check', $check);
            return $this->view->fetch('Files_user_failedConf.tpl');
        }
        $initFolderPath = $check['initFolderPath'];

        // check if the root folder exists
        if(!file_exists($initFolderPath)){
            $errorMsg = $this->__('The server directory does not exist. Contact with the website administrator to solve this problem.');
            $this->view->assign('errorMsg',  $errorMsg);
            $this->view->assign('external', 1);
            $this->view->display('Files_user_errorMsg.tpl');
            exit;
        }
        // protection. User can not navigate out their root folder
        if($folder == ".." || $folder == "."){
            $errorMsg = $this->__('Invalid folder') . ': ' . $folder;
            $this->view->assign('errorMsg', $errorMsg);
            $this->view->assign('external', 1);
            $this->view->display('Files_user_errorMsg.tpl');
            exit;
        }
        // get folder name
        $folderName = str_replace($initFolderPath . '/' , '', $folder);
        $folder = $initFolderPath . '/' .  $folder;
        // users can not browser the thumbnails folders
        if(strpos($folder, '.tbn') !== false) {
            LogUtil::registerError($this->__('It is not possible to browse this folder'));
            return System::redirect(ModUtil::url('Files', 'external', 'getFiles',
                                                  array('folder' => substr($folderName, 0, strrpos($folderName, '/')))));
        }
        // needed arguments
        // check if the folder exists
        if(!file_exists($folder)){
            $errorMsg = $this->__('Invalid folder').': '.$folderName;
            $this->view->assign('errorMsg',  $errorMsg);
            $this->view->assign('external', 1);
            $this->view->display('Files_user_errorMsg.tpl');
            exit;
        }
        // get user's disk use
        $userDiskUse = ModUtil::apiFunc('Files', 'user', 'get');
        $usedSpace = $userDiskUse['diskUse'];
        // get user's allowed space
        $userAllowedSpace = ModUtil::func('Files', 'user', 'getUserQuota');
        $maxDiskSpace = round($userAllowedSpace * 1024 * 1024);
        $percentage = round($usedSpace * 100 / $maxDiskSpace);
        $widthUsage = ($percentage > 100) ? 100 : $percentage;
        $usedSpaceArray = array('maxDiskSpace' => ModUtil::func('Files', 'user', 'diskUseFormat',
                                                                 array('value' => $maxDiskSpace)),
                                                                       'percentage' => $percentage,
                                'usedDiskSpace' => ModUtil::func('Files', 'user', 'diskUseFormat',
                                                                  array('value' => $usedSpace)),
                                                                        'widthUsage' => $widthUsage);
        // create output object
        $this->view = Zikula_View::getInstance('Files', false);
        // get folder files and subfolders
        $fileList = ModUtil::func('Files', 'user', 'dir_list',
                                   array('folder' => $folder,
                                         'external' => 1,
                                         'hook' => $hook,
                                         'editor' => $editor));
        sort($fileList['dir']);
        sort($fileList['file']);
        $notwriteable = (!is_writable($folder)) ? true : false;
        // check if it is a public directori
        $is_public = (!file_exists($folder.'/.locked')) ? true : false ;
        $this->view->assign('publicFolder',  $is_public);
        $this->view->assign('folderPrev', substr($folderName, 0 ,  strrpos($folderName, '/')));
        $folderPath = (SecurityUtil::checkPermission( 'Files::', '::', ACCESS_ADMIN)) ? $folderName : ModUtil::getVar('Files', 'usersFolder') . '/' . strtolower(substr(UserUtil::getVar('uname'), 0 , 1)) . '/' . UserUtil::getVar('uname') . '/' .$folderName;
        $imagesArray = array();
        // get folder files and subfolders
        if(file_exists($folder . '/.tbn')) {
            $images = ModUtil::func('Files', 'user', 'dir_list',
                                array('folder' => $folder . '/.tbn',
                                      'external' => 1));
            foreach($images['file'] as $file) {
                $fileExtension = FileUtil::getExtension($file['name']);
                if(in_array(strtolower($fileExtension), array('gif','png','jpg','jpeg'))) {
                    list($width, $height) = getimagesize($folder . '/' . $file['name']);
                    list($newWidth, $newHeight) = getimagesize($folder . '/.tbn/' . $file['name']);
                    $factor = round($width/$newWidth,2);
                    $imagesArray[] = array('name' => $file['name'],
                                        'viewWidth' => $newWidth,
                                        'width' => $width,
                                        'viewHeight' => $newHeight,
                                        'height' => $height,
                                        'factor' => $factor);
                }
            }
        }
		$scribite_v4 = ModUtil::getVar('Files', 'scribite_v4');
        $this->view->assign('scribite_v4', $scribite_v4);
		$scribite_v5 = ModUtil::getVar('Files', 'scribite_v5');
        $this->view->assign('scribite_v5', $scribite_v5);
		$scribite_v4_name = ModUtil::getVar('Files', 'scribite_v4_name');
        $this->view->assign('scribite_v4_name', $scribite_v4_name);
		$scribite_v5_name = ModUtil::getVar('Files', 'scribite_v5_name');
        $this->view->assign('scribite_v5_name', $scribite_v5_name);
        $defaultPublic = ModUtil::getVar('Files', 'defaultPublic');
        $this->view->assign('defaultPublic', $defaultPublic);
		$this->view->assign('editor', $editor);
        $this->view->assign('folderPath', DataUtil::formatForDisplay($folderPath));
        $this->view->assign('folderName', DataUtil::formatForDisplay($folderName));
        $this->view->assign('fileList', $fileList);
        $this->view->assign('hook', $hook);
        $this->view->assign('imagesArray', DataUtil::formatForDisplay($imagesArray));
        $this->view->assign('usedSpace',  $usedSpaceArray);
        $this->view->assign('notwriteable', $notwriteable);
        //path to zk jquery lib
        $js =new JCSSUtil;
        $scripts = $js->scriptsMap();
        $jquery = $scripts['jquery']['path'];
        $this->view->assign('jquery',$jquery);
        return $this->view->display('Files_external_getFiles.tpl');
    }
Ejemplo n.º 10
0
 /**
  * Initialise scribite for requested areas.
  *
  * @param array $args Text area: 'area', Module name: 'modulename'.
  *
  * @return string
  */
 public static function loader($args)
 {
     $dom = ZLanguage::getModuleDomain('Scribite');
     // Argument checks
     if (!isset($args['areas'])) {
         return LogUtil::registerError(__('Error! Scribite_Api_User::loader() "area" argument was empty.', $dom));
     }
     if (!isset($args['modulename'])) {
         $args['modulename'] = ModUtil::getName();
     }
     $module = $args['modulename'];
     // Security check if user has COMMENT permission for scribite and module
     if (!SecurityUtil::checkPermission('Scribite::', "{$module}::", ACCESS_COMMENT)) {
         return;
     }
     // check for editor argument, if none given the default editor will be used
     if (!isset($args['editor']) || empty($args['editor'])) {
         // get default editor from config
         $defaulteditor = ModUtil::getVar('Scribite', 'DefaultEditor');
         if ($defaulteditor == '-') {
             return;
             // return if no default is set and no arg is given
             // id given editor doesn't exist use default editor
         } else {
             $args['editor'] = $defaulteditor;
         }
     }
     // check if editor argument exists, load default if not given
     if (ModUtil::apiFunc('Scribite', 'user', 'getEditors', array('editorname' => $args['editor']))) {
         // set some general parameters
         $zBaseUrl = rtrim(System::getBaseUrl(), '/');
         $zikulaThemeBaseURL = "{$zBaseUrl}/themes/" . DataUtil::formatForOS(UserUtil::getTheme());
         $zikulaBaseURI = rtrim(System::getBaseUri(), '/');
         $zikulaBaseURI = ltrim($zikulaBaseURI, '/');
         $zikulaRoot = rtrim($_SERVER['DOCUMENT_ROOT'], '/');
         // prepare view instance
         $view = Zikula_View::getInstance('Scribite');
         $view->setCaching(false);
         $view->assign(ModUtil::getVar('Scribite'));
         $view->assign('modname', $args['modulename']);
         $view->assign('zBaseUrl', $zBaseUrl);
         $view->assign('zikulaBaseURI', $zikulaBaseURI);
         $view->assign('zikulaRoot', $zikulaRoot);
         $view->assign('editor_dir', $args['editor']);
         $view->assign('zlang', ZLanguage::getLanguageCode());
         // check for modules installed providing plugins and load specific javascripts
         if (ModUtil::available('photoshare')) {
             PageUtil::AddVar('javascript', 'modules/photoshare/javascript/findimage.js');
         }
         if (ModUtil::available('mediashare')) {
             PageUtil::AddVar('javascript', 'modules/mediashare/javascript/finditem.js');
         }
         if (ModUtil::available('pagesetter')) {
             PageUtil::AddVar('javascript', 'modules/pagesetter/javascript/findpub.js');
         }
         if (ModUtil::available('folder')) {
             PageUtil::AddVar('javascript', 'modules/folder/javascript/selector.js');
         }
         if (ModUtil::available('MediaAttach')) {
             PageUtil::AddVar('javascript', 'modules/MediaAttach/javascript/finditem.js');
         }
         if (ModUtil::available('Files')) {
             PageUtil::AddVar('javascript', 'modules/Files/javascript/getFiles.js');
         }
         // main switch for choosen editor
         switch ($args['editor']) {
             case 'xinha':
                 // get xinha config if editor is active
                 // get plugins for xinha
                 $xinha_listplugins = ModUtil::getVar('Scribite', 'xinha_activeplugins');
                 if ($xinha_listplugins != '') {
                     $xinha_listplugins = unserialize($xinha_listplugins);
                     /* if (in_array('ExtendedFileManager', $xinha_listplugins)) {
                        $view->assign('EFMConfig', true);
                        } else { */
                     $view->assign('EFMConfig', false);
                     //}
                     $xinha_listplugins = '\'' . DataUtil::formatForDisplay(implode('\', \'', $xinha_listplugins)) . '\'';
                 }
                 // prepare areas for xinha
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } elseif ($args['areas'][0] == "PagEd") {
                     $modareas = 'PagEd';
                 } else {
                     $modareas = '\'' . DataUtil::formatForDisplay(implode('\', \'', $args['areas'])) . '\'';
                 }
                 // load Prototype
                 PageUtil::AddVar('javascript', 'prototype');
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('xinha_listplugins', $xinha_listplugins);
                 // end xinha
                 break;
                 // openwysiwyg deprecated @4.3.0
                 //                case 'openwysiwyg':
                 //                    // get openwysiwyg config if editor is active
                 //                    // prepare areas for openwysiwyg
                 //                    if ($args['areas'][0] == "all") {
                 //                        $modareas = 'all';
                 //                    } else {
                 //                        $modareas = $args['areas'];
                 //                    }
                 //
                 //                    // set parameters
                 //                    $view->assign('modareas', $modareas);
                 //
                 //                    // end openwysiwyg
                 //                    break;
             // openwysiwyg deprecated @4.3.0
             //                case 'openwysiwyg':
             //                    // get openwysiwyg config if editor is active
             //                    // prepare areas for openwysiwyg
             //                    if ($args['areas'][0] == "all") {
             //                        $modareas = 'all';
             //                    } else {
             //                        $modareas = $args['areas'];
             //                    }
             //
             //                    // set parameters
             //                    $view->assign('modareas', $modareas);
             //
             //                    // end openwysiwyg
             //                    break;
             case 'nicedit':
                 // get nicEditor config if editor is active
                 // prepare areas for nicEditor
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // set parameters
                 $view->assign('modareas', $modareas);
                 // end nicEditor
                 break;
             case 'yui':
                 // set body class for YUI Editor
                 PageUtil::SetVar('body', 'class="yui-skin-sam"');
                 // get YUI mode from config
                 $yui_type = ModUtil::getVar('Scribite', 'yui_type');
                 // type switch
                 if ($yui_type == 'Simple') {
                     // load scripts for YUI simple mode
                     PageUtil::AddVar('stylesheet', 'http://yui.yahooapis.com/2.9.0/build/assets/skins/sam/skin.css');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/element/element-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/container/container_core-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/editor/simpleeditor-min.js');
                 } else {
                     // load scripts for YUI Editor full mode
                     PageUtil::AddVar('stylesheet', 'http://yui.yahooapis.com/2.9.0/build/assets/skins/sam/skin.css');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/element/element-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/container/container_core-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/menu/menu-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/button/button-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/editor/editor-min.js');
                 }
                 // prepare areas for YUI
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // set parameters
                 $view->assign('modareas', $modareas);
                 // end yui
                 break;
             case 'ckeditor':
                 // get CKEditor config if editor is active
                 // prepare areas
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // check for allowed html
                 $AllowableHTML = System::getVar('AllowableHTML');
                 $disallowedhtml = array();
                 while (list($key, $access) = each($AllowableHTML)) {
                     if ($access == 0) {
                         $disallowedhtml[] = DataUtil::formatForDisplay($key);
                     }
                 }
                 // load Prototype
                 PageUtil::AddVar('javascript', 'javascript/ajax/prototype.js');
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('disallowedhtml', $disallowedhtml);
                 // end ckeditor
                 break;
             case 'markitup':
                 // get markitup config if editor is active
                 // prepare areas
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // check for allowed html
                 $AllowableHTML = System::getVar('AllowableHTML');
                 $disallowedhtml = array();
                 while (list($key, $access) = each($AllowableHTML)) {
                     if ($access == 0) {
                         $disallowedhtml[] = DataUtil::formatForDisplay($key);
                     }
                 }
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('disallowedhtml', $disallowedhtml);
                 // end markitup
                 break;
             case 'tiny_mce':
                 // get TinyMCE config if editor is active
                 // get plugins for tiny_mce
                 $tinymce_listplugins = ModUtil::getVar('Scribite', 'tinymce_activeplugins');
                 if ($tinymce_listplugins != '') {
                     $tinymce_listplugins = unserialize($tinymce_listplugins);
                     $tinymce_listplugins = DataUtil::formatForDisplay(implode(',', $tinymce_listplugins));
                 }
                 // prepare areas for tiny_mce
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } elseif ($args['areas'][0] == "PagEd") {
                     $modareas = 'PagEd';
                 } else {
                     $modareas = DataUtil::formatForDisplay(implode(',', $args['areas']));
                 }
                 // check for allowed html
                 $AllowableHTML = System::getVar('AllowableHTML');
                 $disallowedhtml = array();
                 while (list($key, $access) = each($AllowableHTML)) {
                     if ($access == 0) {
                         $disallowedhtml[] = DataUtil::formatForDisplay($key);
                     }
                 }
                 // pass disallowed html
                 $disallowedhtml = implode(',', $disallowedhtml);
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('tinymce_listplugins', $tinymce_listplugins);
                 $view->assign('disallowedhtml', $disallowedhtml);
                 // end tiny_mce
                 break;
         }
         // view output
         // 1. check if special template is required (from direct module call)
         if (isset($args['tpl']) && $view->template_exists($args['tpl'])) {
             $templatefile = $args['tpl'];
             // 2. check if a module specific template exists
         } elseif ($view->template_exists('editorheaders/' . $args['editor'] . '_' . $args['modulename'] . '.tpl')) {
             $templatefile = 'editorheaders/' . $args['editor'] . '_' . $args['modulename'] . '.tpl';
             // 3. if none of the above load default template
         } else {
             $templatefile = 'editorheaders/' . $args['editor'] . '.tpl';
         }
         $output = $view->fetch($templatefile);
         // end main switch
         return $output;
     }
 }
Ejemplo n.º 11
0
    /**
     * Initialise Scribite for requested areas.
     *
     * @param array $args Module name: 'modulename'.
     *
     * @return string
     */
    private function loader($args)
    {
        // Argument checks
        $module = (isset($args['modulename'])) ? $args['modulename'] : ModUtil::getName();
        
        $overrides = ModUtil::getVar('Scribite', 'overrides');
        $editor = (isset($overrides[$module]['editor'])) ? $overrides[$module]['editor'] : ModUtil::getVar('Scribite', 'DefaultEditor');

        // check for modules providing helpers and load them into the page
        $event = new Zikula_Event('module.scribite.editorhelpers', new Scribite_EditorHelper(), array('editor' => $editor));
        $helpers = EventUtil::getManager()->notify($event)->getSubject()->getHelpers();
        foreach ($helpers as $helper) {
            if (ModUtil::available($helper['module'])) {
                PageUtil::AddVar($helper['type'], $helper['path']);            
            }
        }
        
        // check for allowed html
        $AllowableHTML = System::getVar('AllowableHTML');
        $disallowedhtml = array();
        while (list($key, $access) = each($AllowableHTML)) {
            if ($access == 0) {
                $disallowedhtml[] = DataUtil::formatForDisplay($key);
            }
        }

        // fetch additonal editor specific parameters.
        $classname = 'ModulePlugin_Scribite_' . $editor . '_Util';
        $additionalEditorParameters = array();
        if (method_exists($classname, 'addParameters')) {
            $additionalEditorParameters = $classname::addParameters();
        }
        // fetch external editor plugins
        $additionalExternalEditorPlugins = array();
        if (method_exists($classname, 'addExternalPlugins')) {
            $additionalExternalEditorPlugins = $classname::addExternalPlugins();
        }

        // assign disabled textareas to template as a javascript array
        $javascript = "var disabledTextareas=[";
        if (isset($overrides[$module])) {
            foreach (array_keys($overrides[$module]) as $area) {
                if ($area == 'editor') continue;
                if ((isset($overrides[$module][$area]['disabled'])) && ($overrides[$module][$area]['disabled'] == "true")) {
                    $javascript .= "'" . $area . "',";
                }
            }
        }
        $javascript = rtrim($javascript, ",");
        $javascript .= "];";
        PageUtil::addVar("footer", "<script type='text/javascript'>$javascript</script>");
        
        // assign override parameters to javascript object
        $javascript = "";
        $paramOverrides = false;
        if (isset($overrides[$module])) {
            foreach ($overrides[$module] as $area => $config) {
                if ($area == 'editor') continue;
                if (!empty($config['params'])) {
                    $paramOverrides = true;
                    $javascript .= "var paramOverrides_$area = {";
                    foreach ($config['params'] as $param => $value) {
                        $javascript .= "\n    $param: '$value',";
                    }
                    
                    $javascript .= "\n}";
                }
            }
        }
        PageUtil::addVar("footer", "<script type='text/javascript'>\n$javascript\n</script>");
        
        // insert notify function
        PageUtil::addVar('javascript', 'modules/Scribite/javascript/function-insertnotifyinput.js');

        $view = Zikula_View_Plugin::getPluginInstance("Scribite", $editor, Zikula_View::CACHE_DISABLED);

        // assign to template in Scribite 'namespace'
        $templateVars = array('editorVars' => ModUtil::getVar("moduleplugin.scribite." . strtolower($editor)),
            'modname' => $module,
            'disallowedhtml' => $disallowedhtml,
            'paramOverrides' => $paramOverrides);
        if (!empty($additionalEditorParameters)) {
            $templateVars['editorParameters'] = $additionalEditorParameters;
        }
        if (!empty($additionalExternalEditorPlugins)) {
            $templateVars['addExtEdPlugins'] = $additionalExternalEditorPlugins;
        }
        $view->assign('Scribite', $templateVars);

        return $view->fetch("editorheader.tpl");
    }
Ejemplo n.º 12
0
 /**
  * DataBound event handler.
  *
  * @param Zikula_Form_View $view    Reference to Zikula_Form_View object.
  * @param array            &$params Parameters passed from the Zikula_View plugin function.
  *
  * @see    Zikula_Form_AbstractPlugin
  * @return void
  */
 function dataBound(Zikula_Form_View $view, &$params)
 {
     PageUtil::AddVar('javascript', 'system/Theme/javascript/form/form.js');
     PageUtil::AddVar('javascript', 'javascript/ajax/prototype.js');
 }