Advertisement
helmet91

bbEditor

Jul 22nd, 2014
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
jQuery 2.73 KB | None | 0 0
  1. $(document).ready(function(){
  2.     var textarea = $(".bbEditor");
  3.     var selected = false;
  4.        
  5.     var bButton = {title: "Bold", iconNum: 0, action: function(){insertTags("b");}};
  6.     var urlButton = {title: "Insert hyperlink", iconNum: 1, action: function(){showUrlDialog();}};
  7.  
  8.     function addToolbar(textarea, featureList){
  9.         $(textarea).before(createButton(bButton));
  10.         $(textarea).before(createButton(urlButton));
  11.     }
  12.        
  13.     function createButton(buttonData){
  14.         return $("<button/>", {
  15.             title: buttonData.title,
  16.             type: "button"
  17.         }).click(buttonData.action);
  18.     }
  19.  
  20.     function showUrlDialog(){
  21.         if (selected){
  22.             var selection = textarea.selection("get");
  23.         } else {
  24.             var selection = "";
  25.         }
  26.            
  27.         var dialog = $("<div/>", {
  28.             "class": "dialog",
  29.             html: '<form><label for="dialog_url_link">URL</label><input id="dialog_url_link" type="text" value="" /><br /><label for="dialog_url_text">Text</label><input id="dialog_url_text" type="text" value="' + selection + '" /></form>'
  30.         });
  31.  
  32.         dialog.dialog({
  33.             modal: true,
  34.             title: "Insert hyperlink",
  35.             buttons: {
  36.                 "Insert": function(){
  37.                     var urlText = $("#dialog_url_text").val();
  38.                     var urlLink = $("#dialog_url_link").val();
  39.  
  40.                     if (urlText.length){
  41.                         insertTagsWithParams("url", [urlLink], urlText);
  42.                     }
  43.                     else{
  44.                         insertTags("url", urlLink);
  45.                     }
  46.        
  47.                     $(this).dialog("close");
  48.                 },
  49.                 "Cancel": function(){
  50.                     $(this).dialog("close");
  51.                 }
  52.             }
  53.         });
  54.     }
  55.  
  56.     function insertTags(tag, text){
  57.         var openTag = "[" + tag + "]";
  58.         var closeTag = "[/" + tag + "]";
  59.            
  60.         _insertTag(openTag, closeTag, text);
  61.     }
  62.        
  63.     function insertTagsWithParams(tag, params, text)
  64.     {
  65.         var joined = params.join(";");
  66.            
  67.         var openTag = "[" + tag + "=" + joined + "]";
  68.         var closeTag = "[/" + tag + "]";
  69.            
  70.         _insertTag(openTag, closeTag, text);
  71.     }
  72.        
  73.     function _insertTag(openTag, closeTag, text)
  74.     {
  75.         if (text === undefined){
  76.             text = "";
  77.         }
  78.            
  79.         if (selected)
  80.         {
  81.             var textToInsert = openTag + textarea.selection("get") + closeTag;
  82.                
  83.             textarea.selection("replace", {
  84.                 text: textToInsert,
  85.                 caret: "end"
  86.             });
  87.                
  88.             var caretPosition =  textarea.selection("getPos");
  89.             var caretTargetPosition = caretPosition.end - closeTag.length;
  90.         }
  91.         else
  92.         {
  93.             textarea.selection("insert", {
  94.                 text: openTag + text + closeTag,
  95.                 mode: "after",
  96.                 caret: "end"
  97.             });
  98.                
  99.             var caretPosition = textarea.selection("getPos");
  100.             var caretTargetPosition = caretPosition.start + openTag.length;
  101.         }
  102.            
  103.         textarea.selection("setPos", {
  104.             start: caretTargetPosition,
  105.             end: caretTargetPosition
  106.         });
  107.            
  108.         selected = false;
  109.     }
  110.  
  111.     textarea.select(function(){
  112.         selected = true;
  113.     });
  114.  
  115.     addToolbar(textarea, []);
  116. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement