From fb8a0eb24f0b4400aff4b6ebb1ac3c361249608b Mon Sep 17 00:00:00 2001 From: Sanj Date: Tue, 8 Nov 2011 09:27:09 +0530 Subject: [PATCH] markitup added --- itf/bestpractices/admin.py | 2 + itf/settings.py | 6 + itf/static/images/noel/Download-Icon.gif | Bin 0 -> 1234 bytes itf/static/markitup/jquery.markitup.js | 553 ++++++++++++++++++ itf/static/markitup/preview.css | 5 + .../markitup/sets/default/images/bold.png | Bin 0 -> 304 bytes .../markitup/sets/default/images/clean.png | Bin 0 -> 667 bytes .../markitup/sets/default/images/image.png | Bin 0 -> 516 bytes .../markitup/sets/default/images/italic.png | Bin 0 -> 223 bytes .../markitup/sets/default/images/link.png | Bin 0 -> 343 bytes .../markitup/sets/default/images/picture.png | Bin 0 -> 606 bytes .../markitup/sets/default/images/preview.png | Bin 0 -> 537 bytes .../markitup/sets/default/images/stroke.png | Bin 0 -> 269 bytes itf/static/markitup/sets/default/set.js | 27 + itf/static/markitup/sets/default/style.css | 27 + .../markitup/sets/markdown/images/bold.png | Bin 0 -> 304 bytes .../markitup/sets/markdown/images/code.png | Bin 0 -> 859 bytes .../markitup/sets/markdown/images/h1.png | Bin 0 -> 276 bytes .../markitup/sets/markdown/images/h2.png | Bin 0 -> 304 bytes .../markitup/sets/markdown/images/h3.png | Bin 0 -> 306 bytes .../markitup/sets/markdown/images/h4.png | Bin 0 -> 293 bytes .../markitup/sets/markdown/images/h5.png | Bin 0 -> 304 bytes .../markitup/sets/markdown/images/h6.png | Bin 0 -> 310 bytes .../markitup/sets/markdown/images/italic.png | Bin 0 -> 223 bytes .../markitup/sets/markdown/images/link.png | Bin 0 -> 343 bytes .../sets/markdown/images/list-bullet.png | Bin 0 -> 344 bytes .../sets/markdown/images/list-numeric.png | Bin 0 -> 357 bytes .../markitup/sets/markdown/images/picture.png | Bin 0 -> 606 bytes .../markitup/sets/markdown/images/preview.png | Bin 0 -> 537 bytes .../markitup/sets/markdown/images/quotes.png | Bin 0 -> 743 bytes itf/static/markitup/sets/markdown/readme.txt | 11 + itf/static/markitup/sets/markdown/set.js | 52 ++ itf/static/markitup/sets/markdown/style.css | 54 ++ .../markitup/sets/textile/images/bold.png | Bin 0 -> 304 bytes .../markitup/sets/textile/images/code.png | Bin 0 -> 859 bytes .../markitup/sets/textile/images/h1.png | Bin 0 -> 276 bytes .../markitup/sets/textile/images/h2.png | Bin 0 -> 304 bytes .../markitup/sets/textile/images/h3.png | Bin 0 -> 306 bytes .../markitup/sets/textile/images/h4.png | Bin 0 -> 293 bytes .../markitup/sets/textile/images/h5.png | Bin 0 -> 304 bytes .../markitup/sets/textile/images/h6.png | Bin 0 -> 310 bytes .../markitup/sets/textile/images/italic.png | Bin 0 -> 223 bytes .../markitup/sets/textile/images/link.png | Bin 0 -> 343 bytes .../sets/textile/images/list-bullet.png | Bin 0 -> 344 bytes .../sets/textile/images/list-numeric.png | Bin 0 -> 357 bytes .../sets/textile/images/paragraph.png | Bin 0 -> 361 bytes .../markitup/sets/textile/images/picture.png | Bin 0 -> 606 bytes .../markitup/sets/textile/images/preview.png | Bin 0 -> 537 bytes .../markitup/sets/textile/images/quotes.png | Bin 0 -> 743 bytes .../markitup/sets/textile/images/stroke.png | Bin 0 -> 269 bytes itf/static/markitup/sets/textile/readme.txt | 11 + itf/static/markitup/sets/textile/set.js | 40 ++ itf/static/markitup/sets/textile/style.css | 60 ++ .../skins/markitup/images/bg-container.png | Bin 0 -> 28455 bytes .../markitup/images/bg-editor-bbcode.png | Bin 0 -> 1642 bytes .../markitup/images/bg-editor-dotclear.png | Bin 0 -> 1682 bytes .../skins/markitup/images/bg-editor-html.png | Bin 0 -> 1534 bytes .../skins/markitup/images/bg-editor-json.png | Bin 0 -> 1529 bytes .../markitup/images/bg-editor-markdown.png | Bin 0 -> 1783 bytes .../markitup/images/bg-editor-textile.png | Bin 0 -> 1659 bytes .../skins/markitup/images/bg-editor-wiki.png | Bin 0 -> 1488 bytes .../skins/markitup/images/bg-editor-xml.png | Bin 0 -> 1495 bytes .../skins/markitup/images/bg-editor.png | Bin 0 -> 1745 bytes .../markitup/skins/markitup/images/handle.png | Bin 0 -> 258 bytes .../markitup/skins/markitup/images/menu.png | Bin 0 -> 27151 bytes .../skins/markitup/images/submenu.png | Bin 0 -> 240 bytes itf/static/markitup/skins/markitup/style.css | 148 +++++ .../markitup/skins/simple/images/handle.png | Bin 0 -> 258 bytes .../markitup/skins/simple/images/menu.png | Bin 0 -> 27151 bytes .../markitup/skins/simple/images/submenu.png | Bin 0 -> 240 bytes itf/static/markitup/skins/simple/style.css | 118 ++++ itf/static/markitup/templates/preview.css | 5 + itf/static/markitup/templates/preview.html | 11 + itf/urls.py | 2 +- 74 files changed, 1131 insertions(+), 1 deletion(-) create mode 100644 itf/static/images/noel/Download-Icon.gif create mode 100644 itf/static/markitup/jquery.markitup.js create mode 100644 itf/static/markitup/preview.css create mode 100644 itf/static/markitup/sets/default/images/bold.png create mode 100644 itf/static/markitup/sets/default/images/clean.png create mode 100644 itf/static/markitup/sets/default/images/image.png create mode 100644 itf/static/markitup/sets/default/images/italic.png create mode 100644 itf/static/markitup/sets/default/images/link.png create mode 100644 itf/static/markitup/sets/default/images/picture.png create mode 100644 itf/static/markitup/sets/default/images/preview.png create mode 100644 itf/static/markitup/sets/default/images/stroke.png create mode 100644 itf/static/markitup/sets/default/set.js create mode 100644 itf/static/markitup/sets/default/style.css create mode 100644 itf/static/markitup/sets/markdown/images/bold.png create mode 100644 itf/static/markitup/sets/markdown/images/code.png create mode 100644 itf/static/markitup/sets/markdown/images/h1.png create mode 100644 itf/static/markitup/sets/markdown/images/h2.png create mode 100644 itf/static/markitup/sets/markdown/images/h3.png create mode 100644 itf/static/markitup/sets/markdown/images/h4.png create mode 100644 itf/static/markitup/sets/markdown/images/h5.png create mode 100644 itf/static/markitup/sets/markdown/images/h6.png create mode 100644 itf/static/markitup/sets/markdown/images/italic.png create mode 100644 itf/static/markitup/sets/markdown/images/link.png create mode 100644 itf/static/markitup/sets/markdown/images/list-bullet.png create mode 100644 itf/static/markitup/sets/markdown/images/list-numeric.png create mode 100644 itf/static/markitup/sets/markdown/images/picture.png create mode 100644 itf/static/markitup/sets/markdown/images/preview.png create mode 100644 itf/static/markitup/sets/markdown/images/quotes.png create mode 100644 itf/static/markitup/sets/markdown/readme.txt create mode 100644 itf/static/markitup/sets/markdown/set.js create mode 100644 itf/static/markitup/sets/markdown/style.css create mode 100644 itf/static/markitup/sets/textile/images/bold.png create mode 100644 itf/static/markitup/sets/textile/images/code.png create mode 100644 itf/static/markitup/sets/textile/images/h1.png create mode 100644 itf/static/markitup/sets/textile/images/h2.png create mode 100644 itf/static/markitup/sets/textile/images/h3.png create mode 100644 itf/static/markitup/sets/textile/images/h4.png create mode 100644 itf/static/markitup/sets/textile/images/h5.png create mode 100644 itf/static/markitup/sets/textile/images/h6.png create mode 100644 itf/static/markitup/sets/textile/images/italic.png create mode 100644 itf/static/markitup/sets/textile/images/link.png create mode 100644 itf/static/markitup/sets/textile/images/list-bullet.png create mode 100644 itf/static/markitup/sets/textile/images/list-numeric.png create mode 100644 itf/static/markitup/sets/textile/images/paragraph.png create mode 100644 itf/static/markitup/sets/textile/images/picture.png create mode 100644 itf/static/markitup/sets/textile/images/preview.png create mode 100644 itf/static/markitup/sets/textile/images/quotes.png create mode 100644 itf/static/markitup/sets/textile/images/stroke.png create mode 100644 itf/static/markitup/sets/textile/readme.txt create mode 100644 itf/static/markitup/sets/textile/set.js create mode 100644 itf/static/markitup/sets/textile/style.css create mode 100644 itf/static/markitup/skins/markitup/images/bg-container.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-bbcode.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-dotclear.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-html.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-json.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-markdown.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-textile.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-wiki.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor-xml.png create mode 100644 itf/static/markitup/skins/markitup/images/bg-editor.png create mode 100644 itf/static/markitup/skins/markitup/images/handle.png create mode 100644 itf/static/markitup/skins/markitup/images/menu.png create mode 100644 itf/static/markitup/skins/markitup/images/submenu.png create mode 100644 itf/static/markitup/skins/markitup/style.css create mode 100644 itf/static/markitup/skins/simple/images/handle.png create mode 100644 itf/static/markitup/skins/simple/images/menu.png create mode 100644 itf/static/markitup/skins/simple/images/submenu.png create mode 100644 itf/static/markitup/skins/simple/style.css create mode 100644 itf/static/markitup/templates/preview.css create mode 100644 itf/static/markitup/templates/preview.html diff --git a/itf/bestpractices/admin.py b/itf/bestpractices/admin.py index d85ce58..602270f 100755 --- a/itf/bestpractices/admin.py +++ b/itf/bestpractices/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin from models import * +from markitup.widgets import MarkItUpWidget class ImageInline(admin.StackedInline): model = BestPracticeImage @@ -16,6 +17,7 @@ class LinkInline(admin.StackedInline): class BestPracticeAdmin(admin.ModelAdmin): inlines = [ImageInline, LinkInline, StoryInline] list_filter = ['category'] + formfield_overrides = {models.TextField: {'widget': MarkItUpWidget}} admin.site.register(BestPractice, BestPracticeAdmin) diff --git a/itf/settings.py b/itf/settings.py index d29736e..d005f3e 100755 --- a/itf/settings.py +++ b/itf/settings.py @@ -2,6 +2,7 @@ import os from os.path import join +# import markdown SITENAME = "India Theatre Forum" DEBUG = True @@ -76,6 +77,8 @@ LANGUAGES = ( DEFAULT_LANGUAGE = 1 +MARKITUP_PREVIEW_FILTER = ('markdown.markdown', {}) + SITE_ID = 1 # If you set this to False, Django will make some optimizations so as not @@ -99,7 +102,9 @@ TEMPLATE_CONTEXT_PROCESSORS = ( # trailing slash if there is a path component (optional in other cases). # Examples: "http://media.lawrence.com", "http://example.com/media/" MEDIA_URL = '/static/' +MARKITUP_SET = MEDIA_URL + 'markitup/sets/markdown/' +STATIC_URL = MEDIA_URL #FIXME: here due to weirdo code in django_markdown # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a # trailing slash. # Examples: "http://foo.com/media/", "/media/". @@ -170,6 +175,7 @@ INSTALLED_APPS = ( 'ckeditor', 'fccv', 'haystack', + 'markitup', ) ACCOUNT_ACTIVATION_DAYS = 30 diff --git a/itf/static/images/noel/Download-Icon.gif b/itf/static/images/noel/Download-Icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b12aea5e985f1bde1cb7c2e1e85f76999bfc80a GIT binary patch literal 1234 zcmZ?wbhEHblw}ZM*v!xH{n6a-Pgj3GB=-HB=l2r^-#OjnePevcF#p`FZxN)4{^3rViZPPR-@vbR&Psj#ZZEyztRNmQuF&B-gas<2f` zOvz75wF0t1!um=IU?nBlwn~m52?day&iO^D3Z{Any2%D+1`1||dWOa(=H}))3PuKo z2Koj@`i4fjhUQkrMpgy}3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0uU}qXu2*iXmtT~w zZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2NtnTP2`NAzsKW zfE$}vtOxdvUUGh}ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+Zo zqU2Pda%GTJ1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s>P;d@5Rq#zr&ddYx!Rmc|tvvIJ zOA_;vQ$1a5m4GJbWoD*Wxtbd|nVVa>85o$m8XCG9I=Y!UyI2^TIh&Xmy16=}c zPQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|mjQ{`r{qy_R&mZ5vef{$J)5j0* z-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po(!~qs&z(JU`qar2$B!L7a`@1} z1N-;w-Lrew&K=vgZQZhY)5ZeMTG_VdAT{+S(zE>X{jm6Nr?&Z zaj`McQIQehVWAmo_ zrKzE=rmCW>q^KY-Co3Z@B`F~;CMqH&FX#K^#)_>%=l@-yf# z00F3cVPHxAaMH4I_YbL4)>|dZDpW*Ul2*=JVZ2JETgl+$mcF2HFZ%~fO#y)cqCyr| z7DQO97;-+-yWnxDY)b2btp|&^T6~x{94_IqcW-`Z=znK!bAn@&{hRxf{+>J^@T;M| Np(d`i%~X)V8UWYh&K&>% literal 0 HcmV?d00001 diff --git a/itf/static/markitup/jquery.markitup.js b/itf/static/markitup/jquery.markitup.js new file mode 100644 index 0000000..1bdf319 --- /dev/null +++ b/itf/static/markitup/jquery.markitup.js @@ -0,0 +1,553 @@ +// ---------------------------------------------------------------------------- +// markItUp! Universal MarkUp Engine, JQuery plugin +// v 1.1.5 +// Dual licensed under the MIT and GPL licenses. +// ---------------------------------------------------------------------------- +// Copyright (C) 2007-2008 Jay Salvat +// http://markitup.jaysalvat.com/ +// ---------------------------------------------------------------------------- +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// ---------------------------------------------------------------------------- +(function($) { + $.fn.markItUp = function(settings, extraSettings) { + var options, ctrlKey, shiftKey, altKey; + ctrlKey = shiftKey = altKey = false; + + options = { id: '', + nameSpace: '', + root: '', + previewInWindow: '', // 'width=800, height=600, resizable=yes, scrollbars=yes' + previewAutoRefresh: true, + previewPosition: 'after', + previewTemplatePath: '~/templates/preview.html', + previewParserPath: '', + previewParserVar: 'data', + resizeHandle: true, + beforeInsert: '', + afterInsert: '', + onEnter: {}, + onShiftEnter: {}, + onCtrlEnter: {}, + onTab: {}, + markupSet: [ { /* set */ } ] + }; + $.extend(options, settings, extraSettings); + + // compute markItUp! path + if (!options.root) { + $('script').each(function(a, tag) { + miuScript = $(tag).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.js$/); + if (miuScript !== null) { + options.root = miuScript[1]; + } + }); + } + + return this.each(function() { + var $$, textarea, levels, scrollPosition, caretPosition, caretOffset, + clicked, hash, header, footer, previewWindow, template, iFrame, abort; + $$ = $(this); + textarea = this; + levels = []; + abort = false; + scrollPosition = caretPosition = 0; + caretOffset = -1; + + options.previewParserPath = localize(options.previewParserPath); + options.previewTemplatePath = localize(options.previewTemplatePath); + + // apply the computed path to ~/ + function localize(data, inText) { + if (inText) { + return data.replace(/("|')~\//g, "$1"+options.root); + } + return data.replace(/^~\//, options.root); + } + + // init and build editor + function init() { + id = ''; nameSpace = ''; + if (options.id) { + id = 'id="'+options.id+'"'; + } else if ($$.attr("id")) { + id = 'id="markItUp'+($$.attr("id").substr(0, 1).toUpperCase())+($$.attr("id").substr(1))+'"'; + + } + if (options.nameSpace) { + nameSpace = 'class="'+options.nameSpace+'"'; + } + $$.wrap('
'); + $$.wrap('
'); + $$.wrap('
'); + $$.addClass("markItUpEditor"); + + // add the header before the textarea + header = $('
').insertBefore($$); + $(dropMenus(options.markupSet)).appendTo(header); + + // add the footer after the textarea + footer = $('
').insertAfter($$); + + // add the resize handle after textarea + if (options.resizeHandle === true && $.browser.safari !== true) { + resizeHandle = $('
') + .insertAfter($$) + .bind("mousedown", function(e) { + var h = $$.height(), y = e.clientY, mouseMove, mouseUp; + mouseMove = function(e) { + $$.css("height", Math.max(20, e.clientY+h-y)+"px"); + return false; + }; + mouseUp = function(e) { + $("html").unbind("mousemove", mouseMove).unbind("mouseup", mouseUp); + return false; + }; + $("html").bind("mousemove", mouseMove).bind("mouseup", mouseUp); + }); + footer.append(resizeHandle); + } + + // listen key events + $$.keydown(keyPressed).keyup(keyPressed); + + // bind an event to catch external calls + $$.bind("insertion", function(e, settings) { + if (settings.target !== false) { + get(); + } + if (textarea === $.markItUp.focused) { + markup(settings); + } + }); + + // remember the last focus + $$.focus(function() { + $.markItUp.focused = this; + }); + } + + // recursively build header with dropMenus from markupset + function dropMenus(markupSet) { + var ul = $('
    '), i = 0; + $('li:hover > ul', ul).css('display', 'block'); + $.each(markupSet, function() { + var button = this, t = '', title, li, j; + title = (button.key) ? (button.name||'')+' [Ctrl+'+button.key+']' : (button.name||''); + key = (button.key) ? 'accesskey="'+button.key+'"' : ''; + if (button.separator) { + li = $('
  • '+(button.separator||'')+'
  • ').appendTo(ul); + } else { + i++; + for (j = levels.length -1; j >= 0; j--) { + t += levels[j]+"-"; + } + li = $('
  • '+(button.name||'')+'
  • ') + .bind("contextmenu", function() { // prevent contextmenu on mac and allow ctrl+click + return false; + }).click(function() { + return false; + }).mouseup(function() { + if (button.call) { + eval(button.call)(); + } + markup(button); + return false; + }).hover(function() { + $('> ul', this).show(); + $(document).one('click', function() { // close dropmenu if click outside + $('ul ul', header).hide(); + } + ); + }, function() { + $('> ul', this).hide(); + } + ).appendTo(ul); + if (button.dropMenu) { + levels.push(i); + $(li).addClass('markItUpDropMenu').append(dropMenus(button.dropMenu)); + } + } + }); + levels.pop(); + return ul; + } + + // markItUp! markups + function magicMarkups(string) { + if (string) { + string = string.toString(); + string = string.replace(/\(\!\(([\s\S]*?)\)\!\)/g, + function(x, a) { + var b = a.split('|!|'); + if (altKey === true) { + return (b[1] !== undefined) ? b[1] : b[0]; + } else { + return (b[1] === undefined) ? "" : b[0]; + } + } + ); + // [![prompt]!], [![prompt:!:value]!] + string = string.replace(/\[\!\[([\s\S]*?)\]\!\]/g, + function(x, a) { + var b = a.split(':!:'); + if (abort === true) { + return false; + } + value = prompt(b[0], (b[1]) ? b[1] : ''); + if (value === null) { + abort = true; + } + return value; + } + ); + return string; + } + return ""; + } + + // prepare action + function prepare(action) { + if ($.isFunction(action)) { + action = action(hash); + } + return magicMarkups(action); + } + + // build block to insert + function build(string) { + openWith = prepare(clicked.openWith); + placeHolder = prepare(clicked.placeHolder); + replaceWith = prepare(clicked.replaceWith); + closeWith = prepare(clicked.closeWith); + if (replaceWith !== "") { + block = openWith + replaceWith + closeWith; + } else if (selection === '' && placeHolder !== '') { + block = openWith + placeHolder + closeWith; + } else { + block = openWith + (string||selection) + closeWith; + } + return { block:block, + openWith:openWith, + replaceWith:replaceWith, + placeHolder:placeHolder, + closeWith:closeWith + }; + } + + // define markup to insert + function markup(button) { + var len, j, n, i; + hash = clicked = button; + get(); + + $.extend(hash, { line:"", + root:options.root, + textarea:textarea, + selection:(selection||''), + caretPosition:caretPosition, + ctrlKey:ctrlKey, + shiftKey:shiftKey, + altKey:altKey + } + ); + // callbacks before insertion + prepare(options.beforeInsert); + prepare(clicked.beforeInsert); + if (ctrlKey === true && shiftKey === true) { + prepare(clicked.beforeMultiInsert); + } + $.extend(hash, { line:1 }); + + if (ctrlKey === true && shiftKey === true) { + lines = selection.split(/\r?\n/); + for (j = 0, n = lines.length, i = 0; i < n; i++) { + if ($.trim(lines[i]) !== '') { + $.extend(hash, { line:++j, selection:lines[i] } ); + lines[i] = build(lines[i]).block; + } else { + lines[i] = ""; + } + } + string = { block:lines.join('\n')}; + start = caretPosition; + len = string.block.length + (($.browser.opera) ? n : 0); + } else if (ctrlKey === true) { + string = build(selection); + start = caretPosition + string.openWith.length; + len = string.block.length - string.openWith.length - string.closeWith.length; + len -= fixIeBug(string.block); + } else if (shiftKey === true) { + string = build(selection); + start = caretPosition; + len = string.block.length; + len -= fixIeBug(string.block); + } else { + string = build(selection); + start = caretPosition + string.block.length ; + len = 0; + start -= fixIeBug(string.block); + } + if ((selection === '' && string.replaceWith === '')) { + caretOffset += fixOperaBug(string.block); + + start = caretPosition + string.openWith.length; + len = string.block.length - string.openWith.length - string.closeWith.length; + + caretOffset = $$.val().substring(caretPosition, $$.val().length).length; + caretOffset -= fixOperaBug($$.val().substring(0, caretPosition)); + } + $.extend(hash, { caretPosition:caretPosition, scrollPosition:scrollPosition } ); + + if (string.block !== selection && abort === false) { + insert(string.block); + set(start, len); + } else { + caretOffset = -1; + } + get(); + + $.extend(hash, { line:'', selection:selection }); + + // callbacks after insertion + if (ctrlKey === true && shiftKey === true) { + prepare(clicked.afterMultiInsert); + } + prepare(clicked.afterInsert); + prepare(options.afterInsert); + + // refresh preview if opened + if (previewWindow && options.previewAutoRefresh) { + refreshPreview(); + } + + // reinit keyevent + shiftKey = altKey = ctrlKey = abort = false; + } + + // Substract linefeed in Opera + function fixOperaBug(string) { + if ($.browser.opera) { + return string.length - string.replace(/\n*/g, '').length; + } + return 0; + } + // Substract linefeed in IE + function fixIeBug(string) { + if ($.browser.msie) { + return string.length - string.replace(/\r*/g, '').length; + } + return 0; + } + + // add markup + function insert(block) { + if (document.selection) { + var newSelection = document.selection.createRange(); + newSelection.text = block; + } else { + $$.val($$.val().substring(0, caretPosition) + block + $$.val().substring(caretPosition + selection.length, $$.val().length)); + } + } + + // set a selection + function set(start, len) { + if (textarea.createTextRange){ + // quick fix to make it work on Opera 9.5 + if ($.browser.opera && $.browser.version >= 9.5 && len == 0) { + return false; + } + range = textarea.createTextRange(); + range.collapse(true); + range.moveStart('character', start); + range.moveEnd('character', len); + range.select(); + } else if (textarea.setSelectionRange ){ + textarea.setSelectionRange(start, start + len); + } + textarea.scrollTop = scrollPosition; + textarea.focus(); + } + + // get the selection + function get() { + textarea.focus(); + + scrollPosition = textarea.scrollTop; + if (document.selection) { + selection = document.selection.createRange().text; + if ($.browser.msie) { // ie + var range = document.selection.createRange(), rangeCopy = range.duplicate(); + rangeCopy.moveToElementText(textarea); + caretPosition = -1; + while(rangeCopy.inRange(range)) { // fix most of the ie bugs with linefeeds... + rangeCopy.moveStart('character'); + caretPosition ++; + } + } else { // opera + caretPosition = textarea.selectionStart; + } + } else { // gecko + caretPosition = textarea.selectionStart; + selection = $$.val().substring(caretPosition, textarea.selectionEnd); + } + return selection; + } + + // open preview window + function preview() { + if (!previewWindow || previewWindow.closed) { + if (options.previewInWindow) { + previewWindow = window.open('', 'preview', options.previewInWindow); + } else { + iFrame = $(''); + if (options.previewPosition == 'after') { + iFrame.insertAfter(footer); + } else { + iFrame.insertBefore(header); + } + previewWindow = iFrame[iFrame.length-1].contentWindow || frame[iFrame.length-1]; + } + } else if (altKey === true) { + if (iFrame) { + iFrame.remove(); + } + previewWindow.close(); + previewWindow = iFrame = false; + } + if (!options.previewAutoRefresh) { + refreshPreview(); + } + } + + // refresh Preview window + function refreshPreview() { + if (previewWindow.document) { + try { + sp = previewWindow.document.documentElement.scrollTop + } catch(e) { + sp = 0; + } + previewWindow.document.open(); + previewWindow.document.write(renderPreview()); + previewWindow.document.close(); + previewWindow.document.documentElement.scrollTop = sp; + } + if (options.previewInWindow) { + previewWindow.focus(); + } + } + + function renderPreview() { + if (options.previewParserPath !== '') { + $.ajax( { + type: 'POST', + async: false, + url: options.previewParserPath, + data: options.previewParserVar+'='+encodeURIComponent($$.val()), + success: function(data) { + phtml = localize(data, 1); + } + } ); + } else { + if (!template) { + $.ajax( { + async: false, + url: options.previewTemplatePath, + success: function(data) { + template = localize(data, 1); + } + } ); + } + phtml = template.replace(//g, $$.val()); + } + return phtml; + } + + // set keys pressed + function keyPressed(e) { + shiftKey = e.shiftKey; + altKey = e.altKey; + ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false; + + if (e.type === 'keydown') { + if (ctrlKey === true) { + li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li'); + if (li.length !== 0) { + ctrlKey = false; + li.triggerHandler('mouseup'); + return false; + } + } + if (e.keyCode === 13 || e.keyCode === 10) { // Enter key + if (ctrlKey === true) { // Enter + Ctrl + ctrlKey = false; + markup(options.onCtrlEnter); + return options.onCtrlEnter.keepDefault; + } else if (shiftKey === true) { // Enter + Shift + shiftKey = false; + markup(options.onShiftEnter); + return options.onShiftEnter.keepDefault; + } else { // only Enter + markup(options.onEnter); + return options.onEnter.keepDefault; + } + } + if (e.keyCode === 9) { // Tab key + if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob. + return false; + } + if (caretOffset !== -1) { + get(); + caretOffset = $$.val().length - caretOffset; + set(caretOffset, 0); + caretOffset = -1; + return false; + } else { + markup(options.onTab); + return options.onTab.keepDefault; + } + } + } + } + + init(); + }); + }; + + $.fn.markItUpRemove = function() { + return this.each(function() { + $$ = $(this).unbind().removeClass('markItUpEditor'); + $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$); + } + ); + }; + + $.markItUp = function(settings) { + var options = { target:false }; + $.extend(options, settings); + if (options.target) { + return $(options.target).each(function() { + $(this).focus(); + $(this).trigger('insertion', [options]); + }); + } else { + $('textarea').trigger('insertion', [options]); + } + }; +})(jQuery); diff --git a/itf/static/markitup/preview.css b/itf/static/markitup/preview.css new file mode 100644 index 0000000..ad91a87 --- /dev/null +++ b/itf/static/markitup/preview.css @@ -0,0 +1,5 @@ +/* preview style examples */ +body { + background-color:#EFEFEF; + font:70% Verdana, Arial, Helvetica, sans-serif; +} \ No newline at end of file diff --git a/itf/static/markitup/sets/default/images/bold.png b/itf/static/markitup/sets/default/images/bold.png new file mode 100644 index 0000000000000000000000000000000000000000..889ae80e37b6167cc15f2a89e05a183815ec18b2 GIT binary patch literal 304 zcmV-00nh%4P)b^}|6b=Y6y(;Y{!a!g z@UQp#@Aw}>L3(}s|7f5BUjeuKZvQRjV<2U7yvu*H{aAbvQ6K!@3oKzW z-{Qa8d3gae1^)HE{~f^!v<1}u>;4xnKvUpW540I-w9J3a{{r=B3T*2g{_BH1CtaZO zpZ`6V0*V5g1e5i;`_=Z#_e=H*@8|93RG@lX;D!K7TKswwko8{x0000LlS^n5Q5c2KWM*m}YV3eAws|yDY&wl?DsIf8f*>k% z<*Hc~7ec_5rHi-`yO3f)SBkFeMi8|t(GpA*#H3ciSWBp+c{r^&PVFO&3C&}i$+#MA zZCZ-`mgm3cyWAfxp=la+gJD~$f3lF*v;Jqx`Q8T$Z@WYD zo5ULg-eG}Z89L0f4Zd=*mecc6xt8;=w2x)zu;*%)sVnHZF8Gfgv50&V?aO?Vg=C`G zqt8;QwVsqD3w#sp>uk4(?#r`&eMV@ShR&fc4IOUt64yxY7gl5?KAAs}zQf1Y-^2&g z$Gu&9-`V$(R7R2uQ}2HsoE!1T1^`G5aq_1Rg+NBCRv6kqwQ}ZBXMdtuFS`d*&78wH z%FqTXD^)8WCsqSp-l}5wzGHH~3TMv4``ZJRQO3=(w6oCI`;E z`gMDg;9p*xrm`moLYyi48W1M{s};+X6Y)q)IQvrJsBPN-$Qt1?9(Dn}gMTvW8Vj;U zv~1YHR;Z*VmZrvRmZz6cE&o6XK(RnVCGj2D!Cx>lhwjfzzEPx#2?dhIYK}l!BvcK! z3)ER+Jz{0oSgT$J*kO*Aq9I~CW*s{G*(t$KS{OS+#aO%?udUme<*TTEO`Fr@r_QT zk=#}u-n~>Vm!+9S1PE{@3<)G~CPb<$Za;W?3+O}|+q)?*Pn355=}S(XIZmEANjZci zf5 zj<%@MX^bD1^BwlS^+AD|$dm-1wial0hwPI;CDM?Y9SXW#@w-UF0SQ8OgplRTleOB2 zUjkDS|0U9pI|lSN*EvXUa~*UIclJdZ#)Npbwh9>YT?Z;=B8|l&^t~P~om?<5Lre$+ z;%`P>SL7`djY#8Y9$wv9dv|3p)C#5QQ<|d}62BjvZR2H60wE-$B^mK6y(Kw&{<9vg>Q9!g~ne(gm zmj4swoA@7?D86%i^8WzK9JM17E&sp&Z#dpHfz$E-U9ks&4?Z9Gyg!%0k2Q{M-Tz#> z2OnD>vrPZ*#{EHKLq)>Jcx{H|Ovdb&|4aQZWSipI{El%e^Cxx{^9vSw28s;a3IDB= TS1%U=TF&6<>gTe~DWM4fm>N^1 literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/default/images/link.png b/itf/static/markitup/sets/default/images/link.png new file mode 100644 index 0000000000000000000000000000000000000000..25eacb7c2524142262d68bf729c5e2b61adfd6d4 GIT binary patch literal 343 zcmV-d0jU0oP)$`dXYaZs9=SbAto%g@>T~?_bH&lTUn@`uo|1bXE{eSR(AO)ESb=V4`uk}mK|39Px&03WLbv~pzk+s7D@lK^ zn+aB+sp)&Y_x-B3>;6ywU--WQNUr<8>TU0P-|L#1U&;A)67w(+> pDf@fM7q9#F25QXo3rUI;002ro52U44e~JJA002ovPDHLkV1l;_q@Mr) literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/default/images/picture.png b/itf/static/markitup/sets/default/images/picture.png new file mode 100644 index 0000000000000000000000000000000000000000..4a158fef7e0da8fd19525f574f2c4966443866cf GIT binary patch literal 606 zcmV-k0-^nhP)Q2rnAt>LM%-F zK|rtwgcU)}7x~z1Hrcs5bH*ZO$!>xO8K#?==bZPQ_ecnV>#P`H`QzGaRhd62G_&rC zTLU$c7_x*nFP_dW#Q+*);mMHE?j)HexK784D4x9l_tfpz2$@1y}9rkF+ zI+J5NMWeZyObc!d+rUc=>D+uOdAOg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@ zo$rlds-+sL10DbHs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1pC#5QQ<|d}62BjvZR2H60wE-%c@9E+gqH#X?$N2_%qkv$?&V++! z-fX$@sb%KG-5a$|R8J4(Tcmu7`G0cYgxS-++3#dN^zA^J(=P8r|6lx9G_LLaZ+v5S z!d9iC@)!RP{FnQmdw#}3Ee(C$|NPA#|L6YmR@fBO9w|C7oMMQ$vc`Tu(RETvC<`(>OPJ!ieM-fH~m>7>j\n'}, + onCtrlEnter: {keepDefault:false, openWith:'\n

    ', closeWith:'

    '}, + onTab: {keepDefault:false, replaceWith:' '}, + markupSet: [ + {name:'Bold', key:'B', openWith:'(!(|!|)!)', closeWith:'(!(|!|)!)' }, + {name:'Italic', key:'I', openWith:'(!(|!|)!)', closeWith:'(!(|!|)!)' }, + {name:'Stroke through', key:'S', openWith:'', closeWith:'' }, + {separator:'---------------' }, + {name:'Picture', key:'P', replaceWith:'[![Alternative text]!]' }, + {name:'Link', key:'L', openWith:'', closeWith:'', placeHolder:'Your text to link...' }, + {separator:'---------------' }, + {name:'Clean', className:'clean', replaceWith:function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") } }, + {name:'Preview', className:'preview', call:'preview'} + ] +} \ No newline at end of file diff --git a/itf/static/markitup/sets/default/style.css b/itf/static/markitup/sets/default/style.css new file mode 100644 index 0000000..26cb927 --- /dev/null +++ b/itf/static/markitup/sets/default/style.css @@ -0,0 +1,27 @@ +/* ------------------------------------------------------------------- +// markItUp! +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp .markItUpButton1 a { + background-image:url(images/bold.png); +} +.markItUp .markItUpButton2 a { + background-image:url(images/italic.png); +} +.markItUp .markItUpButton3 a { + background-image:url(images/stroke.png); +} + +.markItUp .markItUpButton4 a { + background-image:url(images/picture.png); +} +.markItUp .markItUpButton5 a { + background-image:url(images/link.png); +} + +.markItUp .markItUpButton6 a { + background-image:url(images/clean.png); +} +.markItUp .preview a { + background-image:url(images/preview.png); +} \ No newline at end of file diff --git a/itf/static/markitup/sets/markdown/images/bold.png b/itf/static/markitup/sets/markdown/images/bold.png new file mode 100644 index 0000000000000000000000000000000000000000..889ae80e37b6167cc15f2a89e05a183815ec18b2 GIT binary patch literal 304 zcmV-00nh%4P)b^}|6b=Y6y(;Y{!a!g z@UQp#@Aw}>L3(}s|7f5BUjeuKZvQRjV<2U7yvu*H{aAbvQ6K!@3oKzW z-{Qa8d3gae1^)HE{~f^!v<1}u>;4xnKvUpW540I-w9J3a{{r=B3T*2g{_BH1CtaZO zpZ`6V0*V5g1e5i;`_=Z#_e=H*@8|93RG@lX;D!K7TKswwko8{x00005>jf6w4x#gTU%_MMNlkNp$oSbvBp&uHw9M;u0-4@=t5BI zP6Hx#-C_{5RMJ z0_P+Xkumexn8%)S+Y)#l(gR;YJP<6#1-=jjK0LONWPdJQIR8uK1HpvVIxBIQ2ztt+ zqoEx_X9S%QGMe=~(k#sebCL-an)%CR%a7YtUOQUgv+G>~?N~XSWhx=? z@$fx}0MB;$`JWcQ-Re{XV~5|{DvU(#*+NF*g)j^qk#b~G9_O!i*y&mZVZ=a3;Go(K z`DkskYn56Nhu+k@1Ke*uY|x zI&k6j$JfNe_a{GH%=n2rZOz$Z8R9V?Pe36hIk}jo+A-`;dt9vyvBu#Xm@veu&@v`| zzt%mwc_$nd0-sMVx2d)b0!MqGxmfCumx7yB#nIUWvA{!HOMfslMyW1iV&nY>zxwyj z8^JfLN|kT z4m^Q1mhO(_r4w@`V?H=YNkOf(i&bHT3Auc3bryK1_{hDSetLoLN{VLB^78ULiNFy^ zkUqqG$fjVkJj5tfWkOn|P5`HVEp5@-mGnc0wvJGHC=+39MC2TWT#i?t*~fNch*he_ zgtS^8dH$(KlW)EF1b4Fzv~?&0IQaNdg;W5&{t&Bmg9&N1-rBBr_;Rg8ekw^mn;@T# zlS{|Rq+-Nlg18i%UY;i|q1NnSwf>I@85#4U4002ovPDHLkV1mEDi4_0< literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/h1.png b/itf/static/markitup/sets/markdown/images/h1.png new file mode 100644 index 0000000000000000000000000000000000000000..9c122e91e358860733eaf08fd543e5fc585d4cfd GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$x=IP=XqH%ujg^j!|20W|*-XbO@ zAtBSd^khRzd{=pNv@vN)9uZDqGTXuVPf6#I=?;x2B`Y;1YQMI>>GxvE??vtn{c>{A z7MYxUVrui2JTF|YR&ldntL8M3{q7no52$4`vIX;r@S8@YTFOM5*~nV4Gk-UYI5L$} zDw(h9UDksmVjphbEsSQ?UdGUxU4Htk{EZoY&3@-Y5*_;Wwk`ZAkg@!FaC~ii{N>;; VD%(>GD}XL$@O1TaS?83{1OVXtVO9VD literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/h2.png b/itf/static/markitup/sets/markdown/images/h2.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd87657fbe001c0a78fb095284fffc32e739497 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$ROXGNhtQ`{C(%$wdeB3 zGTnLdz~IMJtNg?T>Z(s;oVU0)KW5x*9xvq)rPF;` zY|Fc4&#rLa>Txf#@y+aKf+ac0%`STzAI(*qdYo^XFH557y+_x*JpKO5^1S9?c^6}{ zP=+&OVHtDUrGNmdKI;Vst0KHFj AM*si- literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/h3.png b/itf/static/markitup/sets/markdown/images/h3.png new file mode 100644 index 0000000000000000000000000000000000000000..c7836cf09e4565cc76c13bd14c13971c9e093c40 GIT binary patch literal 306 zcmV-20nPr2P)wEzGB literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/h4.png b/itf/static/markitup/sets/markdown/images/h4.png new file mode 100644 index 0000000000000000000000000000000000000000..4e929eaf583f10cf50eb1666ff6530b9d4cc7915 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H?&;zfqH%ujg^j$;1_G=B-XbO( zon2btF4r#xDw?mmvtwaL3R_~+Yz66*rrQmiHySwec#9a-mn?F*9`VcnzTNDrbNY9( zxOA;CUb9S|sk-b7=Pc<<>lMA8+|AaBj(NoLhh2`-;+F zenR#-z6;(Syt?;Ub#DVE_OC literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/h5.png b/itf/static/markitup/sets/markdown/images/h5.png new file mode 100644 index 0000000000000000000000000000000000000000..30cabebf7445e168a0f31b0ed68c43d54eaf017d GIT binary patch literal 304 zcmV-00nh%4P)ZVg9Hj*!Zw zxkAM~zCH&l><=6QeDdgV4l9hop+%GWq_IPV?Z641X8iiHrWJUN^2}hSiGjhsfbOLp z?d`9_MC0P3jVAVsEwEMMb0n zB0~XIzS#Ls)C#5QQ<|d}62BjvZR2H60wE-$B^mK6y(Kw&{<9vg>Q9!g~ne(gm zmj4swoA@7?D86%i^8WzK9JM17E&sp&Z#dpHfz$E-U9ks&4?Z9Gyg!%0k2Q{M-Tz#> z2OnD>vrPZ*#{EHKLq)>Jcx{H|Ovdb&|4aQZWSipI{El%e^Cxx{^9vSw28s;a3IDB= TS1%U=TF&6<>gTe~DWM4fm>N^1 literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/link.png b/itf/static/markitup/sets/markdown/images/link.png new file mode 100644 index 0000000000000000000000000000000000000000..25eacb7c2524142262d68bf729c5e2b61adfd6d4 GIT binary patch literal 343 zcmV-d0jU0oP)$`dXYaZs9=SbAto%g@>T~?_bH&lTUn@`uo|1bXE{eSR(AO)ESb=V4`uk}mK|39Px&03WLbv~pzk+s7D@lK^ zn+aB+sp)&Y_x-B3>;6ywU--WQNUr<8>TU0P-|L#1U&;A)67w(+> pDf@fM7q9#F25QXo3rUI;002ro52U44e~JJA002ovPDHLkV1l;_q@Mr) literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/list-bullet.png b/itf/static/markitup/sets/markdown/images/list-bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8672bde48f806d3d4d37db192588a9aa3eac10 GIT binary patch literal 344 zcmV-e0jK_nP)PbXFR5;6H z`2YVu10|S&DhA}te_Swi*Xsu$nk)lAnzx?+_#Z@r_~qs0*+Bfiq@?73K|#U)?Ck9S zsi~>|6A}{sM@B~e4-O9gPhA%bd?2RGd{of6>E(lvp1b6Ep>6&12TPB<{a?EDDL4@0 z;^ML+A|n0=1_u83^78uc?CkvC#>VEqiHXU7U0vP(YHDhzff&$ntDt1@;|H#l*M@2! z+U8#>h@W=vfpy*`^1J}j+`sMRe-I7g8yOj8Yin!&S5Z;VicFNp}SURRVGD{CSNFe~ni^^#wyl5uzj4je z|23%2?k#{x(*%mqe9M%mih+W%ElRQ}7!$^91> z7ymCLB=nz$hvz>#JNtiTW@gkt1Zf0eyP_){bPq%T_kY#2Z7&xs00000NkvXXu0mjf DNYA0= literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/images/picture.png b/itf/static/markitup/sets/markdown/images/picture.png new file mode 100644 index 0000000000000000000000000000000000000000..4a158fef7e0da8fd19525f574f2c4966443866cf GIT binary patch literal 606 zcmV-k0-^nhP)Q2rnAt>LM%-F zK|rtwgcU)}7x~z1Hrcs5bH*ZO$!>xO8K#?==bZPQ_ecnV>#P`H`QzGaRhd62G_&rC zTLU$c7_x*nFP_dW#Q+*);mMHE?j)HexK784D4x9l_tfpz2$@1y}9rkF+ zI+J5NMWeZyObc!d+rUc=>D+uOdAOg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@ zo$rlds-+sL10DbHs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p?P)vCi#|P&Xm-dkucwL z3)87{8iWe96huvPHfK`KOdC2Z({T6vJ9pwDx$D4>d(Pqff6w7Lmj{5i6;ZyPPpPN; zroaW=6d#@oL2Fa53F~$Su10(RG%K0p3VTuP3?Z=nBA8z$uq+XLUL^QrC74`bU|!e| zr>hK{)%Q!vdmIO5Z3JIvaOyjOX`X@c8-ua03`Q&)f&%p*{(A$q`ZTTjk%q_T7>v^J zu!R-a9fFLScYlKkNBP_Cob=9m9JLVoC-?c{)eOtMnh7qNN{ejy2sM{pS^mgFHJm@(buuM4>=<5Vr$&Kzw{B?uPr; z(1Yf=#g)zADkWnx=MR%ykl| z3Ui42k+O2{bCn)01-s5Sxp|z{G2di&KT(_M6;$EI zDL57JFf}cw4bP1P$pgTRKH$0@h|~aA>j`qZ2*kU5t2EVD5#~@VNhqx{vz8ethDD-=+1vnemftUBA zF;N!Q%PBB5B=KLB#QO(CHe?;R+-C8M?ppDW>R$5`cCPq@YpusFRTaH1i9Kv;l<>I( Ze*oTy+;kdDB`N>_002ovPDHLkV1l3CM+g7_ literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/markdown/readme.txt b/itf/static/markitup/sets/markdown/readme.txt new file mode 100644 index 0000000..790fe7a --- /dev/null +++ b/itf/static/markitup/sets/markdown/readme.txt @@ -0,0 +1,11 @@ +Markup language: +Markdown + +Description: +A basic Markdown markup set with Headings, Bold, Italic, Picture, Link, List, Quotes, Code, Preview button. + +Install: +- Download the zip file +- Unzip it in your markItUp! sets folder +- Modify your JS link to point at this set.js +- Modify your CSS link to point at this style.css \ No newline at end of file diff --git a/itf/static/markitup/sets/markdown/set.js b/itf/static/markitup/sets/markdown/set.js new file mode 100644 index 0000000..21649dd --- /dev/null +++ b/itf/static/markitup/sets/markdown/set.js @@ -0,0 +1,52 @@ +// ------------------------------------------------------------------- +// markItUp! +// ------------------------------------------------------------------- +// Copyright (C) 2008 Jay Salvat +// http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------- +// MarkDown tags example +// http://en.wikipedia.org/wiki/Markdown +// http://daringfireball.net/projects/markdown/ +// ------------------------------------------------------------------- +// Feel free to add more tags +// ------------------------------------------------------------------- +mySettings = { + previewParserPath: '/markitup/preview/', + onShiftEnter: {keepDefault:false, openWith:'\n\n'}, + markupSet: [ + {name:'First Level Heading', key:'1', placeHolder:'Your title here...', closeWith:function(markItUp) { return miu.markdownTitle(markItUp, '=') } }, + {name:'Second Level Heading', key:'2', placeHolder:'Your title here...', closeWith:function(markItUp) { return miu.markdownTitle(markItUp, '-') } }, + {name:'Heading 3', key:'3', openWith:'### ', placeHolder:'Your title here...' }, + {name:'Heading 4', key:'4', openWith:'#### ', placeHolder:'Your title here...' }, + {name:'Heading 5', key:'5', openWith:'##### ', placeHolder:'Your title here...' }, + {name:'Heading 6', key:'6', openWith:'###### ', placeHolder:'Your title here...' }, + {separator:'---------------' }, + {name:'Bold', key:'B', openWith:'**', closeWith:'**'}, + {name:'Italic', key:'I', openWith:'_', closeWith:'_'}, + {separator:'---------------' }, + {name:'Bulleted List', openWith:'- ' }, + {name:'Numeric List', openWith:function(markItUp) { + return markItUp.line+'. '; + }}, + {separator:'---------------' }, + {name:'Picture', key:'P', replaceWith:'![[![Alternative text]!]]([![Url:!:http://]!] "[![Title]!]")'}, + {name:'Link', key:'L', openWith:'[', closeWith:']([![Url:!:http://]!] "[![Title]!]")', placeHolder:'Your text to link here...' }, + {separator:'---------------'}, + {name:'Quotes', openWith:'> '}, + {name:'Code Block / Code', openWith:'(!(\t|!|`)!)', closeWith:'(!(`)!)'}, + {separator:'---------------'}, + {name:'Preview', call:'preview', className:"preview"} + ] +} + +// mIu nameSpace to avoid conflict. +miu = { + markdownTitle: function(markItUp, char) { + heading = ''; + n = $.trim(markItUp.selection||markItUp.placeHolder).length; + for(i = 0; i < n; i++) { + heading += char; + } + return '\n'+heading; + } +} diff --git a/itf/static/markitup/sets/markdown/style.css b/itf/static/markitup/sets/markdown/style.css new file mode 100644 index 0000000..03c3aea --- /dev/null +++ b/itf/static/markitup/sets/markdown/style.css @@ -0,0 +1,54 @@ +/* ------------------------------------------------------------------- +// markItUp! +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp .markItUpButton1 a { + background-image:url(images/h1.png); +} +.markItUp .markItUpButton2 a { + background-image:url(images/h2.png); +} +.markItUp .markItUpButton3 a { + background-image:url(images/h3.png); +} +.markItUp .markItUpButton4 a { + background-image:url(images/h4.png); +} +.markItUp .markItUpButton5 a { + background-image:url(images/h5.png); +} +.markItUp .markItUpButton6 a { + background-image:url(images/h6.png); +} + +.markItUp .markItUpButton7 a { + background-image:url(images/bold.png); +} +.markItUp .markItUpButton8 a { + background-image:url(images/italic.png); +} + +.markItUp .markItUpButton9 a { + background-image:url(images/list-bullet.png); +} +.markItUp .markItUpButton10 a { + background-image:url(images/list-numeric.png); +} + +.markItUp .markItUpButton11 a { + background-image:url(images/picture.png); +} +.markItUp .markItUpButton12 a { + background-image:url(images/link.png); +} + +.markItUp .markItUpButton13 a { + background-image:url(images/quotes.png); +} +.markItUp .markItUpButton14 a { + background-image:url(images/code.png); +} + +.markItUp .preview a { + background-image:url(images/preview.png); +} \ No newline at end of file diff --git a/itf/static/markitup/sets/textile/images/bold.png b/itf/static/markitup/sets/textile/images/bold.png new file mode 100644 index 0000000000000000000000000000000000000000..889ae80e37b6167cc15f2a89e05a183815ec18b2 GIT binary patch literal 304 zcmV-00nh%4P)b^}|6b=Y6y(;Y{!a!g z@UQp#@Aw}>L3(}s|7f5BUjeuKZvQRjV<2U7yvu*H{aAbvQ6K!@3oKzW z-{Qa8d3gae1^)HE{~f^!v<1}u>;4xnKvUpW540I-w9J3a{{r=B3T*2g{_BH1CtaZO zpZ`6V0*V5g1e5i;`_=Z#_e=H*@8|93RG@lX;D!K7TKswwko8{x00005>jf6w4x#gTU%_MMNlkNp$oSbvBp&uHw9M;u0-4@=t5BI zP6Hx#-C_{5RMJ z0_P+Xkumexn8%)S+Y)#l(gR;YJP<6#1-=jjK0LONWPdJQIR8uK1HpvVIxBIQ2ztt+ zqoEx_X9S%QGMe=~(k#sebCL-an)%CR%a7YtUOQUgv+G>~?N~XSWhx=? z@$fx}0MB;$`JWcQ-Re{XV~5|{DvU(#*+NF*g)j^qk#b~G9_O!i*y&mZVZ=a3;Go(K z`DkskYn56Nhu+k@1Ke*uY|x zI&k6j$JfNe_a{GH%=n2rZOz$Z8R9V?Pe36hIk}jo+A-`;dt9vyvBu#Xm@veu&@v`| zzt%mwc_$nd0-sMVx2d)b0!MqGxmfCumx7yB#nIUWvA{!HOMfslMyW1iV&nY>zxwyj z8^JfLN|kT z4m^Q1mhO(_r4w@`V?H=YNkOf(i&bHT3Auc3bryK1_{hDSetLoLN{VLB^78ULiNFy^ zkUqqG$fjVkJj5tfWkOn|P5`HVEp5@-mGnc0wvJGHC=+39MC2TWT#i?t*~fNch*he_ zgtS^8dH$(KlW)EF1b4Fzv~?&0IQaNdg;W5&{t&Bmg9&N1-rBBr_;Rg8ekw^mn;@T# zlS{|Rq+-Nlg18i%UY;i|q1NnSwf>I@85#4U4002ovPDHLkV1mEDi4_0< literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/h1.png b/itf/static/markitup/sets/textile/images/h1.png new file mode 100644 index 0000000000000000000000000000000000000000..9c122e91e358860733eaf08fd543e5fc585d4cfd GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$x=IP=XqH%ujg^j!|20W|*-XbO@ zAtBSd^khRzd{=pNv@vN)9uZDqGTXuVPf6#I=?;x2B`Y;1YQMI>>GxvE??vtn{c>{A z7MYxUVrui2JTF|YR&ldntL8M3{q7no52$4`vIX;r@S8@YTFOM5*~nV4Gk-UYI5L$} zDw(h9UDksmVjphbEsSQ?UdGUxU4Htk{EZoY&3@-Y5*_;Wwk`ZAkg@!FaC~ii{N>;; VD%(>GD}XL$@O1TaS?83{1OVXtVO9VD literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/h2.png b/itf/static/markitup/sets/textile/images/h2.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd87657fbe001c0a78fb095284fffc32e739497 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$ROXGNhtQ`{C(%$wdeB3 zGTnLdz~IMJtNg?T>Z(s;oVU0)KW5x*9xvq)rPF;` zY|Fc4&#rLa>Txf#@y+aKf+ac0%`STzAI(*qdYo^XFH557y+_x*JpKO5^1S9?c^6}{ zP=+&OVHtDUrGNmdKI;Vst0KHFj AM*si- literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/h3.png b/itf/static/markitup/sets/textile/images/h3.png new file mode 100644 index 0000000000000000000000000000000000000000..c7836cf09e4565cc76c13bd14c13971c9e093c40 GIT binary patch literal 306 zcmV-20nPr2P)wEzGB literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/h4.png b/itf/static/markitup/sets/textile/images/h4.png new file mode 100644 index 0000000000000000000000000000000000000000..4e929eaf583f10cf50eb1666ff6530b9d4cc7915 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H?&;zfqH%ujg^j$;1_G=B-XbO( zon2btF4r#xDw?mmvtwaL3R_~+Yz66*rrQmiHySwec#9a-mn?F*9`VcnzTNDrbNY9( zxOA;CUb9S|sk-b7=Pc<<>lMA8+|AaBj(NoLhh2`-;+F zenR#-z6;(Syt?;Ub#DVE_OC literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/h5.png b/itf/static/markitup/sets/textile/images/h5.png new file mode 100644 index 0000000000000000000000000000000000000000..30cabebf7445e168a0f31b0ed68c43d54eaf017d GIT binary patch literal 304 zcmV-00nh%4P)ZVg9Hj*!Zw zxkAM~zCH&l><=6QeDdgV4l9hop+%GWq_IPV?Z641X8iiHrWJUN^2}hSiGjhsfbOLp z?d`9_MC0P3jVAVsEwEMMb0n zB0~XIzS#Ls)C#5QQ<|d}62BjvZR2H60wE-$B^mK6y(Kw&{<9vg>Q9!g~ne(gm zmj4swoA@7?D86%i^8WzK9JM17E&sp&Z#dpHfz$E-U9ks&4?Z9Gyg!%0k2Q{M-Tz#> z2OnD>vrPZ*#{EHKLq)>Jcx{H|Ovdb&|4aQZWSipI{El%e^Cxx{^9vSw28s;a3IDB= TS1%U=TF&6<>gTe~DWM4fm>N^1 literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/link.png b/itf/static/markitup/sets/textile/images/link.png new file mode 100644 index 0000000000000000000000000000000000000000..25eacb7c2524142262d68bf729c5e2b61adfd6d4 GIT binary patch literal 343 zcmV-d0jU0oP)$`dXYaZs9=SbAto%g@>T~?_bH&lTUn@`uo|1bXE{eSR(AO)ESb=V4`uk}mK|39Px&03WLbv~pzk+s7D@lK^ zn+aB+sp)&Y_x-B3>;6ywU--WQNUr<8>TU0P-|L#1U&;A)67w(+> pDf@fM7q9#F25QXo3rUI;002ro52U44e~JJA002ovPDHLkV1l;_q@Mr) literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/list-bullet.png b/itf/static/markitup/sets/textile/images/list-bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8672bde48f806d3d4d37db192588a9aa3eac10 GIT binary patch literal 344 zcmV-e0jK_nP)PbXFR5;6H z`2YVu10|S&DhA}te_Swi*Xsu$nk)lAnzx?+_#Z@r_~qs0*+Bfiq@?73K|#U)?Ck9S zsi~>|6A}{sM@B~e4-O9gPhA%bd?2RGd{of6>E(lvp1b6Ep>6&12TPB<{a?EDDL4@0 z;^ML+A|n0=1_u83^78uc?CkvC#>VEqiHXU7U0vP(YHDhzff&$ntDt1@;|H#l*M@2! z+U8#>h@W=vfpy*`^1J}j+`sMRe-I7g8yOj8Yin!&S5Z;VicFNp}SURRVGD{CSNFe~ni^^#wyl5uzj4je z|23%2?k#{x(*%mqe9M%mih+W%ElRQ}7!$^91> z7ymCLB=nz$hvz>#JNtiTW@gkt1Zf0eyP_){bPq%T_kY#2Z7&xs00000NkvXXu0mjf DNYA0= literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/paragraph.png b/itf/static/markitup/sets/textile/images/paragraph.png new file mode 100644 index 0000000000000000000000000000000000000000..95704fbab31bf9d71315c52f73f106e9b555255c GIT binary patch literal 361 zcmV-v0ha!WP)W2UMkn=!+`e+&#r4!m&t*Pi{kVy<{yV5rBn%1W8t zSc#vBL6V!9;o`ktd-^>D7(tpD{uAK>89pW@UKU2M&7k1<{}&?u{~w6_M>q^XHopD# zj{zRGFdFC`m|=JgcyRw`*p4$_S3h|7hvD1L|3FO;TfwpQ_dj7T-0PBk52V5r3LXh+ zs&njyMf3kZ3=9ldq8w*5KA0f){@b^|?-~BUyz(C!4g_3)48VSdx!^BW2jDjVQ2rnAt>LM%-F zK|rtwgcU)}7x~z1Hrcs5bH*ZO$!>xO8K#?==bZPQ_ecnV>#P`H`QzGaRhd62G_&rC zTLU$c7_x*nFP_dW#Q+*);mMHE?j)HexK784D4x9l_tfpz2$@1y}9rkF+ zI+J5NMWeZyObc!d+rUc=>D+uOdAOg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@ zo$rlds-+sL10DbHs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p?P)vCi#|P&Xm-dkucwL z3)87{8iWe96huvPHfK`KOdC2Z({T6vJ9pwDx$D4>d(Pqff6w7Lmj{5i6;ZyPPpPN; zroaW=6d#@oL2Fa53F~$Su10(RG%K0p3VTuP3?Z=nBA8z$uq+XLUL^QrC74`bU|!e| zr>hK{)%Q!vdmIO5Z3JIvaOyjOX`X@c8-ua03`Q&)f&%p*{(A$q`ZTTjk%q_T7>v^J zu!R-a9fFLScYlKkNBP_Cob=9m9JLVoC-?c{)eOtMnh7qNN{ejy2sM{pS^mgFHJm@(buuM4>=<5Vr$&Kzw{B?uPr; z(1Yf=#g)zADkWnx=MR%ykl| z3Ui42k+O2{bCn)01-s5Sxp|z{G2di&KT(_M6;$EI zDL57JFf}cw4bP1P$pgTRKH$0@h|~aA>j`qZ2*kU5t2EVD5#~@VNhqx{vz8ethDD-=+1vnemftUBA zF;N!Q%PBB5B=KLB#QO(CHe?;R+-C8M?ppDW>R$5`cCPq@YpusFRTaH1i9Kv;l<>I( Ze*oTy+;kdDB`N>_002ovPDHLkV1l3CM+g7_ literal 0 HcmV?d00001 diff --git a/itf/static/markitup/sets/textile/images/stroke.png b/itf/static/markitup/sets/textile/images/stroke.png new file mode 100644 index 0000000000000000000000000000000000000000..612058a78eba4e3ca259aa13417fd60cd6cf2fbd GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%c@9E+gqH#X?$N2_%qkv$?&V++! z-fX$@sb%KG-5a$|R8J4(Tcmu7`G0cYgxS-++3#dN^zA^J(=P8r|6lx9G_LLaZ+v5S z!d9iC@)!RP{FnQmdw#}3Ee(C$|NPA#|L6YmR@fBO9w|C7oMMQ$vc`Tu(RETvC<`(>OPJ!ieM-fH~m>7>j%B z4k5JA6H*_)|9AiQzW3Js*8A3ach){ulrhW#MW~qG4g_>g;H3WoPkF(azP{%h}c5?V)7-rwQ*X)WR>W28Q0*2e9hf zA;G5aEfmcsAz_ntwAa(U;(@8L*MeeVuhsf&qV-&)n~2|N z$5FOi>**%-;S&x8o#gv_f8zD{;XULxD6;5`26s}uz0n{qVvm8o#LK*K64LLCJz-X5 zuf&+ss!BU5D=W$3%p?wbD@I2@m1{@?+2VRV+e@V@e`$@o*}{;GnEPrB|j z{b0XAX`@BX?u@yvv2S#FuO^DM`m}oeLo2O7>~ZCk%IO=H7<=s<@67FpR|-^~yV^VD z≀|{c$i2n-fXUK}JNk@K}LetuB)J#?n`kX|=rysCBD_ABcC~chKV%uVm>`)EH-O z?ENi#w&+`sLCqfCwej5hGc}kwq*xr$017TU<6aUJTHp@K-0Gz1NVwf8K(iX_N@3$g z@%-y}uvAzabqEDFmzW3NZ4K`0nO}bv<@0{Z6gAi2yya+o&7yJX!wXY`utx!Z9y#98 zjk%w89g}^1{^oPJv7X3@;0oheiSz;6xBM@l*+K;moL(uqoyc7Rj<+YGRyQ!(U=(JTX(jxPKP=uu$ZsKh zLgz493pB`X9)N5c#A>7BiTq!#U>gD$g#W#AhLjUd z2lHoX2vTOJhRlRHBbc5jWa<4g`NUhK31<_EP@SP^`;2O_&;G2ApF$RAi&)$}I`hh! zshiib7b#ziRE$w2nu_;FUOS_kMcj&uB(Zu={jfr4CzS)Q`#{ktGyli?;TeI)fA46D zBkwE!Vj$5oX}l&c@HvmIl|B!>;NJR`$=W#N_9f7NrNiqlan zMuQW*!`BzS?sxx<<6mW>T@Z|%d9Nu?So4nfdA(gYMxzkt4m9snn>6M9cx}ya3HQwU z%61&* zAJ}>O-6s;;sc4q({HJQT7)__|97@-1d{&D9mfPN6r=%o0{5r#C*4NoH%<^U+QR{C6i6JCX3C_-j~PjTGHN2`Rto?=S2#= zHskpZZr`O;EU#s%G21Ysysawo!+J-g&LJ#yWUMBGSM=K7m=5lAkqhA*JgX#trj1_d z(nIl6VXt<%==}i&s{E2=MunvOem!+c&QXfTvA&eC47AsSjC)=`@rZq5D4S&ucH|0v zFg$$u!S|$Jx907|C*N89z!A%yj5?7l6u+UGh|PWp)(sBa{m>s4@K9zA9Cj`@u!|72 zih3*d8{c*i>1lScb)R&PLT{92DcJV`VRJ9TOGZtM9Z3BR!DHVe&6 z#FM4cS8jBYJQ*)!*6!zcD~;yfOnT(r85q7stE`-Fxm1$^rS-xp2e#}exiN;x08y}B3JmfgIh2`_)M za7^{TITm9g2#^L^##01ZJfzFZWzNw&;?X$N$)xt{ww~3s(^gRyyl zc55@%i~I{mxGQRoo$DVGZFYa6N&4NsW!$GJo{Jl+;w>=e&`jXw2he^#j?m^Q(A6C_ zL_UAn%BDGj6TMd9^Hw#mH#kuK0j9UiK0g{glw)-93oXwHDA~!Oi%olgRlD0|??e+nr+lbA2 z0LmQTwwE~%yXO9?2-SnIOluM91D-HVnp=*)*h@uj8KFy*JHAzgj#K;Ols!rzOBwcc zbn2LUjY)w@}>*PUN!3Eo(a|3D$sVDbC*47M{U z@f^@Jej&V%iPh-(`wrs@~}N|7A2kHgT6WDNzKK$R*LEZt2@OV+Yl1PaM>dF^Sa2u z8QbXtq)3%ga1*2l)i_HaQQfU5YpbmkxqbfV>CGkESY3c6NX`2vN^qQAdUDZ{YbpA@ zpLynIZgj@P^3wrFt;iZBTbJf%iNK6_El)~qQ*EUHwGg(I2qHKHEh@DyXsu&DSqh+b zTz~t6a^&bEI1qEAP|T)pd#HAl;z4Z)uT!$t0ApnM+hLOp&E*Id*%dm~Kk4BsKA%E$ zp25FQmyUGwtk`JYL$BH*WGie0_NKd#!QawTok4UqQ$(l zntQt0FBMSzNSqv-uw7iPK<-qydX~nu%DO&SSk1DE@iQxyV71F&5%cGRve8?*5x?gY z4@`ZRlK>l*;|pJ^Ei0P)vya10H9b>jQ-b(A+n$XQPhknaMTE_jl!{cb9O z#@T;s=$_;~Q_f!}m;SR9AG2KIM9N5WI|(eijy4rHvcgG?=Qb3sg`Ll}H|4rLjCS6( z>gb>$TRL9%crGp{c#t3CE5MwEDr^t)Z;|hx|FU(T$8D@9bZW9h){C#(LgHuTQILMr zrHUuOF@WKlh@hRrC20`c#~C3l134G6!@Fx_qN0O;-C6eq2e~B9h=kX&aHK$Ae-Zt* z%5h)6OnZk%A}qNq)$*o%P=S<8gARK77E@dQ7=?~re}!sIG!J*MCz_>$Zf<*74)8b& zNZE`P8yB`?6G!$|98sFYS&bJ3E%Ma88Q^@tI!SdMkm#;SXWyj$o;sdEw}(NuWJWM} zW>*XmuNgjlP`geYrNSp0X({oS5x4$bqp9f2h}}nxYU7DHfmhXxi{lK7aV%{?A3Moq zB=S+bCgeYnCl7S2-Wy)hPtAZ#73`6=Bn0p992`jlY939Q%HY=%sR~TePT4j*Mpb=S zGA`Feg4iood2!EhcA=AZWx;7Le#{;U$U%4-X_SO2Ro5~{LyK2Qt)M zZFrj>H}pUGBEMG8$05|ku+^7sBe`w1UusvReEQve*I4Roxz?_xrcWM6AWVM4_x!aM zb}=fdi&QSt&@5zmA9Z-#RRiOGLAFIpsp_*4ozhGVW%NWZkTPe#m z7md|51(TAD2YKVNXTEl^%~Sf}VCvXKP2TtvR{0YO%Cy}&bdmCCv z%xBJ-+|d#t&m`u!vyXFAufI2B`feuOy|hvUoFA1Z4Y1$*9aVzRt^6rT*SoHV{!cDNC}G9aH^3{Z4oL~`knbXoWroUQ7X$FJmZ?70*M?=l6|65R5MmQ|FXMPtQdx1Pawv1z_#;P1 zg_YCB55bye-mq)VWaf-sO3QQ9*GgGD#-g53iF@EQYF0a@B{1*5-dym^X8y?_%d}o~ z|Atk}djs3;S1W|l)?Fcsef?W`jE{nXJSExMiv+W*uR$L^&Q&d9O?cgP#CcB6=#ijL z+V+%$^{XcXjQG4g0uU{cT?ps!)@G|Hj}p+e0H1~$+&t$BXST;Mp??mKO7_3S=;;@5 zVLs?$z8#w_{o)$u<|)n*VUCul_$fC1S7z`pffjRNcyQyxi1YoKTQa0S>liCC8@QN) z?lQduX}bwneBhXxuLMkOR-(sP&X!)8B$qXZ>Z4w?)>(ah`<|Bw{1Rw8S5nFB#BWB& z(>zmUSRa^}XfHo0T5;oPV@`hAXBAa;U^UmW4i`(nSR*iQ73oywBeColy8R-&keNJr zAo}r@0U+bs{R=20PMsPeIXGg~xYW)f;pKS@wP${M@QhtxzBgzy*mVR3i$O~yi+Kfx z6?ANOseX}{cg$6sXCGJdrb*^v%#iygPXDug`4W_dp#!b#IS0oHW0`yCC z5U?MdWk-e~%s8xfqJ>AY?wfa?S}z|} zZ7}J8)*2_i893ByyeTeD?lYD%AW$8lnzr9mwW`?ff#95hbzfhViv z-*Mro&2|iByLF|zrD!b&4}nwfKg|_QJ74#uG#VPqp_)B75xPYpKsw~rzilJuXTsT1 zI0OlKf*Ay6q?|UytvXe^HOC6S4k`4MznFYF(yB5QEdUaJ0z7%9W7(5x|4MDVvWJsM zql}|Otvu$X<}LB>DRQ|6lO$iV79zvklJ-$y0Nup?8TO>?g}0;Uftsy25M%NR$d zJqMBoDiCZ?_)1Jei-ykmCR<#F=+AHRiu3Cy)xAr)#H z&1$>`mY@2;KO#Lwmm%@=glq5sT2H+ikAaye8~a+Ty~GN&2EqG`6xCN%JT(-`E{jPl zQ>zqge*b6sUJl{$DXK29n1e(s?b7e57RX3;q=VrLyDZ*%6PY55zvJC9yu$Ynx&E^F ztu17V3I0ygKUvK!o4X%P@LN|{|Mx6^6Vq*E%0B-2Z0i-$KNR}!i@#VtgzF!euQkZ1YUTbw1e%H=m=W-S%o*mxn%92mNltSNohkvw( zz52PU2YsN16j_lXMT9oFb#71(F(-8{ygb0IaN6P0V$5-QRy%gC?d$&4vAcc$7{Z`!71 z;A1PH5&U)J_E&hp;A^e@+xyvuEn9 z(T2!Q$n>gsi+z54vQ844%TEd`zRL#*Jq-#lByhWK5x?0wbT-Sih;(DvOg19j?_92W zq5bI=8Rrp@5I)%-ww0?Z{YD(Tv7L_QU7|_?n-L=YOcZ`M>Je8u)9W`f;z6e5tA2|U z^v@otoj@3!ayw`bIr8Xs>=y6+L}!8{6CUddNZC?cdj0COB`UrN7{k5aKvjYiH ze`4DD(?Zf%lG)_!!J}0O8K)tnxLwfUbVoRSr;%=Acw?I6mD=N*0Yz`$g+n=g&9Wgl z`Hw4ELETS{%GC_5&AMdJI5Pxy>_mYh;LAcx1BMS#y2E+9zr|U^3}Li`-ZwM~@qM$# ziKB;BS^HxwKI(BDAc`w$fB`2diC_T!+4^KSw2Gpf4}?KQ63>GMWQCMoI`FnaG$<%* zE72yAZ&J(TV)E`nVwqGDIVTKf4KumU%~ZVKEDRhXGj7D3l{u=^ zs+CVjef&D*x$a6( zc?Z|YbQli06pRRDfkOiRy^=#u5#qgb8_LvAEvp407wIEHWVsQc(A=WwUBxw-zb#&8 z-%iIPEb{1jLnbMDW6^){V{}SV;5N3`#KgXxN^U>LAor@JR+e10!_~A9h;@%ui&i6l z1EU02wcA%(VVIkfy5D*;81-wVYUI2;Y67X0N7V!lVA>_VcZW)DtlIkAe^Bq8yzt{| z?8mro``hEPf7}K2i*%@V$4iw2*h)F?f310K*c4WyWy^f4AazS+^QNr{(eXMxpmZ@z zlo;mr`etE4l8O5|P564CU^3ST;agua!-#;*kk2&MU$($yU4Pa;(X~{gZ>(j|bIQ`<|fk@jPmVq*?9aQ$yFl^k(DW^Brdic9Rv{<3e(zyd-teCGCnr ztji7Y3xQMd{u2xXc!&ICH3@W(;(gOTIGXQC7oSQX$c#fB)Crhn@NN-Yg5TUKRPW=a z?=k-2b&(FwGu633D#RCgs`9PlGF9W{-c4OANEGJyZAAzH@@2tZixXrNG>U6fhm_w_ zOF*8Gfd@C(dKRke0xo3BWe;#Q?49>~gOIxOD}@!@19?&F%eWSJqM}9NwOSXW#jh0; z5q$!seADgql6>XyH^qPWA$x|It#f_FLjJmT?`~%3TV5dHuc}nZgo=h`gDekA!h6O? zuurY`<-Yp0>dk(ZFy~s>%rW@+B2>ypd1rn8*4a1HNTy$6T)qk~0s!3BLBnFq*0sYP zXA$9>MjNwsMk1Ho)nghD*l;Y%U!xeTsc4o0~7uMTg)*ec3rb4^wo(72e| zs$r8}=`|~H0@)WE7v1b>6ihS}MIT}0BPQS9TOgP#S`uDUH#ewCpYB%A$5)`$g7%)$ zZK5Um9^bt?|DD5DlLGG&xI+FQZQZVj17$+_S^2J4Q;abj_I?f6Admtj-ce)@Iv;I=I&jt^YQTg(x8f z`HQ$G+eU8={iMA2>#e3nimUxml}133!t%JQfpe5r>+=Zp*p`QhDt@hA5>ET9vAtjk zrgdat51=|%rHoDakYYrzJ*xxG`9VU6;en(^IYLYeW9c!m`$F;EenZI)drYsi|87k0 zeBrd+#G@RVvIX0o2MkHeMjKAUg1B4Ro{BieBgracuk-vDb&Z_;(;685=4kPsUQ$^F zWS$hWVS6xQ9A||B;P#tQW79eY(z_Ng>r}>Spj_Q-t zKCFq8lU<5iA|v&i<$4o$ynWFU-h}+^7pag$A8wl1sfoIkb#Ul@Y!SQSc|2*61~@>) z9zDUfvp=v%n!1y6>Gh2Frl;%74`W%GA6TTvj{DfXsM>AuoHh?KZf&kUrR^mqLUixN zH_AAAWheA6PT?Mt2`H z=HaVQM@CvQ)ZrgQb|a}VAVjm7i|gz2yzW@fl27b+p2&oMdeZ9Mn*(bCp^k33?|l-Q zb@80|A?s_PO@`+i(kkP2oNQ{a(@*+kEKu(FV%jyV_nSSqDA@W0Uux8C5$McfC6(c! z;&z!PmI_h{xJ;W$4OHw0VD9G0}=ctG`{E_N_|YchgS@PhqSGGi12s zONPWzBUG@+TBK{Xh|4c$d&wKQNu97D})h3{W2>sPl1j#ww=q=q3V*k zOpl(}T^#UaY#ZvGpCst=br#R=()N02^PRtbL&+!7MA5>5= zvb9ti6T7p5pwhOPohBzmzj%g*BHQ?#Z?6*E$tG)<92WKdBuEZ2{-I<#I||}%Tcfc* zQkhvvr!cl`-m95-&>T!!wm62a( zi;cp^$B6D64h>N>8}U545w9|jNrms5H+{c--|))i{^_bMdYI8GFEdDo`2Wkr{2vcr zd6&nVZ~uKseWPm#Xxh#fuDUAA{O!4Q^2$qCgX8p-W!+JBx=ci#0<(y7IOsM=oLGCA zTX7M9Oh4=c;r?6Dg8zdx?ZV17iATo~|64%dpayUsPj%D=knrC^@hQ;Q6gDlq^uMV9 zom+W`J^cS9;(eKA3kUJ|zXf0pac6BXYoJH=;togPvt4;WRkEqIH9r+32(Z{7Pr5|6ob zV+ynQPw-ah01*ib$i6rZB3moBeym^G+T7*QTDLQ#${a!{Ma_5E;ti!rsk^bkZP4|L zqf|n3YeVd`GdHMG$?&!xAP_e@Gp$NEBszdFX9(De^GXLEcd|7E!u+^ktgkxZeI_)z z#RN~##G6#kL#yYVFOxiTjP2f=Pgh$&RY!9OLeiHY0`3wfey&9nXilb%mlF91gzFLd z?`OaW4vc5^qfdd2bo1A?ST6QA%|%YoRXdwd;my~edg=tXdU}-6X5WidK!4P>(?DK4Sv=DI~y=CtB*N&R_)?=OER>xsF@-EwvquAUQ%WGt`%u9=L+%|>z@Tb+3 zJI+7!4HF*N&HN8udMhyXtt2V^h7}V}orRD_CrcQ1lU@53@$*XWZ$mo=pUI)yw#qq2 zsTUossi@N&9CY?L&OgitjPmICE7+cbBZd)98B7RgwHDCspRpQTcrV04H{+%~f-?si zk9h(dHNCv90e3EpHi^UccknL=9jwe3rJXc#tm`bi99#($=Wqk^21JbVH$P-?=-7v6 zpHa=)zI({I?|Boh1Fxe^y0C3zo2N#-24^sw9PZC$m<_IYoRw?@R}!y#d}?3qa0JE% z_?bqJ2?q8DjCq=)h^jJs-f-t(Th)ubGb7W)<=Q>a%Lc@C!TmDcj5TK$kbEi*k^~G` z0le(PzRT?#T}eOT7Qm5gP7V-x+6@zc&l%qASG-0pM7F9tHg{1Q&!7$>vhfZzt?`)xFBi_aVIUfL;i zzwz|N&UXY6{%!zNL^Sj~Ix8yHVq@Vwc#N&Kd_KxL@hTpuGEXQE5kpz@ckg-wR{4 z0Nn#R{6(3`Z=|f;^|Y@jpKa%?T)kq3H8%c`mslq%D{2NKUtnoy{$qbsZsl-k3F_i% z{H(^8mA&N*dTf1ykrmt+1b@it+BM@5^&LKeUhH^K=63ybSl|AKygW^~OXHjNJk2B}{<&`6QC)t&OV2k~K_t@`DV~;vW7T=KsTG!L1 zyc@Z{JyUVvGa3q~WNQa5e@y_z1u!+_Z)G#TyM%ik^fV;QdkzCvwtinN*`eMX5rg9{ z-!CK`3AhNQ0#|B}o7A-e zqO;>nA=UfW^(R02`(Z_~(}`m*Xz{npBPuG%J2ieu*xHo}>G3OUM0g zdBCPiAyJo57o(npzSDP0wgw2lC+qYhZoJCr5%CW|4h3J5J!uo~1Ib)&^p%~t;ZQq- z#s8eH{8qh(qBBf-K+BO!*xfH|-tY$Cb68XxBPa0%cx4ssyWKY)ml0wKG5uLvlkZJq zhS_xpKWWQLp&jevp@Z36RuiQIIdXpvP0kgVkvinr(e^mOUocBm)&61x8}>m18%<>H zF91CWPO)hRtrze_aqD5%qLpzxY$8KqCHC85Q0wSR-}QWuI)I>U+i z17~dxIO>RFsD@|2KG)bZlwlxL1nS(QNl2Z`9lVkTx&$dAEYK>}q70r6KRKKUUmRF* zyssQ3ezEV^`HpBzTv8>3;^PBH-2^x8&0qJ)9w){-hKS8IXe}Nf>HS}`6DzE6;1d*D z2#%g3PbYMJd_hkFo=Elp7FjFJingp)HMFO(K4+5rY zA&qND-e&eiCsVCftm`tH8Ot!L_H%e(*yF}SKaMZk&FhyUQeHvg$*j{tV}h)?z5<>H z(pWxxAF<%HM#FE}FpV7_hgCIdu6mEE7~HM@@!@G>^zDO*LI2J3Vc zlv4|;@5{H-rB4LP9OCIN-D2U3R+)k9p2w@2jalJua^Mor1dZTjEPS5QlRnlmXK2Zx zfS-W~;*x)8V+~(-!g8o4K?+o`y3`qv;`h22%;`>6g-C~aAI5J?SGdK!8-UnXMeCMx z7#w8bgr?!G9;$NAyVOc}$dPQ+bgMcyv7qKuz5GO)cJqyCjrii{a+{ot6I=E4y&Jwc zLREaT?Z$qw87pipu18DqXBw48FqfZ!YdglRtbTDmQEdg4CnG-06qYypeP2O}m(N(N#0k?!&S)B0umA$*ncUo ziNXJK3M?xxbtv0+I+uque!n>-^pKV+1?%caI76ML7 z>-zAViJC0r-_a@%hdJNdfME!{b{MKZ#*1w8H z{4Yq4!I^iPN=*vKi9!{ruwF2xPReiJP1PbIz$`U4R0h zP>Hes7een4okulaGsp(h<0!Qi$UP2#5irB_)Z2#oP}0tO!eQS|yb_{(_c(8>cMQkb!+hp;1y;XFUwEFz@f1K8F( z8)oGQipCGGniv>Xex@@Y_4+hlGehvGQIPK-q1ntDWHkkE$EiE>8JqM7Tokj}w<0%h zTU{7}!jU5wo`5BM+^+bc%M$)c2WKtNcT7AL@p|&th#g};@}duTqK?~oFd|X;XhU>g z%Uma5ESJ>d9J%ZKV1+f4Jp*Bkkpmaey4x4^M`6(#oy3G*u=FJsFh2w z-$#AI?i_vYj7xglpI@VuJ5B43$VX+p4P~~^MoUjP^i6ylamJT*O0TwNIPfWI06M+zX-@nGyqggB%Owh@?zL;!oA}|{j;wdA<8F$d+A$k+3i4Q8`&m3 zK6Z;{mfQN6$rIVms97@at-D<4&PmJZrzt74lDLA;z6a?p=F7nG(O{e=CW1Av%nsoo62P- z>S=-hB6w75BD^5_6Ybdx@KQY__5t`pkG%K-Lci<0%AD*~<*#eQSczTin#@fG@#W4S zcxxL+Wgalr?GG!GZZXu>$w+(O#_r7y^r6;yg}!U)j#By5?CE2Y{-IuEdDQy)Ag_V7 zD7RN-GCaXn$u=Wa4yj70H2cr7N%^?K!AOzr(b%;a5LJ!H6>z(5Ylt->2FWuaiNm;Rz3z*HHgiQ;0sR3To33 z?vfmGBw2Ad4TGx`0LXLr(h81WZtW-2e#tmv)#=GyJMCApB)m^6#pRrs^p+0qVq)9= zvgr5HmG7_QG~O^Bp12f3OCJz-2BD%>aG8NJY1`LQ{cm$(`p=O5N``?cX@@Yc2W28< zdom|BzOt|S;u2OOZTI)h5g@q3-AhdI5Tnl+J{CGb0Qaodp2$_@)PB>?m_BFo5tRc! zWFe*)pNX3vV4LTOqNe(I^P$6iBi9xXffUvb(cYg$$ zFU{@+p={BK7zAD`8_l(Cc|T(0FMBSm>C;p0uOLCN$NaCBpne0-D`$wlLiSmUFufnLD!8$`m{rdI=_dfCFrKY#I7gSd|Z!S5{3}`Lh0d@I2dDGyxh)b}AJl z4#7A$NTKW3j9Rhm!_(4V@e|ND^tNRemL0aTQB=bhB78MXL5FkGcp~?nVLg4dcstm| zX*SmnOzyhl0e|e(Bs-yJe>N(Z!G30v=USN3;k3n~wTeYf1N8Uf(&+*%!#VYU1;>1q zdtjdnq+grPgruA!D+LxgHIO;&BryHO2 z$(NPHXo}%z9&>D{o0Gp`fSxUvx0&VMSrWhE0Y0>$?~?v^_jpAU%}Lo=J>Nzom2B4_ zk&`b#XhYvi^7ZK3Pv+1;1RPoG&>U9iG;UTi3kC z5XRVYjCa)@jZz7+ei#FZT`?uDR0C~g&iUa^D--S4=bgPITTCl!CtxXrD(K2b5Q^A; zxBOZ0s=J zU`KYqW;-c7twCBQ_wCIjNoJDcO0Ij#lJ33#=-X0Nvp{Y_8oPF%S!@4GQEb)Cj|?47 zPXZZ^0?IpR`kZ%sQ$(4L$J1{+s%=p1lx=wG_l^=w&06j1G+Stwx0(#uUR|_u)}g#( z_mayH*AliruME2XJ>O@ga-oW;l_oEMKo#W1Zu>r+30-lyEj}}w&98x&RqaUk{2tvGtc>$Z046KB zKOI4)XEGIw=VO$aZ9@`$fxgPj04Sws;m$*m5qhRHGDbQGskDm!(OIyM2Y|CWOQrZ z9+N3_(Vl(oKqcBEzJt%YSlzVj9&&W%E0Watm02A8_o0lO(%bx6U^WTDbHA#ZVMaz4 z#c<~Hweg`dL);V1Ltz$p-FG?Zl_Kp!gAIC8ut#ozY+c_&S*|i1WLH$J%!f|?R}+&E z5xvd=2(ufORQ4!t(YP&KzFm>R>~TctYYc;>1oVp zmjNNywML}fX>QrUnK&CWTioYg?bzU))o_h_-R0wc#lerssG&pGoDbHZ{atIDY9f8y zjyUCW@)8H%#9X&m%jPw0WlX;hX(zlTs%Q2a3!WY72gDp!ysdnC`hc&!2_j!fSB`@$ zn8PU==W_#9Oz=7vu)u125RS~}7nIYyk@(q}Jn)T={uXU#rCBKk{NV+$0Q@Dog?x(v zYu|hr?pzO)E@Yh^s>Bb-_tDfhA9~FVkb^35xkGyZ;G~)-bW8eG1K~74LAtSj)V$1z zmCtXS;6dz`+pju>>@K?I)n=hwMv^*)YfS+F;*iyN025z38VB8C_E&EUJzrlve||x1 z6~+<%QBe;=9q^5j)ZwXNNWRF)}BCWn$~gCL<*}N zjD{Tsju`(gu-78q!Wv%M?JHT*2ln!A++zDHAPc7P`q?Ikj}vtn4oIQh0E4(aOFfRf zo)}aomOC*gjeD-0@YJ~0wEQ79RlbNtiu`K-t}A2M6g5b+k2Z&@jYE@9D#$9UEO-c>~a|&(m7s zuI1{ve5=&Ofndbztpu8tWQ1&1Hxdo1Fy?~F;XpRTSY!V%B8v7L<@Ve6P#ezsKxt=d zXRfO>!0$aQbX2sgHp5Ax=QDxv3)b)yGU{cs<$i%|Qh<0tFISBF+F>#wsL*QS2M6H4 zrRKjUxqs}5Bh=bmzwtTjSwdGJ9kKkPy|!;+#qRD0XY~u8ZvYSHU)?KqCN2^CYN!4I z#9K&`30kZKctF?FLuy0`b#VM^zY1dcr-Soi4gqN7hkkZGsyOlTJD(22u-^%vVOgpP zSI6GClq+*I+}StgIqWO==CnwzWYN%nav;z}&OE<^#HX}Fqjm8ZJ~u}?(uYc|+U$$7 zCy=@qBR}fOiELy2izcd}K6RS&<^ft&ht{ymiLp;{(H?;bqgU)AB(APD`dkg!^U3 z{>IBdcO{lloODYWt`zRKwd4^zNZ6Gibrg=G-^tK1UC}no;V^)+h+uUqW4C-wp+&yA z6K)(i_=JH4nCMuKsVAHv;jnaZ$=hoJe6}P#p9YxsiM;Cd{A1ehPd@+H^J-_fI&kUp zUncGk@&6$cH#5R<@A;jZrvDEg&3B+U+EUg*d9KpZ9=~2aB>%X6g|8_2tt#(7 zH#`i5LJ{`%>{UZoLTcF4)Uo#v=DPa1OHLA7r>Aa232QdQL^j*j`d-$^8&v*0nOk1@SLsM8a zIAcV?i2cOUVepjS_-C$Owh@bRt6s;|-_bN=T@nut4vu2K2V5QD=u_tmc$M|AZDKw9 zLJ0>pU>lNXOG_|A1pt!lCcrH<0&rIJ4k6cWo479%09IE;|K5Lhz}2TWsErcE>n(Fu zovoCx*%B*{R5>_iE*)qdvRiNBxsh^_GiYGwNV+oue(4l+P;GIsx1V*^?k~XG(0aYtGUUCt!$Jxu#;5x_FiVUIygnb%+V)C0?U7d)BL2ketXq&wJk^wW$Z#2cCwuowUJeTq^^ zYd*sTm8=0u0R&(V@d4<95bwF3-TojJElM1CM;G|H9h05rcMa{U zSA6!WQOgW^GWdHOK!>UYy5;!94fqKjsYxfqWm5ZO}&x zx7so_Y~rQi7QJ8AKf>!?_~oEQQ9N-eAt3wXM~>W%gW$P-Vu48RsbGJg@eFT((#mMd z$GGu#3XAGha2S3L+m-p{PwH-p#Z*XhAyxu@GA_XcMZpz)&Y#b}T!~U=p#z?RQ<_or zYM<=dU&?iyLH=Vv{%cg4YRKIE9}fvKn;hY3v7hH;VzaND^Sb{fgo;A{hlJ3~nqA0; z`(ZldE_caY?l8LC`6p4`7EIOn^ARzU0v;@%rG?$oa2VD7&tvNUncx_AVTE@fwct`i z^u$eQ&%rv`O|yCZ8XQvzx&JS#@9a`m8T z2?!zP(7a*K&p>J~cgr^?0NXnUX)&9`54m+9&51C$PvATdwoeSOUhqAHAr~6(m|+wg zf`?RL*kPzL)XU0gFKo8LbS@jr{y&Mrp#J%2!2el5zXVcVmN&hfe`a&_odL%GV(-+^ zRRyH~XO;Z#v99($1n@QO^UPc%D)Zlq`1?3P`3b{=tC%z4-IIF{B4VPWqht6pKswm$ zLogU|IYpfM{@x7%(D#E;{1!yE3hHgc1H{23^R)>Ay)eZO;RW5-zL@shv?o~!4eUPs z$hI0xd55%tl4T71q|0k5X|DQP*YSwI8}3-%nIt7^=@s9!i)cfKgBJb$RqvdaYdnbO zM;6Uhd_WY%y}U&|{zCJZ>s1oLO>QPR3(L@Sv)2y7yg2#0rzsP(w0u+c3p|I4KAMju z&r_|m<%i9s82TpwT4c|;9LmI+;#3^@2#0%4@m_}uN{n%?J-^X08LOnSI;9~l6tv^_ zDfp_=YC@Hh0;nr`*rfSa`W`q*<4@MjFT4%(59u%dW(%-Rvx|J`ck zt)p(lym57YyOU#Ds3`+0juT^(4I~Mrs$-Xs(A{MT?pxDbntrVVTbnsJ-779h_Rv^G z`NhRzU-Ul}eEm~%Ad-s7UYd!*K1;K+%`sSNmKF!U_N>?=Sii?#q$F(asmwU?Zg5r^ zTa&5cnguM87fMz7R^h3#q2+T8+v~l6Ry41WyWOWGoAmQ(it(m*VSvFw){=We3PU|7 z8@%+XQ?j)D2=NOyv7WU~(9DZ0-_?&tz``G@97n4cCM>cKv{*HsYH{*NY>KZ+7cC!@%XUKODJgec!`D7zJ}p64c>HF{km_I)2QTj7 zN}v>?f=r*Sd6J>PDOq5SfH308mmDopITAd``#$r%Xe#17o`St z>E(i!Xy>1Lg}nc6=c}maO%{CT?Aw#O!BzI!7m`^Djq#2rXo}CTv@(vTV3_5gGB7J3 zkdPR*wYWMPme4|mcrAsgU#AG8nkl>{sb5j1#!4gK?OFHv;~uR#)y@`NzU>+^$fxRN zJ{6ojMyAk_@iUdS;MC2BY3L2)8~bDWKf7Lpe0`$ApFcsOXNx6W$q6ZmlHPmzouR6O zxMsI|asO8{Ul|l<(=3Vw7I#T-2o~JkJvb5EHMqMk8r&_oCO8Cl3GTMIyZd6xUhw`yvptEZ>Cr=NLhW@@^-04E|_H@FUfaWIq=;0ewo#Pt3~5YpJw;Bvi1uyOEQsd z?Q|j-8F(O{+?HBkA;uBD8BzGXa&`>(BetrsI#8p81OLRf8xRM-{d9V;)5bQgi@0>< z;U9Nh={DiGuB@GpDngCWj}8ou+K`Y=MNThbNDgYD^;{75b=eh_csfGWI>Pt3b;gV@@eNtWjugv=yEjPQJk(Z#M!LyHO{-(5WOMk7Sm>tXb&hjCqhUzy9|kp z2C9ErzX|LI+KQN_$p;?3*u30a(J7-Fg_`!|%W^i;M2EIfmobPQv`xH!1M5sqvW^UI zz%7hhd#Xh;AfZmpY)$1TtI9lShVw$TZ(h+2=-H&1|H(X&$VtX~G`TZ6$TzFRpZ+#* z;``h0OvL2}I|d)@1m%LdAN!>VB>HPYN#{*$I{og)&uaG3N3wK)F|5u;ITlUw_=M5` zj$I}%_-XbfLYF{dfdp&C{+a#pZp6H?QTe(N6hC~HuAM;8<6^}W|EwcUR|ZEyBS_&I2TE*>g*b3!q|6Tp9LP$Qt^%xBR7R{DeTD z<>LUbBkMb4$W6$?D`q?D0O6A25(;3K`QT`q&McUSE`Jq`2g8dl3cp6SrE)^A<%GUy zYBqo}F(iXHOo+aljy(N1RRm3O`m-RHf<->kZFDj)u$*^LBtq1W1;dn=+*HL0jU<*j z(FQ~|OJ5H6SHey^I$oSC@H!9&iZ%fUqt+D45#zvrXfOs#-UkX|ZncS$LDb5fh@yGw z98}?X4cm;;Lz@oug@ciTAw%l>4F-gvx9N2ZwgtfhB3)9P)MPycXl({`==<_7J)}bw zu9#zylHJ41>d|&sX4_T4b+r@Mwv%_#7vl&PXP(%T>%*PIB>IS#saj6@}ltgO1P6$I=DF zpGT#K(EFlp*dy1T3g{h_mn`#?$XMFA*Mzo-MNND4d-JrY8l;P&!8V{v9}`cn5=~mx z<=?G07XW+R^7jTtFcz3QHUBk6*nE%iwm&6`) zQRQo4Aq&&VheF0lfqWN@2Snbj>9*m-imZOY&9QHRJ(Mr815Z$vZHe>BjfJUEapBVJ z`~9{Wt@IHzA1{QP3jy;8V(Ol9e|yVj4o$1T`++ujANKi$Z=AT|^ga(IZdm5*f8cS8 z=FycE0>U#CyT;1iEwSVr&m4M18Yrh z`+W=FNdl@?!h}0wksZ6z^3n&tA$j;BC;^w3U_;?0bL;_%L97eRk5tM8k6fWL`KX$s zeZ8H}y|WIAr^{4sxiKD1V$FLmt(@Ha3q=lI9Q1ANNexvv$d#F#_4A&ZxDF9+ag`MjG=QH6~# zDiAA{41cIe>*Qd-GY5aAgWClj5>h;kjS8}r1_pX%Gd}+!Jy#;G>4+35RqV7L5RPgcRdB$V4fM8}wcRAs_bor@<5*6D?tn1`f>RRaFd*_vfC0M*G*w$KxcT>;N zpd$_qL-Cd|tF~o7UxSVEMul5-??8fAgw6@Zk@A+(zK`F3@pv>@y6>H2%Rvo{$+la) zi?}|e#eQ6J{UgThEO~$@Iag!*lYJ+a2(h!st zlDmuEfJgJbY$Ku-{FvwiLskWUXIPBloGbbn(d+G2tx-x?xgF3?nO_auk{5I~-{>}8 zOYFY!O%QjL1FPp1=3*m`!@V*fN&)i85OWdRE$PS*Wp!bilsR)IIoDK>v<4XC34Mo7xGVf~^7#Gw^syz5> zJC}@iqPQE!(Wc)ntBpq`dFrl(tB0kL>)z&)RgleLgfImZ5l>aB45HNjxMgd$d~pjK zdA(sI2$Bi6oZl*ar76O_17{BZ3U_)gf$7@m;mVRDLMP>O+F6`MR5*za81iU26(_k7 z80J7>jkDkM>I{2W(l285DgJ<#iX-+EB0#;e#e`kf7{yQ z5nf!kus0BU6m9tt!aUc1tJO!DZ4M;G#K@* z+&AQF2gG!FMChu!xMjdj>uY~JT{Y6BhaDyx)J|8GPKiB+o>8!W&sZyXlV=&T0nR${ zL}UYhf{9b49Q4E(Q-fE<9L>f$rB)Z4siEbnGRon{f}`UYg3a!W+-Q);FP9$R(;T{& zcbe-%;VQ*V`QVuiF(#kzj~r>6dB;i}f$mYgI<+F$&!PTm&tH+Sw_9)LH&u8iPV+6# z6X(*t#9ZqGN~{rX&|5Q#woB-DI&ztc!gDx?!k$446Ou?^0s6%_!Bi48PLcK(u1$tV zn(&8NW1cfY2|ieeZY~~q9gIW$ZN|_^nVHa0%ju`XW~{iNg_9-587t?DK8L8_Ccrw4 z5bawRZ%)yu0zkQsG9rTmFSc>|ES&$@_MzykQQ@~8DcpJu8-RZT0c>9TMYv{a4qTV^ zl8B(|eHKHZwLLrowZ`V)*ryD;N)z>VkDDZKoi1lhH}=AEe(nftgYtLfYzl`&x7|eF zu^Z;nd6z`8VLm(Lafd}VE&eXFdB<7w>6vOF>qzmeJzO*HC}cmYOlOnZ_Ac)p1FfY~ z4Mv#C)%PyG-(e!{gGaRS-CRV=*>>tS^*1HPx(BgVZOS<0m&S=oKdX&tt)$g*e4_Zg z-_!5OM7h5w=h`B=9Jz+;QH0UNh{b?cLj*9mEcup!O=)?pF0LnpoLz#CDC6-eh3w+2 zPLZ7m9qDgSi2Jc8)IV@{y>4kEC*M|Rt*8;S$T$RA-fIKsjVes{#MVXVyil_75Q9OA zSmjl9<;!q{$6*aW+j+F(rn>li42k=BR;l22qcmaJ*9`(Nz24Aap`Xbx{{**A#XgBv zKWgg3U7?B#h_VCnkpve;Em;+avcF2u-6EkqyQ$dWkiVTkkoj~K)HZ~6i`ZXyRDC|W zrsgedZONP7MX0n})#a|K_TccW>vletIIhA9ZD9Fxw{+Qzauco0**GSrpnfrA^Iai@ zD$|h^^D2ofLSJJAq0Ta}josblfowY$)lv)zuB3d5^TG^=oaaT^CnbTfq5Ef~yrAb< z?6oL4JfDjWB2ed$G9LA@sQx_@`FN#bMWa~?RqPwD;$0f~wNUXR>y=SLZ1o)*N>0~D zzKx|oPu%rmQCx#;jX#I&3_x*X$?4m}Ta^b&C$G+6qx?edPc>t9^Qi@O;n>tYctQ{^ zPS4mC9;#pXxzp;9qp6#9pk!c>8p3WTtw@tjY#TL-1dQC+K>ND4Tb|j*8<4e1FX;1- zjU#>R7diNgv3ko`OtjY3BtEPbCNY=l`n$p2xgf=5ZwJ8dx5>}s5v&UzMii-{@k|Xo z(a6vJbF7)T&QN7XQy^2uQX)*<6D;=DI8+cR!B8LG6de|Pl6t9m$x}k{A34}N)DhnX z_6}{J&s7lk%PVpea#6{|_l?L; z`YD$#eX-z9epC8*J_6O%5WS^_i~^9m4o*I-yA9FdgkXJ?Y4WUHDk${Eeq5pKAlmc+ zP3~RsS}?uTV^v7i>zwSKldUrdjHO3y+ zL{X!rz87Up&SW<-|D-9`UV%6qae)yJ93BzH6M+(Cn3^Xd!0yxX)cHR@x9dy$<9|%C zjl{wGb?CA-=v^e4TA$fIDp?L^V%UDR$Tl3}M#fFr+v6d$1H9Jd*Me(Yg_>+WfhKo+ z*_YUOs6f9d=VPyPj`@#FZ3O62(4N@ksJeyZlpEk^^-%k`C+=c-8u$k&3FJ@N1*zhO z$nMXyJj5qJ3e2gVxBj+1mj2`!Xr?6S`BZur6CmjFaWmjcGmDXRnT4^jI|o;JbTK3i z*k#4sOreJHYqSSO#WaO^9$~&)K>0f!vZ-uI>PV5&;!Dxx?mak99{KCNtZ<#iy+0+a z6VG9$`;;8#bq!G~!PB$@)g>utIg$_!wmC1TfZBrRgGUiR`9)>$xwW@kT&0jkT84zu_ek)%H8bdrwf@0GDk5iUrzHp^?Mr9*0gAQ{JvLaF$I%|PE}I3SC=oCj3dfE zCt71#&*?Ed5G&$TCwTTLc6@8D`^Rr|nnQ1&&4IcCD`u5zZD5KOzh+hbjNNJW)Ai`s zI+Q!|P+Hy?KD9g}2eaFO%k$8KyKrs_etYL)r6tc)ZFORlFM2f1z!fiQkZ|9}LgxWP&QyO53NtUEXjOUHD@@76 zpvotRQS0yvM25)IBtvjWDlrG%<1P&*_)N8FK=(CtJG(SB_;bsT}(X& zNNz&!6%C{M1NlmBj}J{PoIh`gVk+_YGNHj4WMw2$kf-PdSud6&tlekZxQqweR5|BH z3fNL{fVR0CjbY7n^#Hn8Xd{^`JKi2f>x%Zxk!mykHmdFlywN9zuZ+%$B4G55nC8e0 zUTlo%XS>+LL@zs!frzKq7!#a{q`|9E`n>tecLEn!AtP(R-d_C{SLgDH3`dD(z7O5e z2bKY{9#Q1gS}(7&v*m^ZD*2syef}cE0e6sMd<0a8YY2FLrEC1A`03SBq1dTX zqI%{^-d}k>1bx~O3d>wvHcO9YW6Gs0TR<28J+jczwtpA0lXn-T&;-b_E&O4d)!n}y z-Rl&Y)&BZMBAHlGnDN}k5rG0A2m8-&QUiM(=-&U9i5uw@qn!3;%O?C9j9sjy@pGZa z-mHS@=Xbhak#ck`onXU#CkXra*3tn!kUC@Rb$zOTN_n@6g{##PyY8Q$EkQbI+2@nu zQQIhYEr!mstmXAhgWM+AT@AMz4Vz@sH^|cwlhApi;-rq!u&j>U&yzZzS%qj7buRwb zU1OenzGgBw&UStT8_&P(1?jSM)N|r8aOyV4=luBto4r_mAhF(ZVuU`up(-Z!u;Xc2 z574cl!pyu8_He@Oj4ne(Tv#IDi7X1Z8sxBZE}8g|8l|li3vE6-JGKPsn7qebgRVZ+ zdq&t2a2)9VmG(4*0d4jtaM4c8!TvmYzgBN`)SI*1tw8|w5rb&pu|9OIS1bNt%>09q z#`&~C7%d&jM{72_qKNz|sV0wu*e8F~Bwbdy#Ffz@DYQ*j_;E)}?G)XmC|Snc7& zPPpnB@ZAdEo-X$%-($%Z5{%={T+FWi$ckMafSpVxB8#fJu;io*?5ga!Pijm=9Pn-< z!Go>IAR`kLocEK-y;C^j>h+ON|yS+%_w}$P8+Shi5U-8 z@@npn-S6ZjX0U^q4gmbzL%5rzu#twxkR>Jd9J6T;6TlgbhssBTUuYZ9HRfpKE|>UE!&Dq%4VRfp4Tahkm=b2*w62yx__gEv(`_N z{7Ua4=J2e+F$1o}xb}Wc$Q>w`Dywc+i!c@uWrmF)Y5eH%W;UWa@Yf-aYm#Lw_&!7MpH$!-H(IzVReDztO-fR$;v7p zn<$?&gfBc3)l+=9e~0ixjRqDnc3vHBM8MB!Ecv);>@+Y!B0p<$iEEHC!)>5;oehz| zF`Dyc8%8q)UoC*UtLx)!hKL{Z+wZ_1fpL@9Y4SpG)>)?*Jq_sLi-p_z`JX@@89I>% zNVW6M7y%WsQiM&L1YO(op)iaQsZ`Ph&2@5i^P%DfnVY&Y)u`GJ?Tc?|rbme*6Z)n_ z*PvX6^$6wV?pYu*1MfxNJQ5O|W-O|kRkkv%Q^d8v7X{##R!6i3= zbG1P-((q1%^XWAw<&G*H_tBdyuZ<6PHQ%{O0Ffr5`BvmP&|RXW@+9*t-un7fQ3Zpk zcdA)abW9Y^+Vu9H(S72NdJ}b-X^sw(5}quB6HYvV-S>a4hjo!n6j%w7M@qD0XIq!z zUP7aBro3oPsL(zP&@-)1`L945Jx`@`9O*MWkNo)Q)VQ9snE|0) z2ngyJTe%D~Gq_-Hz$bnF;c##O-uDHUv9sT-%23CzYiR-l9qvYwgIlyEL8i@U2f=77U|KJ`ywKu&@0Zv2+JHTDeE{3 z$!&W0;byEJ;IG-_=o`?dA=t*y^4T9g2k6)wYTeKLTtDeA+eKAm@siazxkAv*k4;SK z8dU8a;6Ddw839u?=nF*12cTjVF58-1;f5EAvc-$p4#|MXq2O(!^X-g3)iz|hg*yB} zCQlqZ*IQpO{Lz$n%$ZugU$u?E&}9-9Vuv7ROHR&Ta@~Iuk^CXD)Erwf-hFPaXG1$DXs1ylgHHJoDR9pu2CY4r)(ezWDP+iOz% z^8wp8DLS@`KO~WY!;ZMk3F)8Fl;(Hl7nQ%kcgARGPI^q1;uh`A372r8c=pK=sl*HI zWV88X#P0i(;Bwv+jbZ^tb)a_=$O8VR?D16Eiz@FK6+FP-MiYe3ozr$dHoXMQS`>#5 zqP_83|E8nvMHfocmVwkSi=RzhR!|{*0=AeYdYdI?U35CyZTw9?~zsJ-FX@ zM-7mgd0Vf96uwDtuW4?;Cq&~z27}9IaFQP3fTMcN9vZTJ7Oe5oWn;SzOiTQ3F3Ob+ zX=@c|zZwn1Of)E%O>(1niY0wg+7PtP7H}Aw_pc?#*dmEGn19%GwpxgBbk}3WWc^B6s=_S z-w{PzTRe=Eu}QvSey(9w)g~@klCzH+x2i0EwCEuoP*6;4Zac`UUX&MytzSb^W~HFR zo)|ugxV^C|lG6(#GVpr<8^FJspc1Rwgs)V+;7GP6--0}oZQ~9X4X*fe>X+kp_gBH~ ztq74>?iEz5Ty<;nv9DLvjx)&)HA9^@-YRv82rVXqc2#=G@C}T~-pk$<`)zA;A&@xw7~o>r!X*!?FD2r9icO;}C+!oGXJRM+NrIb%f2&&C`N zFGBCZ{U1!a+V%i;*5JA%128Bq`J!wR+)3>%#VCO#luo%d@cfCj%>oMF8*6yapH#u3 zkEE9q+nbZ#FL^r3D3X4{c@AVuegom|Kh`Tmbj%71?sF)%qC;`2;;(O$ks2&#@Do7W zKEQ3sN#&QdT{%hg;7BNXU>0>oOmQ-jrSf$9QWxl8B&d#w30JoN`tH{U{6R=DDxRZD zOZeEFhyoRjrtU*Ju|r-yWm_^ci*Em&XzFL5;JDjRQAG(uIZ&&rFUKI#VPAhd7|&AK z*9M56Z4j38Y<BEOy-Z~?5XsA2mD_Fpv@~i>&_R;B_`5eiKy)Hk0)=5&&)N${F8Do%-Oy$4l_9%*3 z(XfInp;ISO+9@-7sV4L-CE;!%cPn67Y}IzJeU^@5Lh6C-ei%3wtt;|A)K~W}m0B$l z{*9ns3u6{5LPL`mi z^j(9Ri3~U!*;?i`Lyu%RP4xH4_EPy=`LEmRlZm&Q!qobGG(@Gc5EL{GMMjH7u+UEkDU?e!)nLr(zf9 zmLcR^rJ!e(!&ZUUfeJZ@YE>kaZ8F<1- zGx9;}|5iFWCKB0_<8g@x~sn;*lG9wy<` zo-?JW`~3k}GczJ^?;wp#HdUs&$cBtFOj)q#=3aoc>$=qRQ%wJZtHg3eR3OllYE8um$}WhZ^$yA(rI8V5UQ zs{U=n*ZOcH3yty()tI_k$LRL`vWdZj2~_wo0_P-hQU9KXWU*ZfDu!RDzxIDR>&}0^ z+Pd*xgFPxU=d=Jv*uzb|OpxkhxeMqYw^6|)uX;BV{W7Jl!zZGg2zA-;{mEq4@2Mf9 z;0B283D!));YtDe2t7qhFe2n0RQB+Ne-n;n7W@sU(?sSbu@PqVusOPpaZgU!1(Vv< z>77uZyxm~@v^>+syP^4VZFKHs}|?c{iXR37x4$H((>~fd|%II zpl}vy;as%?q+@tbc>jAGfNWgf<57ZOBo<7#wxr-uRx%@Yp%ZsCE}z~pt0kdF@cCEq zR(2dxdh9;*aZ17Q%@7ORW_y6@{IWYSw5@kWTvqocL!)ORGH_vw|6v=x$@(}w>wfL3Z80&>fs>BiDMfA=#eAp z0zpcbj2WMP_!U+)H&nH~JU^EQ`X9Gkxzn89LZ9Z(&(HgA{BGzDpgtnFGf&7*{=U96 z#bDe!=<~Cp;yK+3^zt%3ZB1nXdg<~0FTQjAJmL@%3|U`a|A&6vuJM&Y&&x>de{}1z z{L{^wsbuUW`iOh;8lWNnmrv)a-9Pl_Zms{&KS4y;+jFX+n+|gSh_(zO~5ba+v z{@&gSfARhTSvY^y@`f7Nw(D2@!`t^YJorV07cAP!4|TnM1}Q=99^Gd;GhbG3&Wrtd zA+3k&{~bzaV&D0%UjKF}6!;7No3T*;v;POvees1J1-eGgv{po zCF%>^_|yTS?M8RY061J1n0f6X+#UD_iwhwYKsXfDdE9iP#aIVVbF<@o2e~I~0cH@2 z(ZkqwP7I$fkBao>RZa}-=7;^NzY8qjV?g9z%m>(CXs-=a78e#qj9P3O=6~0uV)3u= zKXn(o*lUWw|Lpw_{6Ca18x$13UI#m1VSRaRU`XERGW~5~KEtn!2hesQJ)^P<$rupu P{l&>kD@#>M7zX_>Y$iK| literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor-bbcode.png b/itf/static/markitup/skins/markitup/images/bg-editor-bbcode.png new file mode 100644 index 0000000000000000000000000000000000000000..39cdbd832bfc3ab8d3dc1d00ef45298ed6b06c25 GIT binary patch literal 1642 zcmeAS@N?(olHy`uVBq!ia0y~yV15B)pWt8ul3!Y5B!Coiv6E*A2M5RPhyD+MT+RZI z$YKTtZXpn6ymYtj4^U9P#5JNMI6tkVJh3R1!8b9vC_gtfB{NaMEwd=KJijQrSixdz z#-$3NQZbNH=c3falFa-(g^b+fH8Q=U1+?g}A&6w0wS4*Vjo*Q$h(N5^ zdlu+0hQlj?dfvUuyS4i3*RTJ~fFgg+tl$BfHKRP_*b-hKmpOK^(e~}zC(BDqOMhO& z$iVO{C4>#=Iu1}cDBNLWP;j_U;` zkknkTvA2hW?*VXFWLV#ejgP4;k3yjVM z&Oo=D*31DWU|29spFSNqn7}bna#yRku+Z@5#=U!O&r2~dB>07HKlNoRFc@a^21>%h z0pi;

    ?i$Qwcb98o&x3poNUX)t=u!e^wUuN&|Pa}YFDaLwi*~qJjcOt^+Iau&n>%mTmLMqswC=M+$Y0jvU?IH6(pkMZ)!lb#(0i|Ni}ZvVZa7#hL!V zr2P;nX@iqUKbP0l+XkKOrq?L literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor-dotclear.png b/itf/static/markitup/skins/markitup/images/bg-editor-dotclear.png new file mode 100644 index 0000000000000000000000000000000000000000..b3188dcd5625c7c0a137ee1315a0e6ccf755fb20 GIT binary patch literal 1682 zcmd^<>rdNd6vt1C8{LIVw#m(Lc{5zdfNn#_Hc}|1796rFWe7!A2wlNh+flH!P}(qs zY$R4kx-bOGrjZQ|mkjBaIAGKSk<@|UFq_p?KoM3JV9h490!i@dx;Ii#$C~ z0kCZc^`d=mt#;yJP&xP2a!#4Ju)I|ER+OMrDhB4^_ydXY%tP%tnMRBVp(3(nr^=Ou zWny3#%ZkKNFO-&vm9nzaisRQKvj8?d%1C1iRLyp4|FQWuLxyY(oXxk{@|;~S@7^tV z82Rwzr>!+L$${Kpwy&=*TV0!4>zJ5+M>^gdUog4r9{=M-v!&&;BP^C{6M*ynoWWqY zdwPxcXf*c!^@dbxPj)0wz7&!iyiaE+0T}$AslL8G)=iaK z-Bgh9%mGU-Uead%M1v@u+!u5pb;pbk)?%uC7tT?c_o@?D9#wwTy9Egj6Ky0<6m=tI zWoc>2s?_WCGs!*O-TU>+SS`Eph7Y6w(RS~I7(k~@8*}3snA?SYl`7R<_hpO4awz~$ zG9^QlTat0KH)g!#uBd4yw0=K8S2{PK&85-v@@XLY@QZIzr6(n^+ciZw_fkDbr4e*? zcK)JKYPBa_9HCISoEQMWk9>*K;6D$MfYbbYM!$^3mn!E5(TwL55%NK1AuE+5; z)z$u<%4EVyDic?n&Z@HR{{H?C2+vD|_|0271U9QDL0+Bc)f!5hTUsi9R>kIbc+J-afssPY*1n$st${y!gT;kx+@J=)ZSqYjY4%}VP?71jI$B!UcS literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor-html.png b/itf/static/markitup/skins/markitup/images/bg-editor-html.png new file mode 100644 index 0000000000000000000000000000000000000000..11bff456808bf9f846ae0af5b4b0a7c3cfc020fc GIT binary patch literal 1534 zcmeAS@N?(olHy`uVBq!ia0y~yV15B)pWt8ul3!Y5B!Coiv6E*A2M5RPhyD+MT+RZI z$YKTtZXpn6ymYtj4^U9P#5JNMI6tkVJh3R1!8b9vC_gtfB{NaMEwd=KJijQrSixdz z#-$3NQZbNH=c3falFa-(g^6968`{@d_u)A# zSPitA#bPQWLqo&EmoGElNir}r2%3S6*sx6+Xk0>Z*xt}*|Nhne;(z=8eSI}BViGKu z8-c7Sod8nx3h0J|2M@L#2O1Yvs0H*b;~|h|)#jeMbN6m<-Em7^28Nuz_F$l|4y**( z=3_P0(#Gb_7a5?ZxxiK_fZUmI>F~!JO4Z;h68)l_J*dN0=l;0ERqYrVFV768D9!sef|3NMR{L;|8+xt28Im~ zQ+#gi@P9aUB9L#n`XBQ$eRXy9+4F!th&Tv#C?YrwUOo(g*aQyJgo?__nP{%LdiClT z`CmUjKi}TY$iOgdb0ILm8$9!;&O9_b9Tbdh*RNlHd4J!YJ%9cbR8{SoSqXHl>YP&y z3=ZJ9X|Uf@Sbh;0KlPIlQCR>EPUKLiuKvA#e{4*Q&;Ny+H*YRI19Ys;$9D5~`-{H< z_0E1A0t_Oiw(sA+?*v-P;C2I)jF93!yBZYV8!QnbEH;^DfgaO!ANCNrs z&?%fm4C$FzJKp;2$bK@)N9Saz`{|^z`zkv z9`dZexw(120WcUph)RRR1Q5EfNPagw4>WOhGT8P*vJ4DNEeOqhl`met%=|F(@ZrPq z{LBmtYs_A)HA=4d%)`Kt)3?|N=!gv!m6bEWZfgKr>QirTJ4UYieZvySlr( z+sgsn9&t8M5@`1aD-R$k@s)o@Uw{ApUoRd$Ok5Snz|gSXLJMdGMi7zAv|6=zsH#eU>59p7Gu=>(i63~ojP zEoeBqu@E(|=YaVLvmdMg1`rF@cmewv$r<283UTr2l~_UzVfll#p!9?usuqX<2OD(& z9GV-@90*RbI(Bw;$XN*yH3&d{w^BkBf O89ZJ6T-G@yGywn>7PO22 literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor-markdown.png b/itf/static/markitup/skins/markitup/images/bg-editor-markdown.png new file mode 100644 index 0000000000000000000000000000000000000000..c1997152233017b54827cc41e07d0a2870c3ddba GIT binary patch literal 1783 zcmds1`%hD682)Gxk;zK7F_25kE+ojZ70Wh?a;ZpB!d=R6p$r-=f(#0!P}maMm@RTC zb0(`(Afp*k3L$z*w?BU_bQhIp2A|_kG^y zdEPHSJoLDwg`EXL$TIMR|4D?%26*l=C&9Y(E!P(Q$Qgct9CLH?kw;-Vc-@zF;`0oI zUV8)kne>n4uEQox#6Bg86eNhmJRu*2@Jl6F4A@pr5 z^q7#(6D0{!oj6G;eB|ayXE5n*9#v7nWeAyt1o|K4WS7p21qC^Tyk(}V^$p-QT8*B| zv&qwa`2LG{$)$pZyaEruPd}>bdiM)fkKYwGV<7fU@JP!uuNw(f*FC#`Y_FU;mz+H9 zi;ym5IwUMi97{&1SK;CAK9FgN5R2?6M##Lkq_}uWZHAEIs6Z&Jo3=wpYNpB0&#y@a zpmyupOcRK8|J@NGlKCt`R*LATK~=p#+ahmG%*x7gScWjNp^=PO2oHKtba$zzr$^&= z5TQ1=!`Km4+Fm3@=Z_#{>QbCe{}XWhdc1Qh@!WV3cRxaIr}}O( zoJYOj$jl*ESWT)*N=gW9cv0yuJy09XR5nLFF&fqD>^W^KtqC-XcPnQ=?Y7MCG0>@; zgxuVg`OWC)Xuazmgls#Mkloa3)C4)P#+0%{a3cFXhtNF$G=Pur&3m_R`{_67bb4nr zhUCh3SOYIlJbF-ASh!&0Sqiq9=}X`0PuU{b9N$52xcK5)oMUJ#m+OFoQmJG3FA8Fy zg2MY%onUQ$f4}P5;^N}GHMFw-y8d{DZ7sRWCS_D45-lyL z)at`eZ7}L^TPYGdG;{ZR0!B=b&YB|@iyt>rD3mzr(9qCuC6KFxu_AaNk;F1Q;T8@wQUd;8Xz z$xXN>WMhA{luo6&g0DMqE|m82$+gvaeRuo#__%@g`a( z_^(Y!IeWHZon7WDp%N2uAriAs!~x7%9GbAKk`R4@y(h9!8U1}Jt#%JW^>#KPSF2e@SaCzIwtUhJ%on=Nx z(k`Y_aTD*jM*g)ixVV_{@DnI$xm(`dsCQg6IFSEn@c$GljZ1o-Pw9SYp$C#sAUo8* I#xMT--?jQjjsO4v literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor-textile.png b/itf/static/markitup/skins/markitup/images/bg-editor-textile.png new file mode 100644 index 0000000000000000000000000000000000000000..3ab1e9f6e21ebbedd072bef63d352d26720801df GIT binary patch literal 1659 zcmeHGe^8Tk7=M70`2+I2+!?UgU#6%Hu^$7HEgdK-8_LGf4Tw2klCv=yQ$(BYOkG_V zSEPr8wZl6hV?cH0&O308+!WXmDCcmSFtxQNEUyJP&q2@o-F2?I{_dat*t>n-J>Tc~ z{CYmf7jBAMkgxy%;&L|&b^ye9@%L3mG(LYnR=fZIjOInmu&k2;OU`U!RzAv&67^is(B?zR`*+<=P;Rlr*;V5 z{~>YulY62S+s&3E$GW;6tUlLXxz4(NrtxR#%?nMQ=QH|6tz+pULqkJ60Mneb+i2uY zCje;Ur-p}z?R#)~hW(vb(8842Y!07q1OfqhXB2=pf6!(-(LE19-+Nik!CLQfXB4ot zRrH0u5(zIf{qUjvwbdNXOc1NQ*FMSwcxtg9V6k2y_Bh&mu**5Ql?4#Zr~zQ)&-w1_ zbUKfWqA2YZY}k;Oez){DyxX|+Y#LtU8)JYE?s$Nxqjawomn5Fq*`7cgKx%V~l-gpH zVDWLe7@yH%kw_EEfF#VTn|F zzZ+vx_RV)v>d+Mf@=8r2?DPj}Yo9xaT==o1i+-}oXS3x6x_WwMUm!qNWi`l(YS&(izVk*qTnd8FI!izm21M(_O47gIqGyK9Y87g3;#`2 z%Zas!s>3%mwKq(lt`Ez@!rv-)c6M|$=?n%#))QT@<4dXOc@wOJ8}$;c)P} zQQYH^{=SqFupLF@buE(_SDDvCOK}P-%>Bin_s*S`TKni|@E6+7zX%x$g<8k9cw_?u z7}I2Qy}XbfeSIx4?tFcH{nt0~tPTr;2nPoTKhwEfu74mj#^V}Bhcite-?;qf(Zoc1 zt=-{BEJN0&UHfQnO`oD-x3TB9JD=o}xX#D?w6?aMQR14opJfTxxT{hC7FmfSZCN~? zwG`9zoKV&b3M3e{iLCCV`a#W@uGxiJJzBe6?yvG3i?tStXy z&-l20W+zU%MjX(#Y(KrkQh^t_*=N&mRW^2FyWKL9_lRH~B=KaCoziGD;U#^KoFkG; m21eW>d;9-OTDAXHr3cCP;w#&V1Vs`IAmnBX1sxm8j{E@>bO@OM literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor-wiki.png b/itf/static/markitup/skins/markitup/images/bg-editor-wiki.png new file mode 100644 index 0000000000000000000000000000000000000000..7887181cc73d3c653ed7c3e92e2307accacfb502 GIT binary patch literal 1488 zcmeAS@N?(olHy`uVBq!ia0y~yV15B)pWt8ul3!Y5B!Coiv6E*A2M5RPhyD+MT+RZI z$YKTtZXpn6ymYtj4^U9P#5JNMI6tkVJh3R1!8b9vC_gtfB{NaMEwd=KJijQrSixdz z#-$3NQZbNH=c3falFa-(g^=1J_Eyp z|J!cdzd!#s4+F!2mZJv`9=wwdv{h}!4rT_214;S$`R|N@d||QOyLT7QXJlZQvEjze zn=>KG?-$DhvB-TU|d|4~pm-Fx@e{aY}3@?@wJLnVQ(`|)hmnfp5DL1y#l>+3_j zn-I!|?9iP%BmX)sU%otBj+KES;@IhxAcMh5+OA)}z7wdK!N;Hw=q84Td<+bX($$ut z3=B8sZG5e;e*OCJ`U^L2-n`Wg@>m+e+@7_k)@=Iw$^W$p(CY7ykUy3;wa}WEfg$Jo zja6r^UcK5s7w9F4L=;VP=Fj*4x4%>h7{-ioeyl({R~rGHV_;Uef6tznzm94^UvIDl zkpc>!C`zcPuAU8!ITm41Y}~j}Isr8xA&x!-kD47|`+VT>3l41tYj9{j0{IWDbj>LS z28RYjEF*j(YfHmFG0(yuM;W%*mX^;iE3n~1gTe~DWM4fEfK1( literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor-xml.png b/itf/static/markitup/skins/markitup/images/bg-editor-xml.png new file mode 100644 index 0000000000000000000000000000000000000000..33b1c5d83a4dde90e6b7f6312d4d046bf5532e22 GIT binary patch literal 1495 zcmeAS@N?(olHy`uVBq!ia0y~yV15B)pWt8ul3!Y5B!Coiv6E*A2M5RPhyD+MT+RZI z$YKTtZXpn6ymYtj4^U9P#5JNMI6tkVJh3R1!8b9vC_gtfB{NaMEwd=KJijQrSixdz z#-$3NQZbNH=c3falFa-(g^x7mgDH6kK3elg8cN?3f7=a|Lw=B=v~B@f5f<$UWo{PgKlc?O0D z|F_+^e}DdO9tMU39Y+ryJa{J^Xsz3f9n1_42a@vh^WPZ*`O0FuckeEq&&a?avGK;u zn=>KG_ZI^VV362;N-P^Y`!HFY;DaR=0i_0KIbk&+`zFsaimljIYB| z?PTQT^MA_#WuzvDrLH*$Wb9dUiUH`yC80Bce!E!h=jUf;1B}`YT?or&d?|SK^5si? z8CC{{h@%Mme5zKTdHeS53)^d%3=9d?K41r5I=nLY$NN=46KoHE{`?sdjuBHCVcvdy zPpi1Nc=H|$YwO!j29C_p}^Q>xSbpd z3{Xfo`9w|qncxiMrWw9`c;&oJ7tpo)Pp$&S9E;Da9r3ZTy83#0dSSJ|)R@zc@PtHM ze0+GVd8+)eb3mnkn1n&W4f2`)U0~qUod59co7s0s28ISfaKt!(V!ojO9$S;|fx__2 zX@u{w#@7L`JHW{XNpl$}WYD8p03OK)qKQcg*o{5}Nkt7t hst_2Y0~0)dn0tRZOT~)rWdUX_22WQ%mvv4FO#ntjreOd8 literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/bg-editor.png b/itf/static/markitup/skins/markitup/images/bg-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..ab7cde4850e081e787aef81f3893cc55ead0470b GIT binary patch literal 1745 zcmdT^YfMuI6h5WuYI$Y>VI5S0KV;pbh%lHaREC`h0)v)`P@$oQnC<_5^!E1Tob#RYec$PK zQ4wF*GFeOjunpZA5)D8f!}r?^D}27lO>n_4x*|AKz+f=?9!C!1&$a10;}iha?-C!{ zJyZ4q2G=Wh>`}(Z4k$Ckaw+THZY4J3mD(&5+4c74H7^$@elbbsdrVxm+q% zrpOMu3sTag;Pn~T+n?*@S1k-L2UxQ)G-SIVvux7TuzS+Utga%OrcPG z?1-IhVh_9R&owS$vG&#_8-P`pSf@Ye=OQgFz_34y*3h=f>3Rz+b0tF<`{>DhAhQhhlr(*5Y5MgKl+wr|CKoG1JInTB} zwY7znYy_Zip&5Ger0Ojv6f~CMnJL4_6-nt{&$@XE$tbr^O-&8zLBSSIEKk6je)Vea zuTMutMrOonwfZ3!msME=uo$Dja4P&Z1~-yH-u-P;PW*XiWQes=8b_H-*7iqXQBi4A zvP2?reTnv_Ycu^{2DA%lP_c~^hc~^r_~@`LHnd%?*X;Yf*Jw1>RdsZ9a8-sxl=ABP z)3GJbm*iJajBD-x*f=dMO&#dUW@mrvc?Pp)EtkgMJmsX){z8XlZn6(&#xy%Sn>m5# z92e3e8ww3)PoP%@E)El3Uqv~n;bFO09 z&Te{(>xTS#v)Me#?KPRqhc=;WlPD)Ctn{vu+x+1A{U#TryD4;~Af)Fhw?Ucc!oYL; z_z#2h-A5z6X>UqVO%SLF3SRD3@zvGQShU*Q28v>sw(C|BKt()dq5{73Tmn~8MjUD7 zG7E!5HKXD`0#PsK&6Gbi%FS53_3x|v|5NAe)%v^%v6qu4dI>^zM1<4^Cms14pj9C; literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/handle.png b/itf/static/markitup/skins/markitup/images/handle.png new file mode 100644 index 0000000000000000000000000000000000000000..3993b20337e33a36c9125d139f1f53a279a4c128 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{X#0(?@t!)i}6mzkYX9x!e$L)vy4}e^r0G|-o z4LkP#|NsB{_wSo_?oZ!X{TC?CQWE4B{GZ|f|H~VSrU3bz1s;*b3=G^tAk28_ZrvZC zpje4(M2T}zYGO%dex5=|W^O8jfw{hsp}v86ds2l5P=!25MR0yvNqJ&XDuZuga#4P6 zYD#9Jf?H-$YI%N9cCmuR){ILPK&1wrE{-7_Gm{H=1WS1m6Eb=Pa(faIBBVrjnVf1= soMNglKFuA6ghUcX`bbD&-ZPgg&ebxsLQ0Hz~TmH+?% literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/images/menu.png b/itf/static/markitup/skins/markitup/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..44a07afd30f499cdba30847094a1e92f13e1320e GIT binary patch literal 27151 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

    +35?Hj$O) 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 literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/markitup/style.css b/itf/static/markitup/skins/markitup/style.css new file mode 100644 index 0000000..6f3a3c7 --- /dev/null +++ b/itf/static/markitup/skins/markitup/style.css @@ -0,0 +1,148 @@ +/* ------------------------------------------------------------------- +// markItUp! Universal MarkUp Engine, JQuery plugin +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp * { + margin:0px; padding:0px; + outline:none; +} +.markItUp a:link, +.markItUp a:visited { + color:#000; + text-decoration:none; +} +.markItUp { + width:700px; + margin:5px 0 5px 0; + border:5px solid #F5F5F5; +} +.markItUpContainer { + border:1px solid #3C769D; + background:#FFF url(images/bg-container.png) repeat-x top left; + padding:5px 5px 2px 5px; + font:11px Verdana, Arial, Helvetica, sans-serif; +} +.markItUpEditor { + font:12px 'Courier New', Courier, monospace; + padding:5px 5px 5px 35px; + border:3px solid #3C769D; + width:643px; + height:320px; + background-image:url(images/bg-editor.png); + background-repeat:no-repeat; + clear:both; display:block; + line-height:18px; + overflow:auto; +} +.markItUpPreviewFrame { + overflow:auto; + background-color:#FFFFFF; + border:1px solid #3C769D; + width:99.9%; + height:300px; + margin:5px 0; +} +.markItUpFooter { + width:100%; + cursor:n-resize; +} +.markItUpResizeHandle { + overflow:hidden; + width:22px; height:5px; + margin-left:auto; + margin-right:auto; + background-image:url(images/handle.png); + cursor:n-resize; +} +/***************************************************************************************/ +/* first row of buttons */ +.markItUpHeader ul li { + list-style:none; + float:left; + position:relative; +} +.markItUpHeader ul li ul{ + display:none; +} +.markItUpHeader ul li:hover > ul{ + display:block; +} +.markItUpHeader ul .markItUpDropMenu { + background:transparent url(images/menu.png) no-repeat 115% 50%; + margin-right:5px; +} +.markItUpHeader ul .markItUpDropMenu li { + margin-right:0px; +} +.markItUpHeader ul .markItUpSeparator { + margin:0 10px; + width:1px; + height:16px; + overflow:hidden; + background-color:#CCC; +} +.markItUpHeader ul ul .markItUpSeparator { + width:auto; height:1px; + margin:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul { + display:none; + position:absolute; + top:18px; left:0px; + background:#F5F5F5; + border:1px solid #3C769D; + height:inherit; +} +.markItUpHeader ul ul li { + float:none; + border-bottom:1px solid #3C769D; +} +.markItUpHeader ul ul .markItUpDropMenu { + background:#F5F5F5 url(images/submenu.png) no-repeat 100% 50%; +} +/* next rows of buttons */ +.markItUpHeader ul ul ul { + position:absolute; + top:-1px; left:150px; +} +.markItUpHeader ul ul ul li { + float:none; +} +.markItUpHeader ul a { + display:block; + width:16px; height:16px; + text-indent:-10000px; + background-repeat:no-repeat; + padding:3px; + margin:0px; +} +.markItUpHeader ul ul a { + display:block; + padding-left:0px; + text-indent:0; + width:120px; + padding:5px 5px 5px 25px; + background-position:2px 50%; +} +.markItUpHeader ul ul a:hover { + color:#FFF; + background-color:#3C769D; +} +/***************************************************************************************/ +.html .markItUpEditor { + background-image:url(images/bg-editor-html.png); +} +.markdown .markItUpEditor { + background-image:url(images/bg-editor-markdown.png); +} +.textile .markItUpEditor { + background-image:url(images/bg-editor-textile.png); +} +.bbcode .markItUpEditor { + background-image:url(images/bg-editor-bbcode.png); +} +.wiki .markItUpEditor, +.dotclear .markItUpEditor { + background-image:url(images/bg-editor-wiki.png); +} \ No newline at end of file diff --git a/itf/static/markitup/skins/simple/images/handle.png b/itf/static/markitup/skins/simple/images/handle.png new file mode 100644 index 0000000000000000000000000000000000000000..3993b20337e33a36c9125d139f1f53a279a4c128 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{X#0(?@t!)i}6mzkYX9x!e$L)vy4}e^r0G|-o z4LkP#|NsB{_wSo_?oZ!X{TC?CQWE4B{GZ|f|H~VSrU3bz1s;*b3=G^tAk28_ZrvZC zpje4(M2T}zYGO%dex5=|W^O8jfw{hsp}v86ds2l5P=!25MR0yvNqJ&XDuZuga#4P6 zYD#9Jf?H-$YI%N9cCmuR){ILPK&1wrE{-7_Gm{H=1WS1m6Eb=Pa(faIBBVrjnVf1= soMNglKFuA6ghUcX`bbD&-ZPgg&ebxsLQ0Hz~TmH+?% literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/simple/images/menu.png b/itf/static/markitup/skins/simple/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..44a07afd30f499cdba30847094a1e92f13e1320e GIT binary patch literal 27151 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

    +35?Hj$O) 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 literal 0 HcmV?d00001 diff --git a/itf/static/markitup/skins/simple/style.css b/itf/static/markitup/skins/simple/style.css new file mode 100644 index 0000000..1838ded --- /dev/null +++ b/itf/static/markitup/skins/simple/style.css @@ -0,0 +1,118 @@ +/* ------------------------------------------------------------------- +// markItUp! Universal MarkUp Engine, JQuery plugin +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp * { + margin:0px; padding:0px; + outline:none; +} +.markItUp a:link, +.markItUp a:visited { + color:#000; + text-decoration:none; +} +.markItUp { + width:700px; + margin:5px 0 5px 0; +} +.markItUpContainer { + font:11px Verdana, Arial, Helvetica, sans-serif; +} +.markItUpEditor { + font:12px 'Courier New', Courier, monospace; + padding:5px; + width:690px; + height:320px; + clear:both; display:block; + line-height:18px; + overflow:auto; +} +.markItUpPreviewFrame { + overflow:auto; + background-color:#FFF; + width:99.9%; + height:300px; + margin:5px 0; +} +.markItUpFooter { + width:100%; +} +.markItUpResizeHandle { + overflow:hidden; + width:22px; height:5px; + margin-left:auto; + margin-right:auto; + background-image:url(images/handle.png); + cursor:n-resize; +} +/***************************************************************************************/ +/* first row of buttons */ +.markItUpHeader ul li { + list-style:none; + float:left; + position:relative; +} +.markItUpHeader ul li:hover > ul{ + display:block; +} +.markItUpHeader ul .markItUpDropMenu { + background:transparent url(images/menu.png) no-repeat 115% 50%; + margin-right:5px; +} +.markItUpHeader ul .markItUpDropMenu li { + margin-right:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul { + display:none; + position:absolute; + top:18px; left:0px; + background:#FFF; + border:1px solid #000; +} +.markItUpHeader ul ul li { + float:none; + border-bottom:1px solid #000; +} +.markItUpHeader ul ul .markItUpDropMenu { + background:#FFF url(images/submenu.png) no-repeat 100% 50%; +} +.markItUpHeader ul .markItUpSeparator { + margin:0 10px; + width:1px; + height:16px; + overflow:hidden; + background-color:#CCC; +} +.markItUpHeader ul ul .markItUpSeparator { + width:auto; height:1px; + margin:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul ul { + position:absolute; + top:-1px; left:150px; +} +.markItUpHeader ul ul ul li { + float:none; +} +.markItUpHeader ul a { + display:block; + width:16px; height:16px; + text-indent:-10000px; + background-repeat:no-repeat; + padding:3px; + margin:0px; +} +.markItUpHeader ul ul a { + display:block; + padding-left:0px; + text-indent:0; + width:120px; + padding:5px 5px 5px 25px; + background-position:2px 50%; +} +.markItUpHeader ul ul a:hover { + color:#FFF; + background-color:#000; +} diff --git a/itf/static/markitup/templates/preview.css b/itf/static/markitup/templates/preview.css new file mode 100644 index 0000000..ad91a87 --- /dev/null +++ b/itf/static/markitup/templates/preview.css @@ -0,0 +1,5 @@ +/* preview style examples */ +body { + background-color:#EFEFEF; + font:70% Verdana, Arial, Helvetica, sans-serif; +} \ No newline at end of file diff --git a/itf/static/markitup/templates/preview.html b/itf/static/markitup/templates/preview.html new file mode 100644 index 0000000..b8b3702 --- /dev/null +++ b/itf/static/markitup/templates/preview.html @@ -0,0 +1,11 @@ + + + + +markItUp! preview template + + + + + + diff --git a/itf/urls.py b/itf/urls.py index f14db5c..8b8d2de 100755 --- a/itf/urls.py +++ b/itf/urls.py @@ -38,7 +38,7 @@ urlpatterns = patterns('', (r'i/', include('itfcore.urls')), (r'^admin/doc/', include('django.contrib.admindocs.urls')), (r'^search/', include('haystack.urls')), - + (r'^markitup/', include('markitup.urls')), # (r'^mockup/', 'itfcore.views.mockup'), # (r'x0news/', 'itfcore.views.allnews'), # (r'x0disc/', 'itfcore.views.disc'),