/**
  * Init the frontend editing.
  *
  * Register the javascripts and css files
  * Adds the used language variables to contrexx-js variables, so the toolbar has access to these variables
  *
  * @param ComponentController $componentController
  */
 public function initFrontendEditing(\Cx\Core_Modules\FrontendEditing\Controller\ComponentController $componentController)
 {
     global $_ARRAYLANG;
     // get necessary objects
     $objInit = \Env::get('init');
     $page = $this->cx->getPage();
     // add css and javascript file
     $jsFilesRoot = substr(ASCMS_CORE_MODULE_FOLDER . '/' . $componentController->getName() . '/View/Script', 1);
     \JS::registerCSS(substr(ASCMS_CORE_MODULE_FOLDER . '/' . $componentController->getName() . '/View/Style/Main.css', 1));
     \JS::registerJS($jsFilesRoot . '/Main.js');
     \JS::activate('cx');
     // not used for contrexx version 3.1
     //        \JS::registerJS($jsFilesRoot . '/CKEditorPlugins.js');
     // activate ckeditor
     \JS::activate('ckeditor');
     \JS::activate('jquery-cookie');
     // load language data
     $_ARRAYLANG = $objInit->loadLanguageData('FrontendEditing');
     $langVariables = array('TXT_FRONTEND_EDITING_SHOW_TOOLBAR' => $_ARRAYLANG['TXT_FRONTEND_EDITING_SHOW_TOOLBAR'], 'TXT_FRONTEND_EDITING_HIDE_TOOLBAR' => $_ARRAYLANG['TXT_FRONTEND_EDITING_HIDE_TOOLBAR'], 'TXT_FRONTEND_EDITING_PUBLISH' => $_ARRAYLANG['TXT_FRONTEND_EDITING_PUBLISH'], 'TXT_FRONTEND_EDITING_SUBMIT_FOR_RELEASE' => $_ARRAYLANG['TXT_FRONTEND_EDITING_SUBMIT_FOR_RELEASE'], 'TXT_FRONTEND_EDITING_REFUSE_RELEASE' => $_ARRAYLANG['TXT_FRONTEND_EDITING_REFUSE_RELEASE'], 'TXT_FRONTEND_EDITING_SAVE' => $_ARRAYLANG['TXT_FRONTEND_EDITING_SAVE'], 'TXT_FRONTEND_EDITING_EDIT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_EDIT'], 'TXT_FRONTEND_EDITING_CANCEL_EDIT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_CANCEL_EDIT'], 'TXT_FRONTEND_EDITING_FINISH_EDIT_MODE' => $_ARRAYLANG['TXT_FRONTEND_EDITING_FINISH_EDIT_MODE'], 'TXT_FRONTEND_EDITING_THE_DRAFT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_THE_DRAFT'], 'TXT_FRONTEND_EDITING_SAVE_CURRENT_STATE' => $_ARRAYLANG['TXT_FRONTEND_EDITING_SAVE_CURRENT_STATE'], 'TXT_FRONTEND_EDITING_CONFIRM_BLOCK_SAVE' => $_ARRAYLANG['TXT_FRONTEND_EDITING_CONFIRM_BLOCK_SAVE'], 'TXT_FRONTEND_EDITING_MODULE_PAGE' => $_ARRAYLANG['TXT_FRONTEND_EDITING_MODULE_PAGE'], 'TXT_FRONTEND_EDITING_NO_TITLE_AND_CONTENT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_NO_TITLE_AND_CONTENT'], 'TXT_FRONTEND_EDITING_CONFIRM_UNSAVED_EXIT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_CONFIRM_UNSAVED_EXIT'], 'TXT_FRONTEND_EDITING_DRAFT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_DRAFT'], 'TXT_FRONTEND_EDITING_PUBLISHED' => $_ARRAYLANG['TXT_FRONTEND_EDITING_PUBLISHED']);
     // add toolbar to html
     $this->prepareTemplate($componentController);
     // assign js variables
     $contrexxJavascript = \ContrexxJavascript::getInstance();
     $contrexxJavascript->setVariable('langVars', $langVariables, 'FrontendEditing');
     $contrexxJavascript->setVariable('pageId', $page->getId(), 'FrontendEditing');
     $contrexxJavascript->setVariable('hasPublishPermission', \Permission::checkAccess(78, 'static', true), 'FrontendEditing');
     $contrexxJavascript->setVariable('contentTemplates', $this->getCustomContentTemplates(), 'FrontendEditing');
     $contrexxJavascript->setVariable('defaultTemplate', $this->getDefaultTemplate(), 'FrontendEditing');
     $configPath = ASCMS_PATH_OFFSET . substr(\Env::get('ClassLoader')->getFilePath(ASCMS_CORE_PATH . '/Wysiwyg/ckeditor.config.js.php'), strlen(ASCMS_DOCUMENT_ROOT));
     $contrexxJavascript->setVariable('configPath', $configPath . '?langId=' . FRONTEND_LANG_ID, 'FrontendEditing');
 }
Example #2
0
 /**
  * Get the replacement content for the placeholder
  * @param string $placeholder
  * @return string
  */
 function getData($placeholder)
 {
     global $objDatabase;
     \JS::activate("shadowbox", array('players' => array('html', 'iframe')));
     $matter = substr($placeholder, 6, -1);
     if ($matter == "OVERVIEW") {
         return $this->getOverview();
     }
     // get the data id for the placeholder
     $query = "\n            SELECT type, ref_id\n              FROM " . DBPREFIX . "module_data_placeholders\n             WHERE placeholder='{$matter}'";
     $objRs = $objDatabase->Execute($query);
     if ($objRs && $objRs->RecordCount()) {
         $id = $objRs->fields['ref_id'];
         if ($objRs->fields['type'] == "cat") {
             $this->_arrLanguages = $this->createLanguageArray();
             $this->arrCategories = $this->createCategoryArray();
             if ($this->arrCategories[$id]['action'] == "subcategories") {
                 return $this->getSubcategories($id);
             }
             return $this->getCategory($id);
         } else {
             return $this->getDetail($id);
         }
     }
     return '';
 }
Example #3
0
 /**
  * Reads the act and selects the right action
  */
 function getPage()
 {
     if (empty($_GET['cmd'])) {
         $_GET['cmd'] = '';
     } else {
         $this->strCmd = '&cmd=' . intval($_GET['cmd']);
     }
     \JS::activate('shadowbox');
     if (isset($_GET['pId']) && !empty($_GET['pId'])) {
         if (isset($_POST['frmGalComAdd_PicId'])) {
             $this->addComment();
             \Cx\Core\Csrf\Controller\Csrf::header('location:' . CONTREXX_DIRECTORY_INDEX . '?section=Gallery' . html_entity_decode($this->strCmd, ENT_QUOTES, CONTREXX_CHARSET) . '&cid=' . intval($_POST['frmGalComAdd_GalId']) . '&pId=' . intval($_POST['frmGalComAdd_PicId']));
             exit;
         }
         if (isset($_GET['mark'])) {
             $this->countVoting($_GET['pId'], $_GET['mark']);
             \Cx\Core\Csrf\Controller\Csrf::header('location:' . CONTREXX_DIRECTORY_INDEX . '?section=Gallery' . html_entity_decode($this->strCmd, ENT_QUOTES, CONTREXX_CHARSET) . '&cid=' . intval($_GET['cid']) . '&pId=' . intval($_GET['pId']));
             exit;
         }
         if ($this->arrSettings['enable_popups'] == "on") {
             $this->showPicture(intval($_GET['pId']));
         } else {
             $this->showPictureNoPop(intval($_GET['pId']));
         }
     } else {
         $_GET['cid'] = isset($_GET['cid']) ? intval($_GET['cid']) : intval($_GET['cmd']);
         $this->showCategoryOverview($_GET['cid']);
     }
     return $this->_objTpl->get();
 }
Example #4
0
    /**
     * Init the uploader which is directly included in the webpage
     *
     * @return integer the uploader id
     */
    protected function initUploader()
    {
        \JS::activate('cx');
        // the uploader needs the framework
        $uploader = new \Cx\Core_Modules\Uploader\Model\Entity\Uploader();
        //create an uploader
        $uploadId = $uploader->getId();
        $uploader->setCallback('fileSharingUploader');
        $uploader->setOptions(array('id' => 'fileSharing_' . $uploadId, 'style' => 'display:none;'));
        $folderWidget = new \Cx\Core_Modules\MediaBrowser\Model\Entity\FolderWidget($_SESSION->getTempPath() . '/' . $uploadId, true);
        $folderWidgetId = $folderWidget->getId();
        $extendedFileInputCode = <<<CODE
<script type="text/javascript">
    cx.ready(function() {
            var field = jQuery('#contactForm #file_upload');
            //called if user clicks on the field
            var inputClicked = function() {
                jQuery('#fileSharing_{$uploadId}').trigger('click');
                return false;
            };

            jQuery('#fileSharing_{$uploadId}').hide();
            field.bind('click', inputClicked).removeAttr('disabled');
    });

    //uploader javascript callback function
    function fileSharingUploader(callback) {
            angular.element('#mediaBrowserfolderWidget_{$folderWidgetId}').scope().refreshBrowser();
    }
</script>
CODE;
        $this->objTemplate->setVariable(array('UPLOADER_CODE' => $uploader->getXHtml(), 'FILE_INPUT_CODE' => $extendedFileInputCode, 'FOLDER_WIDGET_CODE' => $folderWidget->getXHtml()));
        return $uploadId;
        // return the upload id
    }
 /**
  * It displayes the import menu
  *
  * @return customer import screen
  */
 function showImport()
 {
     global $_ARRAYLANG, $objDatabase;
     \JS::activate('cx');
     \JS::activate('jqueryui');
     \JS::registerCSS('modules/Crm/View/Style/main.css');
     \JS::registerJS('modules/Crm/View/Script/contactexport.js');
     \JS::registerJS('lib/javascript/jquery.form.js');
     \JS::registerJS('lib/javascript/jquery.tmpl.min.js');
     \JS::registerJS('lib/javascript/jquery.base64.js');
     \JS::registerJS('lib/javascript/jquery.format.js');
     $objTpl = $this->_objTpl;
     $objTpl->addBlockfile('CRM_SETTINGS_FILE', 'settings_block', "module_{$this->moduleNameLC}_interface_import_options.html");
     $objTpl->setGlobalVariable(array('MODULE_NAME' => $this->moduleName));
     foreach ($this->_delimiter as $key => $value) {
         $objTpl->setVariable(array('CRM_DELIMITER_VALUE' => $key, 'CRM_DELIMITER_TITLE' => $_ARRAYLANG[$value['placeholder']]));
         $objTpl->parse('crm_delimiter');
     }
     foreach ($this->_enclosure as $key => $value) {
         $objTpl->setVariable(array('CRM_ENCLOSURE_VALUE' => $key, 'CRM_ENCLOSURE_TITLE' => $_ARRAYLANG[$value['placeholder']]));
         $objTpl->parse('crm_enclosure');
     }
     $options = array('upload-limit' => 1, 'id' => 'importUploader', 'style' => 'display:none;', 'allowed-extensions' => array('csv'));
     $uploaderCode = $this->initUploader('uploadFinished', 'importCallbackJs', '', '', $options);
     $redirectUrl = \Cx\Core\Csrf\Controller\Csrf::enhanceURI('index.php?cmd=Crm&act=getImportFilename');
     $this->_objTpl->setVariable(array('COMBO_UPLOADER_CODE' => $uploaderCode, 'REDIRECT_URL' => $redirectUrl));
     $objTpl->setVariable(array('TXT_CRM_TITLE_IMPORT_CONTACTS' => $_ARRAYLANG['TXT_CRM_TITLE_IMPORT_CONTACTS'], 'TXT_CRM_IMPORT_HEADER' => $_ARRAYLANG['TXT_CRM_IMPORT_HEADER'], 'TXT_CRM_IMPORT_NOTE' => $_ARRAYLANG['TXT_CRM_IMPORT_NOTE'], 'TXT_CRM_IMPORT_NOTE_DESCRIPTION' => $_ARRAYLANG['TXT_CRM_IMPORT_NOTE_DESCRIPTION'], 'TXT_CRM_CSV_SETTINGS' => $_ARRAYLANG['TXT_CRM_CSV_SETTINGS'], 'TXT_CRM_SKIP' => $_ARRAYLANG['TXT_CRM_SKIP'], 'TXT_CRM_OVERWRITE' => $_ARRAYLANG['TXT_CRM_OVERWRITE'], 'TXT_CRM_DUPLICATE' => $_ARRAYLANG['TXT_CRM_DUPLICATE'], 'TXT_CRM_CHOOSE_FILE' => $_ARRAYLANG['TXT_CRM_CHOOSE_FILE'], 'TXT_CRM_CSV_SEPARATOR' => $_ARRAYLANG['TXT_CRM_CSV_SEPARATOR'], 'TXT_CRM_CSV_ENCLOSURE' => $_ARRAYLANG['TXT_CRM_CSV_ENCLOSURE'], 'TXT_CRM_ON_DUPLICATES' => $_ARRAYLANG['TXT_CRM_ON_DUPLICATES'], 'TXT_CRM_CHOOSE_CSV' => $_ARRAYLANG['TXT_CRM_CHOOSE_CSV'], 'TXT_CRM_ON_DUPLICATES_INFO' => $_ARRAYLANG['TXT_CRM_ON_DUPLICATES_INFO'], 'TXT_CRM_ON_DUPLICATE_SKIP_INFO' => $_ARRAYLANG['TXT_CRM_ON_DUPLICATE_SKIP_INFO'], 'TXT_CRM_ON_DUPLICATE_OVERWRITE_INFO' => $_ARRAYLANG['TXT_CRM_ON_DUPLICATE_OVERWRITE_INFO'], 'TXT_CRM_ON_DUPLICATE_INFO' => $_ARRAYLANG['TXT_CRM_ON_DUPLICATE_INFO'], 'TXT_CRM_IGNORE_FIRST_ROW' => $_ARRAYLANG['TXT_CRM_IGNORE_FIRST_ROW'], 'TXT_CRM_CONTINUE' => $_ARRAYLANG['TXT_CRM_CONTINUE'], 'TXT_CRM_CANCEL' => $_ARRAYLANG['TXT_CRM_CANCEL'], 'TXT_CRM_VERIFY_FIELDS' => $_ARRAYLANG['TXT_CRM_VERIFY_FIELDS'], 'TXT_CRM_VERIFY_INFO' => $_ARRAYLANG['TXT_CRM_VERIFY_INFO'], 'TXT_CRM_FILE_COLUMN' => $_ARRAYLANG['TXT_CRM_FILE_COLUMN'], 'TXT_CRM_CORRESPONDING_FIELD' => $_ARRAYLANG['TXT_CRM_CORRESPONDING_FIELD'], 'TXT_CRM_CSV_VALUE' => $_ARRAYLANG['TXT_CRM_CSV_VALUE'], 'TXT_CRM_CHANGE' => $_ARRAYLANG['TXT_CRM_CHANGE'], 'TXT_CRM_LOADING' => $_ARRAYLANG['TXT_CRM_LOADING'], 'TXT_CRM_PREVIOUS_RECORD' => $_ARRAYLANG['TXT_CRM_PREVIOUS_RECORD'], 'TXT_CRM_NEXT_RECORD' => $_ARRAYLANG['TXT_CRM_NEXT_RECORD'], 'TXT_CRM_TITLE_SAVING_CONTACTS' => $_ARRAYLANG['TXT_CRM_TITLE_SAVING_CONTACTS'], 'TXT_CRM_INTERFACE_FINAL_INFO' => $_ARRAYLANG['TXT_CRM_INTERFACE_FINAL_INFO'], 'TXT_CRM_RECORD_DONE' => $_ARRAYLANG['TXT_CRM_RECORD_DONE'], 'TXT_CRM_RECORD_SKIPPED' => $_ARRAYLANG['TXT_CRM_RECORD_SKIPPED'], 'TXT_CRM_RECORD_IMPORT' => $_ARRAYLANG['TXT_CRM_RECORD_IMPORT'], 'TXT_CRM_RECORD_PROCESS' => $_ARRAYLANG['TXT_CRM_RECORD_PROCESS'], 'TXT_CRM_IMPORT_NAME' => $_ARRAYLANG['TXT_CRM_IMPORT_NAME'], 'TXT_CRM_EXPORT_NAME' => $_ARRAYLANG['TXT_CRM_EXPORT_NAME']));
 }
    /**
     * init the pl uploader which is directly included in the webpage
     *
     * @return integer the uploader id
     */
    protected function initUploader()
    {
        \JS::activate('cx');
        // the uploader needs the framework
        $cx = \Cx\Core\Core\Controller\Cx::instanciate();
        \Env::get('ClassLoader')->loadFile($cx->getCodeBaseCoreModulePath() . '/Upload/Controller/UploadFactory.class.php');
        /**
         * Name of the upload instance
         */
        $uploaderInstanceName = 'exposed_combo_uploader';
        $uploaderWidgetName = 'uploadWidget';
        /**
         * jQuery selector of the HTML-element where the upload folder-widget shall be put in
         */
        $uploaderFolderWidgetContainer = '#uploadFormField_uploadWidget';
        // create an exposedCombo uploader
        $uploader = \Cx\Core_Modules\Upload\Controller\UploadFactory::getInstance()->newUploader('exposedCombo');
        //set instance name so we are able to catch the instance with js
        $uploader->setJsInstanceName($uploaderInstanceName);
        // specifies the function to call when upload is finished. must be a static function
        $uploader->setFinishedCallback(array($cx->getCodeBaseModulePath() . '/FileSharing/Controller/FileSharing.class.php', '\\Cx\\Modules\\FileSharing\\Controller\\FileSharing', 'uploadFinished'));
        //insert the uploader into the HTML-template
        $this->objTemplate->setVariable(array('UPLOADER_CODE' => $uploader->getXHtml(), 'EXTENDED_FILE_INPUT_CODE' => <<<CODE
<script type="text/javascript">
cx.include(
[
'core_modules/Upload/js/uploaders/exposedCombo/extendedFileInput.js'
],
function() {
        var ef = new ExtendedFileInput({
                field: \$J('#file_upload'),
                instance: '{$uploaderInstanceName}',
                widget: '{$uploaderWidgetName}'
        });
}
);
cx.jQuery(document).ready(function(\$) {
    \$J('a.toggle').click(function() {
        \$J('div.toggle').toggle();
        return false;
    });
});
</script>
CODE
));
        // optional: initialize the widget displaying the folder contents
        $uploadId = $uploader->getUploadId();
        $tempPaths = self::getTemporaryFilePaths($uploadId);
        if (!is_dir($tempPaths[0] . '/' . $tempPaths[2])) {
            \Cx\Lib\FileSystem\FileSystem::make_folder($tempPaths[0] . '/' . $tempPaths[2]);
            //mkdir($tempPaths[0] . '/' . $tempPaths[2]);
            \Cx\Lib\FileSystem\FileSystem::makeWritable($tempPaths[0] . '/' . $tempPaths[2]);
            //chmod($tempPaths[0] . '/' . $tempPaths[2], 0777);
        }
        $folderWidget = \Cx\Core_Modules\Upload\Controller\UploadFactory::getInstance()->newFolderWidget($tempPaths[0] . '/' . $tempPaths[2], $uploaderInstanceName);
        $this->objTemplate->setVariable('UPLOAD_WIDGET_CODE', $folderWidget->getXHtml($uploaderFolderWidgetContainer, 'uploadWidget'));
        // return the upload id
        return $uploadId;
    }
