예제 #1
0
    /**
     * Return the module code for the specified treatment mode, visualization mode and object.
     *
     * @param mixed $modulesCode the previous modules codes (usually string)
     * @param integer $treatmentMode The current treatment mode (see constants on top of this file for accepted values).
     * @param integer $visualizationMode The current visualization mode (see constants on top of cms_page class for accepted values).
     * @param object $treatedObject The reference object to treat.
     * @param array $treatmentParameters : optionnal parameters used for the treatment. Usually an array of objects.
     *
     * @return string : the module code to add
     * @access public
     */
    function getModuleCode($modulesCode, $treatmentMode, $visualizationMode, &$treatedObject, $treatmentParameters)
    {
        switch ($treatmentMode) {
            case MODULE_TREATMENT_PAGECONTENT_HEADER_CODE:
                //if this page use a row of this module then add the header code to the page
                if ($usage = CMS_module::moduleUsage($treatedObject->getID(), $this->_codename)) {
                    if (isset($usage['headCallback'])) {
                        $modulesCode[$this->_codename] = '';
                        foreach ($usage['headCallback'] as $headCallback) {
                            //add header codes
                            if (isset($headCallback['tagsCallback'])) {
                                foreach ($headCallback['tagsCallback'] as $key => $headcode) {
                                    if (isset($headcode['code'])) {
                                        $modulesCode[$this->_codename] .= '<?php' . "\n" . $headCallback['headcode'] . "\n" . $headcode['code'] . "\n" . '?>';
                                    }
                                }
                            }
                            //add forms header if needed
                            if (isset($headCallback['form']) && $headCallback['form']) {
                                $modulesCode[$this->_codename] .= '<?php CMS_poly_definition_functions::formActions(' . var_export($headCallback['form'], true) . ', \'' . $treatedObject->getID() . '\', \'' . $headCallback['language'] . '\', ' . ($visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC || $visualizationMode == PAGE_VISUALMODE_PRINT || $visualizationMode == PAGE_VISUALMODE_HTML_PUBLIC_INDEXABLE ? 'true' : 'false') . ', $polymodFormsError, $polymodFormsItems); ?>';
                            }
                            //add forms callback if needed
                            if (isset($headCallback['formsCallback']) && is_array($headCallback['formsCallback']) && isset($headCallback['headcode'])) {
                                foreach ($headCallback['formsCallback'] as $formName => $formCallback) {
                                    foreach ($formCallback as $formFieldID => $callback) {
                                        if (io::isPositiveInteger($formFieldID)) {
                                            $modulesCode[$this->_codename] .= '<?php' . "\n" . '//callback function to check field ' . $formFieldID . ' for atm-form ' . $formName . "\n" . 'function form_' . $formName . '_' . $formFieldID . '($formName, $fieldID, &$item_' . $formName . '_' . $formFieldID . ') {' . "\n" . '		global $cms_user;' . "\n" . '		global $public_search;' . "\n" . '		global $cms_language;' . "\n" . '       $object[$item_' . $formName . '_' . $formFieldID . '->getObjectID()] = $item_' . $formName . '_' . $formFieldID . ';' . "\n" . '       ' . $headCallback['headcode'] . "\n" . '       ' . $callback . "\n" . '       return false;' . "\n" . '}' . "\n" . '?>';
                                        } elseif ($formFieldID == 'form') {
                                            $modulesCode[$this->_codename] .= '<?php' . "\n" . '//callback function for atm-form ' . $formName . "\n" . 'function form_' . $formName . '($formName, &$item_' . $formName . ') {' . "\n" . '		global $cms_user;' . "\n" . '		global $public_search;' . "\n" . '		global $cms_language;' . "\n" . '       $object[$item_' . $formName . '->getObjectID()] = $item_' . $formName . ';' . "\n" . '       ' . $headCallback['headcode'] . "\n" . '       ' . $callback . "\n" . '       return true;' . "\n" . '}' . "\n" . '?>';
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                return $modulesCode;
                break;
            case MODULE_TREATMENT_ROWS_EDITION_LABELS:
                $modulesCode[$this->_codename] = '';
                //if user has rights on module
                if ($treatmentParameters["user"]->hasModuleClearance($this->_codename, CLEARANCE_MODULE_EDIT)) {
                    if (!isset($treatmentParameters['request'])) {
                        //add form to choose object to display
                        $modulesCode[$this->_codename] = '
							<h1>' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_ROW_TAGS_CHOOSE, false, MOD_POLYMOD_CODENAME) . '<select onchange="Ext.get(\'help' . $this->_codename . '\').getUpdater().update({url: \'' . PATH_ADMIN_WR . '/help-detail.php\',params: {module: \'' . $this->_codename . '\',object: this.value, mode:' . MODULE_TREATMENT_ROWS_EDITION_LABELS . '}});">
								<option value="">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_CHOOSE) . '</option>
								<optgroup label="' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_ROW_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '">
									<option value="block">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_TAGS, false, MOD_POLYMOD_CODENAME) . '</option>
									<option value="search">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_SEARCH_TAGS, false, MOD_POLYMOD_CODENAME) . '</option>
									<option value="working">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_TAGS) . '</option>
									<option value="working-polymod">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_POLYMOD_TAGS, false, MOD_POLYMOD_CODENAME) . '</option>
									<option value="vars">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_GENERAL_VARS) . '</option>
									<option value="forms">' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_FORMS, false, MOD_POLYMOD_CODENAME) . '</option>
								</optgroup>
								<optgroup label="' . $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_ROW_OBJECTS_VARS_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '">';
                        $modulesCode[$this->_codename] .= CMS_poly_module_structure::viewObjectInfosList($this->_codename, $treatmentParameters["language"], @$treatmentParameters['request'][$this->_codename . 'object']);
                        $modulesCode[$this->_codename] .= '
								</optgroup>';
                        $modulesCode[$this->_codename] .= '
							</select></h1>
							<div id="help' . $this->_codename . '"></div>
						';
                    }
                    //then display chosen object infos
                    if (isset($treatmentParameters['request'][$this->_codename]) && isset($treatmentParameters['request'][$this->_codename . 'object'])) {
                        switch ($treatmentParameters['request'][$this->_codename . 'object']) {
                            case 'block':
                                $moduleLanguages = CMS_languagesCatalog::getAllLanguages($this->_codename);
                                foreach ($moduleLanguages as $moduleLanguage) {
                                    $moduleLanguagesCodes[] = $moduleLanguage->getCode();
                                }
                                $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_TAGS_EXPLANATION, array($this->_codename, implode(', ', $moduleLanguagesCodes)), MOD_POLYMOD_CODENAME);
                                break;
                            case 'search':
                                $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_SEARCH_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME);
                                break;
                            case 'working':
                                $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_TAGS_EXPLANATION);
                                break;
                            case 'working-polymod':
                                $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_WORKING_POLYMOD_TAGS_EXPLANATION, array(implode(', ', CMS_modulesCatalog::getAllCodenames())), MOD_POLYMOD_CODENAME);
                                break;
                            case 'vars':
                                $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_GENERAL_VARS_EXPLANATION, array($treatmentParameters["language"]->getDateFormatMask(), $treatmentParameters["language"]->getDateFormatMask(), $treatmentParameters["language"]->getDateFormatMask()));
                                break;
                            case 'forms':
                                $modulesCode[$this->_codename] .= $treatmentParameters["language"]->getMessage(self::MESSAGE_PAGE_BLOCK_FORMS_EXPLANATION, false, MOD_POLYMOD_CODENAME);
                                break;
                            default:
                                //object info
                                $modulesCode[$this->_codename] .= CMS_poly_module_structure::viewObjectRowInfos($this->_codename, $treatmentParameters["language"], $treatmentParameters['request'][$this->_codename . 'object']);
                                break;
                        }
                    }
                }
                return $modulesCode;
                break;
            case MODULE_TREATMENT_EDITOR_CODE:
                if ($treatmentParameters["editor"] == "fckeditor" && $treatmentParameters["user"]->hasModuleClearance($this->_codename, CLEARANCE_MODULE_EDIT)) {
                    if (!isset($modulesCode["Default"]['polymod'])) {
                        $pluginDefinitions = CMS_poly_object_catalog::getAllPluginDefinitionsForObject();
                        if (is_array($pluginDefinitions) && $pluginDefinitions) {
                            $languages = implode(',', array_keys(CMS_languagesCatalog::getAllLanguages()));
                            //This is an exception of the method, because here we return an array, see admin/fckeditor/fckconfig.php for the detail
                            $modulesCode["Default"]['polymod'] = "'polymod'";
                            $modulesCode["modulesDeclaration"]['polymod'] = "FCKConfig.Plugins.Add( 'polymod', '" . $languages . "' );";
                        }
                    }
                    $plugins = array();
                    //get all objects for module
                    $moduleObjects = CMS_poly_object_catalog::getObjectsForModule($this->_codename);
                    foreach ($moduleObjects as $object) {
                        $fields = CMS_poly_object_catalog::getFieldsDefinition($object->getID());
                        foreach ($fields as $field) {
                            $fieldObject = $field->getTypeObject(true);
                            if (method_exists($fieldObject, 'getUsedPlugins')) {
                                $plugins = array_merge($plugins, $fieldObject->getUsedPlugins());
                            }
                        }
                    }
                    $plugins = array_unique($plugins);
                    // create specific polymod toolbar
                    $modulesCode["ToolbarSets"][] = "FCKConfig.ToolbarSets[\"" . $this->_codename . "\"] = [\n\t\t\t\t\t\t\t\t['Source','Undo','Redo'],\n\t\t\t\t\t\t\t\t['Cut','Copy','Paste','PasteText','PasteWord'],\n\t\t\t\t\t\t\t\t['OrderedList','UnorderedList','-','Outdent','Indent'],\n\t\t\t\t\t\t\t\t['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],\n\t\t\t\t\t\t\t\t['Link','Unlink','Anchor'" . ($plugins ? ',' . implode(",", $plugins) : '') . "],\n\t\t\t\t\t\t\t\t['Table','Rule','SpecialChar']\n\t\t\t\t\t\t\t];";
                }
                return $modulesCode;
                break;
            case MODULE_TREATMENT_EDITOR_PLUGINS:
                if ($treatmentParameters["editor"] == "fckeditor" && $treatmentParameters["user"]->hasModuleClearance($this->_codename, CLEARANCE_MODULE_EDIT)) {
                    if (!isset($modulesCode['polymod'])) {
                        $modulesCode['polymod'] = '';
                        $pluginDefinitions = CMS_poly_object_catalog::getAllPluginDefinitionsForObject();
                        if (is_array($pluginDefinitions) && $pluginDefinitions) {
                            foreach ($pluginDefinitions as $pluginDefinition) {
                                $modulesCode['polymod'] .= $modulesCode['polymod'] ? ', ' : '';
                                $modulesCode['polymod'] .= $pluginDefinition->getLabel($treatmentParameters["user"]->getLanguage());
                            }
                        }
                    }
                }
                break;
            case MODULE_TREATMENT_AFTER_VALIDATION_TREATMENT:
                //if object is a polyobject and module is the current object's module
                if ($treatedObject instanceof CMS_poly_object && $this->_codename == CMS_poly_object_catalog::getModuleCodenameForObject($treatedObject->getID())) {
                    //send notification of the validation result to polyobject
                    $treatedObject->afterValidation($treatmentParameters['result']);
                }
                break;
            case MODULE_TREATMENT_ALERTS:
                //only if user has validation clearances
                if ($treatmentParameters['user']->hasValidationClearance($this->_codename)) {
                    $modulesCode[$this->_codename] = array(ALERT_LEVEL_VALIDATION => array('label' => self::MESSAGE_ALERT_LEVEL_VALIDATION, 'description' => self::MESSAGE_ALERT_LEVEL_VALIDATION_DESCRIPTION));
                }
                return $modulesCode;
                break;
        }
        return $modulesCode;
    }
