044ecf2157
This isn't ideal, but it mostly works, and keeps the dialogs vertically (if not horizontally) moveable. It would be nice if the dialogs automatically flowed to the available width. This could be turned off in standalone note windows above a certain width.
89 lines
3.5 KiB
HTML
89 lines
3.5 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link type="text/css" rel="stylesheet" href="css/note-ui.css"/>
|
|
<script type="text/javascript" src="tinymce.js"></script>
|
|
<script type="text/javascript" src="locale.js"></script>
|
|
<script type="text/javascript">
|
|
tinymce.init({
|
|
body_id: "zotero-tinymce-note",
|
|
content_css: "css/note-content.css",
|
|
entities: "160,nbsp",
|
|
|
|
browser_spellcheck: true,
|
|
convert_urls: false,
|
|
fix_list_elements: true,
|
|
|
|
plugins: "autolink,code,contextmenu,directionality,link,lists,paste,searchreplace",
|
|
|
|
toolbar1: "bold italic underline strikethrough | subscript superscript | forecolor backcolor | blockquote link | %DIR% | removeformat",
|
|
toolbar2: "formatselect | alignleft aligncenter alignright | bullist numlist outdent indent | searchreplace",
|
|
toolbar_items_size: 'small',
|
|
menubar: false,
|
|
resize: false,
|
|
statusbar: false,
|
|
|
|
contextmenu: "link | code",
|
|
|
|
link_context_toolbar: true,
|
|
link_assume_external_targets: true,
|
|
|
|
target_list: false,
|
|
|
|
setup: function (ed) {
|
|
setLocale(ed);
|
|
|
|
// Set text direction
|
|
var dir = window.location.href.match(/dir=(ltr|rtl)/)[1];
|
|
ed.settings.directionality = dir;
|
|
// Include button for opposite direction, to function as a toggle
|
|
ed.settings.toolbar1 = ed.settings.toolbar1.replace(
|
|
"%DIR%",
|
|
dir.split("").reverse().join("")
|
|
);
|
|
},
|
|
|
|
init_instance_callback: function (ed) {
|
|
zoteroInit(ed);
|
|
|
|
['Change', 'KeyDown', 'KeyPress', 'Undo', 'Redo'].forEach(eventName =>
|
|
ed.on(eventName, event => zoteroHandleEvent(event))
|
|
);
|
|
|
|
["Cut", "Copy", "Paste"].forEach(function (command) {
|
|
let cmd = command;
|
|
ed.addCommand(command, function (ui, value) {
|
|
zoteroExecCommand(ed.getDoc(), cmd, ui, value);
|
|
});
|
|
});
|
|
},
|
|
|
|
// More restrictive version of default set, with JS/etc. removed
|
|
valid_elements: "@[id|class|style|title|dir<ltr?rtl|lang|xml::lang],"
|
|
+ "a[rel|rev|charset|hreflang|tabindex|accesskey|type|"
|
|
+ "name|href|target|title|class],strong/b,em/i,strike,u,"
|
|
+ "#p,-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|"
|
|
+ "src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,"
|
|
+ "-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|"
|
|
+ "height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|"
|
|
+ "height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,"
|
|
+ "#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor"
|
|
+ "|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,"
|
|
+ "-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face"
|
|
+ "|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],"
|
|
+ "object[classid|width|height|codebase|type],param[name|value|_value],"
|
|
+ "map[name],area[shape|coords|href|alt|target],bdo,"
|
|
+ "button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|"
|
|
+ "valign|width],dfn,fieldset,"
|
|
+ "kbd,label[for],legend,optgroup[label|disabled],option[disabled|label|selected|value],"
|
|
+ "q[cite],samp,select[disabled|multiple|name|size],small,"
|
|
+ "textarea[cols|rows|disabled|name|readonly],tt,var,big"
|
|
});
|
|
tinymce.execCommand("mceAddEditor", true, "tinymce");
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="tinymce"></div>
|
|
</body>
|
|
</html>
|