isParent == false) UniteFunctionsUC::throwError("The output class must be parent of some other class."); $this->settings = new UniteSettingsUC(); $this->settings = $settings; } /** * validate that the output class is inited with settings */ protected function validateInited(){ if(empty($this->settings)) UniteFunctionsUC::throwError("The output class not inited. Please call init() function with some settings class"); } /** * set add css. work with placeholder * [wrapperid] */ public function setAddCss($css){ $replace = "#".$this->wrapperID; $this->addCss = str_replace("[wrapperid]", $replace, $css); } /** * * set show descriptions as tips true / false */ public function setShowDescAsTips($show){ $this->showDescAsTips = $show; } /** * * show saps true / false */ public function setShowSaps($show = true, $type = null){ //dmp($type); //exit(); //if(empty($type)) // UniteFunctionsUC::showTrace(); if($type === null) $type = self::SAPS_TYPE_INLINE; $this->showSaps = $show; switch($type){ case self::SAPS_TYPE_CUSTOM: case self::SAPS_TYPE_INLINE: case self::SAPS_TYPE_ACCORDION: break; default: UniteFunctionsUC::throwError("Wrong saps type: $type "); break; } $this->sapsType = $type; } /** * get default value add html * @param $setting */ protected function getDefaultAddHtml($setting){ $defaultValue = UniteFunctionsUC::getVal($setting, "default_value"); $defaultValue = htmlspecialchars($defaultValue); $value = UniteFunctionsUC::getVal($setting, "value"); $value = htmlspecialchars($value); $addHtml = " data-default=\"{$defaultValue}\" data-initval=\"{$value}\" "; $addParams = UniteFunctionsUC::getVal($setting, UniteSettingsUC::PARAM_ADDPARAMS); if(!empty($addParams)) $addHtml .= " ".$addParams; return($addHtml); } /** * prepare draw setting text */ protected function drawSettingRow_getText($setting){ //modify text: $text = UniteFunctionsUC::getVal($setting, "text", ""); // prevent line break (convert spaces to nbsp) $text = str_replace(" "," ",$text); switch($setting["type"]){ case UniteSettingsUC::TYPE_CHECKBOX: $text = ""; break; } return($text); } /** * * get text style */ protected function drawSettingRow_getTextStyle($setting){ //set text style: $textStyle = UniteFunctionsUC::getVal($setting, UniteSettingsUC::PARAM_TEXTSTYLE); if($textStyle != "") $textStyle = "style='".$textStyle."'"; return($textStyle); } /** * get row style */ protected function drawSettingRow_getRowStyle($setting){ //set hidden $rowStyle = ""; $isHidden = isset($setting["hidden"]); //operate saps if($this->showSaps == true && $this->sapsType == self::SAPS_TYPE_INLINE){ $sap = UniteFunctionsUC::getVal($setting, "sap"); $sap = (int)$sap; if($sap != $this->activeSap) $isHidden = true; } if($isHidden) $rowStyle = "display:none;"; if(!empty($rowStyle)) $rowStyle = "style='$rowStyle'"; return($rowStyle); } /** * * get row class */ protected function drawSettingRow_getRowClass($setting, $basClass = ""){ //set text class: $class = $basClass; if(isset($setting["disabled"])){ if(!empty($class)) $class .= " "; $class .= "setting-disabled"; } //add saps class if($this->showSaps && $this->sapsType == self::SAPS_TYPE_INLINE){ $sap = UniteFunctionsUC::getVal($setting, "sap"); $sap = (int)$sap; $sapClass = "unite-sap-element unite-sap-".$sap; if(!empty($class)) $class .= " "; $class .= $sapClass; } if(!empty($class)) $class = "class='{$class}'"; return($class); } /** * draw after body additional settings accesories */ public function drawAfterBody(){ $arrTypes = $this->settings->getArrTypes(); foreach($arrTypes as $type){ switch($type){ case self::TYPE_COLOR: ?>
settings->setSettingsStateByControls(); $this->settings->setPairedSettings(); } /** * get setting class attribute */ protected function getInputClassAttr($setting, $defaultClass="", $addClassParam="", $wrapClass = true){ $class = UniteFunctionsUC::getVal($setting, "class", $defaultClass); $classAdd = UniteFunctionsUC::getVal($setting, UniteSettingsUC::PARAM_CLASSADD); switch($class){ case "alias": $class = self::INPUT_CLASS_ALIAS; break; case "long": $class = self::INPUT_CLASS_LONG; break; case "normal": $class = self::INPUT_CLASS_NORMAL; break; case "number": $class = self::INPUT_CLASS_NUMBER; break; case "small": $class = self::INPUT_CLASS_SMALL; break; } if(!empty($classAdd)){ if(!empty($class)) $class .= " "; $class .= $classAdd; } if(!empty($addClassParam)){ if(!empty($class)) $class .= " "; $class .= $addClassParam; } $isTransparent = UniteFunctionsUC::getVal($setting, UniteSettingsUC::PARAM_MODE_TRANSPARENT); if(!empty($isTransparent)){ if(!empty($class)) $class .= " "; $class .= "unite-setting-transparent"; } if(!empty($class) && $wrapClass == true) $class = "class='$class'"; return($class); } /** * draw text input * @param $setting */ protected function drawTextInput($setting) { $disabled = ""; $style=""; $readonly = ""; if(isset($setting["style"])) $style = "style='".$setting["style"]."'"; if(isset($setting["disabled"])) $disabled = 'disabled="disabled"'; if(isset($setting["readonly"])){ $readonly = "readonly='readonly'"; } $defaultClass = self::INPUT_CLASS_NORMAL; $unit = UniteFunctionsUC::getVal($setting, "unit"); if(!empty($unit)) $defaultClass = self::INPUT_CLASS_NUMBER; $class = $this->getInputClassAttr($setting, $defaultClass); $addHtml = $this->getDefaultAddHtml($setting); $placeholder = UniteFunctionsUC::getVal($setting, "placeholder", null); if($placeholder !== null){ $placeholder = htmlspecialchars($placeholder); $addHtml .= " placeholder=\"$placeholder\""; } ?> id="" name="" value="" /> modifyImageSetting($setting); $value = UniteFunctionsUC::getVal($setting, "value"); $imageID = null; $urlImage = $value; $urlThumb = $value; if(!empty($value) && is_numeric($value)){ $imageID = $value; $urlImage = UniteProviderFunctionsUC::getImageUrlFromImageID($imageID); $urlThumb = UniteProviderFunctionsUC::getThumbUrlFromImageID($imageID); $urlImage = HelperUC::URLtoFull($urlImage); $urlThumb = HelperUC::URLtoFull($urlThumb); $setting["value"] = $urlImage; //for initval } //try create thumb image if(empty($urlThumb) && !empty($urlImage)){ try{ $operations = new UCOperations(); $urlThumb = $operations->getThumbURLFromImageUrl($value); $urlThumb = HelperUC::URLtoFull($urlThumb); }catch(Exception $e){ $urlThumb = $urlImage; } } //get url preview $urlPreview = ""; if(!empty($urlThumb)) $urlPreview = $urlThumb; //get preview style if(empty($urlPreview) && !empty($urlImage)) $urlPreview = $urlImage; $previewStyle = ""; if(!empty($urlPreview)) $previewStyle .= "background-image:url('{$urlPreview}');"; if(!empty($previewStyle)) $previewStyle = "style=\"{$previewStyle}\""; $class = $this->getInputClassAttr($setting, "", "unite-setting-image-input unite-input-image"); $addHtml = $this->getDefaultAddHtml($setting); //add source param $source = UniteFunctionsUC::getVal($setting, "source"); if(!empty($source)) $addHtml .= " data-source='{$source}'"; if(!empty($imageID)) $addHtml .= " data-imageid='{$imageID}'"; ?> modifyImageSetting($setting); $value = UniteFunctionsUC::getVal($setting, "value"); $class = $this->getInputClassAttr($setting, "", "unite-setting-mp3-input unite-input-image"); $addHtml = $this->getDefaultAddHtml($setting); //add source param $source = UniteFunctionsUC::getVal($setting, "source"); if(!empty($source)) $addHtml .= " data-source='{$source}'"; ?> getInputClassAttr($setting, "", "unite-iconpicker-input"); $addHtml = $this->getDefaultAddHtml($setting); ?> getDefaultAddHtml($setting); $class = $this->getInputClassAttr($setting, "", "unite-color-picker"); ?> id="" name="" value="" > drawTextInput($setting); break; case UniteSettingsUC::TYPE_COLOR: $this->drawColorPickerInput($setting); break; case UniteSettingsUC::TYPE_SELECT: $this->drawSelectInput($setting); break; case UniteSettingsUC::TYPE_CHECKBOX: $this->drawCheckboxInput($setting); break; case UniteSettingsUC::TYPE_RADIO: $this->drawRadioInput($setting); break; case UniteSettingsUC::TYPE_TEXTAREA: $this->drawTextAreaInput($setting); break; case UniteSettingsUC::TYPE_IMAGE: $this->drawImageInput($setting); break; case UniteSettingsUC::TYPE_MP3: $this->drawMp3Input($setting); break; case UniteSettingsUC::TYPE_ICON: $this->drawIconPickerInput($setting); break; case UniteSettingsUC::TYPE_POST: $this->drawPostPickerInput($setting); break; case UniteSettingsUC::TYPE_EDITOR: $this->drawEditorInput($setting); break; case UniteSettingsUC::TYPE_CUSTOM: if(method_exists($this,"drawCustomInputs") == false){ UniteFunctionsUC::throwError("Method don't exists: drawCustomInputs, please override the class"); } $this->drawCustomInputs($setting); break; default: throw new Exception("drawInputs error: wrong setting type - ".$setting["type"]); break; } } /** * draw text area input */ protected function drawTextAreaInput($setting){ $disabled = ""; if (isset($setting["disabled"])) $disabled = 'disabled="disabled"'; $style = ""; if(isset($setting["style"])) $style = "style='".$setting["style"]."'"; $rows = UniteFunctionsUC::getVal($setting, "rows"); if(!empty($rows)) $rows = "rows='$rows'"; $cols = UniteFunctionsUC::getVal($setting, "cols"); if(!empty($cols)) $cols = "cols='$cols'"; $addHtml = $this->getDefaultAddHtml($setting); $class = $this->getInputClassAttr($setting); $value = $setting["value"]; $value = htmlspecialchars($value); ?> "; //break line on big textareas. } /** * draw radio input */ protected function drawRadioInput($setting){ $items = $setting["items"]; $counter = 0; $settingID = $setting["id"]; $isDisabled = UniteFunctionsUC::getVal($setting, "disabled"); $isDisabled = UniteFunctionsUC::strToBool($isDisabled); $settingName = $setting["name"]; $defaultValue = UniteFunctionsUC::getVal($setting, "default_value"); $settingValue = UniteFunctionsUC::getVal($setting, "value"); $class = $this->getInputClassAttr($setting); ?> $value): $counter++; $radioID = $settingID."_".$counter; $strChecked = ""; if($value == $settingValue) $strChecked = " checked"; $strDisabled = ""; if($isDisabled) $strDisabled = 'disabled = "disabled"'; $addHtml = ""; if($value == $defaultValue) $addHtml .= " data-defaultchecked=\"true\""; if($value == $settingValue){ $addHtml .= " data-initchecked=\"true\""; } $props = "style=\"cursor:pointer;\" {$strChecked} {$strDisabled} {$addHtml} {$class}"; ?> /> $textNear"; $defaultValue = UniteFunctionsUC::getVal($setting, "default_value"); $defaultValue = UniteFunctionsUC::strToBool($defaultValue); $addHtml = ""; if($defaultValue == true) $addHtml .= " data-defaultchecked=\"true\""; if($value) $addHtml .= " data-initchecked=\"true\""; $class = $this->getInputClassAttr($setting); ?> name="" /> getDefaultAddHtml($setting); $class = $this->getInputClassAttr($setting); $arrItems = UniteFunctionsUC::getVal($setting, "items",array()); if(empty($arrItems)) $arrItems = array(); ?> * showDescAsTips == false):?> settings->getIDPrefix(); $options = array(); $options["show_saps"] = $this->showSaps; $options["saps_type"] = $this->sapsType; $options["id_prefix"] = $idPrefix; return($options); } /** * set form id */ public function setFormID($formID){ if(isset(self::$arrIDs[$formID])) UniteFunctionsUC::throwError("Can't output settings with the same ID: $formID"); self::$arrIDs[$formID] = true; UniteFunctionsUC::validateNotEmpty($formID, "formID"); $this->formID = $formID; } /** * * insert settings into saps array */ private function groupSettingsIntoSaps(){ $arrSaps = $this->settings->getArrSaps(); $arrSettings = $this->settings->getArrSettings(); //group settings by saps foreach($arrSettings as $key=>$setting){ $sapID = $setting["sap"]; if(isset($arrSaps[$sapID]["settings"])) $arrSaps[$sapID]["settings"][] = $setting; else $arrSaps[$sapID]["settings"] = array($setting); } return($arrSaps); } private function _______DRAW_GENENRAL______(){} /** * get controls for client side * eliminate only one setting in children */ private function getControlsForJS(){ $controls = $this->settings->getArrControls(true); $arrChildren = $controls["children"]; if(empty($arrChildren)) return($controls); $arrChildrenNew = array(); foreach($arrChildren as $name=>$arrChild){ if(count($arrChild)>1) $arrChildrenNew[$name] = $arrChild; } $controls["children"] = $arrChildrenNew; return($controls); } /** * draw wrapper start */ public function drawWrapperStart(){ UniteFunctionsUC::validateNotEmpty($this->settingsMainClass, "settings main class not found, please use wide, inline or sidebar output"); //get options $options = $this->getOptions(); $strOptions = UniteFunctionsUC::jsonEncodeForHtmlData($options); //get controls $controls = $this->getControlsForJS(); /* if(!empty($controls["children"])){ dmp($controls);exit(); } */ $addHtml = ""; if(!empty($controls)){ $strControls = UniteFunctionsUC::jsonEncodeForHtmlData($controls); $addHtml = " data-controls=\"{$strControls}\""; } if(!empty($this->addCss)): ?>