예제 #2
0
    function getHTMLSubFieldsParametersEmailBody($language, $prefixName)
    {
        global $cms_language, $moduleCodename, $object;
        $module = CMS_modulesCatalog::getByCodename($moduleCodename);
        $params = $this->getParamsValues();
        $values = $this->_parameterValues;
        $parameters = $this->getSubFieldParameters();
        $htmlSelected = !isset($params['emailBody']['type']) || $params['emailBody']['type'] == 1 ? ' checked="checked"' : '';
        $input = '
		<fieldset>
			<legend><label for="' . $prefixName . 'message_body_html"><input' . $htmlSelected . ' id="' . $prefixName . 'message_body_html" type="radio" name="' . $prefixName . 'emailBody" value="1" />' . $cms_language->getMessage(self::MESSAGE_OBJECT_EMAIL_PARAMETER_BODY_HTML, false, MOD_POLYMOD_CODENAME) . '</label></legend>';
        foreach ($parameters as $parameterID => $parameter) {
            $paramValue = $values[$parameterID];
            if ($parameter["type"] == "emailbody") {
                $html = isset($params['emailBody']['html']) ? $params['emailBody']['html'] : '';
                $input .= '<textarea class="admin_textarea" cols="100" rows="15" name="' . $prefixName . 'emailBody_html">' . $module->convertDefinitionString($html, true) . '</textarea>';
            }
        }
        $pageSelected = isset($params['emailBody']['type']) && $params['emailBody']['type'] == 2 ? ' checked="checked"' : '';
        $pageID = isset($params['emailBody']['pageID']) ? $params['emailBody']['pageID'] : '';
        $pageURL = isset($params['emailBody']['pageURL']) ? $params['emailBody']['pageURL'] : '';
        $input .= '
		</fieldset>
		<fieldset>
			<legend><label for="' . $prefixName . 'message_body_page"><input' . $pageSelected . ' id="' . $prefixName . 'message_body_page" type="radio" name="' . $prefixName . 'emailBody" value="2" />' . $cms_language->getMessage(self::MESSAGE_OBJECT_EMAIL_PARAMETER_BODY_PAGE, false, MOD_POLYMOD_CODENAME) . '</label></legend>
			<input type="text" class="admin_input_text" id="' . $prefixName . 'emailBody_pageID" name="' . $prefixName . 'emailBody_pageID" value="' . io::htmlspecialchars($pageID) . '" size="6" />';
        //build tree link
        $grand_root = CMS_tree::getRoot();
        $href = PATH_ADMIN_SPECIAL_TREE_WR;
        $href .= '?root=' . $grand_root->getID();
        $href .= '&amp;heading=' . $cms_language->getMessage(MESSAGE_PAGE_TREEH1);
        $href .= '&amp;encodedOnClick=' . base64_encode("window.opener.document.getElementById('" . $prefixName . "emailBody_pageID').value = '%s';self.close();");
        $href .= '&encodedPageLink=' . base64_encode('false');
        $input .= '&nbsp;<a href="' . $href . '" class="admin" target="_blank"><img src="' . PATH_ADMIN_IMAGES_WR . '/picto-arbo.gif" border="0" align="absmiddle" /></a>
			&nbsp;?<input type="text" size="80" name="' . $prefixName . 'emailBody_pageURL" value="' . io::htmlspecialchars($module->convertDefinitionString($pageURL, true)) . '" class="admin_input_text" />
		</fieldset>';
        //object Explanation
        $input .= '
			<fieldset>
				<legend>' . $cms_language->getMessage(self::MESSAGE_OBJECT_EMAIL_PARAMETER_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '</legend>
				<br />';
        if (!isset($_POST['objectexplanation'])) {
            $_POST['objectexplanation'] = '';
        }
        //selected value
        $selected['working'] = $_POST['objectexplanation'] == 'working' ? ' selected="selected"' : '';
        $selected['working-polymod'] = $_POST['objectexplanation'] == 'working-polymod' ? ' selected="selected"' : '';
        $selected['vars'] = $_POST['objectexplanation'] == 'vars' ? ' selected="selected"' : '';
        $selected['search'] = $_POST['objectexplanation'] == 'search' ? ' selected="selected"' : '';
        $input .= '
			<select name="objectexplanation" class="admin_input_text" onchange="document.getElementById(\'cms_action\').value=\'switchexplanation\';document.frm.submit();">
				<option value="">' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_CHOOSE) . '</option>
				<optgroup label="' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_ROW_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '">
					<option value="search"' . $selected['search'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_SEARCH_TAGS, false, MOD_POLYMOD_CODENAME) . '</option>
					<option value="working"' . $selected['working'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_TAGS) . '</option>
					<option value="working-polymod"' . $selected['working-polymod'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_POLYMOD_TAGS, false, MOD_POLYMOD_CODENAME) . '</option>
					<option value="vars"' . $selected['vars'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_BLOCK_GENERAL_VARS) . '</option>
					</optgroup>
				<optgroup label="' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_ROW_OBJECTS_VARS_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '">';
        $input .= CMS_poly_module_structure::viewObjectInfosList($moduleCodename, $cms_language, $_POST['objectexplanation'], $object->getID());
        $input .= '
				</optgroup>';
        $input .= '
			</select><br /><br />';
        //then display chosen object infos
        if ($_POST['objectexplanation']) {
            switch ($_POST['objectexplanation']) {
                case 'search':
                    $input .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_SEARCH_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME);
                    break;
                case 'working':
                    $content .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_TAGS_EXPLANATION);
                    break;
                case 'working-polymod':
                    $content .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_POLYMOD_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME);
                    break;
                case 'vars':
                    $content .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_BLOCK_GENERAL_VARS_EXPLANATION);
                    break;
                default:
                    //object info
                    $input .= CMS_poly_module_structure::viewObjectRowInfos($moduleCodename, $cms_language, $_POST['objectexplanation']);
                    break;
            }
        }
        $input .= '</fieldset>';
        return $input;
    }
