* @license http://www.contenido.org/license/LIZENZ.txt * @link http://www.4fb.de * @link http://www.contenido.org * @since file available since contenido release <= 4.8.7 * * {@internal * created 2007-07-14 Bilal Arslan, Timo Trautmann * modified 2008-07-28 Bilal Arslan, added new Date format timestamp * modified 2009-04-14 OliverL, added class in Edit- & Save-Link * $Id * }} * */ if(!defined('CON_FRAMEWORK')) { die('Illegal call'); } class Cms_Date{ /** * Contains user input of cms_type * @access private */ private $sContent; /** * The format value for the calendar * @access private */ private $aFormat; /** * The number of cms_date[?] parameter * @access private */ private $iNumberOfCms; /** * The output javascript * @access private */ private $sJS; /** * The the static variable, controlls howmuch object exists * @access private */ private static $iNumOutput; /** * The contenido global * @access private */ private $iIdArtLang; /** * The contenido Edit link * @access private */ private $sEditLink; /** * The contenido global * @access private */ private $aCfg; /** * The CmsDate object for call cmsDate functions * @access private */ private $sCalName; /** * The contenido database object * @access private */ private $oDB; /** * Input Field Id * @access private */ private $sEditAreaId; /** * the id of Div Element select box * @access private */ private $sDivSelectId; /** * * The id of select box * @access private */ private $sSelectId; /** * * Total count of cms_date * @access private */ private $iTotalCount; /** * Language of contenido * @access private */ private $sContenidoLang; /** * The Cms_Date object constructor, initializes class variables * * @param {string} $sContent * @param {integer} $iNumberOfCms * @param {integer} $iIdArtLang * @param {string} $sEditLink * @param {Object} $aCfg * @param {Object} $aDB */ public function __construct($sContent, $iNumberOfCms, $iIdArtLang, $sEditLink, $aCfg, $aDB, $iTotalCount, $sContenidoLang){ $this->iNumberOfCms = $iNumberOfCms; $this->iIdArtLang = $iIdArtLang; $this->sEditLink = $sEditLink; $this->aCfg = $aCfg; // static number for objects Cms_Date::$iNumOutput++; $this->sCalName = "oCalId".Cms_Date::$iNumOutput; $this->oDB = $aDB; $this->sEditAreaId = ""; $this->sDivSelectId = ""; // if is empty, fill it with space character. Thats important for contenido input area! ($sContent == "") ? $this->sContent = " " : $this->sContent = urldecode($sContent); $this->sSelectId = ""; $this->iTotalCount = $iTotalCount; $this->sJS = ""; $this->sContenidoLang = $sContenidoLang; } /** * Edit and View all Widgets. This function is calling in edit mode * * @return the all widgets */ public function getAllWidgetEdit(){ $this->sContent = urldecode($this->sContent); $this->sContent = AddSlashes(AddSlashes($this->sContent)); $this->sContent = str_replace("\\\'", "'", $this->sContent); $this->sContent = str_replace("\$", '\\\$', $this->sContent); // Render all Widgetes $this->sContent = $this->getEditingField() . $this->getCalendarButton() . $this->getOkButton() . $this->getSelectBox() . $this->getJsScript(); return urldecode($this->sContent); } /** * This function modified cms_content before it is displayed in frontend. * In this case this function is a dummy. * * @return Returns user input of cms_type */ public function getAllWidgetView(){ return $this->sContent; } /** * This function set the date format for select-box. * Function displays current day format. * For edit or add formats modified this function. * * @return the format as an array */ private function getDateFormats(){ $sMonthName = ""; $sDayName = ""; $sMonthName = getCanonicalMonth(date('m')); $sDayName = getCanonicalDay(date('w')); $iDay = date('d'); $iMonth = date('m'); $iYear = date("Y"); $iYearShort = date("y"); $this->aFormat = array( array("0",i18n("Please Choose Format")), array("%d.%m.%Y", date('d.m.Y')), array("%A, %d.%m.%Y", $sDayName . ', ' . $iDay .'.'. $iMonth .'.'. $iYear ), array("%d. %B %Y", $iDay.'. ' .$sMonthName. ' '. $iYear), array("%Y-%m-%d",date('Y-m-d')), array("%y-%m-%d",date('y-m-d')), array("%d/%B/%Y",$iDay .'/'. $sMonthName .'/'. $iYear), array("%d/%m/%y", date('d/m/y')), array("%B %y", $sMonthName . " ". $iYearShort), array("%B-%y", $sMonthName . "-". $iYearShort), array("%d.%m.%Y %H:%M",date('d.m.Y H:i')), array("%m.%d.%Y %H:%M:%S",date('d.m.Y H:i:s')), array("%H:%M",date('H:i')), array("%H:%M:%S",date('H:i:s')), array("%l:%M %P",date('h:i A')), array("%l:%M:%S %P",date('h:i:s A')), array("%s", "Timestamp") ); return $this->aFormat; } /** * This functions given all js-script, what we need for calendar. * Set all js-script here * * @return (String) js-script */ public function getJsScript(){ // include only one time this js script if(Cms_Date::$iNumOutput < 2){ $this->sJS .= ' '; $this->sJS .= ' '; $this->sJS .= ' '; $this->sJS .= ' '; $this->sJS .= ''; } $this->sJS .= ''; // output $this->sJS = AddSlashes(AddSlashes($this->sJS)); $this->sJS = str_replace("\\\'", "'", $this->sJS); return $this->sJS; } /** * This function builds a Contenido CMS Widget. * A Button for Calendar. * * @return (String)calendar Button widget */ private function getCalendarButton(){ // html link for save $oEditAnchor = new cHTMLLink; $oEditAnchor->setClass('CMS_DATE_'.($this->iNumberOfCms).'_EDIT CMS_LINK_EDIT'); $oEditAnchor->setLink("javascript:setcontent('$this->iIdArtLang','" . $this->sEditLink . "');"); // Calendar Button $oEditButton = new cHTMLImage; $oEditButton->setSrc($this->aCfg["path"]["contenido_fullhtml"] . $this->aCfg["path"]["images"] . "calendar.gif"); $oEditButton->setBorder(0); $oEditButton->setStyleDefinition("margin-right", "2px"); $oEditButton->setClass('CMS_DATE_'.($this->iNumberOfCms).'_EDIT CMS_LINK_EDIT'); $oEditButton->setID("trigger_start" . $this->iNumberOfCms); $oEditButton->setEvent("Click", "$this->sCalName.showCalendar()"); $oEditAnchor->setContent($oEditButton); $sFinalEditButton = $oEditButton->render(); $sFinalEditButton = AddSlashes(AddSlashes($sFinalEditButton)); $sFinalEditButton = str_replace("\\\'", "'", $sFinalEditButton); return $sFinalEditButton; } /** * This function builds a Contenido CMS Widget. * A Button for Submit (OK-Button). * * @return (String)Ok Button widget */ private function getOkButton(){ // Ok Image $oSaveAnchor = new cHTMLLink; $oSaveAnchor->setClass('CMS_DATE_'.($this->iNumberOfCms).'_SAVE CMS_LINK_SAVE'); $oSaveAnchor->setLink("javascript:setcontent('".$this->iIdArtLang."','0')"); $oSaveButton = new cHTMLImage; $oSaveButton->setSrc($this->aCfg["path"]["contenido_fullhtml"].$this->aCfg["path"]["images"]."but_ok.gif"); $oSaveButton->setBorder(0); $oSaveAnchor->setContent($oSaveButton); $sFinalSaveButton = $oSaveAnchor->render(); $sFinalSaveButton = AddSlashes(AddSlashes($sFinalSaveButton)); $sFinalSaveButton = str_replace("\\\'", "'", $sFinalSaveButton); return $sFinalSaveButton; } /** * This function builds a Contenido CMS Widget. * A Editing Field or input field what we use for calendar. * * @return (String) Editing Field widget */ private function getEditingField(){ // Inline Editing Field $oDivBox = new cHTMLDiv(); $oDivBox->setStyleDefinition("border", "1px dashed #bfbfbf"); $oDivBox->setEvent("Focus", "this.style.border='1px solid #bb5577';"); $oDivBox->setEvent("Blur", "this.style.border='1px dashed #bfbfbf';"); $this->sEditAreaId = "DATE_" . $this->oDB->f("idtype") . "_" . $this->iNumberOfCms; $oDivBox->setId($this->sEditAreaId); $oDivBox->updateAttributes(array ('contentEditable' => 'true')); $oDivBox->setContent("_REPLACEMENT_"); $sFinalEditingDiv = $oDivBox->render(); $sFinalEditingDiv = AddSlashes(AddSlashes($sFinalEditingDiv)); $sFinalEditingDiv = str_replace("\\\'", "'", $sFinalEditingDiv); $sFinalEditingDiv = str_replace("_REPLACEMENT_", $this->sContent, $sFinalEditingDiv); return $sFinalEditingDiv; } /** * This function builds a Contenido CMS Widget. * A Select-Box what is given date formats. * In auoFill we use the function getDateFormats: * For edit or add formats modified this function. * * @return (String)Select-Box widget */ private function getSelectBox(){ // Div Format SelectBox $oMenueDiv = new cHTMLDiv(); $this->sDivSelectId = "menue-$this->iNumberOfCms"; $oMenueDiv->setId($this->sDivSelectId); $oMenueDiv->setStyleDefinition("padding", "4px"); $oMenueDiv->setStyleDefinition("background-color", "#ccc"); $oMenueDiv->setStyleDefinition("display", "none"); $oMenueDiv->setStyleDefinition("width", "239px"); // Select Box $this->sSelectId = "select_".$this->iNumberOfCms; $oSelectMenue = new cHTMLSelectElement("select-format-$this->iNumberOfCms", "", $this->sSelectId); $oSelectMenue->setEvent("Change", "$this->sCalName.changeFormat(value);"); $oSelectMenue->autoFill($this->getDateFormats()); $oSelectMenue->setStyle("font-size: 11px; width:239px; font-family: Verdana,Arial,sans-serif"); $oMenueDiv->setContent($oSelectMenue); $sFinalSelectBox = $oMenueDiv->render(); $sFinalSelectBox= AddSlashes(AddSlashes($sFinalSelectBox )); $sFinalSelectBox= str_replace("\\\'", "'", $sFinalSelectBox); return $sFinalSelectBox; } /** * This function gives formatted current language shortcut * * @return (String)Current Language of Contenidos */ private function getLanguageContenido(){ $sLang = ""; switch($this->sContenidoLang){ case'de_DE': $sLang = "de"; break; case'en_US': $sLang = "en"; break; default: break; } return $sLang; } } ?>