Avatar

JavaScript Änderungen für kommende Version [Zusammenfassung] (German / Deutsch)

by Micha ⌂, Wednesday, August 29, 2012, 09:25 (4260 days ago) @ Birgit

Hallo,

hier mal die Änderungen in einem Beitrag, die in der kommenden Foren-Version integriert werden sollten.

main.js

document.createInputElementWithAttributes = function(tagName, attributes, parentElement) {
 if (tagName.toLowerCase() != "input" && tagName.toLowerCase() != "button") 
  return document.createElementWithAttributes(tagName, attributes, parentElement);
 
 var type = attributes["type"] || false;
 var name = attributes["name"] || false;
 var el   = false;
 
 if (type) {
  try {
   el = document.createElement(tagName);
   el.type = type;
   if (name)
    el.name = name;
  }
  catch(err) {
   var attr = " type=" + type +(name?" name=" + name : "");
   //el = document.createElement('<'+tagName+' type="'+type+'">');
   el = document.createElement("<" + tagName + attr + ">");
  }
 }
 el = el || document.createElement(tagName);
 
 for (var attribute in attributes)  
  if (attribute.toLowerCase() != "type" && attribute.toLowerCase() != "name")
   el[attribute] = attributes[attribute];
 
 if (parentElement) 
  parentElement.appendChild(el);
 
 return el;
};


_______________________________________________________________________

posting.js

var createBBCodeButton = function(button, list) {
 var bbCodeButton = null;
 var bname=button&&button.name?button.name.toLowerCase():"";
 //switch(button.name.toLowerCase()) {
 switch(bname) {
  case "link":
   bbCodeButton = new BBCodeLinkButton( button );
  break;
  case "img":
   if (list && list.length > 1)
    bbCodeButton = new BBCodeOptionButton(button, list, lang["bbcode_image_url"], "http://" );
   else
    bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "http://" ); 
  break;
  case "color":
   bbCodeButton = new BBCodeColorChooserButton( button );
  break;
  case "list":
   bbCodeButton = new BBCodeListButton( button );
  break;
  case "flash":
   bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=insert_flash", settings["flash_popup_width"], settings["flash_popup_height"]);
  break;
  case "upload":
   bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=upload_image", settings["upload_popup_width"], settings["upload_popup_height"]); 
  break;
  case "tex":
   bbCodeButton = new BBCodePromtButton( button, lang["bbcode_tex_code"] ); 
  break;
 
  default:
   if (button.isSmilie && list && list.length > 1)
    bbCodeButton = new BBCodeSmilieButton( button, list );
   else if (button.isSmilie)
    bbCodeButton = new BBCodeSingleSmilieButton( button );
   else if (list && list.length > 1) 
    bbCodeButton = new BBCodeOptionButton( button, list );
   else
    bbCodeButton = new BBCodeButton( button );
  break;
 }
 return bbCodeButton;
};


_______________________________________________________________________

Ferner hatte Auge noch ein Feature angeregt.

function BBCodeLinkButton(el) {
 this.constructor(el);
 var link_bb_code = "link";
 var regExpURI = new RegExp(/[http|https|ftp|ftps]:\/\/[a-zA-Z0-9-.][a-zA-Z0-9-.]+(S+)?/);
 var regExpFID = new RegExp(/[?|&]id=([0-9]+)/);
 var regExpINT = new RegExp(/(^[0-9]+$)/);
 var forumURI = window.location.hostname + window.location.pathname;
 this.insertCode = function(obj) {
  if (!this.canInsert()) 
   return;
  var buttonGroup = this.getButtonGroup(); 
  var txtarea = buttonGroup.getTextArea();
  var selectionRange = txtarea.getSelection().trim();
 
  var insert_link = (regExpURI.test( selectionRange ))?window.prompt(lang["bbcode_link_url"], selectionRange):window.prompt(lang["bbcode_link_url"],"http://");
 
  if (!insert_link || insert_link == '' || insert_link == "http://") 
   return;
 
  var msgQuery = insert_link.indexOf(forumURI) > 0 ? regExpFID.exec(insert_link) : regExpINT.exec(insert_link); 
  if (insert_link.indexOf("mode=page") < 0 && insert_link.indexOf("mode=contact") < 0 && msgQuery != null) {
   link_bb_code = "msg";
   insert_link = msgQuery[1];
  }
  else
   link_bb_code = "link";
 
  if (selectionRange == '' || regExpURI.test( selectionRange )) 
   selectionRange = window.prompt(lang["bbcode_link_text"], "");
  if (selectionRange != null) {
   if(selectionRange != '')
    txtarea.insertTextRange( "["+link_bb_code+"=" + insert_link + "]" + selectionRange + "[/"+link_bb_code+"]" );
   else
    txtarea.insertTextRange( "["+link_bb_code+"]" + insert_link + "[/"+link_bb_code+"]" );
  }
 };
}

Schöne Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences


Complete thread:

 RSS Feed of thread