Example #7
0
 function showEcards()
 {
     global $objDatabase, $_ARRAYLANG;
     \JS::activate('shadowbox');
     $this->_objTpl->setTemplate($this->pageContent);
     // Initialize POST variables
     $selectedId = isset($_POST['selectedEcard']) ? intval($_POST['selectedEcard']) : 0;
     $message = !empty($_POST['ecardMessage']) ? htmlentities(contrexx_stripslashes($_POST['ecardMessage']), ENT_QUOTES, CONTREXX_CHARSET) : "";
     $recipientSalutation = !empty($_POST['ecardRecipientSalutation']) ? htmlentities(contrexx_stripslashes($_POST['ecardRecipientSalutation']), ENT_QUOTES, CONTREXX_CHARSET) : "";
     $senderName = !empty($_POST['ecardSenderName']) ? htmlentities(contrexx_stripslashes($_POST['ecardSenderName']), ENT_QUOTES, CONTREXX_CHARSET) : "";
     $senderEmail = !empty($_POST['ecardSenderEmail']) && \FWValidator::isEmail($_POST['ecardSenderEmail']) ? $_POST['ecardSenderEmail'] : "";
     $recipientName = !empty($_POST['ecardRecipientName']) ? htmlentities(contrexx_stripslashes($_POST['ecardRecipientName']), ENT_QUOTES, CONTREXX_CHARSET) : "";
     $recipientEmail = !empty($_POST['ecardRecipientEmail']) && \FWValidator::isEmail($_POST['ecardRecipientEmail']) ? $_POST['ecardRecipientEmail'] : "";
     // Get max. number of characters and lines per message
     $query = "\n              SELECT `setting_name`, `setting_value`\n                FROM " . DBPREFIX . "module_ecard_settings";
     $objResult = $objDatabase->Execute($query);
     while (!$objResult->EOF) {
         switch ($objResult->fields['setting_name']) {
             case "maxCharacters":
                 $maxCharacters = $objResult->fields['setting_value'];
                 break;
             case "maxLines":
                 $maxLines = $objResult->fields['setting_value'];
                 break;
         }
         $objResult->MoveNext();
     }
     $this->_objTpl->setVariable(array('ECARD_MESSAGE' => $message, 'ECARD_SENDERNAME' => $senderName, 'ECARD_RECIPIENTNAME' => $recipientName, 'ECARD_SENDEREMAIL' => $senderEmail, 'ECARD_RECIPIENTEMAIL' => $recipientEmail, 'ECARD_SALUTATION_SELECTED_MALE' => $recipientSalutation == $_ARRAYLANG['TXT_ECARD_TITLE_MALE'] ? ' checked="checked"' : '', 'ECARD_SALUTATION_SELECTED_FEMALE' => $recipientSalutation == $_ARRAYLANG['TXT_ECARD_TITLE_FEMALE'] ? ' checked="checked"' : '', 'TXT_ECARD_CHOOSE_IMAGE' => $_ARRAYLANG['TXT_ECARD_CHOOSE_IMAGE'], 'TXT_ECARD_ENTER_RECIPIENT_INFO' => $_ARRAYLANG['TXT_ECARD_ENTER_RECIPIENT_INFO'], 'TXT_ECARD_TITLE_MALE' => $_ARRAYLANG['TXT_ECARD_TITLE_MALE'], 'TXT_ECARD_TITLE_FEMALE' => $_ARRAYLANG['TXT_ECARD_TITLE_FEMALE'], 'TXT_ECARD_RECIPIENT_TITLE' => $_ARRAYLANG['TXT_ECARD_RECIPIENT_TITLE'], 'TXT_ECARD_RECIPIENT_NAME' => $_ARRAYLANG['TXT_ECARD_RECIPIENT_NAME'], 'TXT_ECARD_SENDER_NAME' => $_ARRAYLANG['TXT_ECARD_SENDER_NAME'], 'TXT_ECARD_RECIPIENT_EMAIL' => $_ARRAYLANG['TXT_ECARD_RECIPIENT_EMAIL'], 'TXT_ECARD_SENDER_EMAIL' => $_ARRAYLANG['TXT_ECARD_SENDER_EMAIL'], 'TXT_ECARD_ENTER_MESSAGE' => $_ARRAYLANG['TXT_ECARD_ENTER_MESSAGE'], 'TXT_ECARD_NUMBER_OF_CHARACTERS_LEFT' => sprintf($_ARRAYLANG['TXT_ECARD_NUMBER_OF_CHARACTERS_LEFT'], $maxCharacters), 'TXT_ECARD_NUMBER_OF_LINES_LEFT' => sprintf($_ARRAYLANG['TXT_ECARD_NUMBER_OF_LINES_LEFT'], $maxLines), 'TXT_ECARD_PREVIEW' => $_ARRAYLANG['TXT_ECARD_PREVIEW']));
     // Select motives from DB
     $query = "\n            SELECT setting_value, setting_name\n              FROM " . DBPREFIX . "module_ecard_settings\n             WHERE setting_name LIKE 'motive_%'\n             ORDER BY setting_name ASC";
     $i = 0;
     $objResult = $objDatabase->Execute($query);
     // Initialize DATA placeholder
     while (!$objResult->EOF) {
         $motive = $objResult->fields['setting_value'];
         $motive = basename($motive);
         if (empty($motive)) {
             $objResult->MoveNext();
             continue;
         }
         $arrMatch = array();
         $id = 0;
         if (preg_match('/(\\d+)$/', $objResult->fields['setting_name'], $arrMatch)) {
             $id = $arrMatch[1];
         }
         $this->_objTpl->setVariable(array('ECARD_MOTIVE_OPTIMIZED_PATH' => ASCMS_ECARD_OPTIMIZED_WEB_PATH . '/' . $motive, 'ECARD_MOTIVE_ID' => $id, 'ECARD_THUMBNAIL_PATH' => ASCMS_ECARD_THUMBNAIL_WEB_PATH . '/' . $motive, 'ECARD_CSSNUMBER' => $i % 3 + 1, 'ECARD_IMAGE_SELECTED' => $id == $selectedId ? ' checked="checked"' : ''));
         $this->_objTpl->parse('motiveBlock');
         if ($i % 3 == 0) {
             $this->_objTpl->parse('motiveRow');
         }
         ++$i;
         $objResult->MoveNext();
     }
     $this->_objTpl->setVariable('ECARD_JAVASCRIPT', self::getJavascript($maxCharacters));
 }
 /**
  * Do something before resolving is done
  *
  * @param \Cx\Core\Routing\Url                      $request    The URL object for this request
  */
 public function preResolve(\Cx\Core\Routing\Url $request)
 {
     switch ($this->cx->getMode()) {
         case \Cx\Core\Core\Controller\Cx::MODE_BACKEND:
             // Load the JS helper class and set the offset
             \JS::setOffset('../');
             \JS::activate('backend');
             \JS::activate('cx');
             \JS::activate('chosen');
             break;
     }
 }
 public function __construct(&$objTpl)
 {
     global $_ARRAYLANG, $objInit;
     $_ARRAYLANG = array_merge($_ARRAYLANG, $objInit->loadLanguageData('FileSharing'));
     $this->_objTpl = $objTpl;
     $this->_objTpl->setRoot(\Cx\Core\Core\Controller\Cx::instanciate()->getCodeBaseModulePath() . '/FileSharing/View/Template/Backend');
     if ($_GET['act'] == 'settings') {
         $templateFile = 'module_filesharing_settings.html';
     } else {
         $templateFile = 'module_filesharing_detail.html';
     }
     $this->_objTpl->loadTemplateFile($templateFile, true, true);
     \JS::activate("cx");
 }
 /**
  * @override
  */
 public function getXHtml()
 {
     global $_CORELANG;
     //JS / CSS dependencies
     \JS::activate('cx');
     \JS::registerJS('lib/javascript/swfobject.js');
     //        JS::registerJS('lib/javascript/deployJava.js');
     \JS::registerJS('core_modules/Upload/js/uploaders/combo/combo.js');
     \JS::registerCSS('core_modules/Upload/css/uploaders/combo/combo.css');
     \JS::registerJS('core_modules/Upload/js/uploaders/pl/plupload.full.js');
     \JS::registerJS('core_modules/Upload/js/uploaders/pl/jquery.plupload.queue.js');
     \JS::registerCSS('core_modules/Upload/css/uploaders/pl/plupload.queue.css');
     $formUploader = UploadFactory::getInstance()->newUploader('form', $this->uploadId);
     //i18n of uploader descriptions
     $formUploaderDescription = $_CORELANG['FORM_UPLOADER'];
     $plUploaderDescription = $_CORELANG['PL_UPLOADER'];
     $jumpUploaderDescription = $_CORELANG['JUMP_UPLOADER'];
     $alternativesCaption = $_CORELANG['OTHER_UPLOADERS'];
     //combuploader js config: available uploaders
     $uploaders = array("{type:'form',description:'" . $formUploaderDescription . "'}");
     if (in_array('Pl', $this->enabledUploaders)) {
         array_push($uploaders, "{type:'pl',description:'" . $plUploaderDescription . "'}");
     }
     if (in_array('Jump', $this->enabledUploaders)) {
         array_push($uploaders, "{type:'jump',description:'" . $jumpUploaderDescription . "'}");
     }
     $uploaders = '[' . join(',', $uploaders) . ']';
     $cmdOrSection = $this->isBackendRequest ? 'cmd' : 'section';
     $actOrCmd = $this->isBackendRequest ? 'act' : 'cmd';
     //from where the combouploader gets the code on an uploader switch
     $switchUrl;
     //from where the combouploader gets the response for finished uploads
     $responseUrl;
     if ($this->isBackendRequest) {
         $switchUrl = ASCMS_ADMIN_WEB_PATH . '/index.php?' . $cmdOrSection . '=Upload&' . $actOrCmd . '=ajaxUploaderCode';
         $responseUrl = ASCMS_ADMIN_WEB_PATH . '/index.php?' . $cmdOrSection . '=Upload&' . $actOrCmd . '=response';
     } else {
         $switchUrl = CONTREXX_SCRIPT_PATH . '?' . $cmdOrSection . '=Upload&' . $actOrCmd . '=ajaxUploaderCode';
         $responseUrl = CONTREXX_SCRIPT_PATH . '?' . $cmdOrSection . '=Upload&' . $actOrCmd . '=response';
     }
     $tpl = new \Cx\Core\Html\Sigma(ASCMS_CORE_MODULE_PATH . '/Upload/template/uploaders');
     $tpl->setErrorHandling(PEAR_ERROR_DIE);
     $tpl->loadTemplateFile('combo.html');
     $tpl->setVariable(array('CONFIG_UPLOADERS_JS' => $uploaders, 'RESPONSE_URL' => $responseUrl, 'UPLOAD_ID' => $this->uploadId, 'SWITCH_URL' => $switchUrl, 'OTHER_UPLOADERS_CAPTION' => $_CORELANG['OTHER_UPLOADERS'], 'TXT_CORE_UPLOAD_MORE' => $_CORELANG['TXT_CORE_UPLOAD_MORE'], 'TXT_CORE_FINISH_UPLOADING' => $_CORELANG['TXT_CORE_FINISH_UPLOADING'], 'TXT_CORE_FILES_UPLOADED' => $_CORELANG['TXT_CORE_FILES_UPLOADED'], 'TXT_CORE_FILES_NOT_UPLOADED' => $_CORELANG['TXT_CORE_FILES_NOT_UPLOADED']));
     $tpl->setVariable('UPLOADER_CODE', $formUploader->getXHtml());
     //see Uploader::handleInstanceBusiness
     $this->handleInstanceBusiness($tpl, 'cu');
     return $tpl->get();
 }
 function setMotives()
 {
     global $objDatabase, $_ARRAYLANG;
     \JS::activate('shadowbox');
     $this->_objTpl->loadTemplateFile('module_ecard_overview.html', true, true);
     $this->_pageTitle = $_ARRAYLANG['TXT_MOTIVE_SELECTION'];
     $mediaBrowser = new \Cx\Core_Modules\MediaBrowser\Model\Entity\MediaBrowser();
     $mediaBrowser->setCallback('mbCallback');
     $mediaBrowser->setOptions(array('type' => 'button', 'data-cx-mb-views' => 'filebrowser', 'id' => 'mediabrowser_button', 'style' => 'display: none;'));
     /* Update progress */
     if (!empty($_POST['saveMotives'])) {
         $i = 0;
         $motiveInputArray = $_POST['motiveInputArray'];
         while ($i < 9) {
             $filepath = $motiveInputArray[$i];
             $filename = basename($filepath);
             $query = "\n                    UPDATE " . DBPREFIX . "module_ecard_settings\n                       SET setting_value='" . contrexx_addslashes($filename) . "'\n                     WHERE setting_name='motive_{$i}'";
             $objResult = $objDatabase->Execute($query);
             /* Create optimized picture for e-card dispatch */
             if ($filepath != '' && file_exists(\Env::get('cx')->getWebsitePath() . $filepath)) {
                 $this->resizeMotive(2, \Env::get('cx')->getWebsitePath() . $filepath, ASCMS_ECARD_OPTIMIZED_PATH . '/');
                 $this->resizeMotive(1, \Env::get('cx')->getWebsitePath() . $filepath, ASCMS_ECARD_THUMBNAIL_PATH . '/');
             }
             ++$i;
         }
         $this->_objTpl->setVariable(array('CONTENT_OK_MESSAGE' => $this->strOkMessage = $_ARRAYLANG['TXT_DATA_SAVED']));
     }
     $this->_objTpl->setGlobalVariable(array('TXT_SAVE' => $_ARRAYLANG['TXT_SAVE'], 'TXT_DELETE_MOTIVE' => $_ARRAYLANG['TXT_DELETE_MOTIVE'], 'TXT_PICTURE' => $_ARRAYLANG['TXT_PICTURE'], 'TXT_PATH' => $_ARRAYLANG['TXT_PATH'], 'TXT_BROWSE' => $_ARRAYLANG['TXT_BROWSE'], 'TXT_CHOOSE' => $_ARRAYLANG['TXT_CHOOSE'], 'TXT_DELETE' => $_ARRAYLANG['TXT_DELETE'], 'TXT_ECARD_IMAGES' => $_ARRAYLANG['TXT_ECARD_IMAGES'], 'MEDIABROWSER_BUTTON' => $mediaBrowser->getXHtml($_ARRAYLANG['TXT_CORE_CM_BROWSE'])));
     /* Display progress */
     $query = "\n            SELECT `setting_value`\n              FROM " . DBPREFIX . "module_ecard_settings\n             WHERE setting_name LIKE 'motive_%'\n             ORDER BY setting_name ASC";
     $objResult = $objDatabase->Execute($query);
     $i = 0;
     /* Create thumbnails */
     while (!$objResult->EOF) {
         $motiveFilename = $objResult->fields['setting_value'];
         $thumbnail = ASCMS_ECARD_THUMBNAIL_WEB_PATH . '/' . "no_picture.gif";
         $sourcePath = '';
         if ($motiveFilename != '') {
             $sourcePath = ASCMS_ECARD_OPTIMIZED_WEB_PATH . '/' . $motiveFilename;
             $thumbnail = ASCMS_ECARD_THUMBNAIL_WEB_PATH . '/' . $motiveFilename;
         }
         /* Initialize DATA placeholder */
         $this->_objTpl->setVariable(array('MOTIVE_PATH' => $sourcePath, 'MOTIVE_THUMB_PATH' => $thumbnail, 'MOTIVE_ID' => $i++));
         $this->_objTpl->parse('motiveBlock');
         $objResult->MoveNext();
     }
     $this->_objTpl->replaceBlock('motiveBlock', '', true);
 }
 public function preFinalize(\Cx\Core\Html\Sigma $template)
 {
     if (count($this->uploaderInstances) == 0) {
         return;
     } else {
         global $_ARRAYLANG;
         \Env::get('init')->loadLanguageData('Uploader');
         foreach ($_ARRAYLANG as $key => $value) {
             if (preg_match("/UPLOADER(_[A-Za-z0-9]+)?/", $key)) {
                 \ContrexxJavascript::getInstance()->setVariable($key, $value, 'mediabrowser');
             }
         }
         \JS::activate('mediabrowser');
         \JS::registerJS('core_modules/Uploader/View/Script/uploader.js');
     }
 }
