MediaWiki:Gadget-LiveRC.js/Extensions/AddComplexTemplateExtension.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
--------------------------------------------------------------------------------------
---------LLLL---------III--------------------------RRRRRRRRRR--------CCCCC------------
---------LLLL---------III--------------------------RRRRRRRRRRRR----CCCCCCCCC----------
---------LLLL--------------------------------------RRR------RRR---CCC-----CCC---------
---------LLLL---------III--VV-----VV--EEEEEEEEE----RRR------RRR--CCC------------------
---------LLLL---------III---VV---VV---EEE----------RRRRRRRRRRR---CCC------------------
---------LLLL---------III---VV---VV---EEEEEE-------RRRRRRRRRR----CCC------------------
---------LLLL---------III----VV-VV----EEEEEE-------RRR-----RRR----CCC-----CCC---------
---------LLLLLLLLLLL--III----VVVVV----EEE----------RRR------RRR----CCCCCCCCC----------
---------LLLLLLLLLLL--III-----VVV-----EEEEEEEEE----RRR-------RRR-----CCCCC------------
--------------------------------------------------------------------------------------
'''Extension de LiveRC'''
// Permet d'insérer un bandeau d'article avec paramètres
* Licence : ...?
* Documentation :
* Auteur : [[:it:User:Jalo]] [[:it:User:Rotpunkt]], [[:fr:User:Dr Brains]]
*
* This script contains functions (InserisciTemplate_showDialog, InserisciTemplate_dumpTemplate and InserisciTemplate_buildInputEl)
* and formats (all template definitions) modified from:
* http://it.wikipedia.org/w/index.php?title=MediaWiki:Gadget-tb-base.js&oldid=66478020
* http://it.wikipedia.org/w/index.php?title=MediaWiki:Gadget-tb-* (for the templates)
* author Rotpunkt (http://it.wikipedia.org/wiki/Utente:Rotpunkt)
*
* Développement et maintenance :
{{Catégorisation JS|LiveRC}}
*/
//<source lang=javascript>
if(typeof(LiveRC_AddHook)==="function"){ // DÉBUT IF
LiveRC_Config["InstalledLiveRCExtensions"].push("InserisciTemplate");
/* ************************************************************************************************************************************************ */
window.Custom_lstMyTemplate = {};
window.lstMyTemplate = {
'Ébauche': {
template:'Ébauche',
string:'Ébauche',
where:'top',
noinclude: false,
subst: false,
parameters: {
"1": {name: 'Thème 1', type: 'select'},
"2": {name: 'Thème 2', type: 'select'},
"3": {name: 'Thème 3', type: 'select'},
"4": {name: 'Thème 4', type: 'select'},
"5": {name: 'Thème 5', type: 'select'},
"6": {name: 'Thème 6', type: 'select'}
}
},
'À fusionner':{
template:'À fusionner',
string:'À fusionner',
where:'top',
noinclude: false,
subst: false,
parameters: {
"1": {name: 'Article 1', type: 'string'},
"2": {name: 'Article 2', type: 'string'},
"3": {name: 'Article 3', type: 'string'},
"4": {name: 'Article 4', type: 'string'},
"5": {name: 'Article 5', type: 'string'},
"6": {name: 'Article 6', type: 'string'},
"section FT": {name: 'Titre de section', type: 'string'}
}
},
'Fusion technique':{
template:'Fusion technique',
string:'Fusion technique',
where:'top',
noinclude: false,
subst: false,
parameters: {
"1": {name: 'Article 1', type: 'string'},
"2": {name: 'Article 2', type: 'string'},
"3": {name: 'Article 3', type: 'string'},
"4": {name: 'Article 4', type: 'string'},
"5": {name: 'Article 5', type: 'string'},
"6": {name: 'Article 6', type: 'string'},
"section FT": {name: 'Titre de section', type: 'string'}
}
}
};
mw.loader.addStyleTag("" +
".InserisciTemplate_TemplateDiv {" +
" border: 1px solid #808080;" +
" padding: 0.5em;" +
" margin: 2px;" +
"} " +
".InserisciTemplate_template {" +
" font-size:150%;" +
" font-weight:bold;" +
"}"
);
window.AddComplexTemplateExtension_Init = function(){
var GoodActions = (mw.config.get('wgAction')=="view"||mw.config.get('wgAction')=="purge");
if(!GoodActions) return;
var ThisPage = mw.config.get('wgPageName').replace(/_/g, " ");
var lrcPage = ( ThisPage === lrcMakeParam("PageTitle") );
var installPage = ( ThisPage === LiveRC_Config["InstallationPage"]);
var userCustomPage = ( ThisPage === lrcGetNamespaceName(2)+":"+mw.config.get('wgUserName')+LiveRC_Config["UserParamPage"]+".js");
if(!lrcPage && !installPage && !userCustomPage ) return;
AddComplexTemplateExtension_getEbaucheParams();
}
LiveRC_AddHook("AfterGotUserInfos", AddComplexTemplateExtension_Init);
// ===== GET PARAMS FOR {{Ébauche}} =====
window.AddComplexTemplateExtension_getEbaucheParams = function(ParamList, apcontinue){
if(!ParamList){
ParamList = new Array();
ParamList.push("");
}
if(!apcontinue) apcontinue = "";
var URL = lrcGetAPIURL('format=xml&action=query')
+ '&list=allpages'
+ '&apnamespace=10'
+ '&aplimit='+LiveRC_Config["UserInfos"].APIlimit
+ '&apprefix=Ébauche/paramètres%20'
+ '&apfilterredir=nonredirects'
+ apcontinue;
wpajax.http({url:URL,
onSuccess:AddComplexTemplateExtension_getEbaucheParamsDone,
list:ParamList
});
}
window.AddComplexTemplateExtension_getEbaucheParamsDone = function(Req, data){
var ParamList = data.list;
var ObjectXML = Req.responseXML;
var pages = ObjectXML.getElementsByTagName('p');
for(var a=0,l=pages.length;a<l;a++){
var page = pages[a];
var title = page.getAttribute("title").split('Ébauche/paramètres ')[1];
if(!title || title == "?" ) continue;
if(ParamList.indexOf(title)==-1) ParamList.push(title);
}
var MustContinue = ObjectXML.getElementsByTagName('query-continue')[0];
if(MustContinue && MustContinue.getElementsByTagName("allpages")[0]){
var apcontinue = "&apcontinue=" + encodeURIComponent(MustContinue.getElementsByTagName("allpages")[0].getAttribute("apcontinue"));
AddComplexTemplateExtension_getEbaucheParams(ParamList, apcontinue);
}else{
try{
var Params = lstMyTemplate['Ébauche'].parameters;
for(var paramname in Params){
if(!Params.hasOwnProperty(paramname)) continue;
lstMyTemplate['Ébauche'].parameters[paramname].value = ParamList;
}
}catch(e){
lrcDisplayDebug("Failed to get {{Ébauche}} params");
};
InserisciTemplate_PopulateConfigPanel();
}
}
// ####################################################################################################################
// ####################################################################################################################
// Add options in the "Tag" form
window.lrcRunInsertTemplate = function(data){
var TagSelect = document.getElementById('LiveTagReason');
var TemplateList = Custom_lstMyTemplate;
if(!lrcGetObjectLength(TemplateList)) TemplateList = lstMyTemplate;
$.each(TemplateList, function(i, val) {
var optTag = document.createElement('option');
optTag.value = i;
optTag.className = "InserisciTemplateExtension";
optTag.innerHTML = val.string;
TagSelect.appendChild(optTag);
});
// setup dialog
mw.loader.using(['jquery.ui'], function () {
$('<div>')
.attr('id', 'gtb-dialog')
.appendTo('body');
});
}
LiveRC_AddHook("AfterPreviewArticle", lrcRunInsertTemplate);
// Function launched when choosing one of this extension options
getLiveTagFunctions["InserisciTemplateExtension"] = function(page, option){
lrcDisableLink("LiveTagReason");
lrcDisableLink("LiveTagLink");
var TemplateList = Custom_lstMyTemplate;
if(!lrcGetObjectLength(TemplateList)) TemplateList = lstMyTemplate;
var message = TemplateList[option.value];
wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml'
+ '&action=query&prop=info&meta=tokens&type=csrf'
+ '&inprop=protection'
+ '&titles=' + encodeURIComponent(page),
onSuccess: InserisciTemplate_PostTagPage,
page: page,
message: message});
return false;
}
// Get page edit token and protection status
window.InserisciTemplate_PostTagPage = function(xmlreq, data){
var page = data.page;
var message = data.message;
ObjetXML = xmlreq.responseXML;
var Isprotected = false;
var PR = ObjetXML.getElementsByTagName("pr");
for(var a=0,l=PR.length;a<l;a++){
var Type = PR[a].getAttribute("type");
var Level = PR[a].getAttribute("level");
if(Type=="edit" && mw.config.get('wgUserGroups').indexOf(Level)==-1) Isprotected = true;
}
if(Isprotected){
LiveRC_alert("<b>"+lrcMakeText("PROTECTEDPAGE").split("$1").join(page)+"</b>");
return;
}
LiveRC_Config["edittoken"] = ObjetXML.getElementsByTagName('tokens')[0].getAttribute('csrftoken');
// show dialog
var tpl = InserisciTemplate_showDialog(message, page);
}
// Show the dialog in order to ask for the template parameters.
window.InserisciTemplate_showDialog = function(data, page) {
var $dialog, $fieldset;
// create the dialog html
$dialog = $('#gtb-dialog').html(lrcMakeText("IT_InsertTemplate1"));
$('<a>')
.attr('href', mw.config.get('wgArticlePath').split("$1").join(lrcGetNamespaceName(10)) + data.template)
.attr('target', '_blank')
.attr('tabindex', '-1')
.css('color', '#2e45ad')
.text(data.template)
.appendTo($dialog);
$dialog.append(lrcMakeText("IT_InsertTemplate2"));
$fieldset = $('<fieldset>').css('border-color', 'gray').appendTo($dialog);
$('<legend>').text(lrcMakeText('IT_InsertTemplateParams')).appendTo($fieldset);
$.each(data.parameters, function (id, val) {
var inputEl = InserisciTemplate_buildInputEl(id, val);
$('<label>')
.attr('for', id)
.text(inputEl.label + ':')
.appendTo($fieldset);
$fieldset
.append('<br/>')
.append(inputEl.el)
.append('<br/>');
});
// show the dialog
var Buttons = new Object();
var OKText = lrcMakeText('OK');
var CancelText = lrcMakeText('Cancel');
Buttons[OKText] = function () {
var params = {};
$dialog.find('input:text,select').each(function () {
params[this.id] = this.value.trim();
});
var text = InserisciTemplate_dumpTemplate(data, params);
$(this).dialog('close');
InserisciTemplate_postTemplate(data, text, page);
};
Buttons[CancelText] = function () {
$(this).dialog('close');
};
$dialog.dialog({
title: lrcMakeIcon("LogoIcon") + ' ' + data.string,
width: 500,
resizable: false,
modal: true,
zIndex: 10000,
buttons: Buttons
});
}
window.InserisciTemplate_buildInputEl = function(id, data) {
var label, inputEl;
if (data.type == 'string') {
label = data.name;
inputEl = $('<input/>')
.attr('id', id)
.attr('type', 'text')
.attr('size', 50)
.attr('value', (data.value || ''));
} else if (data.type == 'select') {
label = data.name;
inputEl = $('<select>')
.attr('id', id)
.css('width', '200px');
$.each(data.value, function (i, option) {
$('<option>')
.html(option)
.appendTo(inputEl);
});
}
return { label: label, el: inputEl };
}
// Check the dialog box and create the wikitext from the template and its params
window.InserisciTemplate_dumpTemplate = function(template, params) {
var text, templateParams = "";
templateParams = LiveRC_FormatTemplateParams(params || {});
text = (template.noinclude ? '<noinclude>' : '') +
'{{' + (template.subst ? 'subst:' : '') +
template.template + '|' +
(templateParams) +
'}}' +
(template.noinclude ? '</noinclude>' : '') + '\n';
return text;
}
window.LiveRC_FormatTemplateParams = function(params) {
var text = new Array();
for(var arg in params){
if(params.hasOwnProperty(arg)) text.push(arg+"="+params[arg]);
}
return text.join("|");
}
// Save the edit
window.InserisciTemplate_postTemplate = function(data, text, page){
lrcDisableLink("LiveTagReason");
lrcDisableLink("LiveTagLink");
var EditParam = new Array();
EditParam["token"] = LiveRC_Config["edittoken"];
if (data.where == 'top')
EditParam["prependtext"] = text+"\n";
else if (data.where == 'bottom')
EditParam["appendtext"] = "\n"+text;
else //default = top
EditParam["prependtext"] = text+"\n";
EditParam["summary"] = lrcMakeText("RESUMESTART") + lrcMakeText("TAG_RESUME") + ' ' + data.template;
EditParam["title"] = page;
EditParam["watchlist"] = "preferences";
EditParam["notminor"] = "1";
EditParam["nocreate"] = "1";
if(lrcMakeParam("BypassWatchdefault")) EditParam["watchlist"] = "nochange";
var Params = new Array();
for(var Param in EditParam){
Params.push(Param+"="+encodeURIComponent(EditParam[Param]));
}
Params = Params.join("&");
var headers = new Array();
headers['Content-Type'] = 'application/x-www-form-urlencoded';
wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=edit',
method: "POST", headers: headers,
data: Params,
onSuccess: InserisciTemplate_PostTagPageDone,
params:EditParam,
where: data.where
});
}
window.InserisciTemplate_PostTagPageDone = function(Req, data){
var params = data.params;
var where = data.where;
var text = "<b>" +params["title"]+ " : " + lrcMakeText("TAG_DONE") + "</b> <small>("+params[(where=='bottom')?"appendtext":"prependtext"]+")</small>";
LiveRC_alert(text);
}
/* ########################################## CONFIGURATION PANEL ################################## */
// ===== Create a fieldset in the configuration panel =====
window.InserisciTemplate_CreateConfigPanel = function(){
var InserisciTemplateUl = LiveRC_ManageParams_CreateNewListMenu("InserisciTemplateLegend", LiveRC_ManageParams_CreateActionButtons());
if(!InserisciTemplateUl) return;
InserisciTemplateUl.parentNode.removeChild(InserisciTemplateUl);
var ThisFieldset = document.getElementById("LiveRC_OptionsContent_InserisciTemplateLegend");
var TargetFieldset = document.getElementById("LiveRC_OptionsContent_lstParamMenuTabs");
if(ThisFieldset && TargetFieldset) TargetFieldset.parentNode.insertBefore(ThisFieldset, TargetFieldset);
}
LiveRC_AddHook("AfterCreateParamPanel", InserisciTemplate_CreateConfigPanel);
window.InserisciTemplate_PopulateConfigPanel = function(){
var InserisciTemplateFieldset = document.getElementById("LiveRC_OptionsContent_InserisciTemplateLegend");
if(!InserisciTemplateFieldset) InserisciTemplate_CreateConfigPanel();
var Target = lrcGetElementsByClass("LiveRC_ParamMenuPart", InserisciTemplateFieldset, "div")[0];
if(!Target) return;
while(Target.firstChild){ Target.removeChild(Target.firstChild); }
var Templates = Custom_lstMyTemplate;
if(!Templates || lrcGetObjectLength(Templates)==0) Templates = lstMyTemplate;
for(var temp in Templates){
if(!Templates.hasOwnProperty(temp)) continue;
var Template = Templates[temp];
var TemplateForm = InserisciTemplate_CreateTemplateConfigPanel(Template);
Target.appendChild(TemplateForm);
}
var NewTemplate = document.createElement('p');
NewTemplate.id = "InserisciTemplate_AddNeTemplateP";
var NewTemplateLink = document.createElement('a');
NewTemplateLink.innerHTML = "(+)";
NewTemplateLink.title = lrcMakeText("IT_AddTemplate");
NewTemplateLink.href = "javascript:;";
NewTemplateLink.onclick = function(){ InserisciTemplate_AddNewTemplate(); };
NewTemplate.appendChild(NewTemplateLink);
Target.appendChild(NewTemplate);
}
window.InserisciTemplate_AddNewTemplate = function(){
var P = document.getElementById("InserisciTemplate_AddNeTemplateP");
if(!P) return;
var BlankTemplate = { template:'',
string:'',
where:'top',
noinclude: false,
subst: false,
parameters: {}
};
var NewDiv = InserisciTemplate_CreateTemplateConfigPanel(BlankTemplate);
P.parentNode.insertBefore(NewDiv, P);
}
window.InserisciTemplate_DeleteTemplate = function(DeleteLink){
var Div = DeleteLink;
while(Div){
if(lrcHasClass(Div, "InserisciTemplate_TemplateDiv")) break;
Div = Div.parentNode;
}
if(!Div) return;
Div.parentNode.removeChild(Div);
}
window.InserisciTemplate_CreateTemplateConfigPanel = function(Template){
var TemplateDiv = document.createElement('div');
TemplateDiv.className = "InserisciTemplate_TemplateDiv ParamMenuLi";
var Legend = document.createElement('p');
var Title = document.createElement('a')
Title.className = "InserisciTemplate_template";
Title.innerHTML = "{{"+Template.template+"}} ";
Title.target = "_blank";
Title.href = lrcGetPageURL(lrcGetNamespaceName(10)+":"+Template.template);
Title.title = lrcGetNamespaceName(10)+":"+Template.template;
Title.onclick = function(){ liveArticle(lrcGetNamespaceName(10)+":"+Template.template); return false; };
Legend.appendChild(Title);
var DeleteTemplateLink = document.createElement('a');
DeleteTemplateLink.innerHTML = "(-)";
DeleteTemplateLink.title = lrcMakeText("IT_DeleteTemplate");
DeleteTemplateLink.href = "javascript:;";
DeleteTemplateLink.onclick = function(){ InserisciTemplate_DeleteTemplate(this); };
Legend.appendChild(DeleteTemplateLink);
TemplateDiv.appendChild(Legend);
var TemplateForm = document.createElement('form');
TemplateForm.className = "InserisciTemplate_TemplateForm";
TemplateDiv.appendChild(TemplateForm);
var UL = document.createElement('ul');
TemplateForm.appendChild(UL);
var LI_Template = document.createElement('li');
UL.appendChild(LI_Template);
// 'template': name of the template to be inserted
var Label_template = document.createElement('label');
Label_template.setAttribute('for', 'template');
Label_template.innerHTML = "template : ";
LI_Template.appendChild(Label_template);
var Input_template = document.createElement('input');
Input_template.id = 'template';
Input_template.type = "text";
Input_template.value = (Template.template || "");
LI_Template.appendChild(Input_template);
LI_Template.appendChild(document.createTextNode(" - "));
// 'string': option label in the template combo box
var Label_string = document.createElement('label');
Label_string.setAttribute('for', 'string');
Label_string.innerHTML = "string : ";
LI_Template.appendChild(Label_string);
var Input_string = document.createElement('input');
Input_string.id = 'string';
Input_string.type = "text";
Input_string.value = (Template.string || "");
LI_Template.appendChild(Input_string);
LI_Template.appendChild(document.createTextNode(" - "));
// 'where': where to insert the template in the page (top or bottom)
var Label_where = document.createElement('label');
Label_where.setAttribute('for', 'where');
Label_where.innerHTML = "where : ";
LI_Template.appendChild(Label_where);
var Select_where = document.createElement('select');
Select_where.id = 'where';
var Opts = ["top", "bottom"];
for(var a=0,l=Opts.length;a<l;a++){
var OptValue = Opts[a];
var Opt = document.createElement('option');
Opt.innerHTML = OptValue;
Opt.value = OptValue;
if(OptValue == Template.where) Opt.selected = "selected";
Select_where.appendChild(Opt);
}
LI_Template.appendChild(Select_where);
LI_Template.appendChild(document.createTextNode(" - "));
// 'noinclude': whether the template shall be tagged with "noinclude"
var Label_noinclude = document.createElement('label');
Label_noinclude.setAttribute('for', 'noinclude');
Label_noinclude.innerHTML = "noinclude : ";
LI_Template.appendChild(Label_noinclude);
var Input_noinclude = document.createElement('input');
Input_noinclude.id = 'noinclude';
Input_noinclude.type = "checkbox";
if(Template.noinclude) Input_noinclude.checked = "checked";
LI_Template.appendChild(Input_noinclude);
LI_Template.appendChild(document.createTextNode(" - "));
// 'subst': whether the template shall be "substed"
var Label_subst = document.createElement('label');
Label_subst.setAttribute('for', 'subst');
Label_subst.innerHTML = "subst : ";
LI_Template.appendChild(Label_subst);
var Input_subst = document.createElement('input');
Input_subst.id = 'subst';
Input_subst.type = "checkbox";
if(Template.subst) Input_subst.checked = "checked";
LI_Template.appendChild(Input_subst);
// 'parameters'
var LI_parameters = document.createElement('li');
UL.appendChild(LI_parameters);
var Label_parameters = document.createElement('label');
Label_parameters.setAttribute('for', 'parameters');
Label_parameters.innerHTML = "parameters : ";
LI_parameters.appendChild(Label_parameters);
var ParamsUL = document.createElement('ul');
ParamsUL.id = 'parameters';
LI_parameters.appendChild(ParamsUL);
for(var param in Template.parameters){
if(!Template.parameters.hasOwnProperty(param)) continue;
var LI_Param = InserisciTemplate_CreateNewParam(param, Template.parameters[param]);
ParamsUL.appendChild(LI_Param);
}
var Li_NewParam = document.createElement('li');
var Link_NewParam = document.createElement('a');
Link_NewParam.innerHTML = "(+)";
Link_NewParam.title = lrcMakeText("IT_AddParam");
Link_NewParam.href = "javascript:;";
Link_NewParam.onclick = function(){ InserisciTemplate_AddParamToTemplate(this); };
Li_NewParam.appendChild(Link_NewParam);
ParamsUL.appendChild(Li_NewParam);
return TemplateDiv;
}
window.InserisciTemplate_AddParamToTemplate = function(AddParamLink){
var Li = AddParamLink.parentNode;
var NewParams = {name: '', type: 'string', value: ''};
var NewParamLi = InserisciTemplate_CreateNewParam("", NewParams);
Li.parentNode.insertBefore(NewParamLi, Li);
}
window.InserisciTemplate_CreateNewParam = function(param, Params){
var ParamName = Params.name;
var ParamType = Params.type;
var ParamValue = Params.value;
var LI_Param = document.createElement('li');
LI_Param.className = "LI_parameters_li";
var DeleteParamLink = document.createElement('a');
DeleteParamLink.innerHTML = "(-)";
DeleteParamLink.title = lrcMakeText("IT_DeleteParam");
DeleteParamLink.href = "javascript:;";
DeleteParamLink.onclick = function(){ InserisciTemplate_DeleteParamFromTemplate(this); };
LI_Param.appendChild(DeleteParamLink);
LI_Param.appendChild(document.createTextNode(" - "));
//// parameters id
var Label_id = document.createElement('label');
Label_id.setAttribute('for', 'Param_id');
Label_id.innerHTML = "id : ";
LI_Param.appendChild(Label_id);
var Input_id = document.createElement('input');
Input_id.id = 'Param_id';
Input_id.type = "text";
Input_id.value = (param || "");
LI_Param.appendChild(Input_id);
LI_Param.appendChild(document.createTextNode(" - "));
//// parameters.name
var Label_name = document.createElement('label');
Label_name.setAttribute('for', 'Param_name');
Label_name.innerHTML = "name : ";
LI_Param.appendChild(Label_name);
var Input_name = document.createElement('input');
Input_name.id = 'Param_name';
Input_name.type = "text";
Input_name.value = (ParamName || "");
LI_Param.appendChild(Input_name);
LI_Param.appendChild(document.createTextNode(" - "));
//// parameters.type
var Label_type = document.createElement('label');
Label_type.setAttribute('for', 'Param_type');
Label_type.innerHTML = "type : ";
LI_Param.appendChild(Label_type);
var Select_type = document.createElement('select');
Select_type.id = 'Param_type';
var Opts = ["string", "select"];
for(var a=0,l=Opts.length;a<l;a++){
var OptValue = Opts[a];
var Opt = document.createElement('option');
Opt.innerHTML = OptValue;
Opt.value = OptValue;
if(OptValue == ParamType) Opt.selected = "selected";
Select_type.appendChild(Opt);
}
Select_type.onchange = function(){ InserisciTemplate_ChageValueType(this); }
LI_Param.appendChild(Select_type);
LI_Param.appendChild(document.createTextNode(" - "));
//// parameters.value
var Label_value = document.createElement('label');
Label_value.setAttribute('for', 'Param_value');
Label_value.innerHTML = "value : ";
LI_Param.appendChild(Label_value);
if(ParamType == "string"){
var Input_value = document.createElement('input');
Input_value.id = 'Param_value';
Input_value.type = "text";
Input_value.size = "30";
Input_value.value = (ParamValue || "");
LI_Param.appendChild(Input_value);
}else if(ParamType == "select"){
var Select_value = document.createElement('select');
Select_value.id = 'Param_value';
Select_value.style.width = '206px';
var Opts = ParamValue;
if(typeof(Opts) ==="object"){
for(var a=0,l=Opts.length;a<l;a++){
var OptValue = Opts[a];
var Opt = document.createElement('option');
Opt.innerHTML = OptValue;
Opt.value = OptValue;
Select_value.appendChild(Opt);
}
}
LI_Param.appendChild(Select_value);
LI_Param.appendChild(document.createTextNode(" "));
var DeleteOptionLink = document.createElement('a');
DeleteOptionLink.innerHTML = "(-)";
DeleteOptionLink.title = lrcMakeText("IT_DeleteOption");
DeleteOptionLink.href = "javascript:;";
DeleteOptionLink.onclick = function(){ InserisciTemplate_DeleteOptionFromSelect(this); };
LI_Param.appendChild(DeleteOptionLink);
LI_Param.appendChild(document.createTextNode(" "));
var AddOptionLink = document.createElement('a');
AddOptionLink.innerHTML = "(+)";
AddOptionLink.title = lrcMakeText("IT_AddOption");
AddOptionLink.href = "javascript:;";
AddOptionLink.onclick = function(){ InserisciTemplate_AddOptionToSelect(this); };
LI_Param.appendChild(AddOptionLink);
}
return LI_Param;
}
window.InserisciTemplate_ChageValueType = function(Select){
var NewType = Select.value;
var Li = Select.parentNode;
var Labels = Li.getElementsByTagName('label');
var LastLabel = Labels[(Labels.length-1)];
while(LastLabel.nextSibling){ LastLabel.nextSibling.parentNode.removeChild(LastLabel.nextSibling); }
if(NewType == "string"){
var Input_value = document.createElement('input');
Input_value.id = 'Param_value';
Input_value.type = "text";
Input_value.size = "30";
Input_value.value = "";
LastLabel.parentNode.appendChild(Input_value);
}else{
var Select_value = document.createElement('select');
Select_value.id = 'Param_value';
Select_value.style.width = '206px';
var Opt = document.createElement('option');
Opt.innerHTML = "";
Opt.value = "";
Select_value.appendChild(Opt);
LastLabel.parentNode.appendChild(Select_value);
LastLabel.parentNode.appendChild(document.createTextNode(" "));
var DeleteOptionLink = document.createElement('a');
DeleteOptionLink.innerHTML = "(-)";
DeleteOptionLink.title = lrcMakeText("IT_DeleteOption");
DeleteOptionLink.href = "javascript:;";
DeleteOptionLink.onclick = function(){ InserisciTemplate_DeleteOptionFromSelect(this); };
LastLabel.parentNode.appendChild(DeleteOptionLink);
LastLabel.parentNode.appendChild(document.createTextNode(" "));
var AddOptionLink = document.createElement('a');
AddOptionLink.innerHTML = "(+)";
AddOptionLink.title = lrcMakeText("IT_AddOption");
AddOptionLink.href = "javascript:;";
AddOptionLink.onclick = function(){ InserisciTemplate_AddOptionToSelect(this); };
LastLabel.parentNode.appendChild(AddOptionLink);
}
}
window.InserisciTemplate_DeleteOptionFromSelect = function(DeleteOptionLink){
var Li = DeleteOptionLink.parentNode;
var Selects = Li.getElementsByTagName('select');
for(var a=0,l=Selects.length;a<l;a++){
var Select = Selects[a];
if(!Select.id || Select.id != 'Param_value') continue;
var SelectedOpt = Select.value;
var Options = Select.getElementsByTagName('option');
for(var b=0,m=Options.length;b<m;b++){
var thisOpt = Options[b];
if(thisOpt.value != SelectedOpt) continue;
thisOpt.parentNode.removeChild(thisOpt);
}
}
}
window.InserisciTemplate_AddOptionToSelect = function(AddOptionLink){
var AddOptionForm = document.createElement('span');
var AddOptionInput = document.createElement('input');
AddOptionInput.type = 'text';
AddOptionForm.appendChild(AddOptionInput);
var AddOptionInputOK = document.createElement('input');
AddOptionInputOK.type = 'button';
AddOptionInputOK.value = lrcMakeText("OK");
AddOptionInputOK.onclick = function(){ InserisciTemplate_AddOptionToSelect_OK(this); };
AddOptionInputOK.onselect = function(){ InserisciTemplate_AddOptionToSelect_OK(this); };
AddOptionForm.appendChild(AddOptionInputOK);
var AddOptionInputCancel = document.createElement('input');
AddOptionInputCancel.type = 'button';
AddOptionInputCancel.value = lrcMakeText("Cancel");
AddOptionInputCancel.onclick = function(){ InserisciTemplate_AddOptionToSelect_Cancel(this); };
AddOptionInputCancel.onselect = function(){ InserisciTemplate_AddOptionToSelect_Cancel(this); };
AddOptionForm.appendChild(AddOptionInputCancel);
AddOptionLink.parentNode.insertBefore(AddOptionForm, AddOptionLink);
AddOptionLink.style.display = "none";
}
window.InserisciTemplate_AddOptionToSelect_Cancel = function(AddOptionInputCancel){
var Span = AddOptionInputCancel.parentNode;
var Link = Span.nextSibling;
Span.parentNode.removeChild(Span);
Link.style.display = "";
}
window.InserisciTemplate_AddOptionToSelect_OK = function(AddOptionInputOK){
var Input = AddOptionInputOK.previousSibling;
var NewOption = Input.value;
var Li = AddOptionInputOK.parentNode.parentNode;
var Selects = Li.getElementsByTagName('select');
for(var a=0,l=Selects.length;a<l;a++){
var Select = Selects[a];
if(!Select.id || Select.id != 'Param_value') continue;
var Option = document.createElement('option');
Option.innerHTML = NewOption;
Option.value = NewOption;
Select.appendChild(Option);
}
InserisciTemplate_AddOptionToSelect_Cancel(AddOptionInputOK)
}
window.InserisciTemplate_DeleteParamFromTemplate = function(DeleteParamLink){
var Li = DeleteParamLink.parentNode;
Li.parentNode.removeChild(Li);
}
// ===== Check the fieldset and add a text to be saved in /LiveRCparam.js page =====
window.InserisciTemplate_CheckConfigPanel = function(){
var ITConfigPanel = document.getElementById('LiveRC_OptionsContent_InserisciTemplateLegend');
if(!ITConfigPanel) return;
var ElementForms = lrcGetElementsByClass("InserisciTemplate_TemplateForm", ITConfigPanel, "form");
var Items = new Object();
for(var a=0,l=ElementForms.length;a<l;a++){
var ThisForm = ElementForms[a];
var NewItem = new Object();
NewItem.template = getElementWithId('template', 'input', ThisForm).value;
NewItem.string = getElementWithId('string', 'input', ThisForm).value;
NewItem.where = getElementWithId('where', 'select', ThisForm).value;
NewItem.noinclude = (getElementWithId('noinclude', 'input', ThisForm).checked ? true : false );
NewItem.subst = (getElementWithId('subst', 'input', ThisForm).checked ? true : false );
NewItem.parameters = new Object();
var ParamLIs = lrcGetElementsByClass("LI_parameters_li", ThisForm, "li");
for(var b=0,m=ParamLIs.length;b<m;b++){
var ParamLi = ParamLIs[b];
var NewParam = new Object();
var NewParamId = getElementWithId('Param_id', 'input', ParamLi).value;
NewParam.name = getElementWithId('Param_name', 'input', ParamLi).value;
NewParam.type = getElementWithId('Param_type', 'select', ParamLi).value;
if(NewParam.type == "string"){
NewParam.value = getElementWithId('Param_value', 'input', ParamLi).value.unhtmlize();
if(!NewParam.value) delete NewParam.value;
}else{
NewParam.value = new Array();
var ParamValueSelect = getElementWithId('Param_value', 'select', ParamLi);
var Opt = ParamValueSelect.getElementsByTagName('option');
for(var c=0,k=Opt.length;c<k;c++){
NewParam.value.push(Opt[c].value.unhtmlize());
}
}
NewItem.parameters[NewParamId] = NewParam;
}
Items[NewItem.template] = NewItem;
}
var TextToSave = InserisciTemplate_CompareNewParams(Items);
if(!TextToSave) return;
var SavedText = "\nCustom_lstMyTemplate = {\n";
var SavedItems = new Array();
for(var item in Items){
var SavedItem = " '"+item+"':{\n";
var ThisTemplate = Items[item];
for(var tempParam in ThisTemplate){
SavedItem += " "+tempParam+" : ";
var tempParamValue = ThisTemplate[tempParam];
if(tempParam!="parameters"){
SavedItem += ( typeof(tempParamValue)=="string" ? lrcEscapeStrHTML(tempParamValue) : tempParamValue ) + ",\n";
}else{
SavedItem += "{\n";
var tempParameters = new Array();
for(var parameter in tempParamValue){
var thisparam = tempParamValue[parameter];
var ParamItems = new Array();
for(var paramItem in thisparam){
var thisparamItemValue = thisparam[paramItem];
if(paramItem!="value" || typeof(thisparamItemValue)=="string"){
ParamItems.push( paramItem + ":" + lrcEscapeStrHTML(thisparamItemValue) );
}else{
var ThisParamValue = new Array();
for(var a=0,l=thisparamItemValue.length;a<l;a++){
ThisParamValue.push(lrcEscapeStrHTML(thisparamItemValue[a]));
}
ParamItems.push( paramItem +": [" + ThisParamValue.join(",") + "]" );
}
}
tempParameters.push(" " + lrcEscapeStrHTML(parameter) + " : {" + ParamItems.join(",") + "}");
}
SavedItem += tempParameters.join(",\n");
SavedItem += "\n }";
}
}
SavedItem += "\n }";
SavedItems.push(SavedItem);
}
SavedText += SavedItems.join(",\n");
SavedText += "};\n\n";
LiveRC_Config["BeforeParamPanelSavedHookResult"] += SavedText;
}
LiveRC_AddHook("BeforeParamPanelSaved", InserisciTemplate_CheckConfigPanel);
window.InserisciTemplate_CompareNewParams = function(NewItems){
var OldItems = lstMyTemplate;
for(var template in OldItems){
if(typeof(NewItems[template])==="undefined") return true;
for(var item in OldItems[template]){
if(item != "parameters"){
if(OldItems[template][item] !== NewItems[template][item]) return true;
}else{
if(lrcGetObjectLength(OldItems[template][item]) != lrcGetObjectLength(NewItems[template][item])) return true;
for(var param in OldItems[template][item]){
if(!NewItems[template][item][param]) return true;
for(var paramitem in OldItems[template][item][param]){
if(paramitem != "value" || (typeof(OldItems[template][item][param][paramitem]) != "object" && typeof(NewItems[template][item][param][paramitem]) != "object")){
if(OldItems[template][item][param][paramitem] !== NewItems[template][item][param][paramitem]) return true;
}else{
if(OldItems[template][item][param][paramitem].length != NewItems[template][item][param][paramitem].length) return true;
for(var a=0, l=OldItems[template][item][param][paramitem].length;a<l;a++){
if(OldItems[template][item][param][paramitem][a] != NewItems[template][item][param][paramitem][a]) return true;
}
}
}
}
}
}
}
for(var template in NewItems){
if(typeof(OldItems[template])==="undefined") return true;
}
return false;
}
// ===== Vars for configuration panel fieldset =====
// Texts
try{
lrcTexts["IT_InsertTemplate1"] = "Inserisce il template {{";
lrcTexts["IT_InsertTemplate2"] = "}} nella pagina.";
lrcTexts["IT_InsertTemplateParams"] = "Parametri";
lrcTexts["IT_AddTemplate"] = "Aggiungi un nuovo template";
lrcTexts["IT_DeleteTemplate"] = "Cancella questo template";
lrcTexts["IT_AddParam"] = "Aggiungi un nuovo parametro";
lrcTexts["IT_DeleteParam"] = "Cancella questo parametro";
lrcTexts["IT_DeleteOption"] = "Cancella l'opzione selezionata";
lrcTexts["IT_AddOption"] = "Aggiungi una nuova opzione";
}catch(e){ }
// Descriptions
try{
lrcParamDesc["DescIT_InsertTemplate1"] = "[InserisciTemplate] Inserisci la parte 1 della frase del template";
lrcParamDesc["DescIT_InsertTemplate2"] = "[InserisciTemplate] Inserisci la parte 2 della frase del template";
lrcParamDesc["DescIT_InsertTemplateParams"] = "[InserisciTemplate] Parametri";
lrcParamDesc["DescIT_AddTemplate"] = "[InserisciTemplate] Frase Aggiungi un nuovo template";
lrcParamDesc["DescIT_DeleteTemplate"] = "[InserisciTemplate] Frase Cancella questo template";
lrcParamDesc["DescIT_AddParam"] = "[InserisciTemplate] Frase Aggiungi un nuovo parametro";
lrcParamDesc["DescIT_DeleteParam"] = "[InserisciTemplate] Frase Cancella questo parametro";
lrcParamDesc["DescIT_DeleteOption"] = "[InserisciTemplate] Frase Cancella l'opzione selezionata";
lrcParamDesc["DescIT_AddOption"] = "[InserisciTemplate] Frase Aggiungi una nuova opzione";
lrcParamDesc["DescInserisciTemplateLegend"] = "Parametri per l'estensione InserisciTemplate";
lrcParamDesc["DescInserisciTemplateLegend_short"] = "InserisciTemplate";
}catch(e){ }
// Hide/Show tabs panel item
addParamMenuTab("InserisciTemplateLegend", true);
/* ************************************************************************************************************************************************ */
} // FIN IF
//</source>