/** * Project: * Contenido Content Management System * * Description: * JavaScript CMS Type Teaser * * * @package Contenido Content Types * @version 1.0.0 * @author Timo Trautmann * @copyright four for business AG * @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.12 * * {@internal * created 2009-04-08 * * $Id$: * }} * */ /** * Initial function which adds all javascript events to teaser edit box and coresponding * input elements * * @param string sFrameId * @param string sImageId * @param string sPath * @param string sSession * @param integer iIdArtLang * @param integer iId */ function addTeaserEvents(sFrameId, sImageId, sPath, sSession, iIdArtLang, iId) { cmsTeaser_initialize(sFrameId); cmsTeaser_loadExternalScripts(sFrameId, sPath); cmsTeaser_addTabbingEvents(sFrameId); cmsTeaser_addFrameShowEvent(sFrameId, sImageId); cmsTeaser_addSaveEvent(sFrameId, iIdArtLang, iId); cmsTeaser_addFrameCloseEvents(sFrameId); cmsTeaser_addAjaxGetArticleListEvent(sFrameId, sPath, sSession); cmsTeaser_addManualTeaserEvent(sFrameId); cmsTeaser_addClickEvent(sFrameId); } /** * Appends the passed node to the end of body tag. This is necessary to have more * control during positioninig. * * @param string sFrameId */ function cmsTeaser_initialize(sFrameId) { $(sFrameId).appendTo($('body')); } /** * Function extracts an value from teaser form an adds it as hidden to editform for submitting to Contenido * Function is called in store proccess of teaser * * @param string sName * @param string sValue */ function cmsTeaser_appendTeaserValue(sName, sValue) { $("form[name='editcontent']").append(''); } /** * Function adds event which fades edit form to visible when editbutton is clicked * * @param string sFrameId * @param string sImageId */ function cmsTeaser_addFrameShowEvent(sFrameId, sImageId) { $(sImageId).css('cursor', 'pointer'); $(sImageId).click(function () { $(sFrameId).fadeIn("normal"); $(sFrameId).css('top', $(sImageId).offset().top); $(sFrameId).css('left', $(sImageId).offset().left+$(sImageId).width()+3); }); } /** * Function adds tabbling events to menubar of teaser edit form * which switchs between the tree tabbing views * * @param string sFrameId */ function cmsTeaser_addTabbingEvents(sFrameId) { $(sFrameId+" .menu li").css('cursor', 'pointer'); //add layer click events $(sFrameId+" .menu li").click(function(){ $(sFrameId+" .menu li").css('font-weight', 'normal'); $(sFrameId+" #manual").css("display", "none"); $(sFrameId+" #advanced").css("display", "none"); $(sFrameId+" #general").css("display", "none"); //add smooth animation $(sFrameId+" #"+$(this).attr('class')).fadeIn("normal"); $(this).css('font-weight', 'bold'); }); } /** * Function adds save event to save button of teaseredit form * * @param string sFrameId * @param integer iIdArtLang * @param integer iId */ function cmsTeaser_addSaveEvent(sFrameId, iIdArtLang, iId) { $(sFrameId+' .save_settings').css('cursor', 'pointer'); $(sFrameId+' .save_settings').click(function() { cmsTeaser_addManualTeaserEntry(sFrameId); var sValue = ''; //iterate over all teaser properties for (var i = 0; i < aData.length; i++) { if (aData[i] == 'teaser_start' || aData[i] == 'teaser_manual') { //special behaviour for checkboxes sValue = $(sFrameId+' #'+aData[i]).attr('checked'); } else if (aData[i] == 'teaser_manual_art') { //in case of manual arts implode them use , as separator sValue = ''; $(sFrameId+' #teaser_manual_art option').each(function() { if (sValue == '') { sValue = $(this).attr('value'); } else { sValue = sValue+';'+$(this).attr('value'); } }); } else { //default value for select boxes and text boxes sValue = $(sFrameId+' #'+aData[i]).attr('value'); } cmsTeaser_appendTeaserValue(aData[i], sValue); } cmsTeaser_appendTeaserValue('teaser_action', 'store'); cmsTeaser_appendTeaserValue('teaser_id', iId); setcontent(iIdArtLang,'0'); }); } /** * Function adds event for closing teaser edit window and fades box out * * @param string sFrameId */ function cmsTeaser_addFrameCloseEvents(sFrameId) { //add cancel image event $(sFrameId+' .close').css('cursor', 'pointer'); $(sFrameId+' .close').click(function () { $(sFrameId).fadeOut("normal"); }); //add cancel button event $(sFrameId+' .teaser_cancel').css('cursor', 'pointer'); $(sFrameId+' .teaser_cancel').click(function () { $(sFrameId).fadeOut("normal"); }); } /** * Function gets new list of articles from contenido via ajax * is used in manual teaser when base category for article select * is changed * * @param string sFrameId * @param string sPath * @param string sSession */ function cmsTeaser_addAjaxGetArticleListEvent(sFrameId, sPath, sSession) { $(sFrameId+' #teaser_cat').change(function() { //get new article select and replace it with default value $.ajax({ type: "POST", url: sPath+"ajaxmain.php", data: "ajax=artsel&name=teaser_art&contenido="+sSession+"&idcat="+$(this).attr('value'), success: function(msg){ $(sFrameId+' #teaser_art').replaceWith(msg); } }); }); } /** * Function loads external styles and jquery ui scripts for teaser dynamically so this scripts were only * loaded into contenido whren this teaser is really used in this article * * @param string sFrameId * @param string sPath */ function cmsTeaser_loadExternalScripts(sFrameId, sPath) { $('head').append(''); $.getScript(sPath+'scripts/jquery/jquery-ui.js', function() { $(sFrameId).draggable({handle: '.head'}); $(sFrameId+' .head').css('cursor', 'move'); }); } /** * Function adds event to add new article to multiple select box for articles * Function also checks if article is already in that list * * @param string sFrameId */ function cmsTeaser_addManualTeaserEvent(sFrameId) { $(sFrameId+' #add_art').css('cursor', 'pointer'); $(sFrameId+' #add_art').click(function() { //call internal add function cmsTeaser_addManualTeaserEntry(sFrameId); }); } /** * Function adds new article to multiple select box for articles * Function also checks if article is already in that list * * @param string sFrameId */ function cmsTeaser_addManualTeaserEntry(sFrameId) { var oArt = $(sFrameId+' #teaser_art'); var iIdArt = oArt.attr('value'); var sName = ''; var bExists = 0; //if an article was selected if (iIdArt > 0) { //check if article already exists in view list $(sFrameId+' #teaser_manual_art option').each(function() { if (iIdArt == $(this).attr('value')) { bExists = 1; } }); //get name of selected article $(sFrameId+' #teaser_art option').each(function() { if (iIdArt == $(this).attr('value')) { sName = $(this).html(); } }); //if it is not in list, add article to list if (bExists == 0) { $(sFrameId+' #teaser_manual_art').append(''); } } } /** * Function adds double click events to all current listed articles for manual teaser * in case of a double click this selected article is removed from list * * @param string sFrameId */ function cmsTeaser_addClickEvent(sFrameId) { $(sFrameId+' #teaser_manual_art').dblclick(function() { $(sFrameId+' #teaser_manual_art option').each(function() { if($(this).attr('selected')) { $(this).remove(); }; }); }); }