Example #13
0
 /**
  * @override
  */
 public function getXHtml()
 {
     global $_CORELANG;
     // CSS dependencies
     \JS::activate('cx');
     $uploadPath = $this->getUploadPath('pl');
     $tpl = new \Cx\Core\Html\Sigma(ASCMS_CORE_MODULE_PATH . '/Upload/template/uploaders');
     $tpl->setErrorHandling(PEAR_ERROR_DIE);
     $tpl->loadTemplateFile('pl.html');
     $tpl->setVariable('UPLOAD_FLASH_URL', ASCMS_CORE_MODULE_WEB_PATH . '/Upload/ressources/uploaders/pl/plupload.flash.swf');
     $tpl->setVariable('UPLOAD_CHUNK_LENGTH', \FWSystem::getLiteralSizeFormat(\FWSystem::getMaxUploadFileSize() - 1000));
     $tpl->setVariable('UPLOAD_URL', $uploadPath);
     $tpl->setVariable('UPLOAD_ID', $this->uploadId);
     //I18N
     $tpl->setVariable(array('UPLOAD' => $_CORELANG['UPLOAD'], 'OTHER_UPLOADERS' => $_CORELANG['OTHER_UPLOADERS'], 'FORM_UPLOADER' => $_CORELANG['FORM_UPLOADER'], 'PL_UPLOADER' => $_CORELANG['PL_UPLOADER'], 'JUMP_UPLOADER' => $_CORELANG['JUMP_UPLOADER'], 'SELECT_FILES' => $_CORELANG['SELECT_FILES'], 'ADD_INSTRUCTIONS' => $_CORELANG['ADD_INSTRUCTIONS'], 'FILENAME' => $_CORELANG['FILENAME'], 'STATUS' => $_CORELANG['STATUS'], 'SIZE' => $_CORELANG['SIZE'], 'ADD_FILES' => $_CORELANG['ADD_FILES'], 'STOP_CURRENT_UPLOAD' => $_CORELANG['STOP_CURRENT_UPLOAD'], 'DRAG_FILES_HERE' => $_CORELANG['DRAG_FILES_HERE']));
     return $tpl->get();
 }
    /**
     * Registers the JavaScript code for jQueryUi.Datepicker
     *
     * Also activates jQueryUi and tries to load the current language and use
     * that as the default.
     * Add element specific defaults and code in your method.
     */
    static function addDatepickerJs()
    {
        static $language_code = null;
        // Only run once
        if ($language_code) {
            return;
        }
        JS::activate('jqueryui');
        $language_code = FWLanguage::getLanguageCodeById(FRONTEND_LANG_ID);
        //DBG::log("Language ID ".FRONTEND_LANG_ID.", code $language_code");
        // Must load timepicker as well, because the region file accesses it
        JS::registerJS('lib/javascript/jquery/ui/jquery-ui-timepicker-addon.js');
        // TODO: Add more languages to the i18n folder!
        JS::registerJS('lib/javascript/jquery/ui/i18n/' . 'jquery.ui.datepicker-' . $language_code . '.js');
        JS::registerCode('
cx.jQuery(function() {
  cx.jQuery.datepicker.setDefaults(cx.jQuery.datepicker.regional["' . $language_code . '"]);
});
');
    }
Example #15
0
 /**
  * Get the html source code for the wysiwyg editor
  *
  * @return string
  */
 public function getSourceCode()
 {
     $mediaBrowserCkeditor = new MediaBrowser();
     $mediaBrowserCkeditor->setOptions(array('type' => 'button', 'style' => 'display:none'));
     $mediaBrowserCkeditor->setCallback('ckeditor_image_callback');
     $mediaBrowserCkeditor->setOptions(array('id' => 'ckeditor_image_button'));
     \JS::activate('ckeditor');
     \JS::activate('jquery');
     $configPath = ASCMS_PATH_OFFSET . substr(\Env::get('ClassLoader')->getFilePath(ASCMS_CORE_PATH . '/Wysiwyg/ckeditor.config.js.php'), strlen(ASCMS_DOCUMENT_ROOT));
     $options = array("customConfig: CKEDITOR.getUrl('" . $configPath . "?langId=" . $this->langId . "')", "width: '" . $this->types[$this->type]['width'] . "'", "height: '" . $this->types[$this->type]['height'] . "'", "toolbar: '" . $this->types[$this->type]['toolbar'] . "'", "fullPage: " . $this->types[$this->type]['fullPage']);
     $extraPlugins = array_merge($this->extraPlugins, $this->types[$this->type]['extraPlugins']);
     if (!empty($extraPlugins)) {
         $options[] = "extraPlugins: '" . implode(',', $extraPlugins) . "'";
     }
     $onReady = "CKEDITOR.replace('" . $this->name . "', { %s });";
     \JS::registerCode('
         $J(function(){
             ' . sprintf($onReady, implode(",\r\n", $options)) . '
         });
     ');
     return $mediaBrowserCkeditor->getXHtml('mediabrowser') . '<textarea name="' . $this->name . '" style="width: 100%; height: ' . $this->types[$this->type]['height'] . 'px">' . $this->value . '</textarea>';
 }
 public function preFinalize(\Cx\Core\Html\Sigma $template)
 {
     if (count($this->uploaderInstances) == 0) {
         return;
     }
     global $_ARRAYLANG;
     \Env::get('init')->loadLanguageData('Uploader');
     foreach ($_ARRAYLANG as $key => $value) {
         if (preg_match("/UPLOADER(_[A-Za-z0-9]+)?/", $key)) {
             \ContrexxJavascript::getInstance()->setVariable($key, $value, 'mediabrowser');
         }
     }
     $appendix = "";
     foreach ($this->uploaderInstances as $uploader) {
         if ($uploader->getType() == Uploader::UPLOADER_TYPE_MODAL) {
             $appendix .= $uploader->getContainer();
         }
     }
     $template->_blocks["__global__"] = preg_replace("/<\\/body>/", $appendix . '</body>', $template->_blocks["__global__"]);
     \ContrexxJavascript::getInstance()->setVariable('chunk_size', min(floor((\FWSystem::getMaxUploadFileSize() - 1000000) / 1000000), 20) . 'mb', 'uploader');
     \JS::activate('mediabrowser');
     \JS::registerJS('core_modules/Uploader/View/Script/Uploader.js');
 }
Example #17
0
 /**
  * Display and editing Media settings
  *
  * @return    string    parsed content
  */
 function _settings()
 {
     global $_CORELANG, $_ARRAYLANG, $objDatabase;
     \JS::activate('jquery');
     $this->_arrSettings = $this->createSettingsArray();
     $objFWUser = \FWUser::getFWUserObject();
     $this->_objTpl->loadTemplateFile('module_media_settings.html', true, true);
     $archive = '';
     if (isset($_GET['archive'])) {
         $archive = contrexx_input2raw($_GET['archive']);
     }
     if ($archive == 'FileSharing') {
         $this->_objTpl->hideBlock('mediaarchive_section');
         $objFileshare = new \Cx\Modules\FileSharing\Controller\FileSharingManager($this->_objTpl);
         $objFileshare->parseSettingsPage();
     } else {
         $this->_objTpl->touchBlock('mediaarchive_section');
     }
     $this->pageTitle = $_ARRAYLANG['TXT_MEDIA_SETTINGS'];
     $this->_objTpl->setGlobalVariable(array('TXT_MEDIA_ARCHIVE' => $_ARRAYLANG['TXT_MEDIA_ARCHIVE'], 'TXT_FILESHARING' => $_ARRAYLANG['TXT_FILESHARING_MODULE'], 'TXT_MEDIA_SETTINGS' => $_ARRAYLANG['TXT_MEDIA_SETTINGS'], 'TXT_MEDIA_ADD' => $_ARRAYLANG['TXT_MEDIA_ADD'], 'TXT_MEDIA_MANAGE' => $_ARRAYLANG['TXT_MEDIA_MANAGE'], 'TXT_MEDIA_ACCESS_SETTINGS' => $_ARRAYLANG['TXT_MEDIA_ACCESS_SETTINGS'], 'TXT_MEDIA_FRONTEND_FILE_UPLOAD_DESC' => $_ARRAYLANG['TXT_MEDIA_FRONTEND_FILE_UPLOAD_DESC'], 'TXT_MEDIA_FRONTEND_FILE_UPLOAD' => $_ARRAYLANG['TXT_MEDIA_FRONTEND_FILE_UPLOAD'], 'TXT_MEDIA_ADDING_DENIED_FOR_ALL' => $_ARRAYLANG['TXT_MEDIA_ADDING_DENIED_FOR_ALL'], 'TXT_MEDIA_ADDING_ALLOWED_FOR_ALL' => $_ARRAYLANG['TXT_MEDIA_ADDING_ALLOWED_FOR_ALL'], 'TXT_MEDIA_ADDING_ALLOWED_FOR_GROUP' => $_ARRAYLANG['TXT_MEDIA_ADDING_ALLOWED_FOR_GROUP'], 'TXT_MEDIA_AVAILABLE_USER_GROUPS' => $_ARRAYLANG['TXT_MEDIA_AVAILABLE_USER_GROUPS'], 'TXT_MEDIA_ASSIGNED_USER_GROUPS' => $_ARRAYLANG['TXT_MEDIA_ASSIGNED_USER_GROUPS'], 'TXT_MEDIA_CHECK_ALL' => $_ARRAYLANG['TXT_MEDIA_CHECK_ALL'], 'TXT_MEDIA_UNCHECK_ALL' => $_ARRAYLANG['TXT_MEDIA_UNCHECK_ALL'], 'TXT_BUTTON_SAVE' => $_ARRAYLANG['TXT_MEDIA_SAVE']));
     for ($k = 1; $k <= 4; $k++) {
         $arrAssociatedGroupOptions = array();
         $arrNotAssociatedGroupOptions = array();
         $arrAssociatedGroups = array();
         $arrAssociatedGroupManageOptions = array();
         $arrNotAssociatedGroupManageOptions = array();
         $arrAssociatedManageGroups = array();
         $mediaAccessSetting = $this->_arrSettings['media' . $k . '_frontend_changable'];
         $mediaManageSetting = $this->_arrSettings['media' . $k . '_frontend_managable'];
         if (!is_numeric($mediaAccessSetting)) {
             // Get all groups
             $objGroup = $objFWUser->objGroup->getGroups();
         } else {
             // Get access groups
             $objGroup = $objFWUser->objGroup->getGroups(array('dynamic' => $mediaAccessSetting));
             $arrAssociatedGroups = $objGroup->getLoadedGroupIds();
         }
         $objGroup = $objFWUser->objGroup->getGroups();
         while (!$objGroup->EOF) {
             $option = '<option value="' . $objGroup->getId() . '">' . htmlentities($objGroup->getName(), ENT_QUOTES, CONTREXX_CHARSET) . ' [' . $objGroup->getType() . ']</option>';
             if (in_array($objGroup->getId(), $arrAssociatedGroups)) {
                 $arrAssociatedGroupOptions[] = $option;
             } else {
                 $arrNotAssociatedGroupOptions[] = $option;
             }
             $objGroup->next();
         }
         if (!is_numeric($mediaManageSetting)) {
             // Get all groups
             $objGroup = $objFWUser->objGroup->getGroups();
         } else {
             // Get access groups
             $objGroup = $objFWUser->objGroup->getGroups(array('dynamic' => $mediaManageSetting));
             $arrAssociatedManageGroups = $objGroup->getLoadedGroupIds();
         }
         $objGroup = $objFWUser->objGroup->getGroups();
         while (!$objGroup->EOF) {
             $option = '<option value="' . $objGroup->getId() . '">' . htmlentities($objGroup->getName(), ENT_QUOTES, CONTREXX_CHARSET) . ' [' . $objGroup->getType() . ']</option>';
             if (in_array($objGroup->getId(), $arrAssociatedManageGroups)) {
                 $arrAssociatedGroupManageOptions[] = $option;
             } else {
                 $arrNotAssociatedGroupManageOptions[] = $option;
             }
             $objGroup->next();
         }
         $this->_objTpl->setVariable(array('MEDIA_ARCHIVE_NUMBER' => $k, 'MEDIA_TAB_STYLE' => $k == 1 ? 'block' : 'none', 'MEDIA_ALLOW_USER_CHANGE_ON' => $this->_arrSettings['media' . $k . '_frontend_changable'] == 'on' ? 'checked="checked"' : '', 'MEDIA_ALLOW_USER_CHANGE_OFF' => $this->_arrSettings['media' . $k . '_frontend_changable'] == 'off' ? 'checked="checked"' : '', 'MEDIA_ALLOW_USER_CHANGE_GROUP' => is_numeric($this->_arrSettings['media' . $k . '_frontend_changable']) ? 'checked="checked"' : '', 'MEDIA_ACCESS_DISPLAY' => is_numeric($this->_arrSettings['media' . $k . '_frontend_changable']) ? 'block' : 'none', 'MEDIA_ACCESS_ASSOCIATED_GROUPS' => implode("\n", $arrAssociatedGroupOptions), 'MEDIA_ACCESS_NOT_ASSOCIATED_GROUPS' => implode("\n", $arrNotAssociatedGroupOptions), 'MEDIA_ALLOW_USER_MANAGE_ON' => $this->_arrSettings['media' . $k . '_frontend_managable'] == 'on' ? 'checked="checked"' : '', 'MEDIA_ALLOW_USER_MANAGE_OFF' => $this->_arrSettings['media' . $k . '_frontend_managable'] == 'off' ? 'checked="checked"' : '', 'MEDIA_ALLOW_USER_MANAGE_GROUP' => is_numeric($this->_arrSettings['media' . $k . '_frontend_managable']) ? 'checked="checked"' : '', 'MEDIA_MANAGE_DISPLAY' => is_numeric($this->_arrSettings['media' . $k . '_frontend_managable']) ? 'block' : 'none', 'MEDIA_MANAGE_ASSOCIATED_GROUPS' => implode("\n", $arrAssociatedGroupManageOptions), 'MEDIA_MANAGE_NOT_ASSOCIATED_GROUPS' => implode("\n", $arrNotAssociatedGroupManageOptions)));
         if ($this->_objTpl->blockExists("mediaAccessSection")) {
             $this->_objTpl->parse("mediaAccessSection");
         }
     }
 }
    /**
     * This function returns the DataElement
     *
     * @param string $name name of the DataElement
     * @param string $type type of the DataElement
     * @param int $length length of the DataElement
     * @param mixed $value value of the DataElement
     * @param array $options options for the DataElement
     * @param int $entityId id of the DataElement
     * @return \Cx\Core\Html\Model\Entity\DataElement
     */
    public function getDataElement($name, $type, $length, $value, &$options, $entityId)
    {
        global $_ARRAYLANG, $_CORELANG;
        if (isset($options['formfield'])) {
            $formFieldGenerator = $options['formfield'];
            $formField = '';
            /* We use json to do the callback. The 'else if' is for backwards compatibility so you can declare
             * the function directly without using json. This is not recommended and not working over session */
            if (is_array($formFieldGenerator) && isset($formFieldGenerator['adapter']) && isset($formFieldGenerator['method'])) {
                $json = new \Cx\Core\Json\JsonData();
                $jsonResult = $json->data($formFieldGenerator['adapter'], $formFieldGenerator['method'], array('name' => $name, 'type' => $type, 'length' => $length, 'value' => $value, 'options' => $options));
                if ($jsonResult['status'] == 'success') {
                    $formField = $jsonResult["data"];
                }
            } else {
                if (is_callable($formFieldGenerator)) {
                    $formField = $formFieldGenerator($name, $type, $length, $value, $options);
                }
            }
            if (is_a($formField, 'Cx\\Core\\Html\\Model\\Entity\\HtmlElement')) {
                return $formField;
            } else {
                $value = $formField;
            }
        }
        if (isset($options['showDetail']) && $options['showDetail'] === false) {
            return '';
        }
        switch ($type) {
            case 'bool':
            case 'boolean':
                // yes/no checkboxes
                $fieldset = new \Cx\Core\Html\Model\Entity\HtmlElement('div');
                $inputYes = new \Cx\Core\Html\Model\Entity\DataElement($name, 'yes');
                $inputYes->setAttribute('type', 'radio');
                $inputYes->setAttribute('value', '1');
                $inputYes->setAttribute('id', 'form-' . $this->formId . '-' . $name . '_yes');
                if (isset($options['attributes'])) {
                    $inputYes->setAttributes($options['attributes']);
                }
                $fieldset->addChild($inputYes);
                $labelYes = new \Cx\Core\Html\Model\Entity\HtmlElement('label');
                $labelYes->setAttribute('for', 'form-' . $this->formId . '-' . $name . '_yes');
                $labelYes->addChild(new \Cx\Core\Html\Model\Entity\TextElement($_ARRAYLANG['TXT_YES']));
                $fieldset->addChild($labelYes);
                $inputNo = new \Cx\Core\Html\Model\Entity\DataElement($name, 'no');
                $inputNo->setAttribute('id', 'form-' . $this->formId . '-' . $name . '_no');
                $inputNo->setAttribute('type', 'radio');
                $inputNo->setAttribute('value', '0');
                if (isset($options['attributes'])) {
                    $inputNo->setAttributes($options['attributes']);
                }
                $fieldset->addChild($inputNo);
                $labelNo = new \Cx\Core\Html\Model\Entity\HtmlElement('label');
                $labelNo->setAttribute('for', 'form-' . $this->formId . '-' . $name . '_no');
                $labelNo->addChild(new \Cx\Core\Html\Model\Entity\TextElement($_ARRAYLANG['TXT_NO']));
                $fieldset->addChild($labelNo);
                if ($value) {
                    $inputYes->setAttribute('checked');
                } else {
                    $inputNo->setAttribute('checked');
                }
                return $fieldset;
                break;
            case 'int':
            case 'integer':
                // input field with type number
                $inputNumber = new \Cx\Core\Html\Model\Entity\DataElement($name, $value, \Cx\Core\Html\Model\Entity\DataElement::TYPE_INPUT, new \Cx\Core\Validate\Model\Entity\RegexValidator('/-?[0-9]*/'));
                if (isset($options['attributes'])) {
                    $inputNumber->setAttributes($options['attributes']);
                }
                $inputNumber->setAttribute('type', 'number');
                return $inputNumber;
                break;
            case 'Cx\\Model\\Base\\EntityBase':
                $associatedClass = get_class($value);
                \JS::registerJS('core/Html/View/Script/Backend.js');
                \ContrexxJavascript::getInstance()->setVariable('Form/Error', $_ARRAYLANG['TXT_CORE_HTML_FORM_VALIDATION_ERROR'], 'core/Html/lang');
                if (\Env::get('em')->getClassMetadata($this->entityClass)->isSingleValuedAssociation($name)) {
                    // this case is used to create a select field for 1 to 1 associations
                    $entities = \Env::get('em')->getRepository($associatedClass)->findAll();
                    $foreignMetaData = \Env::get('em')->getClassMetadata($associatedClass);
                    $primaryKeyName = $foreignMetaData->getSingleIdentifierFieldName();
                    $selected = $foreignMetaData->getFieldValue($value, $primaryKeyName);
                    $arrEntities = array();
                    $closeMetaData = \Env::get('em')->getClassMetadata($this->entityClass);
                    $assocMapping = $closeMetaData->getAssociationMapping($name);
                    $validator = null;
                    if (!isset($assocMapping['joinColumns'][0]['nullable']) || $assocMapping['joinColumns'][0]['nullable']) {
                        $arrEntities['NULL'] = $_ARRAYLANG['TXT_CORE_NONE'];
                    } else {
                        $validator = new \Cx\Core\Validate\Model\Entity\RegexValidator('/^(?!null$|$)/');
                    }
                    foreach ($entities as $entity) {
                        $arrEntities[\Env::get('em')->getClassMetadata($associatedClass)->getFieldValue($entity, $primaryKeyName)] = $entity;
                    }
                    $select = new \Cx\Core\Html\Model\Entity\DataElement($name, \Html::getOptions($arrEntities, $selected), \Cx\Core\Html\Model\Entity\DataElement::TYPE_SELECT, $validator);
                    if (isset($options['attributes'])) {
                        $select->setAttributes($options['attributes']);
                    }
                    return $select;
                } else {
                    // this case is used to list all existing values and show an add button for 1 to many associations
                    $closeMetaData = \Env::get('em')->getClassMetadata($this->entityClass);
                    $assocMapping = $closeMetaData->getAssociationMapping($name);
                    $mainDiv = new \Cx\Core\Html\Model\Entity\HtmlElement('div');
                    $mainDiv->setAttribute('class', 'entityList');
                    $addButton = new \Cx\Core\Html\Model\Entity\HtmlElement('input');
                    $addButton->setAttribute('type', 'button');
                    $addButton->setClass(array('form-control', 'add_' . $this->createCssClassNameFromEntity($associatedClass), 'mappedAssocciationButton'));
                    $addButton->setAttribute('value', $_CORELANG['TXT_ADD']);
                    $addButton->setAttribute('data-params', 'entityClass:' . $associatedClass . ';' . 'mappedBy:' . $assocMapping['mappedBy'] . ';' . 'cssName:' . $this->createCssClassNameFromEntity($associatedClass) . ';' . 'sessionKey:' . $this->entityClass);
                    if (!isset($_SESSION['vgOptions'])) {
                        $_SESSION['vgOptions'] = array();
                    }
                    $_SESSION['vgOptions'][$this->entityClass] = $this->componentOptions;
                    if ($entityId != 0) {
                        // if we edit the main form, we also want to show the existing associated values we already have
                        $existingValues = $this->getIdentifyingDisplayValue($assocMapping, $associatedClass, $entityId);
                    }
                    if (!empty($existingValues)) {
                        foreach ($existingValues as $existingValue) {
                            $mainDiv->addChild($existingValue);
                        }
                    }
                    $mainDiv->addChild($addButton);
                    // if standard tooltip is not disabled, we load the one to n association text
                    if (!isset($options['showstanardtooltip']) || $options['showstanardtooltip']) {
                        if (!empty($options['tooltip'])) {
                            $options['tooltip'] = $options['tooltip'] . '<br /><br /> ' . $_ARRAYLANG['TXT_CORE_RECORD_ONE_TO_N_ASSOCIATION'];
                        } else {
                            $options['tooltip'] = $_ARRAYLANG['TXT_CORE_RECORD_ONE_TO_N_ASSOCIATION'];
                        }
                    }
                    $cxjs = \ContrexxJavascript::getInstance();
                    $cxjs->setVariable('TXT_CANCEL', $_CORELANG['TXT_CANCEL'], 'Html/lang');
                    $cxjs->setVariable('TXT_SUBMIT', $_CORELANG['TXT_SUBMIT'], 'Html/lang');
                    $cxjs->setVariable('TXT_EDIT', $_CORELANG['TXT_EDIT'], 'Html/lang');
                    $cxjs->setVariable('TXT_DELETE', $_CORELANG['TXT_DELETE'], 'Html/lang');
                    return $mainDiv;
                }
                break;
            case 'Country':
                // this is for customizing only:
                $data = \Cx\Core\Country\Controller\Country::getNameById($value);
                if (empty($data)) {
                    $value = 204;
                }
                $options = \Cx\Core\Country\Controller\Country::getMenuoptions($value);
                $select = new \Cx\Core\Html\Model\Entity\DataElement($name, $options, \Cx\Core\Html\Model\Entity\DataElement::TYPE_SELECT);
                if (isset($options['attributes'])) {
                    $select->setAttributes($options['attributes']);
                }
                return $select;
                break;
            case 'DateTime':
            case 'datetime':
            case 'date':
                // input field with type text and class datepicker
                if ($value instanceof \DateTime) {
                    $value = $value->format(ASCMS_DATE_FORMAT);
                }
                if (is_null($value)) {
                    $value = '';
                }
                $input = new \Cx\Core\Html\Model\Entity\DataElement($name, $value);
                $input->setAttribute('type', 'text');
                $input->setAttribute('class', 'datepicker');
                if (isset($options['readonly']) && $options['readonly']) {
                    $input->setAttribute('disabled');
                }
                if (isset($options['attributes'])) {
                    $input->setAttributes($options['attributes']);
                }
                \DateTimeTools::addDatepickerJs();
                \JS::registerCode('
                        cx.jQuery(function() {
                          cx.jQuery(".datepicker").datetimepicker();
                        });
                        ');
                return $input;
                break;
            case 'multiselect':
            case 'select':
                $values = array();
                if (isset($options['validValues'])) {
                    if (is_array($options['validValues'])) {
                        $values = $options['validValues'];
                    } else {
                        $values = explode(',', $options['validValues']);
                        $values = array_combine($values, $values);
                    }
                }
                if ($type == 'multiselect') {
                    $value = explode(',', $value);
                    $value = array_combine($value, $value);
                }
                $selectOptions = \Html::getOptions($values, $value);
                $select = new \Cx\Core\Html\Model\Entity\DataElement($name, $selectOptions, \Cx\Core\Html\Model\Entity\DataElement::TYPE_SELECT);
                if ($type == 'multiselect') {
                    $select->setAttribute('multiple');
                }
                if (isset($options['attributes'])) {
                    $select->setAttributes($options['attributes']);
                }
                return $select;
                break;
            case 'slider':
                // this code should not be here
                // create sorrounding div
                $element = new \Cx\Core\Html\Model\Entity\HtmlElement('div');
                // create div for slider
                $slider = new \Cx\Core\Html\Model\Entity\HtmlElement('div');
                $slider->setAttribute('class', 'slider');
                $element->addChild($slider);
                // create hidden input for slider value
                $input = new \Cx\Core\Html\Model\Entity\DataElement($name, $value + 0, \Cx\Core\Html\Model\Entity\DataElement::TYPE_INPUT);
                $input->setAttribute('type', 'hidden');
                if (isset($options['attributes'])) {
                    $input->setAttributes($options['attributes']);
                }
                $element->addChild($input);
                // add javascript to update input value
                $min = 0;
                $max = 10;
                if (isset($options['validValues'])) {
                    $values = explode(',', $options['validValues']);
                    $min = $values[0];
                    if (isset($values[1])) {
                        $max = $values[1];
                    }
                }
                if (!isset($value)) {
                    $value = 0;
                }
                $script = new \Cx\Core\Html\Model\Entity\HtmlElement('script');
                $script->addChild(new \Cx\Core\Html\Model\Entity\TextElement('
                    cx.jQuery("#form-' . $this->formId . '-' . $name . ' .slider").slider({
                        value: ' . ($value + 0) . ',
                        min: ' . ($min + 0) . ',
                        max: ' . ($max + 0) . ',
                        slide: function( event, ui ) {
                            cx.jQuery("input[name=' . $name . ']").val(ui.value);
                            cx.jQuery("input[name=' . $name . ']").change();
                        }
                    });
                '));
                $element->addChild($script);
                return $element;
                break;
            case 'checkboxes':
                $dataElementGroupType = \Cx\Core\Html\Model\Entity\DataElementGroup::TYPE_CHECKBOX;
            case 'radio':
                $values = array();
                if (isset($options['validValues'])) {
                    $values = explode(',', $options['validValues']);
                    $values = array_combine($values, $values);
                }
                if (!isset($dataElementGroupType)) {
                    $dataElementGroupType = \Cx\Core\Html\Model\Entity\DataElementGroup::TYPE_RADIO;
                }
                $radio = new \Cx\Core\Html\Model\Entity\DataElementGroup($name, $values, $value, $dataElementGroupType);
                if (isset($options['attributes'])) {
                    $radio->setAttributes($options['attributes']);
                }
                return $radio;
                break;
            case 'text':
                // textarea
                $textarea = new \Cx\Core\Html\Model\Entity\HtmlElement('textarea');
                $textarea->setAttribute('name', $name);
                if (isset($options['readonly']) && $options['readonly']) {
                    $textarea->setAttribute('disabled');
                }
                $textarea->addChild(new \Cx\Core\Html\Model\Entity\TextElement($value));
                if (isset($options['attributes'])) {
                    $textarea->setAttributes($options['attributes']);
                }
                return $textarea;
                break;
            case 'phone':
                // input field with type phone
                $input = new \Cx\Core\Html\Model\Entity\DataElement($name, $value);
                $input->setAttribute('type', 'phone');
                if (isset($options['readonly']) && $options['readonly']) {
                    $input->setAttribute('disabled');
                }
                if (isset($options['attributes'])) {
                    $input->setAttributes($options['attributes']);
                }
                return $input;
                break;
            case 'mail':
                // input field with type mail
                $emailValidator = new \Cx\Core\Validate\Model\Entity\EmailValidator();
                $input = new \Cx\Core\Html\Model\Entity\DataElement($name, $value, 'input', $emailValidator);
                $input->setAttribute('onkeyup', $emailValidator->getJavaScriptCode());
                $input->setAttribute('type', 'mail');
                if (isset($options['attributes'])) {
                    $input->setAttributes($options['attributes']);
                }
                if (isset($options['readonly']) && $options['readonly']) {
                    $input->setAttribute('disabled');
                }
                return $input;
                break;
            case 'uploader':
                \JS::registerCode('
                    function javascript_callback_function(data) {
                        if(data.type=="file") {
                                cx.jQuery("#' . $name . '").val(data.data[0].datainfo.filepath);
                        }
                    }

                ');
                $mediaBrowser = new \Cx\Core_Modules\MediaBrowser\Model\Entity\MediaBrowser();
                $mediaBrowser->setOptions(array('type' => 'button'));
                $mediaBrowser->setCallback('javascript_callback_function');
                $mediaBrowser->setOptions(array('data-cx-mb-views' => 'filebrowser,uploader', 'id' => 'page_target_browse', 'cxMbStartview' => 'MediaBrowserList'));
                $input = new \Cx\Core\Html\Model\Entity\DataElement($name, $value);
                $input->setAttribute('type', 'text');
                $input->setAttribute('id', $name);
                $div = new \Cx\Core\Html\Model\Entity\HtmlElement('div');
                $div->addChild($input);
                $div->addChild(new \Cx\Core\Html\Model\Entity\TextElement($mb = $mediaBrowser->getXHtml($_ARRAYLANG['TXT_CORE_CM_BROWSE'])));
                return $div;
                break;
            case 'image':
                \JS::registerCode('
                    function javascript_callback_function(data) {
                        if ( data.data[0].datainfo.extension=="Jpg"
                            || data.data[0].datainfo.extension=="Gif"
                            || data.data[0].datainfo.extension=="Png"
                        ) {
                            cx.jQuery("#' . $name . '").attr(\'value\', data.data[0].datainfo.filepath);
                            cx.jQuery("#' . $name . '").prevAll(\'.deletePreviewImage\').first().css(\'display\', \'inline-block\');
                            cx.jQuery("#' . $name . '").prevAll(\'.previewImage\').first().attr(\'src\', data.data[0].datainfo.filepath);
                        }
                    }

                    jQuery(document).ready(function(){
                        jQuery(\'.deletePreviewImage\').click(function(){
                            cx.jQuery("#' . $name . '").attr(\'value\', \'\');
                            cx.jQuery(this).prev(\'img\').attr(\'src\', \'/images/Downloads/no_picture.gif\');
                            cx.jQuery(this).css(\'display\', \'none\');
                            cx.jQuery(this).nextAll(\'input\').first().attr(\'value\', \'\');
                        });
                    });

                ');
                $mediaBrowser = new \Cx\Core_Modules\MediaBrowser\Model\Entity\MediaBrowser();
                $mediaBrowser->setOptions(array('type' => 'button'));
                $mediaBrowser->setCallback('javascript_callback_function');
                $defaultOptions = array('data-cx-mb-views' => 'filebrowser,uploader', 'id' => 'page_target_browse', 'cxMbStartview' => 'MediaBrowserList');
                $mediaBrowser->setOptions(is_array($options['options']) ? array_merge($defaultOptions, $options['options']) : $defaultOptions);
                // create hidden input to save image
                $input = new \Cx\Core\Html\Model\Entity\DataElement($name, $value);
                $input->setAttribute('type', 'hidden');
                $input->setAttribute('id', $name);
                $div = new \Cx\Core\Html\Model\Entity\HtmlElement('div');
                if (isset($value) && in_array(pathinfo($value, PATHINFO_EXTENSION), array('gif', 'jpg', 'png')) || $name == 'imagePath') {
                    // this image is meant to be a preview of the selected image
                    $previewImage = new \Cx\Core\Html\Model\Entity\HtmlElement('img');
                    $previewImage->setAttribute('class', 'previewImage');
                    $previewImage->setAttribute('src', $value != '' ? $value : '/images/Downloads/no_picture.gif');
                    // this image is uesd as delete function for the selected image over javascript
                    $deleteImage = new \Cx\Core\Html\Model\Entity\HtmlElement('img');
                    $deleteImage->setAttribute('class', 'deletePreviewImage');
                    $deleteImage->setAttribute('src', '/core/Core/View/Media/icons/delete.gif');
                    $div->addChild($previewImage);
                    $div->addChild($deleteImage);
                    $div->addChild(new \Cx\Core\Html\Model\Entity\HtmlElement('br'));
                }
                $div->addChild($input);
                $div->addChild(new \Cx\Core\Html\Model\Entity\TextElement($mediaBrowser->getXHtml($_ARRAYLANG['TXT_CORE_CM_BROWSE'])));
                return $div;
                break;
            case 'sourcecode':
                //set mode
                $mode = 'html';
                if (isset($options['options']['mode'])) {
                    switch ($options['options']['mode']) {
                        case 'js':
                            $mode = 'javascript';
                            break;
                        case 'yml':
                        case 'yaml':
                            $mode = 'yaml';
                            break;
                    }
                }
                //define textarea
                $textarea = new \Cx\Core\Html\Model\Entity\HtmlElement('textarea');
                $textarea->setAttribute('name', $name);
                $textarea->setAttribute('id', $name);
                $textarea->setAttribute('style', 'display:none;');
                $textarea->addChild(new \Cx\Core\Html\Model\Entity\TextElement($value));
                //define pre
                $pre = new \Cx\Core\Html\Model\Entity\HtmlElement('pre');
                $pre->setAttribute('id', 'editor-' . $name);
                $pre->addChild(new \Cx\Core\Html\Model\Entity\TextElement(contrexx_raw2xhtml($value)));
                //set readonly if necessary
                $readonly = '';
                if (isset($options['readonly']) && $options['readonly']) {
                    $readonly = 'editor.setReadOnly(true);';
                    $textarea->setAttribute('disabled');
                }
                //create div and add all stuff
                $div = new \Cx\Core\Html\Model\Entity\HtmlElement('div');
                //     required for the Ace editor to work. Otherwise
                //     it won't be visible as the DIV does have a width of 0px.
                $div->setAttribute('style', 'display:block;');
                $div->addChild($textarea);
                $div->addChild($pre);
                //register js
                $jsCode = <<<CODE
var editor;
\$J(function(){
if (\$J("#editor-{$name}").length) {
    editor = ace.edit("editor-{$name}");
    editor.getSession().setMode("ace/mode/{$mode}");
    editor.setShowPrintMargin(false);
    editor.focus();
    editor.gotoLine(1);
    {$readonly}
}

\$J('form').submit(function(){
    \$J('#{$name}').val(editor.getSession().getValue());
});

});
CODE;
                \JS::activate('ace');
                \JS::registerCode($jsCode);
                return $div;
                break;
            case 'string':
            case 'hidden':
            default:
                // convert NULL to empty string
                if (is_null($value)) {
                    $value = '';
                }
                // input field with type text
                $input = new \Cx\Core\Html\Model\Entity\DataElement($name, $value);
                if (isset($options['validValues'])) {
                    $input->setValidator(new \Cx\Core\Validate\Model\Entity\RegexValidator('/^' . $options['validValues'] . '$/'));
                }
                if ($type == 'hidden') {
                    $input->setAttribute('type', 'hidden');
                } else {
                    $input->setAttribute('type', 'text');
                    $input->setClass('form-control');
                }
                if (isset($options['readonly']) && $options['readonly']) {
                    $input->setAttribute('disabled');
                }
                if (isset($options['attributes'])) {
                    $input->setAttributes($options['attributes']);
                }
                return $input;
                break;
        }
    }
 /**
  * Show the password reset mask.
  *
  * @access  private
  * @global  array    $_ARRAYLANG
  * @global  FWUser   $objFWUser
  */
 private function showPasswordReset()
 {
     global $_ARRAYLANG;
     \JS::activate('jquery');
     $objFWUser = \FWUser::getFWUserObject();
     $this->objTemplate->addBlockfile('CONTENT_FILE', 'CONTENT_BLOCK', '/core_modules/Login/View/Template/Backend/login_reset_password.html');
     $this->objTemplate->setVariable(array('TITLE' => $_ARRAYLANG['TXT_LOGIN_SET_NEW_PASSWORD'], 'TXT_LOGIN_BACK_TO_LOGIN' => $_ARRAYLANG['TXT_LOGIN_BACK_TO_LOGIN'], 'TXT_LOGIN_GO_TO_BACKEND' => $_ARRAYLANG['TXT_LOGIN_GO_TO_BACKEND'], 'TXT_LOGIN_ENTER_A_NEW_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_ENTER_A_NEW_PASSWORD'], 'TXT_LOGIN_CONFIRM_NEW_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_CONFIRM_NEW_PASSWORD'], 'JAVASCRIPT' => \JS::getCode()));
     $this->objTemplate->hideBlock('error_message');
     $this->objTemplate->hideBlock('success_message');
     $this->objTemplate->hideBlock('back_to_login');
     // TODO: Why oh why isn't function resetPassword() located in the AccessLibrary?
     $email = isset($_POST['email']) ? contrexx_stripslashes($_POST['email']) : (isset($_GET['email']) ? contrexx_stripslashes($_GET['email']) : '');
     $restoreKey = isset($_POST['restore_key']) ? contrexx_stripslashes($_POST['restore_key']) : (isset($_GET['restoreKey']) ? contrexx_stripslashes($_GET['restoreKey']) : '');
     $password = isset($_POST['PASSWORD']) ? trim(contrexx_stripslashes($_POST['PASSWORD'])) : '';
     $confirmedPassword = isset($_POST['password2']) ? trim(contrexx_stripslashes($_POST['password2'])) : '';
     $this->objTemplate->setVariable(array('LOGIN_EMAIL' => contrexx_raw2xhtml($email), 'LOGIN_RESTORE_KEY' => contrexx_raw2xhtml($restoreKey)));
     if (isset($_POST['reset_password'])) {
         if ($objFWUser->resetPassword($email, $restoreKey, $password, $confirmedPassword, true)) {
             $this->objTemplate->setVariable('LOGIN_SUCCESS_MESSAGE', $_ARRAYLANG['TXT_LOGIN_PASSWORD_CHANGED_SUCCESSFULLY']);
             $this->objTemplate->touchBlock('success_message');
             $this->objTemplate->hideBlock('login_reset_password');
             $this->objTemplate->touchBlock('back_to_login');
             $userFilter = array('active' => 1, 'email' => $email);
             $objUser = $objFWUser->objUser->getUsers($userFilter, null, null, null, 1);
             $objFWUser->loginUser($objUser);
         } else {
             $this->objTemplate->setVariable('LOGIN_ERROR_MESSAGE', $objFWUser->getErrorMsg());
             $this->objTemplate->touchBlock('error_message');
             $this->objTemplate->setVariable(array('TXT_LOGIN_EMAIL' => $_ARRAYLANG['TXT_LOGIN_EMAIL'], 'TXT_LOGIN_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_PASSWORD'], 'TXT_LOGIN_VERIFY_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_VERIFY_PASSWORD'], 'TXT_LOGIN_PASSWORD_MINIMAL_CHARACTERS' => $_ARRAYLANG['TXT_LOGIN_PASSWORD_MINIMAL_CHARACTERS'], 'TXT_LOGIN_SET_PASSWORD_TEXT' => $_ARRAYLANG['TXT_LOGIN_SET_PASSWORD_TEXT'], 'TXT_LOGIN_SET_NEW_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_SET_NEW_PASSWORD']));
             $this->objTemplate->parse('login_reset_password');
         }
     } else {
         $this->objTemplate->setVariable(array('TXT_LOGIN_EMAIL' => $_ARRAYLANG['TXT_LOGIN_EMAIL'], 'TXT_LOGIN_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_PASSWORD'], 'TXT_LOGIN_VERIFY_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_VERIFY_PASSWORD'], 'TXT_LOGIN_PASSWORD_MINIMAL_CHARACTERS' => $_ARRAYLANG['TXT_LOGIN_PASSWORD_MINIMAL_CHARACTERS'], 'TXT_LOGIN_SET_PASSWORD_TEXT' => $_ARRAYLANG['TXT_LOGIN_SET_PASSWORD_TEXT'], 'TXT_LOGIN_SET_NEW_PASSWORD' => $_ARRAYLANG['TXT_LOGIN_SET_NEW_PASSWORD']));
         $this->objTemplate->parse('login_reset_password');
     }
 }
Example #20
0
 /**
  * get oage
  *
  * Reads the act and selects the right action
  *
  * @access   public
  * @return   string  parsed content
  */
 function getPage()
 {
     global $_CONFIG;
     \JS::activate('shadowbox');
     \JS::activate('jquery');
     if ($this->arrSettings['settingsAllowVotes']) {
         $objVoting = new MediaDirectoryVoting($this->moduleName);
         $this->setJavascript($objVoting->getVoteJavascript());
         if (isset($_GET['vote']) && intval($_GET['eid']) != 0) {
             $objVoting->saveVote(intval($_GET['eid']), intval($_GET['vote']));
         }
     }
     if ($this->arrSettings['settingsAllowComments'] == 1) {
         $objComment = new MediaDirectoryComment($this->moduleName);
         $this->setJavascript($objComment->getCommentJavascript());
         $comment = isset($_GET['comment']) ? $_GET['comment'] : '';
         if ($comment == 'add' && intval($_GET['eid']) != 0) {
             $objComment->saveComment(intval($_GET['eid']), $_POST);
         }
         if ($comment == 'refresh' && intval($_GET['eid']) != 0) {
             $objComment->refreshComments(intval($_GET['eid']), $_GET['pageSection'], $_GET['pageCmd']);
         }
     }
     switch ($_REQUEST['cmd']) {
         case 'delete':
             if (!empty($_REQUEST['eid']) || !empty($_REQUEST['entryId'])) {
                 parent::checkAccess('delete_entry');
                 $this->deleteEntry();
             } else {
                 header("Location: index.php?section=" . $this->moduleName);
                 exit;
             }
             break;
         case 'latest':
             $this->showLatest();
             break;
         case 'popular':
             $this->showPopular();
             break;
         case 'map':
             $this->showMap();
             break;
         case 'myentries':
             parent::checkAccess('my_entries');
             $this->showMyEntries();
             break;
         case 'detail':
             parent::checkAccess('show_entry');
             $this->showEntry();
             break;
         case 'adduser':
             $this->showAddUser();
             break;
         case 'confirm_in_progress':
             $this->_objTpl->setTemplate($this->pageContent);
             break;
         case 'alphabetical':
             $this->showAlphabetical();
             break;
         default:
             if (isset($_REQUEST['check'])) {
                 parent::checkDisplayduration();
             }
             if (substr($_REQUEST['cmd'], 0, 6) == 'detail') {
                 parent::checkAccess('show_entry');
                 $this->showEntry();
             } else {
                 if (substr($_REQUEST['cmd'], 0, 3) == 'add') {
                     parent::checkAccess('add_entry');
                     $this->modifyEntry();
                 } else {
                     if (substr($_REQUEST['cmd'], 0, 4) == 'edit') {
                         if (intval($_REQUEST['eid']) != 0 || intval($_REQUEST['entryId']) != 0) {
                             parent::checkAccess('edit_entry');
                             $this->modifyEntry();
                         } else {
                             header("Location: index.php?section=" . $this->moduleName);
                             exit;
                         }
                     } else {
                         if (isset($_REQUEST['search'])) {
                             $this->showSearch();
                         } else {
                             $this->showOverview();
                         }
                     }
                 }
             }
     }
     $this->_objTpl->setVariable(array($this->moduleLangVar . '_JAVASCRIPT' => $this->getJavascript()));
     return $this->_objTpl->get();
 }
    function getJavascript()
    {
        // TODO: do we need the shadowbox every time?
        \JS::activate('shadowbox');
        $strJavascript = <<<EOF
<script language="JavaScript" type="text/javascript">
/* <![CDATA[ */
EOF;
        $strJavascript .= $this->strJavascript;
        $strJavascript .= <<<EOF
/* ]]> */
</script>
EOF;
        return $strJavascript;
    }
Example #22
0
 /**
  * Show archive
  *
  * Show the livecam archive from a specified date
  *
  * @access private
  * @param string $date
  */
 function _showArchive($date)
 {
     global $_ARRAYLANG;
     \JS::activate("shadowbox", array('players' => array('img')));
     \JS::activate('jqueryui');
     \JS::registerCode("\n            cx.ready(function() {\n                cx.jQuery('input[name=date]').datepicker({dateFormat: 'yy-mm-dd'});\n            });\n        ");
     $this->camSettings = $this->getCamSettings($this->cam);
     $this->_getThumbs();
     if (count($this->_arrArchiveThumbs) > 0) {
         $countPerRow;
         $picNr = 1;
         usort($this->_arrArchiveThumbs, array($this, '_sort_thumbs'));
         foreach ($this->_arrArchiveThumbs as $arrThumbnail) {
             if (!isset($countPerRow)) {
                 if (!$this->_objTpl->blockExists($this->_pictureTemplatePlaceholder . $picNr)) {
                     $this->_objTpl->parse('livecamArchiveRow');
                     $countPerRow = $picNr - 1;
                     $picNr = 1;
                 }
             }
             $this->_objTpl->setVariable(array('LIVECAM_PICTURE_URL' => $arrThumbnail['link_url'], 'LIVECAM_PICTURE_TIME' => $arrThumbnail['time'], 'LIVECAM_THUMBNAIL_URL' => $arrThumbnail['image_url'], 'LIVECAM_THUMBNAIL_SIZE' => $this->camSettings['thumbMaxSize'], 'LIVECAM_IMAGE_SHADOWBOX' => $this->camSettings['shadowboxActivate'] == 1 ? 'shadowbox[gallery]' : ''));
             $this->_objTpl->parse($this->_pictureTemplatePlaceholder . $picNr);
             if (isset($countPerRow) && $picNr == $countPerRow) {
                 $picNr = 0;
                 $this->_objTpl->parse('livecamArchiveRow');
             }
             $picNr++;
         }
         $this->_objTpl->parse('livecamArchive');
     } else {
         $this->statusMessage = $_ARRAYLANG['TXT_LIVECAM_NO_PICTURES_OF_SELECTED_DAY'];
     }
 }
Example #23
0
    /**
     * Add / Edit Event
     * 
     * @param integer $eventId Event id
     * 
     * @return null
     */
    function modifyEvent($eventId = null)
    {
        global $_ARRAYLANG, $_CORELANG, $_LANGID;
        \JS::activate('cx');
        \JS::activate('jqueryui');
        \JS::registerJS('modules/Calendar/View/Script/Frontend.js');
        $this->getFrontendLanguages();
        $this->getSettings();
        $this->_objTpl->setTemplate($this->pageContent, true, true);
        $showFrom = true;
        $objEvent = new \Cx\Modules\Calendar\Controller\CalendarEvent();
        $isEventLoaded = false;
        if (isset($_POST['submitFormModifyEvent'])) {
            $arrData = array();
            $arrData = $_POST;
            $arrData['access'] = 0;
            $arrData['priority'] = 3;
            if ($objEvent->save($arrData)) {
                $showFrom = false;
                $this->_objTpl->hideBlock('calendarEventModifyForm');
                $this->_objTpl->touchBlock('calendarEventOkMessage');
                // refresh event data after save
                $objEvent->get($eventId);
                $objEvent->getData();
                $isEventLoaded = true;
                $objMailManager = new \Cx\Modules\Calendar\Controller\CalendarMailManager();
                $objMailManager->sendMail($objEvent, \Cx\Modules\Calendar\Controller\CalendarMailManager::MAIL_NOTFY_NEW_APP);
            } else {
                $this->_objTpl->touchBlock('calendarEventErrMessage');
            }
        }
        if ($eventId && !$isEventLoaded) {
            $objEvent->get($eventId);
            $objEvent->getData();
        }
        $dateFormat = $this->getDateFormat(1);
        $locationType = $this->arrSettings['placeData'] == 3 ? $eventId != 0 ? $objEvent->locationType : 1 : $this->arrSettings['placeData'];
        $hostType = $this->arrSettings['placeDataHost'] == 3 ? $eventId != 0 ? $objEvent->hostType : 1 : $this->arrSettings['placeDataHost'];
        \ContrexxJavascript::getInstance()->setVariable(array('language_id' => \FWLanguage::getDefaultLangId(), 'active_lang' => implode(',', \FWLanguage::getIdArray())), 'calendar');
        $javascript = <<<EOF
<script language="JavaScript" type="text/javascript">
var defaultLang = cx.variables.get('language_id', 'calendar');
var activeLang = [cx.variables.get('active_lang', 'calendar')];
cx.ready(function() {
    var options = {
        dateFormat: '{$dateFormat}',        
        timeFormat: 'hh:mm',
        showSecond: false,
        onSelect: function(dateText, inst){
            var startDate = cx.jQuery( ".startDate" ).datetimepicker("getDate");
            var endDate   = cx.jQuery( ".endDate" ).datetimepicker("getDate");

            if ( cx.jQuery( this )[0].id == 'startDate' ) {
                var prevStartDate = cx.jQuery( ".startDate" ).data('prevDate');

                if (cx.jQuery(".all_day").is(':checked')) {
                    prevStartDate.setHours(0, 0, 0);
                    startDate.setHours(0, 0, 0);
                    endDate.setHours(0, 0, 0);
                }

                if (prevStartDate.getTime() != startDate.getTime()) {
                    var timeDiff = Math.abs(endDate.getTime() - prevStartDate.getTime());
                    endDate = new Date(startDate.getTime() + timeDiff);
                    cx.jQuery( ".endDate" ).datetimepicker('setDate', endDate);
                }

            } else if (startDate.getTime() > endDate.getTime()) {
                endDate = new Date(startDate.getTime() + (30*60*1000));
                cx.jQuery(".endDate").datetimepicker('setDate', endDate);
            }

            cx.jQuery( ".startDate" ).data('prevDate', cx.jQuery(".startDate").datetimepicker("getDate"));
            cx.jQuery( ".endDate" ).data('prevDate', cx.jQuery(".endDate").datetimepicker("getDate"));
            cx.jQuery( this ).datetimepicker('refresh');
        }
    };
    cx.jQuery('input[name=startDate]')
        .datetimepicker(options)
        .data('prevDate', cx.jQuery(".startDate").datetimepicker("getDate"));
    cx.jQuery('input[name=endDate]')
        .datetimepicker(options)
        .data('prevDate', cx.jQuery(".endDate").datetimepicker("getDate"));
    if ( \$J(".all_day").is(':checked') ) {
        modifyEvent._handleAllDayEvent( \$J(".all_day") );
    }
    showOrHidePlaceFields('{$locationType}', 'place');
    showOrHidePlaceFields('{$hostType}', 'host');
});

</script>
EOF;
        if ($showFrom) {
            try {
                $javascript .= <<<UPLOADER
                {$this->getUploaderCode(self::PICTURE_FIELD_KEY, 'pictureUpload')}
                {$this->getUploaderCode(self::MAP_FIELD_KEY, 'mapUpload')}
                {$this->getUploaderCode(self::ATTACHMENT_FIELD_KEY, 'attachmentUpload', 'uploadFinished', false)}
UPLOADER;
            } catch (Exception $e) {
                \DBG::msg("Error in initializing uploader");
            }
        }
        $this->_objTpl->setGlobalVariable(array($this->moduleLangVar . '_EVENT_LANG_ID' => $_LANGID, $this->moduleLangVar . '_JAVASCRIPT' => $javascript));
        $objCategoryManager = new \Cx\Modules\Calendar\Controller\CalendarCategoryManager(true);
        $objCategoryManager->getCategoryList();
        if ($eventId) {
            $startDate = $objEvent->startDate;
            $endDate = $objEvent->endDate;
        } else {
            $startDate = new \DateTime();
            $endDate = new \DateTime();
        }
        $eventStartDate = $this->format2userDateTime($startDate);
        $eventEndDate = $this->format2userDateTime($endDate);
        $this->_objTpl->setGlobalVariable(array('TXT_' . $this->moduleLangVar . '_EVENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_DETAILS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DETAILS'], 'TXT_' . $this->moduleLangVar . '_SAVE' => $_ARRAYLANG['TXT_CALENDAR_SAVE'], 'TXT_' . $this->moduleLangVar . '_EVENT_START' => $_ARRAYLANG['TXT_CALENDAR_START'], 'TXT_' . $this->moduleLangVar . '_EVENT_END' => $_ARRAYLANG['TXT_CALENDAR_END'], 'TXT_' . $this->moduleLangVar . '_EVENT_TITLE' => $_ARRAYLANG['TXT_CALENDAR_TITLE'], 'TXT_' . $this->moduleLangVar . '_EXPAND' => $_ARRAYLANG['TXT_CALENDAR_EXPAND'], 'TXT_' . $this->moduleLangVar . '_MINIMIZE' => $_ARRAYLANG['TXT_CALENDAR_MINIMIZE'], 'TXT_' . $this->moduleLangVar . '_EVENT_PLACE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PLACE'], 'TXT_' . $this->moduleLangVar . '_EVENT_STREET' => $_ARRAYLANG['TXT_CALENDAR_EVENT_STREET'], 'TXT_' . $this->moduleLangVar . '_EVENT_ZIP' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ZIP'], 'TXT_' . $this->moduleLangVar . '_EVENT_CITY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_CITY'], 'TXT_' . $this->moduleLangVar . '_EVENT_COUNTRY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_COUNTRY'], 'TXT_' . $this->moduleLangVar . '_EVENT_WEBSITE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_WEBSITE'], 'TXT_' . $this->moduleLangVar . '_EVENT_PHONE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PHONE'], 'TXT_' . $this->moduleLangVar . '_EVENT_MAP' => $_ARRAYLANG['TXT_CALENDAR_EVENT_MAP'], 'TXT_' . $this->moduleLangVar . '_EVENT_USE_GOOGLEMAPS' => $_ARRAYLANG['TXT_CALENDAR_EVENT_USE_GOOGLEMAPS'], 'TXT_' . $this->moduleLangVar . '_EVENT_LINK' => $_ARRAYLANG['TXT_CALENDAR_EVENT_LINK'], 'TXT_' . $this->moduleLangVar . '_EVENT_EMAIL' => $_ARRAYLANG['TXT_CALENDAR_EVENT_EMAIL'], 'TXT_' . $this->moduleLangVar . '_EVENT_PICTURE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_PICTURE'], 'TXT_' . $this->moduleLangVar . '_EVENT_ATTACHMENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ATTACHMENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_CATEGORY' => $_ARRAYLANG['TXT_CALENDAR_CAT'], 'TXT_' . $this->moduleLangVar . '_EVENT_DESCRIPTION' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DESCRIPTION'], 'TXT_' . $this->moduleLangVar . '_PLEASE_CHECK_INPUT' => $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHECK_INPUT'], 'TXT_' . $this->moduleLangVar . '_EVENT_HOST' => $_ARRAYLANG['TXT_CALENDAR_EVENT_HOST'], 'TXT_' . $this->moduleLangVar . '_EVENT_NAME' => $_ARRAYLANG['TXT_CALENDAR_EVENT_NAME'], 'TXT_' . $this->moduleLangVar . '_EVENT_ALL_DAY' => $_ARRAYLANG['TXT_CALENDAR_EVENT_ALL_DAY'], 'TXT_' . $this->moduleLangVar . '_LANGUAGE' => $_ARRAYLANG['TXT_CALENDAR_LANG'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE_EVENT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_EVENT'], 'TXT_' . $this->moduleLangVar . '_EVENT_TYPE_REDIRECT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_REDIRECT'], 'TXT_' . $this->moduleLangVar . '_EVENT_DESCRIPTION' => $_ARRAYLANG['TXT_CALENDAR_EVENT_DESCRIPTION'], 'TXT_' . $this->moduleLangVar . '_EVENT_REDIRECT' => $_ARRAYLANG['TXT_CALENDAR_EVENT_TYPE_REDIRECT'], 'TXT_' . $this->moduleLangVar . '_PLACE_DATA_DEFAULT' => $_ARRAYLANG['TXT_CALENDAR_PLACE_DATA_DEFAULT'], 'TXT_' . $this->moduleLangVar . '_PLACE_DATA_FROM_MEDIADIR' => $_ARRAYLANG['TXT_CALENDAR_PLACE_DATA_FROM_MEDIADIR'], 'TXT_' . $this->moduleLangVar . '_PREV' => $_ARRAYLANG['TXT_CALENDAR_PREV'], 'TXT_' . $this->moduleLangVar . '_NEXT' => $_ARRAYLANG['TXT_CALENDAR_NEXT'], 'TXT_' . $this->moduleLangVar . '_MORE' => $_ARRAYLANG['TXT_CALENDAR_MORE'], 'TXT_' . $this->moduleLangVar . '_MINIMIZE' => $_ARRAYLANG['TXT_CALENDAR_MINIMIZE'], $this->moduleLangVar . '_EVENT_TYPE_EVENT' => $eventId != 0 ? $objEvent->type == 0 ? 'selected="selected"' : '' : '', $this->moduleLangVar . '_EVENT_TYPE_REDIRECT' => $eventId != 0 ? $objEvent->type == 1 ? 'selected="selected"' : '' : '', $this->moduleLangVar . '_EVENT_START_DATE' => $eventStartDate, $this->moduleLangVar . '_EVENT_END_DATE' => $eventEndDate, $this->moduleLangVar . '_EVENT_PICTURE' => $objEvent->pic, $this->moduleLangVar . '_EVENT_PICTURE_THUMB' => $objEvent->pic != '' ? '<img src="' . $objEvent->pic . '.thumb" alt="' . $objEvent->title . '" title="' . $objEvent->title . '" />' : '', $this->moduleLangVar . '_EVENT_ATTACHMENT' => $objEvent->attach, $this->moduleLangVar . '_EVENT_CATEGORIES' => $objCategoryManager->getCategoryDropdown(intval($objEvent->catId), 2), $this->moduleLangVar . '_EVENT_LINK' => $objEvent->link, $this->moduleLangVar . '_EVENT_PLACE' => $objEvent->place, $this->moduleLangVar . '_EVENT_STREET' => $objEvent->place_street, $this->moduleLangVar . '_EVENT_ZIP' => $objEvent->place_zip, $this->moduleLangVar . '_EVENT_CITY' => $objEvent->place_city, $this->moduleLangVar . '_EVENT_COUNTRY' => $objEvent->place_country, $this->moduleLangVar . '_EVENT_PLACE_WEBSITE' => $objEvent->place_website, $this->moduleLangVar . '_EVENT_PLACE_MAP' => $objEvent->place_map, $this->moduleLangVar . '_EVENT_PLACE_LINK' => $objEvent->place_link, $this->moduleLangVar . '_EVENT_PLACE_PHONE' => $objEvent->place_phone, $this->moduleLangVar . '_EVENT_MAP' => $objEvent->google == 1 ? 'checked="checked"' : '', $this->moduleLangVar . '_EVENT_HOST' => $objEvent->org_name, $this->moduleLangVar . '_EVENT_HOST_ADDRESS' => $objEvent->org_street, $this->moduleLangVar . '_EVENT_HOST_ZIP' => $objEvent->org_zip, $this->moduleLangVar . '_EVENT_HOST_CITY' => $objEvent->org_city, $this->moduleLangVar . '_EVENT_HOST_COUNTRY' => $objEvent->org_country, $this->moduleLangVar . '_EVENT_HOST_WEBSITE' => $objEvent->org_website, $this->moduleLangVar . '_EVENT_HOST_LINK' => $objEvent->org_link, $this->moduleLangVar . '_EVENT_HOST_PHONE' => $objEvent->org_phone, $this->moduleLangVar . '_EVENT_HOST_EMAIL' => $objEvent->org_email, $this->moduleLangVar . '_EVENT_LOCATION_TYPE_MANUAL' => $eventId != 0 ? $objEvent->locationType == 1 ? "checked='checked'" : '' : "checked='checked'", $this->moduleLangVar . '_EVENT_LOCATION_TYPE_MEDIADIR' => $eventId != 0 ? $objEvent->locationType == 2 ? "checked='checked'" : '' : "", $this->moduleLangVar . '_EVENT_HOST_TYPE_MANUAL' => $eventId != 0 ? $objEvent->hostType == 1 ? "checked='checked'" : '' : "checked='checked'", $this->moduleLangVar . '_EVENT_HOST_TYPE_MEDIADIR' => $eventId != 0 ? $objEvent->hostType == 2 ? "checked='checked'" : '' : "", $this->moduleLangVar . '_EVENT_ID' => $eventId, $this->moduleLangVar . '_EVENT_ALL_DAY' => $eventId != 0 && $objEvent->all_day ? 'checked="checked"' : '', $this->moduleLangVar . '_HIDE_ON_SINGLE_LANG' => count($this->arrFrontendLanguages) == 1 ? "display: none;" : ""));
        $multiLingualFields = array('place', 'place_city', 'place_country', 'org_name', 'org_city', 'org_country');
        $isOneActiveLanguage = count($this->arrFrontendLanguages) == 1;
        foreach ($multiLingualFields as $inputField) {
            if ($isOneActiveLanguage) {
                $this->_objTpl->hideBlock('calendar_event_' . $inputField . '_expand');
            } else {
                $this->_objTpl->touchBlock('calendar_event_' . $inputField . '_expand');
            }
        }
        foreach ($this->arrFrontendLanguages as $arrLang) {
            //parse globals
            $this->_objTpl->setGlobalVariable(array($this->moduleLangVar . '_EVENT_LANG_SHORTCUT' => $arrLang['lang'], $this->moduleLangVar . '_EVENT_LANG_ID' => $arrLang['id'], 'TXT_' . $this->moduleLangVar . '_EVENT_LANG_NAME' => $arrLang['name']));
            //parse "show in" checkboxes
            $arrShowIn = explode(",", $objEvent->showIn);
            $langChecked = false;
            if ($eventId != 0) {
                $langChecked = in_array($arrLang['id'], $arrShowIn) ? true : false;
            } else {
                $langChecked = $arrLang['is_default'] == 'true';
            }
            //parse eventTabMenuDescTab
            $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_TAB_DISPLAY' => $langChecked ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TAB_CLASS' => ''));
            $this->_objTpl->parse('eventTabMenuDescTab');
            //parse eventDescTab
            $eventTitle = !empty($objEvent->arrData['title'][$arrLang['id']]) ? $objEvent->arrData['title'][$arrLang['id']] : (!empty($objEvent->arrData['redirect'][$_LANGID]) ? $objEvent->arrData['redirect'][$_LANGID] : '');
            $eventDescription = !empty($objEvent->arrData['description'][$arrLang['id']]) ? $objEvent->arrData['description'][$arrLang['id']] : '';
            $eventRedirect = !empty($objEvent->arrData['redirect'][$arrLang['id']]) ? $objEvent->arrData['redirect'][$arrLang['id']] : (!empty($objEvent->arrData['redirect'][$_LANGID]) ? $objEvent->arrData['redirect'][$_LANGID] : '');
            $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_TAB_DISPLAY' => $langChecked ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TITLE' => contrexx_raw2xhtml($eventTitle), $this->moduleLangVar . '_EVENT_DESCRIPTION' => new \Cx\Core\Wysiwyg\Wysiwyg("description[{$arrLang['id']}]", contrexx_raw2xhtml($eventDescription), $eventId != 0 ? 'small' : 'bbcode'), $this->moduleLangVar . '_EVENT_REDIRECT' => contrexx_raw2xhtml($eventRedirect), $this->moduleLangVar . '_EVENT_TYPE_EVENT_DISPLAY' => $objEvent->type == 0 ? 'block' : 'none', $this->moduleLangVar . '_EVENT_TYPE_REDIRECT_DISPLAY' => $objEvent->type == 1 ? 'block' : 'none'));
            $this->_objTpl->parse('eventDescTab');
            //parse eventLingualFields
            foreach ($multiLingualFields as $inputField) {
                $this->_objTpl->setVariable($this->moduleLangVar . '_EVENT_' . strtoupper($inputField) . '_DEFAULT', $eventId != 0 ? $objEvent->{$inputField} : '');
                $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_VALUE' => !empty($objEvent->arrData[$inputField][$arrLang['id']]) ? $objEvent->arrData[$inputField][$arrLang['id']] : ($eventId != 0 ? $objEvent->{$inputField} : '')));
                $this->_objTpl->parse('calendar_event_' . $inputField);
            }
            $langChecked = $langChecked ? 'checked="checked"' : '';
            $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_LANG_CHECKED' => $langChecked));
            $this->_objTpl->parse('eventShowIn');
        }
        //parse placeSelect
        if ((int) $this->arrSettings['placeData'] > 1) {
            $objMediadirEntries = new \Cx\Modules\MediaDir\Controller\MediaDirectoryEntry('MediaDir');
            $objMediadirEntries->getEntries(null, null, null, null, null, null, true, 0, 'n', null, null, intval($this->arrSettings['placeDataForm']));
            $placeOptions = '<option value="">' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>';
            foreach ($objMediadirEntries->arrEntries as $key => $arrEntry) {
                $selectedPlace = $arrEntry['entryId'] == $objEvent->place_mediadir_id ? 'selected="selected"' : '';
                $placeOptions .= '<option ' . $selectedPlace . ' value="' . $arrEntry['entryId'] . '">' . $arrEntry['entryFields'][0] . '</option>';
            }
            $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_PLACE_OPTIONS' => $placeOptions));
            $this->_objTpl->parse('eventPlaceSelect');
            if ((int) $this->arrSettings['placeData'] == 2) {
                $this->_objTpl->hideBlock('eventPlaceInput');
                $this->_objTpl->hideBlock('eventPlaceTypeRadio');
            } else {
                $this->_objTpl->touchBlock('eventPlaceInput');
                $this->_objTpl->touchBlock('eventPlaceTypeRadio');
            }
        } else {
            $this->_objTpl->touchBlock('eventPlaceInput');
            $this->_objTpl->hideBlock('eventPlaceSelect');
            $this->_objTpl->hideBlock('eventPlaceTypeRadio');
        }
        //parse placeHostSelect
        if ((int) $this->arrSettings['placeDataHost'] > 1) {
            $objMediadirEntries = new \Cx\Modules\MediaDir\Controller\MediaDirectoryEntry('MediaDir');
            $objMediadirEntries->getEntries(null, null, null, null, null, null, true, 0, 'n', null, null, intval($this->arrSettings['placeDataHostForm']));
            $placeOptions = '<option value="">' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>';
            foreach ($objMediadirEntries->arrEntries as $key => $arrEntry) {
                $selectedPlace = $arrEntry['entryId'] == $objEvent->host_mediadir_id ? 'selected="selected"' : '';
                $placeOptions .= '<option ' . $selectedPlace . ' value="' . $arrEntry['entryId'] . '">' . $arrEntry['entryFields'][0] . '</option>';
            }
            $this->_objTpl->setVariable(array($this->moduleLangVar . '_EVENT_PLACE_OPTIONS' => $placeOptions));
            $this->_objTpl->parse('eventHostSelect');
            if ((int) $this->arrSettings['placeDataHost'] == 2) {
                $this->_objTpl->hideBlock('eventHostInput');
                $this->_objTpl->hideBlock('eventHostTypeRadio');
            } else {
                $this->_objTpl->touchBlock('eventHostInput');
                $this->_objTpl->touchBlock('eventHostTypeRadio');
            }
        } else {
            $this->_objTpl->touchBlock('eventHostInput');
            $this->_objTpl->hideBlock('eventHostSelect');
            $this->_objTpl->hideBlock('eventHostTypeRadio');
        }
    }
