| rev | 
   line source | 
| 
bsw/jbe@1309
 | 
     1 function ui.field.wysihtml(args)
 | 
| 
bsw/jbe@1309
 | 
     2   
 | 
| 
bsw/jbe@1309
 | 
     3   local toolbar = {
 | 
| 
bsw@1845
 | 
     4     { command = "formatBlock", command_blank = "true", icon = "view_headline" },
 | 
| 
bsw/jbe@1309
 | 
     5     { command = "formatBlock", command_value = "h1", icon = "title", head_level = "1" },
 | 
| 
bsw/jbe@1309
 | 
     6     { command = "formatBlock", command_value = "h2", icon = "title", head_level = "2" },
 | 
| 
bsw/jbe@1309
 | 
     7     { command = "formatBlock", command_value = "h3", icon = "title", head_level = "3" },
 | 
| 
bsw@1845
 | 
     8     { command = "formatBlock", command_value = "pre", icon = "code" },
 | 
| 
bsw@1845
 | 
     9     { },
 | 
| 
bsw@1845
 | 
    10     { command = "bold", title ="CTRL+B", icon = "format_bold" },
 | 
| 
bsw@1845
 | 
    11     { command = "italic", title ="CTRL+I", icon = "format_italic" },
 | 
| 
bsw@1845
 | 
    12     { },
 | 
| 
bsw/jbe@1309
 | 
    13     { command = "insertUnorderedList", icon = "format_list_bulleted" },
 | 
| 
bsw/jbe@1309
 | 
    14     { command = "insertOrderedList", icon = "format_list_numbered" },
 | 
| 
bsw@1845
 | 
    15     { },
 | 
| 
bsw/jbe@1309
 | 
    16     { command = "outdentList", icon = "format_indent_decrease" },
 | 
| 
bsw/jbe@1309
 | 
    17     { command = "indentList", icon = "format_indent_increase" },
 | 
| 
bsw@1845
 | 
    18     { },
 | 
| 
bsw@1845
 | 
    19     { command = "insertBlockQuote", icon = "format_quote" },
 | 
| 
bsw@1845
 | 
    20     { },
 | 
| 
bsw@1845
 | 
    21     { command = "createLink", icon = "insert_link" },
 | 
| 
bsw@1845
 | 
    22     { command = "removeLink", icon = "link_off" },
 | 
| 
bsw@1845
 | 
    23     { },
 | 
| 
bsw/jbe@1309
 | 
    24     { command = "undo", icon = "undo" },
 | 
| 
bsw/jbe@1309
 | 
    25     { command = "redo", icon = "redo" }
 | 
| 
bsw/jbe@1309
 | 
    26   }
 | 
| 
bsw/jbe@1309
 | 
    27 
 | 
| 
bsw/jbe@1309
 | 
    28   slot.put([[
 | 
| 
bsw/jbe@1309
 | 
    29     <style>
 | 
| 
bsw/jbe@1309
 | 
    30       #wysihtml-html-button {
 | 
| 
bsw/jbe@1309
 | 
    31         padding: 2px;
 | 
| 
bsw/jbe@1309
 | 
    32         vertical-align: bottom;
 | 
| 
bsw/jbe@1309
 | 
    33       }
 | 
| 
bsw/jbe@1309
 | 
    34       #wysihtml-html-button.wysihtml-action-active {
 | 
| 
bsw/jbe@1309
 | 
    35         color: #fff;
 | 
| 
bsw/jbe@1309
 | 
    36         background: #000;
 | 
| 
bsw/jbe@1309
 | 
    37       }
 | 
| 
bsw/jbe@1309
 | 
    38     </style>
 | 
| 
bsw/jbe@1309
 | 
    39   ]])
 | 
| 
bsw/jbe@1309
 | 
    40   
 | 