$selected['vars'] = $_POST['objectexplanation'] == 'vars' ? ' selected="selected"' : '';
$selected['rss'] = $_POST['objectexplanation'] == 'rss' ? ' selected="selected"' : '';
$helpContent .= '
<div class="form-group">
	<label class="" for="selectbasic">Aide à la syntaxe</label>
	<div class="controls">
		<select name="objectexplanation" class="input-xlarge" onchange="document.getElementById(\'cms_action\').value=\'switchexplanation\';document.getElementById(\'oembeddef\').submit();">
			<option value="">' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_CHOOSE) . '</option>
			<optgroup label="' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_ROW_TAGS_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '">
				<option value="search"' . $selected['search'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_SEARCH_TAGS, false, MOD_POLYMOD_CODENAME) . '</option>
				<option value="working"' . $selected['working'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_TAGS) . '</option>
				<option value="working-polymod"' . $selected['working-polymod'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_WORKING_POLYMOD_TAGS, false, MOD_POLYMOD_CODENAME) . '</option>
				<option value="vars"' . $selected['vars'] . '>' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_BLOCK_GENERAL_VARS) . '</option>
			</optgroup>
			<optgroup label="' . $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_ROW_OBJECTS_VARS_EXPLANATION, false, MOD_POLYMOD_CODENAME) . '">';
$helpContent .= CMS_poly_module_structure::viewObjectInfosList($moduleCodename, $cms_language, $_POST['objectexplanation'], $objectDefinition->getID());
$helpContent .= '
			</optgroup>';
$helpContent .= '
		</select>
	</div>
</div>';
//then display chosen object infos
if ($_POST['objectexplanation']) {
    switch ($_POST['objectexplanation']) {
        case 'rss':
            $moduleLanguages = CMS_languagesCatalog::getAllLanguages($moduleCodename);
            foreach ($moduleLanguages as $moduleLanguage) {
                $moduleLanguagesCodes[] = $moduleLanguage->getCode();
            }
            $helpContent .= $cms_language->getMessage(CMS_polymod::MESSAGE_PAGE_RSS_TAG_EXPLANATION, array(implode(', ', $moduleLanguagesCodes)), MOD_POLYMOD_CODENAME);