Example #24
0
 /**
  * Return the code for the placeholder
  * @access public
  * @static
  * @return string
  */
 public static function getCode()
 {
     $cssfiles = array();
     // TODO: Unused
     //        $jsfiles = array();
     //        $specialcode = array();
     $lazyLoadingFiles = array();
     $retstring = '';
     $jsScripts = array();
     if (count(self::$active) > 0) {
         // check for lazy dependencies, if there are lazy dependencies, activate cx
         // cx provides the lazy loading mechanism
         // this should be here because the cx variable have to be set before cx is initialized
         foreach (self::$active as $name) {
             $data = self::$available[$name];
             if (!empty($data['lazyDependencies'])) {
                 foreach ($data['lazyDependencies'] as $dependency) {
                     if (!in_array($dependency, self::$active)) {
                         // if the lazy dependency is not activated so far
                         $lazyLoadingFiles = array_merge($lazyLoadingFiles, self::$available[$dependency]['jsfiles']);
                     }
                     if (!empty(self::$available[$dependency]['cssfiles'])) {
                         $cssfiles = array_merge($cssfiles, self::$available[$dependency]['cssfiles']);
                     }
                 }
             }
         }
         if (!empty($lazyLoadingFiles)) {
             JS::activate('cx');
         }
         // set cx.variables with lazy loading file paths
         ContrexxJavascript::getInstance()->setVariable('lazyLoadingFiles', $lazyLoadingFiles, 'contrexx');
         // Note the "reverse" here.  Dependencies are at the end of the
         // array, and must be loaded first!
         foreach (array_reverse(self::$active) as $name) {
             $data = self::$available[$name];
             if (!isset($data['jsfiles']) && !isset($data['versions'])) {
                 self::$error = "A JS entry should at least contain one js file...";
                 return false;
             }
             // get js files which are specified or the js files from first version
             if (!isset($data['jsfiles'])) {
                 // get data from default version and load the files from there
                 $versionData = end($data['versions']);
                 $data = array_merge($data, $versionData);
             }
             $jsScripts[] = self::makeJSFiles($data['jsfiles']);
             if (!empty($data['cssfiles'])) {
                 $cssfiles = array_merge($cssfiles, $data['cssfiles']);
             }
             if (isset($data['specialcode']) && strlen($data['specialcode']) > 0) {
                 $jsScripts[] = self::makeSpecialCode(array($data['specialcode']));
             }
             if (isset($data['makecallback'])) {
                 self::$data['makecallback']();
             }
             // Special case cloudrexx-API: fetch specialcode if activated
             if ($name == 'cx') {
                 $jsScripts[] = self::makeSpecialCode(array(ContrexxJavascript::getInstance()->initJs()));
             }
         }
     }
     $jsScripts[] = self::makeJSFiles(self::$customJS);
     // if jquery is activated, do a noConflict
     if (array_search('jquery', self::$active) !== false) {
         $jsScripts[] = self::makeSpecialCode('if (typeof jQuery != "undefined") { jQuery.noConflict(); }');
     }
     $jsScripts[] = self::makeJSFiles(self::$templateJS);
     // no conflict for normal jquery version which has been included in template or by theme dependency
     $jsScripts[] = self::makeSpecialCode('if (typeof jQuery != "undefined") { jQuery.noConflict(); }');
     $retstring .= self::makeCSSFiles($cssfiles);
     $retstring .= self::makeCSSFiles(self::$customCSS);
     // Add javscript files
     $retstring .= implode(' ', $jsScripts);
     $retstring .= self::makeJSFiles(self::$customJS);
     $retstring .= self::makeSpecialCode(self::$customCode);
     return $retstring;
 }