| 
bsw/jbe@1309
 | 
    41   ui.container{ attr = { id = "toolbar", class = "toolbar", style = "display: none;" }, content = function()
 | 
| 
bsw/jbe@1309
 | 
    42     for i, t in ipairs(toolbar) do
 | 
| 
bsw@1845
 | 
    43       if t.command then
 | 
| 
bsw@1845
 | 
    44         ui.tag{ tag = "a", attr = {
 | 
| 
bsw@1845
 | 
    45           class = "mdl-button mdl-button--raised",
 | 
| 
bsw@1845
 | 
    46           ["data-wysihtml-command"] = t.command,
 | 
| 
bsw@1845
 | 
    47           ["data-wysihtml-command-value"] = t.command_value,
 | 
| 
bsw@1845
 | 
    48           ["data-wysihtml-command-blank-value"] = t.command_blank,
 | 
| 
bsw@1845
 | 
    49           title = t.shortcut
 | 
| 
bsw@1845
 | 
    50         }, content = function()
 | 
| 
bsw@1845
 | 
    51           ui.tag{ tag = "i", attr = { class = "material-icons" }, content = t.icon }
 | 
| 
bsw@1845
 | 
    52           if t.head_level then
 | 
| 
bsw@1845
 | 
    53             ui.tag{ attr = { class = "head_level" }, content = t.head_level }
 | 
| 
bsw@1845
 | 
    54           end
 | 
| 
bsw@1845
 | 
    55         end }
 | 
| 
bsw@1845
 | 
    56       else
 | 
| 
bsw@1845
 | 
    57         slot.put("   ")
 | 
| 
bsw@1845
 | 
    58       end
 | 
| 
bsw/jbe@1309
 | 
    59     end
 | 
| 
bsw/jbe@1309
 | 
    60     slot.put([[
 | 
| 
bsw/jbe@1309
 | 
    61       <div data-wysihtml-dialog="createLink" style="display: none;">
 | 
| 
bsw/jbe@1309
 | 
    62         <label>
 | 
| 
bsw/jbe@1309
 | 
    63           Link:
 | 
| 
bsw/jbe@1309
 | 
    64           <input data-wysihtml-dialog-field="href" value="http://">
 | 
| 
bsw/jbe@1309
 | 
    65         </label>
 | 
| 
bsw/jbe@1309
 | 
    66         <a data-wysihtml-dialog-action="save">OK</a> <a data-wysihtml-dialog-action="cancel">Cancel</a>
 | 
| 
bsw/jbe@1309
 | 
    67       </div>
 | 
| 
bsw@1502
 | 
    68 
 | 
| 
bsw@1502
 | 
    69       <div data-wysihtml-dialog="insertImage" style="display: none;">
 | 
| 
bsw@1502
 | 
    70         <label>
 | 
| 
bsw@1502
 | 
    71           Image:
 | 
| 
bsw@1502
 | 
    72           <input data-wysihtml-dialog-field="src" value="http://">
 | 
| 
bsw@1502
 | 
    73         </label>
 | 
| 
bsw@1502
 | 
    74         <label>
 | 
| 
bsw@1502
 | 
    75           Align:
 | 
| 
bsw@1502
 | 
    76           <select data-wysihtml-dialog-field="className">
 | 
| 
bsw@1502
 | 
    77             <option value="">default</option>
 | 
| 
bsw@1502
 | 
    78             <option value="wysiwyg-float-left">left</option>
 | 
| 
bsw@1502
 | 
    79             <option value="wysiwyg-float-right">right</option>
 | 
| 
bsw@1502
 | 
    80           </select>
 | 
| 
bsw@1502
 | 
    81         </label>
 | 
| 
bsw@1502
 | 
    82         <a data-wysihtml-dialog-action="save">OK</a> <a data-wysihtml-dialog-action="cancel">Cancel</a>
 | 
| 
bsw@1502
 | 
    83       </div>
 | 
| 
bsw@1502
 | 
    84 
 | 
| 
bsw/jbe@1309
 | 
    85     ]])
 | 
| 
bsw/jbe@1309
 | 
    86     slot.put([[      <a id="wysihtml-html-button" data-wysihtml-action="change_view">]] .. _"expert editor (HTML)" .. [[</a> ]])
 | 
| 
bsw/jbe@1309
 | 
    87   end }
 | 
| 
bsw/jbe@1309
 | 
    88   
 | 
| 
bsw/jbe@1309
 | 
    89   ui.field.text(args)
 | 
| 
bsw/jbe@1309
 | 
    90 
 | 
| 
bsw@1847
 | 
    91   ui.tag{ tag = "script", attr = { src = request.get_absolute_baseurl() .. "static/wysihtml/wysihtml.js?version=1" }, content = "" }
 | 
| 
bsw@1847
 | 
    92   ui.tag{ tag = "script", attr = { src = request.get_absolute_baseurl() .. "static/wysihtml/wysihtml.all-commands.js?version=1" }, content = "" }
 | 
| 
bsw@1847
 | 
    93   ui.tag{ tag = "script", attr = { src = request.get_absolute_baseurl() .. "static/wysihtml/wysihtml.toolbar.js?version=1" }, content = "" }
 | 
| 
bsw@1847
 | 
    94   ui.tag{ tag = "script", attr = { src = request.get_absolute_baseurl() .. "static/wysihtml/wysihtml_liquidfeedback_rules.js?version=2" }, content = "" }
 | 
| 
bsw/jbe@1309
 | 
    95   ui.script{ script = [[
 | 
| 
bsw/jbe@1309
 | 
    96     function initEditor() {
 | 
| 
bsw/jbe@1309
 | 
    97       var editor = new wysihtml.Editor("]] .. args.attr.id .. [[", {
 | 
| 
bsw/jbe@1309
 | 
    98         toolbar:       "toolbar",
 | 
| 
bsw/jbe@1309
 | 
    99         parserRules:   wysihtmlParserRules,
 | 
| 
bsw@1845
 | 
   100         useLineBreaks: true,
 | 
| 
bsw@1847
 | 
   101         stylesheets: "]] .. request.get_absolute_baseurl() .. [[static/lf4.css?version=3",
 | 
| 
bsw@1845
 | 
   102         name: "draft"
 | 
| 
bsw/jbe@1309
 | 
   103       });
 | 
| 
bsw/jbe@1309
 | 
   104     }
 | 
| 
bsw/jbe@1309
 | 
   105     if(window.addEventListener){
 | 
| 
bsw/jbe@1309
 | 
   106       window.addEventListener('load', initEditor, false);
 | 
| 
bsw/jbe@1309
 | 
   107     } else {
 | 
| 
bsw/jbe@1309
 | 
   108       window.attachEvent('onload', initEditor);
 | 
| 
bsw/jbe@1309
 | 
   109     }
 | 
| 
bsw/jbe@1309
 | 
   110   ]] }
 | 
| 
bsw/jbe@1309
 | 
   111 
 | 
| 
bsw/jbe@1309
 | 
   112 end
 | 
| 
bsw/jbe@1309
 | 
   113       
 |