Example #25
0
    private function showSubmitForm($data, $display)
    {
        global $_ARRAYLANG, $_CORELANG;
        if (!$display) {
            if ($this->_objTpl->blockExists('news_submit_form')) {
                $this->_objTpl->hideBlock('news_submit_form');
            }
            return;
        }
        $newsTagId = 'newsTags';
        if (!empty($this->arrSettings['news_use_tags'])) {
            \JS::registerJS('lib/javascript/tag-it/js/tag-it.min.js');
            \JS::registerCss('lib/javascript/tag-it/css/tag-it.css');
            $this->registerTagJsCode();
            if ($this->_objTpl->blockExists('newsTags') && !empty($data['newsTags'])) {
                foreach ($data['newsTags'] as $newsTag) {
                    $this->_objTpl->setVariable(array('NEWS_TAGS' => contrexx_raw2xhtml($newsTag)));
                    $this->_objTpl->parse('newsTags');
                }
            }
            $this->_objTpl->touchBlock('newsTagsBlock');
        } else {
            $this->_objTpl->hideBlock('newsTagsBlock');
        }
        \JS::activate('chosen');
        $jsCodeCategoryChosen = <<<EOF
\$J(document).ready(function() {
                \$J('#newsCat').chosen();
});
EOF;
        \JS::registerCode($jsCodeCategoryChosen);
        if (!empty($this->arrSettings['use_related_news'])) {
            $objCx = \ContrexxJavascript::getInstance();
            $objCx->setVariable(array('noResultsMsg' => $_ARRAYLANG['TXT_NEWS_NOT_FOUND'], 'langId' => FRONTEND_LANG_ID), 'news/news-live-search');
            \JS::registerJS('core_modules/News/View/Script/news-live-search.js');
            if (!empty($data['relatedNews'])) {
                $this->parseRelatedNewsTags($this->_objTpl, $data['relatedNews'], FRONTEND_LANG_ID);
            }
            $this->_objTpl->touchBlock('relatedNewsBlock');
        } else {
            $this->_objTpl->hideBlock('relatedNewsBlock');
        }
        $this->_objTpl->setVariable(array('TXT_NEWS_MESSAGE' => $_ARRAYLANG['TXT_NEWS_MESSAGE'], 'TXT_TITLE' => $_ARRAYLANG['TXT_TITLE'], 'TXT_CATEGORY' => $_ARRAYLANG['TXT_CATEGORY'], 'TXT_TYPE' => $this->arrSettings['news_use_types'] == 1 ? $_ARRAYLANG['TXT_TYPE'] : '', 'TXT_HYPERLINKS' => $_ARRAYLANG['TXT_HYPERLINKS'], 'TXT_EXTERNAL_SOURCE' => $_ARRAYLANG['TXT_EXTERNAL_SOURCE'], 'TXT_LINK' => $_ARRAYLANG['TXT_LINK'], 'TXT_NEWS_REDIRECT_LABEL' => $_ARRAYLANG['TXT_NEWS_REDIRECT_LABEL'], 'TXT_NEWS_NEWS_CONTENT' => $_ARRAYLANG['TXT_NEWS_NEWS_CONTENT'], 'TXT_NEWS_TEASER_TEXT' => $_ARRAYLANG['TXT_NEWS_TEASER_TEXT'], 'TXT_SUBMIT_NEWS' => $_ARRAYLANG['TXT_SUBMIT_NEWS'], 'TXT_NEWS_REDIRECT' => $_ARRAYLANG['TXT_NEWS_REDIRECT'], 'TXT_NEWS_NEWS_URL' => $_ARRAYLANG['TXT_NEWS_NEWS_URL'], 'TXT_TYPE' => $_ARRAYLANG['TXT_TYPE'], 'TXT_NEWS_INCLUDE_NEWS' => $_ARRAYLANG['TXT_NEWS_INCLUDE_NEWS'], 'TXT_NEWS_INCLUDE_RELATED_NEWS_DESC' => $_ARRAYLANG['TXT_NEWS_INCLUDE_RELATED_NEWS_DESC'], 'TXT_NEWS_SEARCH_INFO' => $_ARRAYLANG['TXT_NEWS_SEARCH_INFO'], 'TXT_NEWS_SEARCH_PLACEHOLDER' => $_ARRAYLANG['TXT_NEWS_SEARCH_PLACEHOLDER'], 'TXT_NEWS_TAGS' => $_ARRAYLANG['TXT_NEWS_TAGS'], 'NEWS_TEXT' => new \Cx\Core\Wysiwyg\Wysiwyg('newsText', $data['newsText'], 'bbcode'), 'NEWS_CAT_MENU' => $this->getCategoryMenu($this->nestedSetRootId, array($data['newsCat'])), 'NEWS_TYPE_MENU' => $this->arrSettings['news_use_types'] == 1 ? $this->getTypeMenu($data['newsType']) : '', 'NEWS_TITLE' => contrexx_raw2xhtml($data['newsTitle']), 'NEWS_SOURCE' => contrexx_raw2xhtml($data['newsSource']), 'NEWS_URL1' => contrexx_raw2xhtml($data['newsUrl1']), 'NEWS_URL2' => contrexx_raw2xhtml($data['newsUrl2']), 'NEWS_TEASER_TEXT' => contrexx_raw2xhtml($data['newsTeaserText']), 'NEWS_REDIRECT' => contrexx_raw2xhtml($data['newsRedirect']), 'NEWS_TAG_ID' => $newsTagId));
        if ($this->arrSettings['news_use_teaser_text'] != '1' && $this->_objTpl->blockExists('news_use_teaser_text')) {
            $this->_objTpl->hideBlock('news_use_teaser_text');
        }
        if (\FWUser::getFWUserObject()->objUser->login()) {
            if ($this->_objTpl->blockExists('news_submit_form_captcha')) {
                $this->_objTpl->hideBlock('news_submit_form_captcha');
            }
        } else {
            $this->_objTpl->setVariable(array('TXT_NEWS_CAPTCHA' => $_CORELANG['TXT_CORE_CAPTCHA'], 'NEWS_CAPTCHA_CODE' => \Cx\Core_Modules\Captcha\Controller\Captcha::getInstance()->getCode()));
            if ($this->_objTpl->blockExists('news_submit_form_captcha')) {
                $this->_objTpl->parse('news_submit_form_captcha');
            }
        }
        $this->parseCategoryMenu();
        $this->parseNewsTypeMenu();
        if ($this->_objTpl->blockExists('news_submit_form')) {
            $this->_objTpl->parse('news_submit_form');
        }
    }
 /**
  * @todo instead of just not linking the access users probably link to
  *       the access module in case the user has the appropriate rights
  */
 function _userList()
 {
     global $objDatabase, $_ARRAYLANG, $_CONFIG, $_CORELANG;
     \JS::activate('cx');
     $this->_pageTitle = $_ARRAYLANG['TXT_NEWSLETTER_USER_ADMINISTRATION'];
     $this->_objTpl->addBlockfile('NEWSLETTER_USER_FILE', 'module_newsletter_user_overview', 'module_newsletter_user_overview.html');
     $limit = !empty($_GET['limit']) ? intval($_GET['limit']) : $_CONFIG['corePagingLimit'];
     //for User storage in Access-Module
     if (isset($_GET['store']) && $_GET['store'] == 'true') {
         self::$strOkMessage .= $_ARRAYLANG['TXT_NEWSLETTER_RECIPIENT_UPDATED_SUCCESSFULLY'];
     }
     $newsletterListId = isset($_REQUEST['newsletterListId']) ? intval($_REQUEST['newsletterListId']) : 0;
     $this->_objTpl->setVariable(array('TXT_TITLE' => $_ARRAYLANG['TXT_SEARCH'], 'TXT_CHANGELOG_SUBMIT' => $_CORELANG['TXT_MULTISELECT_SELECT'], 'TXT_CHANGELOG_SUBMIT_DEL' => $_CORELANG['TXT_MULTISELECT_DELETE'], 'TXT_SELECT_ALL' => $_CORELANG['TXT_SELECT_ALL'], 'TXT_DESELECT_ALL' => $_CORELANG['TXT_DESELECT_ALL'], 'TXT_DELETE_HISTORY_MSG_ALL' => $_CORELANG['TXT_DELETE_HISTORY_ALL'], 'TXT_NEWSLETTER_REGISTRATION_DATE' => $_ARRAYLANG['TXT_NEWSLETTER_REGISTRATION_DATE'], 'TXT_NEWSLETTER_ROWS_PER_PAGE' => $_ARRAYLANG['TXT_NEWSLETTER_ROWS_PER_PAGE'], 'TXT_NEWSLETTER_RECIPIENTS' => $_ARRAYLANG['TXT_NEWSLETTER_RECIPIENTS'], 'TXT_NEWSLETTER_DELETE_ALL_INACTIVE' => $_ARRAYLANG['TXT_NEWSLETTER_DELETE_ALL_INACTIVE'], 'TXT_NEWSLETTER_REALLY_DELETE_ALL_INACTIVE' => $_ARRAYLANG['TXT_NEWSLETTER_REALLY_DELETE_ALL_INACTIVE'], 'TXT_NEWSLETTER_CANNOT_UNDO_OPERATION' => $_ARRAYLANG['TXT_NEWSLETTER_CANNOT_UNDO_OPERATION'], 'NEWSLETTER_PAGING_LIMIT' => $limit, 'NEWSLETTER_LIST_ID' => $newsletterListId, 'NEWSLETTER_FILTER_KEYWORD' => !empty($_GET['filterkeyword']) ? contrexx_input2raw($_GET['filterkeyword']) : '', 'NEWSLETTER_FILTER_ATTRIBUTE' => !empty($_GET['filterattribute']) ? contrexx_input2raw($_GET['filterattribute']) : '', 'NEWSLETTER_FILTER_STATUS' => !empty($_GET['filterStatus']) ? contrexx_input2raw($_GET['filterStatus']) : '', 'TXT_NEWSLETTER_USER_FEEDBACK' => $_ARRAYLANG['TXT_NEWSLETTER_USER_FEEDBACK']));
     $this->_objTpl->setVariable('NEWSLETTER_LIST_MENU', $this->CategoryDropDown('newsletterListId', $newsletterListId, "id='newsletterListId' onchange=\"newsletterList.setList(this.value)\""));
     if (isset($_GET["addmailcode"])) {
         $query = "SELECT id, code FROM " . DBPREFIX . "module_newsletter_user where code=''";
         $objResult = $objDatabase->Execute($query);
         if ($objResult) {
             while (!$objResult->EOF) {
                 $objDatabase->Execute("\n                        UPDATE " . DBPREFIX . "module_newsletter_user\n                           SET code='" . $this->_emailCode() . "'\n                         WHERE id=" . $objResult->fields['id']);
                 $objResult->MoveNext();
             }
         }
     }
     if (isset($_GET["delete"])) {
         $recipientId = intval($_GET["id"]);
         if ($this->_deleteRecipient($recipientId)) {
             self::$strOkMessage = $_ARRAYLANG['TXT_DATA_RECORD_DELETED_SUCCESSFUL'];
         } else {
             self::$strErrMessage = $_ARRAYLANG['TXT_DATA_RECORD_DELETE_ERROR'];
         }
     }
     if (isset($_GET["bulkdelete"])) {
         $error = 0;
         if (!empty($_POST['userid'])) {
             foreach ($_POST['userid'] as $userid) {
                 $userid = intval($userid);
                 if (!$this->_deleteRecipient($userid)) {
                     $error = 1;
                 }
             }
         }
         /*
                     if (!empty($_POST['accessUserid'])) {
                         foreach ($_POST['accessUserid'] as $userID) {
                             if ($this->removeAccessRecipient($userID)) {
                                 $error = 1;
                             }
                         }
                     }
         */
         if ($error) {
             self::$strErrMessage = $_ARRAYLANG['TXT_DATA_RECORD_DELETE_ERROR'];
         } else {
             self::$strOkMessage = $_ARRAYLANG['TXT_DATA_RECORD_DELETED_SUCCESSFUL'];
         }
     }
     $queryCHECK = "SELECT id, code FROM " . DBPREFIX . "module_newsletter_user where code=''";
     $objResultCHECK = $objDatabase->Execute($queryCHECK);
     $count = $objResultCHECK->RecordCount();
     if ($count > 0) {
         $email_code_check = '<div style="color: red;">' . $_ARRAYLANG['TXT_EMAIL_WITHOUT_CODE_MESSAGE'] . '!<br/><a href="index.php?cmd=Newsletter&act=users&addmailcode=1">' . $_ARRAYLANG['TXT_ADD_EMAIL_CODE_LINK'] . ' ></a></div/><br/>';
         $this->_objTpl->setVariable('EMAIL_CODE_CHECK', $email_code_check);
     }
     $this->_objTpl->setVariable(array('TXT_NEWSLETTER_CHECK_ALL' => $_ARRAYLANG['TXT_NEWSLETTER_CHECK_ALL'], 'TXT_NEWSLETTER_UNCHECK_ALL' => $_ARRAYLANG['TXT_NEWSLETTER_UNCHECK_ALL'], 'TXT_NEWSLETTER_WITH_SELECTED' => $_ARRAYLANG['TXT_NEWSLETTER_WITH_SELECTED'], 'TXT_NEWSLETTER_DELETE' => $_ARRAYLANG['TXT_NEWSLETTER_DELETE'], 'TXT_STATUS' => $_ARRAYLANG['TXT_STATUS'], 'TXT_SEARCH' => $_ARRAYLANG['TXT_SEARCH'], 'TXT_EMAIL_ADDRESS' => $_ARRAYLANG['TXT_EMAIL_ADDRESS'], 'TXT_NEWSLETTER_COMPANY' => $_ARRAYLANG['TXT_NEWSLETTER_COMPANY'], 'TXT_LASTNAME' => $_ARRAYLANG['TXT_LASTNAME'], 'TXT_FIRSTNAME' => $_ARRAYLANG['TXT_FIRSTNAME'], 'TXT_NEWSLETTER_ADDRESS' => $_ARRAYLANG['TXT_NEWSLETTER_ADDRESS'], 'TXT_ZIP' => $_ARRAYLANG['TXT_ZIP'], 'TXT_CITY' => $_ARRAYLANG['TXT_CITY'], 'TXT_COUNTRY' => $_ARRAYLANG['TXT_COUNTRY'], 'TXT_PHONE' => $_ARRAYLANG['TXT_PHONE'], 'TXT_BIRTHDAY' => $_ARRAYLANG['TXT_BIRTHDAY'], 'TXT_USER_DATA' => $_ARRAYLANG['TXT_USER_DATA'], 'TXT_NEWSLETTER_CATEGORYS' => $_ARRAYLANG['TXT_NEWSLETTER_CATEGORYS'], 'TXT_STATUS' => $_ARRAYLANG['TXT_STATUS'], 'SELECTLIST_FIELDS' => $this->SelectListFields(), 'SELECTLIST_CATEGORY' => $this->SelectListCategory(), 'SELECTLIST_STATUS' => $this->SelectListStatus(), 'JAVASCRIPTCODE' => $this->JSedituser(), 'TXT_EDIT' => $_ARRAYLANG['TXT_EDIT'], 'TXT_ADD' => $_ARRAYLANG['TXT_ADD'], 'TXT_IMPORT' => $_ARRAYLANG['TXT_IMPORT'], 'TXT_EXPORT' => $_ARRAYLANG['TXT_EXPORT'], 'TXT_FUNCTIONS' => $_CORELANG['TXT_FUNCTIONS']));
     $this->_objTpl->setGlobalVariable(array('TXT_NEWSLETTER_MODIFY_RECIPIENT' => $_ARRAYLANG['TXT_NEWSLETTER_MODIFY_RECIPIENT'], 'TXT_NEWSLETTER_COPY_RECIPIENT' => $_ARRAYLANG['TXT_NEWSLETTER_COPY_RECIPIENT'], 'TXT_NEWSLETTER_DELETE_RECIPIENT' => $_ARRAYLANG['TXT_NEWSLETTER_DELETE_RECIPIENT']));
     $this->_objTpl->parse('module_newsletter_user_overview');
 }
Example #27
0
 /**
  * Show the search results
  *
  * @global $_ARRAYLANG
  * @global $_LANGID
  */
 private function search()
 {
     global $_ARRAYLANG, $_LANGID;
     static $e;
     $searchterm = !empty($_GET['term']) ? $_GET['term'] : "";
     if (!empty($searchterm)) {
         $search = new SearchKnowledge();
         $results = $search->search($searchterm);
         try {
             $this->articles->readArticles();
         } catch (DatabaseError $e) {
             // nothing yet
         }
         //$this->parseArticleList($results, $_ARRAYLANG['TXT_SEARCH_RESULTS']);
         // this can currently not be done with the parseArticleList function because the
         // search engine only returns ids and not the whole content array
         if ($this->isAllLangsActive()) {
             foreach ($results as $result) {
                 $articleid = $result['id'];
                 $article = $this->articles->articles[$articleid];
                 if ($article['active']) {
                     $lang_id = $result['lang'];
                     $content = $article['content'][$lang_id];
                     $average = $article['votes'] > 0 ? $article['votevalue'] / $article['votes'] : 0;
                     $amount = $article['votes'];
                     $this->tpl->setVariable(array("ARTICLE_ID" => $articleid, "QUESTION" => $content['question'], "ANSWER" => $content['answer'], 'LANG_ID' => $lang_id, "AVERAGE" => round($average, 2), "TXT_RATING" => $_ARRAYLANG['TXT_KNOWLEDGE_YOUR_RATING'], "AMOUNT_OF_RATING" => $amount, "HITS" => $article['hits'], "TXT_AMOUNT_OF_RATING" => $_ARRAYLANG['TXT_KNOWLEDGE_AMOUNT_OF_RATING'], "TXT_AVERAGE_RATING" => $_ARRAYLANG['TXT_KNOWLEDGE_AVERAGE_RATING'], "TXT_HITS" => $_ARRAYLANG['TXT_KNOWLEDGE_HITS'], "TXT_CREATED" => $_ARRAYLANG['TXT_KNOWLEDGE_CREATED'], "TXT_LAST_CHANGE" => $_ARRAYLANG['TXT_KNOWLEDGE_UPDATED'], "TXT_TAGS" => $_ARRAYLANG['TXT_KNOWLEDGE_TAGS'], "MAX_RATING" => $this->settings->get("max_rating"), "LOCKED" => $this->checkLocking($articleid), "DATE_CREATED" => date(ASCMS_DATE_FORMAT_DATE, $article['date_created']), "DATE_UPDATED" => date(ASCMS_DATE_FORMAT_DATE, $article['date_updated'])));
                     try {
                         $tags = $this->tags->getByArticle($articleid, $lang_id);
                     } catch (DatabaseError $e) {
                         // nothing yet
                     }
                     $this->parseTags($tags);
                     $this->tpl->parse("article");
                 }
             }
         } else {
             foreach ($results as $article) {
                 $articleid = $article['id'];
                 $article = $this->articles->articles[$articleid];
                 if ($article['active']) {
                     $average = $article['votes'] > 0 ? $article['votevalue'] / $article['votes'] : 0;
                     $amount = $article['votes'];
                     $this->tpl->setVariable(array("ARTICLE_ID" => $articleid, "QUESTION" => $article['content'][$_LANGID]['question'], "ANSWER" => $article['content'][$_LANGID]['answer'], "AVERAGE" => round($average, 2), "TXT_RATING" => $_ARRAYLANG['TXT_KNOWLEDGE_YOUR_RATING'], "AMOUNT_OF_RATING" => $amount, "HITS" => $article['hits'], "TXT_AMOUNT_OF_RATING" => $_ARRAYLANG['TXT_KNOWLEDGE_AMOUNT_OF_RATING'], "TXT_AVERAGE_RATING" => $_ARRAYLANG['TXT_KNOWLEDGE_AVERAGE_RATING'], "TXT_HITS" => $_ARRAYLANG['TXT_KNOWLEDGE_HITS'], "TXT_CREATED" => $_ARRAYLANG['TXT_KNOWLEDGE_CREATED'], "TXT_LAST_CHANGE" => $_ARRAYLANG['TXT_KNOWLEDGE_UPDATED'], "TXT_TAGS" => $_ARRAYLANG['TXT_KNOWLEDGE_TAGS'], "MAX_RATING" => $this->settings->get("max_rating"), "LOCKED" => $this->checkLocking($articleid), "DATE_CREATED" => date(ASCMS_DATE_FORMAT_DATE, $article['date_created']), "DATE_UPDATED" => date(ASCMS_DATE_FORMAT_DATE, $article['date_updated'])));
                     try {
                         $tags = $this->tags->getByArticle($articleid, $_LANGID);
                     } catch (DatabaseError $e) {
                         // nothing yet
                     }
                     $this->parseTags($tags);
                     $this->tpl->parse("article");
                 }
             }
         }
     }
     $this->tpl->setVariable(array("TXT_ARTICLELIST" => str_replace(array("%WORD%", "%AMOUNT%"), array(stripslashes($searchterm), count($results) == 0 ? $_ARRAYLANG['TXT_SEARCH_NONE'] : count($results)), $_ARRAYLANG['TXT_SEARCH_RESULTS']), "TXT_SEARCH" => $_ARRAYLANG['TXT_KNOWLEDGE_SEARCH'], "TXT_SEARCH_INPUT" => $searchterm));
     \JS::activate("prototype");
     \JS::activate("scriptaculous");
     \JS::registerJS("modules/Knowledge/View/Script/rating.js");
     \JS::registerJS("modules/Knowledge/View/Script/search.js");
     \JS::registerJS("modules/Knowledge/View/Script/slider.js");
     \JS::activate('cx');
 }
Example #28
0
 /**
  * Registers all css and js to be loaded for crm module
  *
  */
 public function _initCrmModule()
 {
     \JS::activate('cx');
     \JS::activate('jqueryui');
     \JS::registerJS("modules/Crm/View/Script/main.js");
     \JS::registerCSS("modules/Crm/View/Style/main.css");
 }
Example #29
0
    /**
     * Inits the uploader when displaying a contact form.
     */
    protected function initUploader($fieldId, $restrictUpload2SingleFile = true)
    {
        try {
            //init the uploader
            \JS::activate('cx');
            //the uploader needs the framework
            $f = \Cx\Core_Modules\Upload\Controller\UploadFactory::getInstance();
            /**
             * Name of the upload instance
             */
            $uploaderInstanceName = 'exposed_combo_uploader_' . $fieldId;
            /**
             * jQuery selector of the HTML-element where the upload folder-widget shall be put in
             */
            $uploaderFolderWidgetContainer = '#contactFormField_uploadWidget_' . $fieldId;
            $uploaderWidgetName = 'uploadWidget' . $fieldId;
            $uploader = $f->newUploader('exposedCombo', 0, $restrictUpload2SingleFile);
            $uploadId = $uploader->getUploadId();
            //set instance name so we are able to catch the instance with js
            $uploader->setJsInstanceName($uploaderInstanceName);
            // specifies the function to call when upload is finished. must be a static function
            $uploader->setFinishedCallback(array(\Env::get('cx')->getCodeBaseCoreModulePath() . '/Contact/Controller/Contact.class.php', '\\Cx\\Core_Modules\\Contact\\Controller\\Contact', 'uploadFinished'));
            $uploader->setData(array('submissionId' => $this->submissionId, 'fieldId' => $fieldId, 'singlefile' => $restrictUpload2SingleFile));
            //retrieve temporary location for uploaded files
            $tup = self::getTemporaryUploadPath($this->submissionId, $fieldId);
            //create the folder
            if (!\Cx\Lib\FileSystem\FileSystem::make_folder($tup[1] . '/' . $tup[2])) {
                throw new \Cx\Core_Modules\Contact\Controller\ContactException("Could not create temporary upload directory '" . $tup[0] . '/' . $tup[2] . "'");
            }
            if (!\Cx\Lib\FileSystem\FileSystem::makeWritable($tup[1] . '/' . $tup[2])) {
                //some hosters have problems with ftp and file system sync.
                //this is a workaround that seems to somehow show php that
                //the directory was created. clearstatcache() sadly doesn't
                //work in those cases.
                @closedir(@opendir($tup[0]));
                if (!\Cx\Lib\FileSystem\FileSystem::makeWritable($tup[1] . '/' . $tup[2])) {
                    throw new \Cx\Core_Modules\Contact\Controller\ContactException("Could not chmod temporary upload directory '" . $tup[0] . '/' . $tup[2] . "'");
                }
            }
            //initialize the widget displaying the folder contents
            $folderWidget = $f->newFolderWidget($tup[0] . '/' . $tup[2], $uploaderInstanceName);
            $strInputfield = $folderWidget->getXHtml($uploaderFolderWidgetContainer, $uploaderWidgetName);
            $strInputfield .= $uploader->getXHtml();
            \JS::registerJS('core_modules/Upload/js/uploaders/exposedCombo/extendedFileInput.js');
            $strInputfield .= <<<CODE
            <script type="text/javascript">
            cx.ready(function() {
                    var ef = new ExtendedFileInput({
                            field:  cx.jQuery('#contactFormFieldId_{$fieldId}'),
                            instance: '{$uploaderInstanceName}',
                            widget: '{$uploaderWidgetName}'
                    });
            });
            </script>
CODE;
            return $strInputfield;
        } catch (Exception $e) {
            return '<!-- failed initializing uploader, exception ' . get_class($e) . ' with message "' . $e->getMessage() . '" -->';
        }
    }
Example #30
0
 /**
  * Set the language list page
  *
  * @global    array
  * @global    ADONewConnection
  * @global    \Cx\Core\Html\Sigma
  * @return    void
  */
 function languageOverview()
 {
     global $_ARRAYLANG, $objDatabase;
     // init vars
     $i = 0;
     \JS::activate('cx');
     $cxjs = \ContrexxJavascript::getInstance();
     $cxjs->setVariable('copyTitle', $_ARRAYLANG['TXT_LANGUAGE_COPY_TITLE'], 'language/lang');
     $cxjs->setVariable('copyText', $_ARRAYLANG['TXT_LANGUAGE_COPY_TEXT'], 'language/lang');
     $cxjs->setVariable('copySuccess', $_ARRAYLANG['TXT_LANGUAGE_COPY_SUCCESS'], 'language/lang');
     $cxjs->setVariable('linkTitle', $_ARRAYLANG['TXT_LANGUAGE_LINK_TITLE'], 'language/lang');
     $cxjs->setVariable('linkText', $_ARRAYLANG['TXT_LANGUAGE_LINK_TEXT'], 'language/lang');
     $cxjs->setVariable('linkSuccess', $_ARRAYLANG['TXT_LANGUAGE_LINK_SUCCESS'], 'language/lang');
     $cxjs->setVariable('warningTitle', $_ARRAYLANG['TXT_LANGUAGE_WARNING_TITLE'], 'language/lang');
     $cxjs->setVariable('warningText', $_ARRAYLANG['TXT_LANGUAGE_WARNING_TEXT'], 'language/lang');
     $cxjs->setVariable('waitTitle', $_ARRAYLANG['TXT_LANGUAGE_WAIT_TITLE'], 'language/lang');
     $cxjs->setVariable('waitText', $_ARRAYLANG['TXT_LANGUAGE_WAIT_TEXT'], 'language/lang');
     $cxjs->setVariable('yesOption', $_ARRAYLANG['TXT_YES'], 'language/lang');
     $cxjs->setVariable('noOption', $_ARRAYLANG['TXT_NO'], 'language/lang');
     $cxjs->setVariable('langRemovalLabel', $_ARRAYLANG['TXT_LANGUAGE_MANAGER_LABEL_LANG_REMOVAL'], 'language/lang');
     $cxjs->setVariable('langRemovalContent', $_ARRAYLANG['TXT_LANGUAGE_MANAGER_LANG_REMOVAL_CONTENT'], 'language/lang');
     $this->template->loadTemplateFile('language_langlist.html');
     $this->pageTitle = $_ARRAYLANG['TXT_LANGUAGE_LIST'];
     if (!$this->isInFullMode()) {
         $this->hideVariables = true;
         $this->template->hideBlock('extendedTitles');
         $this->template->hideBlock('extendedHeaders');
     } else {
         $this->template->touchBlock('extendedTitles');
     }
     //begin language variables
     $this->template->setVariable(array('TXT_ADD_NEW_LANGUAGE' => $_ARRAYLANG['TXT_ADD_NEW_LANGUAGE'], 'TXT_NAME' => $_ARRAYLANG['TXT_NAME'], 'TXT_SHORT_NAME' => $_ARRAYLANG['TXT_SHORT_NAME'], 'TXT_CHARSET' => $_ARRAYLANG['TXT_CHARSET'], 'TXT_ADD' => $_ARRAYLANG['TXT_ADD'], 'TXT_LANGUAGE_LIST' => $_ARRAYLANG['TXT_LANGUAGE_LIST'], 'TXT_ID' => $_ARRAYLANG['TXT_ID'], 'TXT_SHORT_FORM' => $_ARRAYLANG['TXT_SHORT_FORM'], 'TXT_STANDARD_LANGUAGE' => $_ARRAYLANG['TXT_STANDARD_LANGUAGE'], 'TXT_ACTION' => $_ARRAYLANG['TXT_ACTION'], 'TXT_ACCEPT_CHANGES' => $_ARRAYLANG['TXT_ACCEPT_CHANGES'], 'TXT_REMARK' => $_ARRAYLANG['TXT_REMARK'], 'TXT_ADD_DELETE_LANGUAGE_REMARK' => $_ARRAYLANG['TXT_ADD_DELETE_LANGUAGE_REMARK'], 'TXT_CONFIRM_DELETE_DATA' => $_ARRAYLANG['TXT_CONFIRM_DELETE_DATA'], 'TXT_ACTION_IS_IRREVERSIBLE' => $_ARRAYLANG['TXT_ACTION_IS_IRREVERSIBLE'], 'TXT_VALUE' => $_ARRAYLANG['TXT_VALUE'], 'TXT_MODULE' => $_ARRAYLANG['TXT_MODULE'], 'TXT_LANGUAGE' => $_ARRAYLANG['TXT_LANGUAGE'], 'TXT_STATUS' => $_ARRAYLANG['TXT_STATUS'], 'TXT_VIEW' => $_ARRAYLANG['TXT_VIEW'], 'TXT_CONTROLLED' => $_ARRAYLANG['TXT_CONTROLLED'], 'TXT_OPEN_ISSUE' => $_ARRAYLANG['TXT_OPEN_ISSUE'], 'TXT_SHORT_NAME' => $_ARRAYLANG['TXT_SHORT_NAME'], 'TXT_LANGUAGE_DEPENDANT_SYSTEM_VARIABLES' => $_ARRAYLANG['TXT_LANGUAGE_DEPENDANT_SYSTEM_VARIABLES'], 'TXT_ADMINISTRATION_PAGES' => $_ARRAYLANG['TXT_ADMINISTRATION_PAGES'], 'TXT_WEB_PAGES' => $_ARRAYLANG['TXT_WEB_PAGES'], 'TXT_SECTION' => $_ARRAYLANG['TXT_SECTION'], 'TXT_CORE_FALLBACK' => $_ARRAYLANG['TXT_CORE_FALLBACK'], 'TXT_LANGUAGE_MANAGER_OK' => $_ARRAYLANG['TXT_LANGUAGE_MANAGER_OK']));
     $this->template->setGlobalVariable(array('TXT_DEFAULT_LANGUAGE' => $_ARRAYLANG['TXT_STANDARD_LANGUAGE'], 'TXT_CORE_NONE' => $_ARRAYLANG['TXT_CORE_NONE'], 'CMD' => contrexx_input2xhtml($_GET['cmd']), 'TXT_LANGUAGE_ACTION_COPY' => $_ARRAYLANG['TXT_LANGUAGE_ACTION_COPY'], 'TXT_LANGUAGE_ACTION_LINK' => $_ARRAYLANG['TXT_LANGUAGE_ACTION_LINK']));
     //end language variables
     if ($this->hideVariables == true) {
         $this->template->setGlobalVariable(array('LANGUAGE_ADMIN_STYLE' => 'display: none'));
     } else {
         $this->template->setGlobalVariable(array('LANGUAGE_ADMIN_STYLE' => 'display: block'));
     }
     $arrLanguages = \FWLanguage::getActiveFrontendLanguages();
     $this->template->setVariable('LANGUAGE_MANAGER_ACTIVE_LANGIDS', implode(', ', array_keys($arrLanguages)));
     $objResult = $objDatabase->Execute("SELECT * FROM " . DBPREFIX . "languages ORDER BY id");
     if ($objResult !== false) {
         while (!$objResult->EOF) {
             $checked = "";
             if ($objResult->fields['is_default'] == "true") {
                 $checked = "checked";
             }
             $status = "<input type='radio' name='langDefaultStatus' onchange='updateCurrent();' value='" . $objResult->fields['id'] . "' {$checked} />";
             $checked = "";
             if ($objResult->fields['frontend'] == 1) {
                 $checked = "checked";
             }
             $activeStatus = "<input type='checkbox' name='langActiveStatus[" . $objResult->fields['id'] . "]' onchange='updateCurrent();' value='1' {$checked} />";
             $checked = "";
             if ($objResult->fields['backend'] == 1) {
                 $checked = "checked";
             }
             $selectedLang = '';
             switch ($objResult->fields['fallback']) {
                 case '':
                     $this->template->setVariable('NONE_SELECTED', 'selected="selected"');
                     break;
                 case '0':
                     $this->template->setVariable('LANGUAGE_DEFAULT_SELECTED', 'selected="selected"');
                     break;
                 default:
                     $selectedLang = $objResult->fields['fallback'];
             }
             // set fallback language drop down
             foreach ($arrLanguages as $langId => $arrLanguage) {
                 $selected = $langId == $selectedLang ? 'selected="selected"' : '';
                 $this->template->setVariable(array('LANGUAGE_LANG_ID' => $langId, 'LANGUAGE_LANG_OPTION' => contrexx_raw2xhtml($arrLanguage['name']), 'LANGUAGE_OPTION_SELECTED' => $selected));
                 $this->template->parse('fallbackLanguages');
             }
             $adminStatus = "<input type='checkbox' name='langAdminStatus[" . $objResult->fields['id'] . "]' value='1' {$checked} />";
             $this->template->setVariable(array('LANGUAGE_ROWCLASS' => 'row' . ($i++ % 2 + 1), 'LANGUAGE_LANG_ID' => $objResult->fields['id'], 'LANGUAGE_LANG_NAME' => $objResult->fields['name'], 'LANGUAGE_LANG_SHORTNAME' => $objResult->fields['lang'], 'LANGUAGE_LANG_CHARSET' => $objResult->fields['charset'], 'LANGUAGE_LANG_STATUS' => $status, 'LANGUAGE_ACTIVE_STATUS' => $activeStatus, 'LANGUAGE_ADMIN_STATUS' => $adminStatus));
             if (!$this->isInFullMode()) {
                 $this->template->hideBlock('extendedOptions');
             }
             $this->template->parse('languageRow');
             $objResult->MoveNext();
         }
     }
 }