From: Kilian Date: Tue, 9 Jul 2019 07:56:17 +0000 (+0200) Subject: LIVE Upload 2019-07-09 09:56:07 X-Git-Url: http://cloud.dks.lu/git/?a=commitdiff_plain;h=af16aa991fd0a721838b275d73ec2d1a4b42b8e7;p=juridig_lu.git LIVE Upload 2019-07-09 09:56:07 --- diff --git a/.gitignore b/.gitignore index 72ec938..aa4b052 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -backoffice/api/reports/* -backoffice/api/tmp/* -backoffice/api/lib/perl5/* +backoffice/api/reports/* +backoffice/api/tmp/* +backoffice/api/lib/perl5/* backoffice/tmp/* \ No newline at end of file diff --git a/backoffice/.htaccess b/backoffice/.htaccess index 4c449c1..7fd28ed 100644 --- a/backoffice/.htaccess +++ b/backoffice/.htaccess @@ -1,10 +1,10 @@ - -RewriteEngine on - -DirectoryIndex index.cgi index.html -AddHandler cgi-script .cgi -#RewriteBase / -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule "^(.*)$" "index.cgi" [NC,L,QSA] - + +RewriteEngine on + +DirectoryIndex index.cgi index.html +AddHandler cgi-script .cgi +#RewriteBase / +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule "^(.*)$" "index.cgi" [NC,L,QSA] + diff --git a/backoffice/tmpl/module/profile/index.js b/backoffice/tmpl/module/profile/index.js index c999226..d89695f 100644 --- a/backoffice/tmpl/module/profile/index.js +++ b/backoffice/tmpl/module/profile/index.js @@ -1,11 +1,11 @@ -function initpage(){ - -} - -$("input.fieldsave").on('blur',function(event){ - console.log(event); - savefield(event.currentTarget.id); -}); -function confirm_delete_profile(){ - parent.location.href='[% baseurl %]/deleteprofile.html'; -} +function initpage(){ + +} + +$("input.fieldsave").on('blur',function(event){ + console.log(event); + savefield(event.currentTarget.id); +}); +function confirm_delete_profile(){ + parent.location.href='[% baseurl %]/deleteprofile.html'; +} diff --git a/backoffice/tmpl/module/profile/index.tt b/backoffice/tmpl/module/profile/index.tt index 2674001..fac46b6 100644 --- a/backoffice/tmpl/module/profile/index.tt +++ b/backoffice/tmpl/module/profile/index.tt @@ -1,49 +1,49 @@ -
- -
-

Profile

-
-
-
-
- -
- - -
-
- - -
-
- - -
-
-
-
-
- - -
-
-
Supprimer profil et tous les données personnelles!
-
-
- -
-
- -
- -
-
- - -
- - - - -
+
+ +
+

Profile

+
+
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+
Supprimer profil et tous les données personnelles!
+
+
+ +
+
+ +
+ +
+
+ + +
+ + + + +
\ No newline at end of file diff --git a/backoffice/tmpl/module/profile/javascript.tt b/backoffice/tmpl/module/profile/javascript.tt index 2ec9dd7..b199e38 100644 --- a/backoffice/tmpl/module/profile/javascript.tt +++ b/backoffice/tmpl/module/profile/javascript.tt @@ -1,2 +1,2 @@ - + \ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/css.tt b/backoffice/tmpl/module/rendezvous/css.tt index b078252..fccbdbb 100644 --- a/backoffice/tmpl/module/rendezvous/css.tt +++ b/backoffice/tmpl/module/rendezvous/css.tt @@ -1,26 +1,26 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/backoffice/tmpl/module/rendezvous/form_exception.js b/backoffice/tmpl/module/rendezvous/form_exception.js index 8e90d89..1086949 100644 --- a/backoffice/tmpl/module/rendezvous/form_exception.js +++ b/backoffice/tmpl/module/rendezvous/form_exception.js @@ -1,20 +1,20 @@ -function initpage(){ - jQuery('.datetimepicker').datetimepicker({ - i18n:{ - fr:{ - months:[ - 'Janvier','Février','Mars','Avril', - 'May','Juin','Juillet','August', - 'Septembre','Octobre','Novembre','Decembre', - ], - dayOfWeek:[ - "Di", "Lu", "Ma", "Me", - "Je", "Ve", "Sa", - ] - } - }, - inline:true, - timepicker:false, - format:'d.m.Y' - }); +function initpage(){ + jQuery('.datetimepicker').datetimepicker({ + i18n:{ + fr:{ + months:[ + 'Janvier','Février','Mars','Avril', + 'May','Juin','Juillet','August', + 'Septembre','Octobre','Novembre','Decembre', + ], + dayOfWeek:[ + "Di", "Lu", "Ma", "Me", + "Je", "Ve", "Sa", + ] + } + }, + inline:true, + timepicker:false, + format:'d.m.Y' + }); } \ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/form_exception.tt b/backoffice/tmpl/module/rendezvous/form_exception.tt index aa4e15e..3c26118 100644 --- a/backoffice/tmpl/module/rendezvous/form_exception.tt +++ b/backoffice/tmpl/module/rendezvous/form_exception.tt @@ -1,36 +1,36 @@ -
- -
-
-
- -
-
- -
-
-
- -
- -
- - -
- -
-
-
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + +
+ +
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/form_rendezvous.js b/backoffice/tmpl/module/rendezvous/form_rendezvous.js index d09a36b..80db097 100644 --- a/backoffice/tmpl/module/rendezvous/form_rendezvous.js +++ b/backoffice/tmpl/module/rendezvous/form_rendezvous.js @@ -1,23 +1,23 @@ -function initpage(){ - $("select").select2(); - jQuery.datetimepicker.setLocale('fr'); - -jQuery('.datetimepicker').datetimepicker({ - i18n:{ - fr:{ - months:[ - 'Janvier','Février','Mars','Avril', - 'May','Juin','Juillet','August', - 'Septembre','Octobre','Novembre','Decembre', - ], - dayOfWeek:[ - "Di", "Lu", "Ma", "Me", - "Je", "Ve", "Sa", - ] - } - }, - inline:true, - timepicker:true, - format:'d.m.Y' -}); +function initpage(){ + $("select").select2(); + jQuery.datetimepicker.setLocale('fr'); + +jQuery('.datetimepicker').datetimepicker({ + i18n:{ + fr:{ + months:[ + 'Janvier','Février','Mars','Avril', + 'May','Juin','Juillet','August', + 'Septembre','Octobre','Novembre','Decembre', + ], + dayOfWeek:[ + "Di", "Lu", "Ma", "Me", + "Je", "Ve", "Sa", + ] + } + }, + inline:true, + timepicker:true, + format:'d.m.Y' +}); } \ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/form_rendezvous.tt b/backoffice/tmpl/module/rendezvous/form_rendezvous.tt index f165c35..f614caf 100644 --- a/backoffice/tmpl/module/rendezvous/form_rendezvous.tt +++ b/backoffice/tmpl/module/rendezvous/form_rendezvous.tt @@ -1,68 +1,68 @@ -
- -
-
-
- -
-
- -
-
- - -
- -
- - -
-
- - -
-
- - -
-
- - -
-
-
Client
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-
+
+ +
+
+
+ +
+
+ +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
Client
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/form_timesheet.tt b/backoffice/tmpl/module/rendezvous/form_timesheet.tt index 1924661..b7b2393 100644 --- a/backoffice/tmpl/module/rendezvous/form_timesheet.tt +++ b/backoffice/tmpl/module/rendezvous/form_timesheet.tt @@ -1,48 +1,48 @@ - -
- -
-
-
-
-
-
- - -
-
-
- - -
-
-
-
-
- - -
-
-
- - -
-
-
- - -
-
-
+ +
+ +
+
+
+
+
+
+ + +
+
+
+ + +
+
+
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
\ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/index.js b/backoffice/tmpl/module/rendezvous/index.js index 0a7fd61..75f73d2 100644 --- a/backoffice/tmpl/module/rendezvous/index.js +++ b/backoffice/tmpl/module/rendezvous/index.js @@ -1,168 +1,168 @@ -var calendar = null; - -function initpage(){ - -} - -document.addEventListener('DOMContentLoaded', function() { - var calendarEl = document.getElementById('calendar'); - - calendar = new FullCalendar.Calendar(calendarEl, { - // customButtons: { - // addEventButton: { - // text: 'Nouveau RDV', - // click: function() { - // var dateStr = prompt('Enter a date in YYYY-MM-DD format'); - // var date = new Date(dateStr + 'T00:00:00'); // will be in local time - - // if (!isNaN(date.valueOf())) { // valid? - // calendar.addEvent({ - // title: 'dynamic event', - // start: date, - // allDay: true - // }); - // alert('Great. Now, update your database...'); - // } else { - // alert('Invalid date.'); - // } - // } - // } - // }, - plugins: [ 'bootstrap','interaction', 'dayGrid', 'timeGrid','list' ], - defaultView: 'timeGridWeek', - themeSystem: 'bootstrap', - defaultDate: new Date().toISOString().substring(0,10), - allDaySlot: false, - weekNumbers: true, - header: { - left: 'prev,next today', - center: 'title', - right: 'dayGridMonth,timeGridWeek,listMonth' - }, - firstDay: 1, - // dateClick: function() { - // alert('a day has been clicked!'); - // }, - eventClick: function(info) { - var eventObj = info.event; - console.log('Clicked Event'); - console.log(eventObj); - parent.backoffice.loadpage('module/[% module %]/form_rendezvous.html','Rendez-Vous'); - }, - viewSkeletonRender: function(info){ - console.log("SKEL Render"); - console.log(info); - getevents(); - }, - viewSkeletonDestroy: function(info){ - console.log("SKEL Destroy"); - removeEvents(); - }, - businessHours: { - daysOfWeek: [ 1, 2, 3, 4 , 5 ], // Monday - Thursday - startTime: '10:00', // a start time (10am in this example) - endTime: '18:00', // an end time (6pm in this example) - }, - viewRender: function(view, element){ - console.log("View Changed!"); - }, - eventTimeFormat: { // like '14:30:00' - hour: '2-digit', - minute: '2-digit' - }, - selectable: true, - locale: 'fr' - - }); - - calendar.render(); - //getevents(); -}); - -function getevents(){ - - var rdvtypes = []; - $('input[type=checkbox]').each(function(){ - if ($(this).prop("checked")){ - rdvtypes.push($(this).val()); - } - }); - console.log(calendar); - - var pdata = {"fn":"getevents","types":rdvtypes,startdate:calendar.view.props.dateProfile.currentRange.start.toISOString().substring(0,10),enddate:calendar.view.props.dateProfile.currentRange.end.toISOString().substring(0,10)}; - //console.log(pdata); - process_data(pdata,events_callback); -} - -function removeEvents(){ - var ev = calendar.getEvents(); - for (var e in ev){ - var rev = calendar.getEventById(ev[e].id); - rev.remove(); - } -} - -function events_callback(data){ - //console.log(data); - for (var i in data.events){ - //console.log(i); - calendar.addEvent({ - id: data.events[i].id_event, - title: data.events[i].eventname, - start: data.events[i].startdate + "T" + data.events[i].starttime, - end: data.events[i].enddate + "T" + data.events[i].endtime, - color: $('#lbl' + data.events[i].eventcolor).css('color') - }); - } - -} - - -// events: [ -// { -// title: 'Prename1 Surname2', -// start: '2019-05-01T08:00', -// color: '#ff00ff' -// }, -// { -// title: 'Long Event', -// start: '2019-05-07T', -// end: '2019-05-07' -// }, -// { -// groupId: '999', -// title: 'Repeating Event', -// start: '2019-05-09T16:00:00' -// }, -// { -// groupId: '999', -// title: 'Repeating Event', -// start: '2019-05-16T16:00:00' -// }, -// { -// title: 'Conference', -// start: '2019-05-11', -// end: '2019-05-13' -// }, -// { -// title: 'Meeting', -// start: '2019-05-12T10:30:00', -// end: '2019-05-12T12:30:00' -// }, -// { -// title: 'Lunch', -// start: '2019-05-12T12:00:00' -// }, -// { -// title: 'Meeting', -// start: '2019-05-12T14:30:00' -// }, -// { -// title: 'Birthday Party', -// start: '2019-05-13T07:00:00' -// }, -// { -// title: 'Click for Google', -// start: '2019-05-28' -// } +var calendar = null; + +function initpage(){ + +} + +document.addEventListener('DOMContentLoaded', function() { + var calendarEl = document.getElementById('calendar'); + + calendar = new FullCalendar.Calendar(calendarEl, { + // customButtons: { + // addEventButton: { + // text: 'Nouveau RDV', + // click: function() { + // var dateStr = prompt('Enter a date in YYYY-MM-DD format'); + // var date = new Date(dateStr + 'T00:00:00'); // will be in local time + + // if (!isNaN(date.valueOf())) { // valid? + // calendar.addEvent({ + // title: 'dynamic event', + // start: date, + // allDay: true + // }); + // alert('Great. Now, update your database...'); + // } else { + // alert('Invalid date.'); + // } + // } + // } + // }, + plugins: [ 'bootstrap','interaction', 'dayGrid', 'timeGrid','list' ], + defaultView: 'timeGridWeek', + themeSystem: 'bootstrap', + defaultDate: new Date().toISOString().substring(0,10), + allDaySlot: false, + weekNumbers: true, + header: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,listMonth' + }, + firstDay: 1, + // dateClick: function() { + // alert('a day has been clicked!'); + // }, + eventClick: function(info) { + var eventObj = info.event; + console.log('Clicked Event'); + console.log(eventObj); + parent.backoffice.loadpage('module/[% module %]/form_rendezvous.html','Rendez-Vous'); + }, + viewSkeletonRender: function(info){ + console.log("SKEL Render"); + console.log(info); + getevents(); + }, + viewSkeletonDestroy: function(info){ + console.log("SKEL Destroy"); + removeEvents(); + }, + businessHours: { + daysOfWeek: [ 1, 2, 3, 4 , 5 ], // Monday - Thursday + startTime: '10:00', // a start time (10am in this example) + endTime: '18:00', // an end time (6pm in this example) + }, + viewRender: function(view, element){ + console.log("View Changed!"); + }, + eventTimeFormat: { // like '14:30:00' + hour: '2-digit', + minute: '2-digit' + }, + selectable: true, + locale: 'fr' + + }); + + calendar.render(); + //getevents(); +}); + +function getevents(){ + + var rdvtypes = []; + $('input[type=checkbox]').each(function(){ + if ($(this).prop("checked")){ + rdvtypes.push($(this).val()); + } + }); + console.log(calendar); + + var pdata = {"fn":"getevents","types":rdvtypes,startdate:calendar.view.props.dateProfile.currentRange.start.toISOString().substring(0,10),enddate:calendar.view.props.dateProfile.currentRange.end.toISOString().substring(0,10)}; + //console.log(pdata); + process_data(pdata,events_callback); +} + +function removeEvents(){ + var ev = calendar.getEvents(); + for (var e in ev){ + var rev = calendar.getEventById(ev[e].id); + rev.remove(); + } +} + +function events_callback(data){ + //console.log(data); + for (var i in data.events){ + //console.log(i); + calendar.addEvent({ + id: data.events[i].id_event, + title: data.events[i].eventname, + start: data.events[i].startdate + "T" + data.events[i].starttime, + end: data.events[i].enddate + "T" + data.events[i].endtime, + color: $('#lbl' + data.events[i].eventcolor).css('color') + }); + } + +} + + +// events: [ +// { +// title: 'Prename1 Surname2', +// start: '2019-05-01T08:00', +// color: '#ff00ff' +// }, +// { +// title: 'Long Event', +// start: '2019-05-07T', +// end: '2019-05-07' +// }, +// { +// groupId: '999', +// title: 'Repeating Event', +// start: '2019-05-09T16:00:00' +// }, +// { +// groupId: '999', +// title: 'Repeating Event', +// start: '2019-05-16T16:00:00' +// }, +// { +// title: 'Conference', +// start: '2019-05-11', +// end: '2019-05-13' +// }, +// { +// title: 'Meeting', +// start: '2019-05-12T10:30:00', +// end: '2019-05-12T12:30:00' +// }, +// { +// title: 'Lunch', +// start: '2019-05-12T12:00:00' +// }, +// { +// title: 'Meeting', +// start: '2019-05-12T14:30:00' +// }, +// { +// title: 'Birthday Party', +// start: '2019-05-13T07:00:00' +// }, +// { +// title: 'Click for Google', +// start: '2019-05-28' +// } // ] \ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/index.tt b/backoffice/tmpl/module/rendezvous/index.tt index ddb133f..d2a5f51 100644 --- a/backoffice/tmpl/module/rendezvous/index.tt +++ b/backoffice/tmpl/module/rendezvous/index.tt @@ -1,58 +1,58 @@ - -
- -
-
- -
+ +
+ +
+
+ +
\ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/javascript.tt b/backoffice/tmpl/module/rendezvous/javascript.tt index 7db0704..885f7fd 100644 --- a/backoffice/tmpl/module/rendezvous/javascript.tt +++ b/backoffice/tmpl/module/rendezvous/javascript.tt @@ -1,11 +1,11 @@ - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/old_clientlist.tt b/backoffice/tmpl/module/rendezvous/old_clientlist.tt index c428277..0760320 100644 --- a/backoffice/tmpl/module/rendezvous/old_clientlist.tt +++ b/backoffice/tmpl/module/rendezvous/old_clientlist.tt @@ -1,34 +1,34 @@ -[% cllist = dksdb.prepare("select cl.id as id_client,ev.id_user,cl.usersurname,cl.userprename,cl.userphone,cl.username,case when uc.clientblocked=1 then 1 else 0 end as clientblocked,cl.userblocked as globalblocked from events ev - left join users cl on (cl.id=ev.id_client) - left join userclients uc on (uc.id_client=cl.id and uc.id_user=?) group by cl.id;" %] - -
Mes Clients
- - - - - - - - - - [% FOREACH cl = cllist.execute(session.id) %] - - - - - - - - [% END %] - - -
NomPrénomEmailTéléphoneBlocker / Déblocker
[% cl.usersurname %][% cl.userprename %][% cl.username %][% cl.userphone %] - [% IF cl.globalblocked %] - blocké par juridig.lu - [% ELSIF cl.clientblocked == 1 %] - - [% ELSE %] - - [% END %] -
+[% cllist = dksdb.prepare("select cl.id as id_client,ev.id_user,cl.usersurname,cl.userprename,cl.userphone,cl.username,case when uc.clientblocked=1 then 1 else 0 end as clientblocked,cl.userblocked as globalblocked from events ev + left join users cl on (cl.id=ev.id_client) + left join userclients uc on (uc.id_client=cl.id and uc.id_user=?) group by cl.id;" %] + +
Mes Clients
+ + + + + + + + + + [% FOREACH cl = cllist.execute(session.id) %] + + + + + + + + [% END %] + + +
NomPrénomEmailTéléphoneBlocker / Déblocker
[% cl.usersurname %][% cl.userprename %][% cl.username %][% cl.userphone %] + [% IF cl.globalblocked %] + blocké par juridig.lu + [% ELSIF cl.clientblocked == 1 %] + + [% ELSE %] + + [% END %] +
diff --git a/backoffice/tmpl/module/rendezvous/old_index.tt b/backoffice/tmpl/module/rendezvous/old_index.tt index bc055f0..9918830 100644 --- a/backoffice/tmpl/module/rendezvous/old_index.tt +++ b/backoffice/tmpl/module/rendezvous/old_index.tt @@ -1,83 +1,83 @@ -[% IF session.group == 'avocat' %] -[% rdvlist = dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventhour,ev.eventoptions,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_client=usr.id) where ev.id_user=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;"); %] -[% ELSE %] -[% rdvlist =dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventoptions,ev.eventhour,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_user=usr.id) where ev.id_client=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;") %] -[% END %] -
Mes Rendez-Vous
- - - - - - - - - - - [% FOREACH rdv = rdvlist.execute(session.id) %] - - - - - - [% IF $user['usergroup'] == 'client' %] - - - [% ELSE %] - - - [% END %] - [% IF session.group == 'client' AND rdv.client_status == 'unconfirmed' %] - - [% ELSE %] - - [% END %] - - [% END %] - -
DateHeure - [% IF session.group == 'client'%] - Avocat - [% ELSE %] - Client - [% END %] - OptionsMon status - [% IF session.group == 'client'%] - Status Avocat - [% ELSE %] - Status Client - [% END %] - Action
[% rdv.eventdate %][% rdv.eventhour %][% rdv.usersurname'].' '.$row['userprename %][% rdv.eventoptions %][% IFrdv.client_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.client_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.client_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %][% IF rdv.user_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.user_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.user_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %][% IF rdv.user_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.user_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.user_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %][% IF rdv.client_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.client_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.client_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %] -
+[% IF session.group == 'avocat' %] +[% rdvlist = dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventhour,ev.eventoptions,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_client=usr.id) where ev.id_user=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;"); %] +[% ELSE %] +[% rdvlist =dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventoptions,ev.eventhour,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_user=usr.id) where ev.id_client=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;") %] +[% END %] +
Mes Rendez-Vous
+ + + + + + + + + + + [% FOREACH rdv = rdvlist.execute(session.id) %] + + + + + + [% IF $user['usergroup'] == 'client' %] + + + [% ELSE %] + + + [% END %] + [% IF session.group == 'client' AND rdv.client_status == 'unconfirmed' %] + + [% ELSE %] + + [% END %] + + [% END %] + +
DateHeure + [% IF session.group == 'client'%] + Avocat + [% ELSE %] + Client + [% END %] + OptionsMon status + [% IF session.group == 'client'%] + Status Avocat + [% ELSE %] + Status Client + [% END %] + Action
[% rdv.eventdate %][% rdv.eventhour %][% rdv.usersurname'].' '.$row['userprename %][% rdv.eventoptions %][% IFrdv.client_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.client_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.client_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %][% IF rdv.user_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.user_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.user_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %][% IF rdv.user_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.user_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.user_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %][% IF rdv.client_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.client_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.client_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %] +
diff --git a/backoffice/tmpl/module/rendezvous/old_oldrdvlist.tt b/backoffice/tmpl/module/rendezvous/old_oldrdvlist.tt index 9bcc858..faffc6b 100644 --- a/backoffice/tmpl/module/rendezvous/old_oldrdvlist.tt +++ b/backoffice/tmpl/module/rendezvous/old_oldrdvlist.tt @@ -1,84 +1,84 @@ -[% IF session.group == 'avocat' %] -[% rdvlist = dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventhour,ev.eventoptions,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_client=usr.id) where ev.id_user=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;"); %] -[% ELSE %] -[% rdvlist =dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventoptions,ev.eventhour,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_user=usr.id) where ev.id_client=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;") %] -[% END %] -
Mes Rendez-Vous
- - - - - - - - [% IF session.group == 'avocat' %] - - [% END %] - - - [% FOREACH rdv = rdvlist.execute(session.id) %] - - - - - - [% IF $user['usergroup'] == 'client' %] - - - [% ELSE %] - - - [% END %] - [% IF session.group == 'AVOCAT' %] - - [% END %] - - [% END %] - -
DateHeure - [% IF session.group == 'client'%] - Avocat - [% ELSE %] - Client - [% END %] - OptionsMon status - [% IF session.group == 'client'%] - Status Avocat - [% ELSE %] - Status Client - [% END %] - Action
[% rdv.eventdate %][% rdv.eventhour %][% rdv.usersurname'].' '.$row['userprename %][% rdv.eventoptions %][% IFrdv.client_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.client_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.client_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %][% IF rdv.user_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.user_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.user_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %][% IF rdv.user_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.user_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.user_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %][% IF rdv.client_status == 'unconfirmed' %] - PAS CONFIRMÉ - [% ELSIF rdv.client_status == 'canceled' %] - ANNULÉ - [% ELSIF rdv.client_status == 'confirmed' %] - CONFIRMÉ - [% ELSE %] - INCONNUE - [% END %] - -
+[% IF session.group == 'avocat' %] +[% rdvlist = dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventhour,ev.eventoptions,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_client=usr.id) where ev.id_user=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;"); %] +[% ELSE %] +[% rdvlist =dksdb.prepare("select ev.id,DATE_FORMAT(ev.eventdate,'%d/%m/%Y') as eventdate,ev.eventoptions,ev.eventhour,usr.userprename,usr.usersurname,ev.user_status,ev.client_status,ev.clientuuid,ev.useruuid from events ev LEFT JOIN users usr on (ev.id_user=usr.id) where ev.id_client=? and ev.eventdate >= CURRENT_DATE order by eventdate DESC,eventhour ASC;") %] +[% END %] +
Mes Rendez-Vous
+ + + + + + + + [% IF session.group == 'avocat' %] + + [% END %] + + + [% FOREACH rdv = rdvlist.execute(session.id) %] + + + + + + [% IF $user['usergroup'] == 'client' %] + + + [% ELSE %] + + + [% END %] + [% IF session.group == 'AVOCAT' %] + + [% END %] + + [% END %] + +
DateHeure + [% IF session.group == 'client'%] + Avocat + [% ELSE %] + Client + [% END %] + OptionsMon status + [% IF session.group == 'client'%] + Status Avocat + [% ELSE %] + Status Client + [% END %] + Action
[% rdv.eventdate %][% rdv.eventhour %][% rdv.usersurname'].' '.$row['userprename %][% rdv.eventoptions %][% IFrdv.client_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.client_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.client_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %][% IF rdv.user_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.user_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.user_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %][% IF rdv.user_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.user_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.user_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %][% IF rdv.client_status == 'unconfirmed' %] + PAS CONFIRMÉ + [% ELSIF rdv.client_status == 'canceled' %] + ANNULÉ + [% ELSIF rdv.client_status == 'confirmed' %] + CONFIRMÉ + [% ELSE %] + INCONNUE + [% END %] + +
diff --git a/backoffice/tmpl/module/rendezvous/old_timesheet.tt b/backoffice/tmpl/module/rendezvous/old_timesheet.tt index eed8c04..1ef7263 100644 --- a/backoffice/tmpl/module/rendezvous/old_timesheet.tt +++ b/backoffice/tmpl/module/rendezvous/old_timesheet.tt @@ -1,119 +1,119 @@ -[% IF tsid %] - [% timesheet = dksdb.query("select id, DATE_FORMAT(startdate,'%d/%m/%Y') as startdate, mon_values,tue_values,wed_values,thu_values,fri_values,sat_values,sun_values, - case when Position('1' in weekdays) > 0 then 'checked' else '' end as checkedmon, - case when Position('2' in weekdays) > 0 then 'checked' else '' end as checkedtue, - case when Position('3' in weekdays) > 0 then 'checked' else '' end as checkedwed, - case when Position('4' in weekdays) > 0 then 'checked' else '' end as checkedthu, - case when Position('5' in weekdays) > 0 then 'checked' else '' end as checkedfri, - case when Position('6' in weekdays) > 0 then 'checked' else '' end as checkedsat, - case when Position('0' in weekdays) > 0 then 'checked' else '' end as checkedsun, - option1_name, option1_values, option2_name, option2_values, option3_name, option3_values, option4_name, option4_values - from timesheets where id=? and id_user=?;") %] -[% END %] -[% FOREACH ts = timesheet.execute(tsid,session.id) %] -
- - -
-
-
Editer / ajouter Horaire pour les rendez-vous
-
-
-
- - - - - -
- - - -
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Lundi
 Mardi
 Mercredi
 Jeudi
 Vendredi
 Samedi
 Dimanche>
-
-
- - - - - - - - - - - - - - - - - - -
-
-
-
-
-
- -
- -
-
- +[% IF tsid %] + [% timesheet = dksdb.query("select id, DATE_FORMAT(startdate,'%d/%m/%Y') as startdate, mon_values,tue_values,wed_values,thu_values,fri_values,sat_values,sun_values, + case when Position('1' in weekdays) > 0 then 'checked' else '' end as checkedmon, + case when Position('2' in weekdays) > 0 then 'checked' else '' end as checkedtue, + case when Position('3' in weekdays) > 0 then 'checked' else '' end as checkedwed, + case when Position('4' in weekdays) > 0 then 'checked' else '' end as checkedthu, + case when Position('5' in weekdays) > 0 then 'checked' else '' end as checkedfri, + case when Position('6' in weekdays) > 0 then 'checked' else '' end as checkedsat, + case when Position('0' in weekdays) > 0 then 'checked' else '' end as checkedsun, + option1_name, option1_values, option2_name, option2_values, option3_name, option3_values, option4_name, option4_values + from timesheets where id=? and id_user=?;") %] +[% END %] +[% FOREACH ts = timesheet.execute(tsid,session.id) %] +
+ + +
+
+
Editer / ajouter Horaire pour les rendez-vous
+
+
+
+ + + + + +
+ + + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Lundi
 Mardi
 Mercredi
 Jeudi
 Vendredi
 Samedi
 Dimanche>
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+
+ diff --git a/backoffice/tmpl/module/rendezvous/old_timesheetlist.tt b/backoffice/tmpl/module/rendezvous/old_timesheetlist.tt index 9c7965b..7c0a0be 100644 --- a/backoffice/tmpl/module/rendezvous/old_timesheetlist.tt +++ b/backoffice/tmpl/module/rendezvous/old_timesheetlist.tt @@ -1,30 +1,30 @@ -[% timesheetlist = dksdb.prepare("SELECT ts.id, DATE_FORMAT(ts.startdate,'%d/%m/%Y') as startdate, - replace(replace(replace(replace(replace(replace(replace(ts.weekdays,'1','Lu'),'2','Ma'),'3','Me'),'4','Je'),'5','Ve'),'6','Sa'),'0','Di') as weekdays, - CONCAT(COALESCE(option1_name,''),',',COALESCE(option2_name,''),COALESCE(option3_name,''),COALESCE(option4_name,'')) as options - FROM timesheets ts where ts.id_user=?;") %] - -
Mes Horaires
- - - - - - - - - [% FOREACH tsl = timesheetlist.execute(session.id) %] - - - - - - - [% END %] - -
à partir duJours de semainesOptions - -
[% tsl.startdate %][% tsl.weekdays %][% tsl.options %] - - -
+[% timesheetlist = dksdb.prepare("SELECT ts.id, DATE_FORMAT(ts.startdate,'%d/%m/%Y') as startdate, + replace(replace(replace(replace(replace(replace(replace(ts.weekdays,'1','Lu'),'2','Ma'),'3','Me'),'4','Je'),'5','Ve'),'6','Sa'),'0','Di') as weekdays, + CONCAT(COALESCE(option1_name,''),',',COALESCE(option2_name,''),COALESCE(option3_name,''),COALESCE(option4_name,'')) as options + FROM timesheets ts where ts.id_user=?;") %] + +
Mes Horaires
+ + + + + + + + + [% FOREACH tsl = timesheetlist.execute(session.id) %] + + + + + + + [% END %] + +
à partir duJours de semainesOptions + +
[% tsl.startdate %][% tsl.weekdays %][% tsl.options %] + + +
\ No newline at end of file diff --git a/backoffice/tmpl/module/rendezvous/timesheets.js b/backoffice/tmpl/module/rendezvous/timesheets.js index 8d2a17c..a23d3df 100644 --- a/backoffice/tmpl/module/rendezvous/timesheets.js +++ b/backoffice/tmpl/module/rendezvous/timesheets.js @@ -1,40 +1,40 @@ -function init_page(){ - -} - -function add_timesheet(){ - parent.backoffice.loadpage('module/[% module %]/form_timesheet.html','Rendez-Vous - Horaire'); -} - -function edit_timesheet(id){ - parent.backoffice.loadpage('module/[% module %]/form_timesheet.html?id='+ id,'Rendez-Vous - Horaire'); -} - -function delete_timesheet(id){ - if (confirm("êtes-vous sûre de supprimer cet horaire?")){ - //process_data({"fn":"delete_row","ident_id":id},delete_ts_callback); - } -} - -function delete_ts_callback(data){ - console.log(data); -} - -function add_exception(){ - parent.backoffice.loadpage('module/[% module %]/form_exception.html','Rendez-Vous - Exception'); -} - -function edit_exception(id){ - parent.backoffice.loadpage('module/[% module %]/form_exception.html?id='+ id,'Rendez-Vous - Exception'); -} - -function delete_exception(id){ - if (confirm("êtes-vous sûre de supprimer cette exception?")){ - //process_data({"fn":"delete_row","ident_id":id},delete_ex_callback); - } -} - -function delete_ex_callback(data){ - console.log(data); -} - +function init_page(){ + +} + +function add_timesheet(){ + parent.backoffice.loadpage('module/[% module %]/form_timesheet.html','Rendez-Vous - Horaire'); +} + +function edit_timesheet(id){ + parent.backoffice.loadpage('module/[% module %]/form_timesheet.html?id='+ id,'Rendez-Vous - Horaire'); +} + +function delete_timesheet(id){ + if (confirm("êtes-vous sûre de supprimer cet horaire?")){ + //process_data({"fn":"delete_row","ident_id":id},delete_ts_callback); + } +} + +function delete_ts_callback(data){ + console.log(data); +} + +function add_exception(){ + parent.backoffice.loadpage('module/[% module %]/form_exception.html','Rendez-Vous - Exception'); +} + +function edit_exception(id){ + parent.backoffice.loadpage('module/[% module %]/form_exception.html?id='+ id,'Rendez-Vous - Exception'); +} + +function delete_exception(id){ + if (confirm("êtes-vous sûre de supprimer cette exception?")){ + //process_data({"fn":"delete_row","ident_id":id},delete_ex_callback); + } +} + +function delete_ex_callback(data){ + console.log(data); +} + diff --git a/backoffice/tmpl/module/rendezvous/timesheets.tt b/backoffice/tmpl/module/rendezvous/timesheets.tt index 91c2939..70f945d 100644 --- a/backoffice/tmpl/module/rendezvous/timesheets.tt +++ b/backoffice/tmpl/module/rendezvous/timesheets.tt @@ -1,77 +1,77 @@ -
- -
-
-
-
-

Horaires

- - - - - - - - - - - - [% tsheets =dksdb.prepare("select dspstartdate,dspenddate,hourinterval,dspstarttime,dspendtime,hasoption from vw_timesheets where id_user=? order by startdate,enddate,starttime,endtime;") %] - [% FOREACH tsh = tsheets.execute(session.id) %] - - - - - - - - [% END %] - - -
DatesIntervalHeuresOption
[% tsh.dspstartdate %] - [% tsh.dspenddate %][% tsh.hourinterval %][% tsh.dspstarttime %] - [% tsh.dspendtime %] - [% IF tsh.hasoption %] - - [% END %] - - - -
-
-
-

Exceptions

- - - - - - - - - - [% excep = dksdb.prepare("select id,dspdate,isfullday from vw_exceptions where id_user=? order by daydate;") %] - [% FOREACH ex = excep.execute(session.id) %] - - - - - - [% END %] - - - +
+ +
+
+
+
+

Horaires

+
Datetous
[% ex.dspdate %] - [% IF ex.isfullday %] - - [% END %] - - - -
+ + + + + + + + + + + [% tsheets =dksdb.prepare("select dspstartdate,dspenddate,hourinterval,dspstarttime,dspendtime,hasoption from vw_timesheets where id_user=? order by startdate,enddate,starttime,endtime;") %] + [% FOREACH tsh = tsheets.execute(session.id) %] + + + + + + + + [% END %] + + +
DatesIntervalHeuresOption
[% tsh.dspstartdate %] - [% tsh.dspenddate %][% tsh.hourinterval %][% tsh.dspstarttime %] - [% tsh.dspendtime %] + [% IF tsh.hasoption %] + + [% END %] + + + +
+
+
+

Exceptions

+ + + + + + + + + + [% excep = dksdb.prepare("select id,dspdate,isfullday from vw_exceptions where id_user=? order by daydate;") %] + [% FOREACH ex = excep.execute(session.id) %] + + + + + + [% END %] + + + \ No newline at end of file diff --git a/backoffice/tmpl/module/users/javascript.tt b/backoffice/tmpl/module/users/javascript.tt index ef812af..9d657a8 100644 --- a/backoffice/tmpl/module/users/javascript.tt +++ b/backoffice/tmpl/module/users/javascript.tt @@ -1,4 +1,4 @@ - - - - + + + + diff --git a/backoffice/tmpl/module/vouchers/form_voucher.tt b/backoffice/tmpl/module/vouchers/form_voucher.tt index a9ca892..577af83 100644 --- a/backoffice/tmpl/module/vouchers/form_voucher.tt +++ b/backoffice/tmpl/module/vouchers/form_voucher.tt @@ -1,32 +1,32 @@ - -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
- + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ diff --git a/backoffice/tmpl/module/vouchers/index.js b/backoffice/tmpl/module/vouchers/index.js index a0af226..ffba674 100644 --- a/backoffice/tmpl/module/vouchers/index.js +++ b/backoffice/tmpl/module/vouchers/index.js @@ -1,15 +1,15 @@ -function initpage(){ - -} - -function reload_vouchers(data){ - if (confirm("Really delete selected voucher?")){ - parent.backoffice.loadpage('module/vouchers/index.html','Vouchers'); - } - return false; -} - -function delete_voucher(id){ - process_data( {fn:"deletevoucher", "id_voucher":id },reload_vouchers); - return false; +function initpage(){ + +} + +function reload_vouchers(data){ + if (confirm("Really delete selected voucher?")){ + parent.backoffice.loadpage('module/vouchers/index.html','Vouchers'); + } + return false; +} + +function delete_voucher(id){ + process_data( {fn:"deletevoucher", "id_voucher":id },reload_vouchers); + return false; } \ No newline at end of file diff --git a/backoffice/tmpl/module/vouchers/index.tt b/backoffice/tmpl/module/vouchers/index.tt index 85e66ea..6a81e03 100644 --- a/backoffice/tmpl/module/vouchers/index.tt +++ b/backoffice/tmpl/module/vouchers/index.tt @@ -1,37 +1,37 @@ - -
Datetous
[% ex.dspdate %] + [% IF ex.isfullday %] + + [% END %] + + + +
- - - - - - - - - - - - - - - - [% FOREACH vou = dksdb.query("SELECT vo.id,vo.expiration ,vo.voucher, vo.used, vo.percentdiscount * 100 as discount, vo.expiration,pr.duration,pr.package,pr.price,ap.name as appname,pr.duration -FROM vouchers vo -join prices pr on (pr.id=vo.id_price) -join apps ap on (pr.id_app=ap.id)") %] - - - - - - - - - - - - [% END %] - -
VoucherExpirationUsedApplicationPackageDiscountPackage Priceduration (month)
[% vou.voucher %][% vou.expiration %][% IF vou.used == "1" %] [% END %][% vou.appname %][% vou.package %][% vou.discount %]%[% vou.price %]€[% vou.duration %] - -
+ + + + + + + + + + + + + + + + + + [% FOREACH vou = dksdb.query("SELECT vo.id,vo.expiration ,vo.voucher, vo.used, vo.percentdiscount * 100 as discount, vo.expiration,pr.duration,pr.package,pr.price,ap.name as appname,pr.duration +FROM vouchers vo +join prices pr on (pr.id=vo.id_price) +join apps ap on (pr.id_app=ap.id)") %] + + + + + + + + + + + + [% END %] + +
VoucherExpirationUsedApplicationPackageDiscountPackage Priceduration (month)
[% vou.voucher %][% vou.expiration %][% IF vou.used == "1" %] [% END %][% vou.appname %][% vou.package %][% vou.discount %]%[% vou.price %]€[% vou.duration %] + +
diff --git a/backoffice/tmpl/module/vouchers/javascript.tt b/backoffice/tmpl/module/vouchers/javascript.tt index 7e6959c..c2904ae 100644 --- a/backoffice/tmpl/module/vouchers/javascript.tt +++ b/backoffice/tmpl/module/vouchers/javascript.tt @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/backoffice/tmpl/skeleton/module.tt b/backoffice/tmpl/skeleton/module.tt index 2627822..8731657 100644 --- a/backoffice/tmpl/skeleton/module.tt +++ b/backoffice/tmpl/skeleton/module.tt @@ -1,46 +1,46 @@ -[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] - - - - - - - - - - Juridig - [% module %] - [% pagename %] - - - - - - - [% INCLUDE "module/$module/css.tt" %] - - - - -
- [% IF session.id %] - [% INCLUDE $page %] -
- - - - [% INCLUDE "module/$module/javascript.tt" %] - [% ELSE %] -
-

Vous n'avez pas accès à cette page!

-
-
- [% END %] - - - - - - - +[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] + + + + + + + + + + Juridig - [% module %] - [% pagename %] + + + + + + + [% INCLUDE "module/$module/css.tt" %] + + + + +
+ [% IF session.id %] + [% INCLUDE $page %] +
+ + + + [% INCLUDE "module/$module/javascript.tt" %] + [% ELSE %] +
+

Vous n'avez pas accès à cette page!

+
+
+ [% END %] + + + + + + + diff --git a/backoffice/tmpl/skeleton/module_file.tt b/backoffice/tmpl/skeleton/module_file.tt index afb2fc5..d7bc96a 100644 --- a/backoffice/tmpl/skeleton/module_file.tt +++ b/backoffice/tmpl/skeleton/module_file.tt @@ -1,3 +1,3 @@ -[% USE DBI %] -[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] -[% INCLUDE $page %] +[% USE DBI %] +[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] +[% INCLUDE $page %] diff --git a/backoffice/vendors/bootstrap-select/css/bootstrap-select.css b/backoffice/vendors/bootstrap-select/css/bootstrap-select.css index b07486c..66b8cc6 100644 --- a/backoffice/vendors/bootstrap-select/css/bootstrap-select.css +++ b/backoffice/vendors/bootstrap-select/css/bootstrap-select.css @@ -1,10 +1,10 @@ -/*! - * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2019 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */ - +/*! + * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2019 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */ + select.bs-select-hidden, .bootstrap-select > select.bs-select-hidden, select.selectpicker { diff --git a/backoffice/vendors/bootstrap-select/css/bootstrap-select.min.css b/backoffice/vendors/bootstrap-select/css/bootstrap-select.min.css index dafcce3..579ee12 100644 --- a/backoffice/vendors/bootstrap-select/css/bootstrap-select.min.css +++ b/backoffice/vendors/bootstrap-select/css/bootstrap-select.min.css @@ -1,6 +1,6 @@ -/*! - * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2019 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) +/*! + * Bootstrap-select v1.13.10 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2019 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) */.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\0;vertical-align:middle}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;text-align:right;white-space:nowrap;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-select>.dropdown-toggle:after{margin-top:-1px}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none;z-index:0!important}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2!important}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus,.bootstrap-select>select.mobile-device:focus+.dropdown-toggle{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none;height:auto}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{float:none;z-index:auto}.form-inline .bootstrap-select,.form-inline .bootstrap-select.form-control:not([class*=col-]){width:auto}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle .filter-option{position:static;top:0;left:0;float:left;height:100%;width:100%;text-align:left;overflow:hidden;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.bs3.bootstrap-select .dropdown-toggle .filter-option{padding-right:inherit}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option{position:absolute;padding-top:inherit;padding-bottom:inherit;padding-left:inherit;float:none}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .filter-expand{width:0!important;float:left;opacity:0!important;overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:rgba(255,255,255,.5)!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before{content:'\00a0'}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file diff --git a/backoffice/vendors/fullcalendar/bootstrap/main.js b/backoffice/vendors/fullcalendar/bootstrap/main.js index d0a13f6..5a894ed 100644 --- a/backoffice/vendors/fullcalendar/bootstrap/main.js +++ b/backoffice/vendors/fullcalendar/bootstrap/main.js @@ -9,33 +9,33 @@ Docs & License: https://fullcalendar.io/ (global = global || self, factory(global.FullCalendarBootstrap = {}, global.FullCalendar)); }(this, function (exports, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var BootstrapTheme = /** @class */ (function (_super) { diff --git a/backoffice/vendors/fullcalendar/core/main.js b/backoffice/vendors/fullcalendar/core/main.js index 82da13e..bea246a 100644 --- a/backoffice/vendors/fullcalendar/core/main.js +++ b/backoffice/vendors/fullcalendar/core/main.js @@ -1133,44 +1133,44 @@ Docs & License: https://fullcalendar.io/ } } - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; function parseRecurring(eventInput, allDayDefault, dateEnv, recurringTypes, leftovers) { diff --git a/backoffice/vendors/fullcalendar/daygrid/main.js b/backoffice/vendors/fullcalendar/daygrid/main.js index debf219..4f2ae37 100644 --- a/backoffice/vendors/fullcalendar/daygrid/main.js +++ b/backoffice/vendors/fullcalendar/daygrid/main.js @@ -9,44 +9,44 @@ Docs & License: https://fullcalendar.io/ (global = global || self, factory(global.FullCalendarDayGrid = {}, global.FullCalendar)); }(this, function (exports, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; var DayGridDateProfileGenerator = /** @class */ (function (_super) { diff --git a/backoffice/vendors/fullcalendar/interaction/main.js b/backoffice/vendors/fullcalendar/interaction/main.js index 0132136..bbf5654 100644 --- a/backoffice/vendors/fullcalendar/interaction/main.js +++ b/backoffice/vendors/fullcalendar/interaction/main.js @@ -9,44 +9,44 @@ Docs & License: https://fullcalendar.io/ (global = global || self, factory(global.FullCalendarInteraction = {}, global.FullCalendar)); }(this, function (exports, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; core.config.touchMouseIgnoreWait = 500; diff --git a/backoffice/vendors/fullcalendar/list/main.js b/backoffice/vendors/fullcalendar/list/main.js index 1611781..c1f94e9 100644 --- a/backoffice/vendors/fullcalendar/list/main.js +++ b/backoffice/vendors/fullcalendar/list/main.js @@ -9,33 +9,33 @@ Docs & License: https://fullcalendar.io/ (global = global || self, factory(global.FullCalendarList = {}, global.FullCalendar)); }(this, function (exports, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var ListEventRenderer = /** @class */ (function (_super) { diff --git a/backoffice/vendors/fullcalendar/luxon/main.js b/backoffice/vendors/fullcalendar/luxon/main.js index e66dde3..2bd1b8d 100644 --- a/backoffice/vendors/fullcalendar/luxon/main.js +++ b/backoffice/vendors/fullcalendar/luxon/main.js @@ -9,44 +9,44 @@ Docs & License: https://fullcalendar.io/ (global = global || self, factory(global.FullCalendarLuxon = {}, global.luxon, global.FullCalendar)); }(this, function (exports, luxon, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; function toDateTime(date, calendar) { diff --git a/backoffice/vendors/fullcalendar/moment-timezone/main.js b/backoffice/vendors/fullcalendar/moment-timezone/main.js index 460063a..ff2041e 100644 --- a/backoffice/vendors/fullcalendar/moment-timezone/main.js +++ b/backoffice/vendors/fullcalendar/moment-timezone/main.js @@ -11,33 +11,33 @@ Docs & License: https://fullcalendar.io/ moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var MomentNamedTimeZone = /** @class */ (function (_super) { diff --git a/backoffice/vendors/fullcalendar/resource-common/main.js b/backoffice/vendors/fullcalendar/resource-common/main.js index 54473f5..686cb3f 100644 --- a/backoffice/vendors/fullcalendar/resource-common/main.js +++ b/backoffice/vendors/fullcalendar/resource-common/main.js @@ -9,44 +9,44 @@ Docs & License: https://fullcalendar.io/scheduler (global = global || self, factory(global.FullCalendarResourceCommon = {}, global.FullCalendar)); }(this, function (exports, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; var ResourceDataAdder = /** @class */ (function () { diff --git a/backoffice/vendors/fullcalendar/resource-daygrid/main.js b/backoffice/vendors/fullcalendar/resource-daygrid/main.js index 417d983..846e8c4 100644 --- a/backoffice/vendors/fullcalendar/resource-daygrid/main.js +++ b/backoffice/vendors/fullcalendar/resource-daygrid/main.js @@ -12,44 +12,44 @@ Docs & License: https://fullcalendar.io/scheduler var ResourceCommonPlugin__default = 'default' in ResourceCommonPlugin ? ResourceCommonPlugin['default'] : ResourceCommonPlugin; var DayGridPlugin__default = 'default' in DayGridPlugin ? DayGridPlugin['default'] : DayGridPlugin; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; var ResourceDayGrid = /** @class */ (function (_super) { diff --git a/backoffice/vendors/fullcalendar/resource-timegrid/main.js b/backoffice/vendors/fullcalendar/resource-timegrid/main.js index 85d1897..61ef8a1 100644 --- a/backoffice/vendors/fullcalendar/resource-timegrid/main.js +++ b/backoffice/vendors/fullcalendar/resource-timegrid/main.js @@ -12,44 +12,44 @@ Docs & License: https://fullcalendar.io/scheduler var ResourceCommonPlugin__default = 'default' in ResourceCommonPlugin ? ResourceCommonPlugin['default'] : ResourceCommonPlugin; var TimeGridPlugin__default = 'default' in TimeGridPlugin ? TimeGridPlugin['default'] : TimeGridPlugin; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; var ResourceTimeGrid = /** @class */ (function (_super) { diff --git a/backoffice/vendors/fullcalendar/resource-timeline/main.js b/backoffice/vendors/fullcalendar/resource-timeline/main.js index caefd4b..8c4bc34 100644 --- a/backoffice/vendors/fullcalendar/resource-timeline/main.js +++ b/backoffice/vendors/fullcalendar/resource-timeline/main.js @@ -12,44 +12,44 @@ Docs & License: https://fullcalendar.io/scheduler var TimelinePlugin__default = 'default' in TimelinePlugin ? TimelinePlugin['default'] : TimelinePlugin; var ResourceCommonPlugin__default = 'default' in ResourceCommonPlugin ? ResourceCommonPlugin['default'] : ResourceCommonPlugin; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; var Row = /** @class */ (function (_super) { diff --git a/backoffice/vendors/fullcalendar/rrule/main.js b/backoffice/vendors/fullcalendar/rrule/main.js index 0887c45..2784031 100644 --- a/backoffice/vendors/fullcalendar/rrule/main.js +++ b/backoffice/vendors/fullcalendar/rrule/main.js @@ -9,30 +9,30 @@ Docs & License: https://fullcalendar.io/ (global = global || self, factory(global.FullCalendarRrule = {}, global.rrule, global.FullCalendar)); }(this, function (exports, rrule, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; var EVENT_DEF_PROPS = { diff --git a/backoffice/vendors/fullcalendar/timegrid/main.js b/backoffice/vendors/fullcalendar/timegrid/main.js index fc864d0..f8b32b2 100644 --- a/backoffice/vendors/fullcalendar/timegrid/main.js +++ b/backoffice/vendors/fullcalendar/timegrid/main.js @@ -9,44 +9,44 @@ Docs & License: https://fullcalendar.io/ (global = global || self, factory(global.FullCalendarTimeGrid = {}, global.FullCalendar, global.FullCalendarDayGrid)); }(this, function (exports, core, daygrid) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; /* diff --git a/backoffice/vendors/fullcalendar/timeline/main.js b/backoffice/vendors/fullcalendar/timeline/main.js index c8b8f62..345976c 100644 --- a/backoffice/vendors/fullcalendar/timeline/main.js +++ b/backoffice/vendors/fullcalendar/timeline/main.js @@ -9,44 +9,44 @@ Docs & License: https://fullcalendar.io/scheduler (global = global || self, factory(global.FullCalendarTimeline = {}, global.FullCalendar)); }(this, function (exports, core) { 'use strict'; - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); }; /* diff --git a/backoffice/vendors/tinymce/LICENSE.TXT b/backoffice/vendors/tinymce/LICENSE.TXT index b17fc90..c020cdb 100644 --- a/backoffice/vendors/tinymce/LICENSE.TXT +++ b/backoffice/vendors/tinymce/LICENSE.TXT @@ -1,504 +1,504 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/backoffice/vendors/tinymce/changelog.txt b/backoffice/vendors/tinymce/changelog.txt index 1304c43..e0010a4 100644 --- a/backoffice/vendors/tinymce/changelog.txt +++ b/backoffice/vendors/tinymce/changelog.txt @@ -1,951 +1,951 @@ -Version 4.7.11 (2018-04-11) - Added a new imagetools_credentials_hosts option to the Imagetools Plugin. - Fixed a bug where toggling a list containing empty LIs would throw an error. Patch contributed by bradleyke. - Fixed a bug where applying block styles to a text with the caret at the end of the paragraph would select all text in the paragraph. - Fixed a bug where toggling on the Spellchecker Plugin would trigger isDirty on the editor. - Fixed a bug where it was possible to enter content into selection bookmark spans. - Fixed a bug where if a non paragraph block was configured in forced_root_block the editor.getContent method would return incorrect values with an empty editor. - Fixed a bug where dropdown menu panels stayed open and fixed in position when dragging dialog windows. - Fixed a bug where it wasn't possible to extend table cells with the space button in Safari. - Fixed a bug where the setupeditor event would thrown an error when using the Compat3x Plugin. - Fixed a bug where an error was thrown in FontInfo when called on a detached element. -Version 4.7.10 (2018-04-03) - Removed the "read" step from the mobile theme. - Added normalization of triple clicks across browsers in the editor. - Added a `hasFocus` method to the editor that checks if the editor has focus. - Added correct icon to the Nonbreaking Plugin menu item. - Fixed so the `getContent`/`setContent` methods work even if the editor is not initialized. - Fixed a bug with the Media Plugin where query strings were being stripped from youtube links. - Fixed a bug where image styles were changed/removed when opening and closing the Image Plugin dialog. - Fixed a bug in the Table Plugin where some table cell styles were not correctly added to the content html. - Fixed a bug in the Spellchecker Plugin where it wasn't possible to change the spellchecker language. - Fixed so the the unlink action in the Link Plugin has a menu item and can be added to the contextmenu. - Fixed a bug where it wasn't possible to keyboard navigate to the start of an inline element on a new line within the same block element. - Fixed a bug with the Text Color Plugin where if used with an inline editor located at the bottom of the screen the colorpicker could appear off screen. - Fixed a bug with the UndoManager where undo levels were being added for nbzwsp characters. - Fixed a bug with the Table Plugin where the caret would sometimes be lost when keyboard navigating up through a table. - Fixed a bug where FontInfo.getFontFamily would throw an error when called on a removed editor. - Fixed a bug in Firefox where undo levels were not being added correctly for some specific operations. - Fixed a bug where initializing an inline editor inside of a table would make the whole table resizeable. - Fixed a bug where the fake cursor that appears next to tables on Firefox was positioned incorrectly when switching to fullscreen. - Fixed a bug where zwsp's weren't trimmed from the output from `editor.getContent({ format: 'text' })`. - Fixed a bug where the fontsizeselect/fontselect toolbar items showed the body info rather than the first possible caret position info on init. - Fixed a bug where it wasn't possible to select all content if the editor only contained an inline boundary element. - Fixed a bug where `content_css` urls with query strings wasn't working. - Fixed a bug in the Table Plugin where some table row styles were removed when changing other styles in the row properties dialog. -Version 4.7.9 (2018-02-27) - Fixed a bug where the editor target element didn't get the correct style when removing the editor. -Version 4.7.8 (2018-02-26) - Fixed an issue with the Help Plugin where the menuitem name wasn't lowercase. - Fixed an issue on MacOS where text and bold text did not have the same line-height in the autocomplete dropdown in the Link Plugin dialog. - Fixed a bug where the "paste as text" option in the Paste Plugin didn't work. - Fixed a bug where dialog list boxes didn't get positioned correctly in documents with scroll. - Fixed a bug where the Inlite Theme didn't use the Table Plugin api to insert correct tables. - Fixed a bug where the Inlite Theme panel didn't hide on blur in a correct way. - Fixed a bug where placing the cursor before a table in Firefox would scroll to the bottom of the table. - Fixed a bug where selecting partial text in table cells with rowspans and deleting would produce faulty tables. - Fixed a bug where the Preview Plugin didn't work on Safari due to sandbox security. - Fixed a bug where table cell selection using the keyboard threw an error. - Fixed so the font size and font family doesn't toggle the text but only sets the selected format on the selected text. - Fixed so the built-in spellchecking on Chrome and Safari creates an undo level when replacing words. -Version 4.7.7 (2018-02-19) - Added a border style selector to the advanced tab of the Image Plugin. - Added better controls for default table inserted by the Table Plugin. - Added new `table_responsive_width` option to the Table Plugin that controls whether to use pixel or percentage widths. - Fixed a bug where the Link Plugin text didn't update when a URL was pasted using the context menu. - Fixed a bug with the Spellchecker Plugin where using "Add to dictionary" in the context menu threw an error. - Fixed a bug in the Media Plugin where the preview node for iframes got default width and height attributes that interfered with width/height styles. - Fixed a bug where backslashes were being added to some font family names in Firefox in the fontselect toolbar item. - Fixed a bug where errors would be thrown when trying to remove an editor that had not yet been fully initialized. - Fixed a bug where the Imagetools Plugin didn't update the images atomically. - Fixed a bug where the Fullscreen Plugin was throwing errors when being used on an inline editor. - Fixed a bug where drop down menus weren't positioned correctly in inline editors on scroll. - Fixed a bug with a semicolon missing at the end of the bundled javascript files. - Fixed a bug in the Table Plugin with cursor navigation inside of tables where the cursor would sometimes jump into an incorrect table cells. - Fixed a bug where indenting a table that is a list item using the "Increase indent" button would create a nested table. - Fixed a bug where text nodes containing only whitespace were being wrapped by paragraph elements. - Fixed a bug where whitespace was being inserted after br tags inside of paragraph tags. - Fixed a bug where converting an indented paragraph to a list item would cause the list item to have extra padding. - Fixed a bug where Copy/Paste in an editor with a lot of content would cause the editor to scroll to the top of the content in IE11. - Fixed a bug with a memory leak in the DragHelper. Path contributed by ben-mckernan. - Fixed a bug where the advanced tab in the Media Plugin was being shown even if it didn't contain anything. Patch contributed by gabrieeel. - Fixed an outdated eventname in the EventUtils. Patch contributed by nazar-pc. - Fixed an issue where the Json.parse function would throw an error when being used on a page with strict CSP settings. - Fixed so you can place the curser before and after table elements within the editor in Firefox and Edge/IE. -Version 4.7.6 (2018-01-29) - Fixed a bug in the jquery integration where it threw an error saying that "global is not defined". - Fixed a bug where deleting a table cell whose previous sibling was set to contenteditable false would create a corrupted table. - Fixed a bug where highlighting text in an unfocused editor did not work correctly in IE11/Edge. - Fixed a bug where the table resize handles were not being repositioned when activating the Fullscreen Plugin. - Fixed a bug where the Imagetools Plugin dialog didn't honor editor RTL settings. - Fixed a bug where block elements weren't being merged correctly if you deleted from after a contenteditable false element to the beginning of another block element. - Fixed a bug where TinyMCE didn't work with module loaders like webpack. -Version 4.7.5 (2018-01-22) - Fixed bug with the Codesample Plugin where it wasn't possible to edit codesamples when the editor was in inline mode. - Fixed bug where focusing on the status bar broke the keyboard navigation functionality. - Fixed bug where an error would be thrown on Edge by the Table Plugin when pasting using the PowerPaste Plugin. - Fixed bug in the Table Plugin where selecting row border style from the dropdown menu in advanced row properties would throw an error. - Fixed bug with icons being rendered incorrectly on Chrome on Mac OS. - Fixed bug in the Textcolor Plugin where the font color and background color buttons wouldn't trigger an ExecCommand event. - Fixed bug in the Link Plugin where the url field wasn't forced LTR. - Fixed bug where the Nonbreaking Plugin incorrectly inserted spaces into tables. - Fixed bug with the inline theme where the toolbar wasn't repositioned on window resize. -Version 4.7.4 (2017-12-05) - Fixed bug in the Nonbreaking Plugin where the nonbreaking_force_tab setting was being ignored. - Fixed bug in the Table Plugin where changing row height incorrectly converted column widths to pixels. - Fixed bug in the Table Plugin on Edge and IE11 where resizing the last column after resizing the table would cause invalid column heights. - Fixed bug in the Table Plugin where keyboard navigation was not normalized between browsers. - Fixed bug in the Table Plugin where the colorpicker button would show even without defining the colorpicker_callback. - Fixed bug in the Table Plugin where it wasn't possible to set the cell background color. - Fixed bug where Firefox would throw an error when intialising an editor on an element that is hidden or not yet added to the DOM. - Fixed bug where Firefox would throw an error when intialising an editor inside of a hidden iframe. -Version 4.7.3 (2017-11-23) - Added functionality to open the Codesample Plugin dialog when double clicking on a codesample. Patch contributed by dakuzen. - Fixed bug where undo/redo didn't work correctly with some formats and caret positions. - Fixed bug where the color picker didn't show up in Table Plugin dialogs. - Fixed bug where it wasn't possible to change the width of a table through the Table Plugin dialog. - Fixed bug where the Charmap Plugin couldn't insert some special characters. - Fixed bug where editing a newly inserted link would not actually edit the link but insert a new link next to it. - Fixed bug where deleting all content in a table cell made it impossible to place the caret into it. - Fixed bug where the vertical alignment field in the Table Plugin cell properties dialog didn't do anything. - Fixed bug where an image with a caption showed two sets of resize handles in IE11. - Fixed bug where pressing the enter button inside of an h1 with contenteditable set to true would sometimes produce a p tag. - Fixed bug with backspace not working as expected before a noneditable element. - Fixed bug where operating on tables with invalid rowspans would cause an error to be thrown. - Fixed so a real base64 representation of the image is available on the blobInfo that the images_upload_handler gets called with. - Fixed so the image upload tab is available when the images_upload_handler is defined (and not only when the images_upload_url is defined). -Version 4.7.2 (2017-11-07) - Added newly rewritten Table Plugin. - Added support for attributes with colon in valid_elements and addValidElements. - Added support for dailymotion short url in the Media Plugin. Patch contributed by maat8. - Added support for converting to half pt when converting font size from px to pt. Patch contributed by danny6514. - Added support for location hash to the Autosave plugin to make it work better with SPAs using hash routing. - Added support for merging table cells when pasting a table into another table. - Changed so the language packs are only loaded once. Patch contributed by 0xor1. - Simplified the css for inline boundaries selection by switching to an attribute selector. - Fixed bug where an error would be thrown on editor initialization if the window.getSelection() returned null. - Fixed bug where holding down control or alt keys made the keyboard navigation inside an inline boundary not work as expected. - Fixed bug where applying formats in IE11 produced extra, empty paragraphs in the editor. - Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly. - Fixed bug where removing an inline editor removed the element that the editor had been initialized on. - Fixed bug where setting the selection to the end of an editable container caused some formatting problems. - Fixed bug where an error would be thrown sometimes when an editor was removed because of the selection bookmark was being stored asynchronously. - Fixed a bug where an editor initialized on an empty list did not contain any valid cursor positions. - Fixed a bug with the Context Menu Plugin and webkit browsers on Mac where right-clicking inside a table would produce an incorrect selection. - Fixed bug where the Image Plugin constrain proportions setting wasn't working as expected. - Fixed bug where deleting the last character in a span with decorations produced an incorrect element when typing. - Fixed bug where focusing on inline editors made the toolbar flicker when moving between elements quickly. - Fixed bug where the selection would be stored incorrectly in inline editors when the mouseup event was fired outside the editor body. - Fixed bug where toggling bold at the end of an inline boundary would toggle off the whole word. - Fixed bug where setting the skin to false would not stop the loading of some skin css files. - Fixed bug in mobile theme where pinch-to-zoom would break after exiting the editor. - Fixed bug where sublists of a fully selected list would not be switched correctly when changing list style. - Fixed bug where inserting media by source would break the UndoManager. - Fixed bug where inserting some content into the editor with a specific selection would replace some content incorrectly. - Fixed bug where selecting all content with ctrl+a in IE11 caused problems with untoggling some formatting. - Fixed bug where the Search and Replace Plugin left some marker spans in the editor when undoing and redoing after replacing some content. - Fixed bug where the editor would not get a scrollbar when using the Fullscreen and Autoresize plugins together. - Fixed bug where the font selector would stop working correctly after selecting fonts three times. - Fixed so pressing the enter key inside of an inline boundary inserts a br after the inline boundary element. - Fixed a bug where it wasn't possible to use tab navigation inside of a table that was inside of a list. - Fixed bug where end_container_on_empty_block would incorrectly remove elements. - Fixed bug where content_styles weren't added to the Preview Plugin iframe. - Fixed so the beforeSetContent/beforeGetContent events are preventable. - Fixed bug where changing height value in Table Plugin advanced tab didn't do anything. - Fixed bug where it wasn't possible to remove formatting from content in beginning of table cell. -Version 4.7.1 (2017-10-09) - Fixed bug where theme set to false on an inline editor produced an extra div element after the target element. - Fixed bug where the editor drag icon was misaligned with the branding set to false. - Fixed bug where doubled menu items were not being removed as expected with the removed_menuitems setting. - Fixed bug where the Table of contents plugin threw an error when initialized. - Fixed bug where it wasn't possible to add inline formats to text selected right to left. - Fixed bug where the paste from plain text mode did not work as expected. - Fixed so the style previews do not set color and background color when selected. - Fixed bug where the Autolink plugin didn't work as expected with some formats applied on an empty editor. - Fixed bug where the Textpattern plugin were throwing errors on some patterns. - Fixed bug where the Save plugin saved all editors instead of only the active editor. Patch contributed by dannoe. -Version 4.7.0 (2017-10-03) - Added new mobile ui that is specifically designed for mobile devices. - Updated the default skin to be more modern and white since white is preferred by most implementations. - Restructured the default menus to be more similar to common office suites like Google Docs. - Fixed so theme can be set to false on both inline and iframe editor modes. - Fixed bug where inline editor would add/remove the visualblocks css multiple times. - Fixed bug where selection wouldn't be properly restored when editor lost focus and commands where invoked. - Fixed bug where toc plugin would generate id:s for headers even though a toc wasn't inserted into the content. - Fixed bug where is wasn't possible to drag/drop contents within the editor if paste_data_images where set to true. - Fixed bug where getParam and close in WindowManager would get the first opened window instead of the last opened window. - Fixed bug where delete would delete between cells inside a table in Firefox. -Version 4.6.7 (2017-09-18) - Fixed bug where paste wasn't working in IOS. - Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly. - Fixed bug where inserting a list in a table caused the cell to expand in height. - Fixed bug where pressing enter in a list located inside of a table deleted list items instead of inserting new list item. - Fixed bug where copy and pasting table cells produced inconsistent results. - Fixed bug where initializing an editor with an ID of 'length' would throw an exception. - Fixed bug where it was possible to split a non merged table cell. - Fixed bug where copy and pasting a list with a very specific selection into another list would produce a nested list. - Fixed bug where copy and pasting ordered lists sometimes produced unordered lists. - Fixed bug where padded elements inside other elements would be treated as empty. - Added some missing translations to Image, Link and Help plugins. - Fixed so you can resize images inside a figure element. - Fixed bug where an inline TinyMCE editor initialized on a table did not set selection on load in Chrome. - Fixed the positioning of the inlite toolbar when the target element wasn't big enough to fit the toolbar. -Version 4.6.6 (2017-08-30) - Fixed so that notifications wrap long text content instead of bleeding outside the notification element. - Fixed so the content_style css is added after the skin and custom stylesheets. - Fixed bug where it wasn't possible to remove a table with the Cut button. - Fixed bug where the center format wasn't getting the same font size as the other formats in the format preview. - Fixed bug where the wordcount plugin wasn't counting hyphenated words correctly. - Fixed bug where all content pasted into the editor was added to the end of the editor. - Fixed bug where enter keydown on list item selection only deleted content and didn't create a new line. - Fixed bug where destroying the editor while the content css was still loading caused error notifications on Firefox. - Fixed bug where undoing cut operation in IE11 left some unwanted html in the editor content. - Fixed bug where enter keydown would throw an error in IE11. - Fixed bug where duplicate instances of an editor were added to the editors array when using the createEditor API. - Fixed bug where the formatter applied formats on the wrong content when spellchecker was activated. - Fixed bug where switching formats would reset font size on child nodes. - Fixed bug where the table caption element weren't always the first descendant to the table tag. - Fixed bug where pasting some content into the editor on chrome some newlines were removed. - Fixed bug where it wasn't possible to remove a list if a list item was a table element. - Fixed bug where copy/pasting partial selections of tables wouldn't produce a proper table. - Fixed bug where the searchreplace plugin could not find consecutive spaces. - Fixed bug where background color wasn't applied correctly on some partially selected contents. -Version 4.6.5 (2017-08-02) - Added new inline_boundaries_selector that allows you to specify the elements that should have boundaries. - Added new local upload feature this allows the user to upload images directly from the image dialog. - Added a new api for providing meta data for plugins. It will show up in the help dialog if it's provided. - Fixed so that the notifications created by the notification manager are more screen reader accessible. - Fixed bug where changing the list format on multiple selected lists didn't change all of the lists. - Fixed bug where the nonbreaking plugin would insert multiple undo levels when pressing the tab key. - Fixed bug where delete/backspace wouldn't render a caret when all editor contents where deleted. - Fixed bug where delete/backspace wouldn't render a caret if the deleted element was a single contentEditable false element. - Fixed bug where the wordcount plugin wouldn't count words correctly if word where typed after applying a style format. - Fixed bug where the wordcount plugin would count mathematical formulas as multiple words for example 1+1=2. - Fixed bug where formatting of triple clicked blocks on Chrome/Safari would result in styles being added outside the visual selection. - Fixed bug where paste would add the contents to the end of the editor area when inline mode was used. - Fixed bug where toggling off bold formatting on text entered in a new paragraph would add an extra line break. - Fixed bug where autolink plugin would only produce a link on every other consecutive link on Firefox. - Fixed bug where it wasn't possible to select all contents if the content only had one pre element. - Fixed bug where sizzle would produce lagging behavior on some sites due to repaints caused by feature detection. - Fixed bug where toggling off inline formats wouldn't include the space on selected contents with leading or trailing spaces. - Fixed bug where the cut operation in UI wouldn't work in Chrome. - Fixed bug where some legacy editor initialization logic would throw exceptions about editor settings not being defined. - Fixed bug where it wasn't possible to apply text color to links if they where part of a non collapsed selection. - Fixed bug where an exception would be thrown if the user selected a video element and then moved the focus outside the editor. - Fixed bug where list operations didn't work if there where block elements inside the list items. - Fixed bug where applying block formats to lists wrapped in block elements would apply to all elements in that wrapped block. -Version 4.6.4 (2017-06-13) - Fixed bug where the editor would move the caret when clicking on the scrollbar next to a content editable false block. - Fixed bug where the text color select dropdowns wasn't placed correctly when they didn't fit the width of the screen. - Fixed bug where the default editor line height wasn't working for mixed font size contents. - Fixed bug where the content css files for inline editors were loaded multiple times for multiple editor instances. - Fixed bug where the initial value of the font size/font family dropdowns wasn't displayed. - Fixed bug where the I18n api was not supporting arrays as the translation replacement values. - Fixed bug where chrome would display "The given range isn't in document." errors for invalid ranges passed to setRng. - Fixed bug where the compat3x plugin wasn't working since the global tinymce references wasn't resolved correctly. - Fixed bug where the preview plugin wasn't encoding the base url passed into the iframe contents producing a xss bug. - Fixed bug where the dom parser/serializer wasn't handling some special elements like noframes, title and xmp. - Fixed bug where the dom parser/serializer wasn't handling cdata sections with comments inside. - Fixed bug where the editor would scroll to the top of the editable area if a dialog was closed in inline mode. - Fixed bug where the link dialog would not display the right rel value if rel_list was configured. - Fixed bug where the context menu would select images on some platforms but not others. - Fixed bug where the filenames of images were not retained on dragged and drop into the editor from the desktop. - Fixed bug where the paste plugin would misrepresent newlines when pasting plain text and having forced_root_block configured. - Fixed so that the error messages for the imagetools plugin is more human readable. - Fixed so the internal validate setting for the parser/serializer can't be set from editor initialization settings. -Version 4.6.3 (2017-05-30) - Fixed bug where the arrow keys didn't work correctly when navigating on nested inline boundary elements. - Fixed bug where delete/backspace didn't work correctly on nested inline boundary elements. - Fixed bug where image editing didn't work on subsequent edits of the same image. - Fixed bug where charmap descriptions wouldn't properly wrap if they exceeded the width of the box. - Fixed bug where the default image upload handler only accepted 200 as a valid http status code. - Fixed so rel on target=_blank links gets forced with only noopener instead of both noopener and noreferrer. -Version 4.6.2 (2017-05-23) - Fixed bug where the SaxParser would run out of memory on very large documents. - Fixed bug with formatting like font size wasn't applied to del elements. - Fixed bug where various api calls would be throwing exceptions if they where invoked on a removed editor instance. - Fixed bug where the branding position would be incorrect if the editor was inside a hidden tab and then later showed. - Fixed bug where the color levels feature in the imagetools dialog wasn't working properly. - Fixed bug where imagetools dialog wouldn't pre-load images from CORS domains, before trying to prepare them for editing. - Fixed bug where the tab key would move the caret to the next table cell if being pressed inside a list inside a table. - Fixed bug where the cut/copy operations would loose parent context like the current format etc. - Fixed bug with format preview not working on invalid elements excluded by valid_elements. - Fixed bug where blocks would be merged in incorrect order on backspace/delete. - Fixed bug where zero length text nodes would cause issues with the undo logic if there where iframes present. - Fixed bug where the font size/family select lists would throw errors if the first node was a comment. - Fixed bug with csp having to allow local script evaluation since it was used to detect global scope. - Fixed bug where CSP required a relaxed option for javascript: URLs in unsupported legacy browsers. - Fixed bug where a fake caret would be rendered for td with the contenteditable=false. - Fixed bug where typing would be blocked on IE 11 when within a nested contenteditable=true/false structure. -Version 4.6.1 (2017-05-10) - Added configuration option to list plugin to disable tab indentation. - Fixed bug where format change on very specific content could cause the selection to change. - Fixed bug where TinyMCE could not be lazyloaded through jquery integration. - Fixed bug where entities in style attributes weren't decoded correctly on paste in webkit. - Fixed bug where fontsize_formats option had been renamed incorrectly. - Fixed bug with broken backspace/delete behaviour between contenteditable=false blocks. - Fixed bug where it wasn't possible to backspace to the previous line with the inline boundaries functionality turned on. - Fixed bug where is wasn't possible to move caret left and right around a linked image with the inline boundaries functionality turned on. - Fixed bug where pressing enter after/before hr element threw exception. Patch contributed bradleyke. - Fixed so the CSS in the visualblocks plugin doesn't overwrite background color. Patch contributed by Christian Rank. - Fixed bug where multibyte characters weren't encoded correctly. Patch contributed by James Tarkenton. - Fixed bug where shift-click to select within contenteditable=true fields wasn't working. -Version 4.6.0 (2017-05-04) - Dropped support for IE 8-10 due to market share and lack of support from Microsoft. See tinymce docs for details. - Added an inline boundary caret position feature that makes it easier to type at the beginning/end of links/code elements. - Added a help plugin that adds a button and a dialog showing the editor shortcuts and loaded plugins. - Added an inline_boundaries option that allows you to disable the inline boundary feature if it's not desired. - Added a new ScrollIntoView event that allows you to override the default scroll to element behavior. - Added role and aria- attributes as valid elements in the default valid elements config. - Added new internal flag for PastePreProcess/PastePostProcess this is useful to know if the paste was coming from an external source. - Added new ignore function to UndoManager this works similar to transact except that it doesn't add an undo level by default. - Fixed so that urls gets retained for images when being edited. This url is then passed on to the upload handler. - Fixed so that the editors would be initialized on readyState interactive instead of complete. - Fixed so that the init event of the editor gets fired once all contentCSS files have been properly loaded. - Fixed so that width/height of the editor gets taken from the textarea element if it's explicitly specified in styles. - Fixed so that keep_styles set to false no longer clones class/style from the previous paragraph on enter. - Fixed so that the default line-height is 1.2em to avoid zwnbsp characters from producing text rendering glitches on Windows. - Fixed so that loading errors of content css gets presented by a notification message. - Fixed so figure image elements can be linked when selected this wraps the figure image in a anchor element. - Fixed bug where it wasn't possible to copy/paste rows with colspans by using the table copy/paste feature. - Fixed bug where the protect setting wasn't properly applied to header/footer parts when using the fullpage plugin. - Fixed bug where custom formats that specified upper case element names where not applied correctly. - Fixed bug where some screen readers weren't reading buttons due to an aria specific fix for IE 8. - Fixed bug where cut wasn't working correctly on iOS due to it's clipboard API not working correctly. - Fixed bug where Edge would paste div elements instead of paragraphs when pasting plain text. - Fixed bug where the textpattern plugin wasn't dealing with trailing punctuations correctly. - Fixed bug where image editing would some times change the image format from jpg to png. - Fixed bug where some UI elements could be inserted into the toolbar even if they where not registered. - Fixed bug where it was possible to click the TD instead of the character in the character map and that caused an exception. - Fixed bug where the font size/font family dropdowns would sometimes show an incorrect value due to css not being loaded in time. - Fixed bug with the media plugin inserting undefined instead of retaining size when media_dimensions was set to false. - Fixed bug with deleting images when forced_root_blocks where set to false. - Fixed bug where input focus wasn't properly handled on nested content editable elements. - Fixed bug where Chrome/Firefox would throw an exception when selecting images due to recent change of setBaseAndExtent support. - Fixed bug where malformed blobs would throw exceptions now they are simply ignored. - Fixed bug where backspace/delete wouldn't work properly in some cases where all contents was selected in WebKit. - Fixed bug with Angular producing errors since it was expecting events objects to be patched with their custom properties. - Fixed bug where the formatter would apply formatting to spellchecker errors now all bogus elements are excluded. - Fixed bug with backspace/delete inside table caption elements wouldn't behave properly on IE 11. - Fixed bug where typing after a contenteditable false inline element could move the caret to the end of that element. - Fixed bug where backspace before/after contenteditable false blocks wouldn't properly remove the right element. - Fixed bug where backspace before/after contenteditable false inline elements wouldn't properly empty the current block element. - Fixed bug where vertical caret navigation with a custom line-height would sometimes match incorrect positions. - Fixed bug with paste on Edge where character encoding wasn't handled properly due to a browser bug. - Fixed bug with paste on Edge where extra fragment data was inserted into the contents when pasting. - Fixed bug with pasting contents when having a whole block element selected on WebKit could cause WebKit spans to appear. - Fixed bug where the visualchars plugin wasn't working correctly showing invisible nbsp characters. - Fixed bug where browsers would hang if you tried to load some malformed html contents. - Fixed bug where the init call promise wouldn't resolve if the specified selector didn't find any matching elements. - Fixed bug where the Schema isValidChild function was case sensitive. -Version 4.5.3 (2017-02-01) - Added keyboard navigation for menu buttons when the menu is in focus. - Added api to the list plugin for setting custom classes/attributes on lists. - Added validation for the anchor plugin input field according to W3C id naming specifications. - Fixed bug where media placeholders were removed after resize with the forced_root_block setting set to false. - Fixed bug where deleting selections with similar sibling nodes sometimes deleted the whole document. - Fixed bug with inlite theme where several toolbars would appear scrolling when more than one instance of the editor was in use. - Fixed bug where the editor would throw error with the fontselect plugin on hidden editor instances in Firefox. - Fixed bug where the background color would not stretch to the font size. - Fixed bug where font size would be removed when changing background color. - Fixed bug where the undomanager trimmed away whitespace between nodes on undo/redo. - Fixed bug where media_dimensions=false in media plugin caused the editor to throw an error. - Fixed bug where IE was producing font/u elements within links on paste. - Fixed bug where some button tooltips were broken when compat3x was in use. - Fixed bug where backspace/delete/typeover would remove the caption element. - Fixed bug where powerspell failed to function when compat3x was enabled. - Fixed bug where it wasn't possible to apply sub/sup on text with large font size. - Fixed bug where pre tags with spaces weren't treated as content. - Fixed bug where Meta+A would select the entire document instead of all contents in nested ce=true elements. -Version 4.5.2 (2017-01-04) - Added missing keyboard shortcut description for the underline menu item in the format menu. - Fixed bug where external blob urls wasn't properly handled by editor upload logic. Patch contributed by David Oviedo. - Fixed bug where urls wasn't treated as a single word by the wordcount plugin. - Fixed bug where nbsp characters wasn't treated as word delimiters by the wordcount plugin. - Fixed bug where editor instance wasn't properly passed to the format preview logic. Patch contributed by NullQuery. - Fixed bug where the fake caret wasn't hidden when you moved selection to a cE=false element. - Fixed bug where it wasn't possible to edit existing code sample blocks. - Fixed bug where it wasn't possible to delete editor contents if the selection included an empty block. - Fixed bug where the formatter wasn't expanding words on some international characters. Patch contributed by Martin Larochelle. - Fixed bug where the open link feature wasn't working correctly on IE 11. - Fixed bug where enter before/after a cE=false block wouldn't properly padd the paragraph with an br element. - Fixed so font size and font family select boxes always displays a value by using the runtime style as a fallback. - Fixed so missing plugins will be logged to console as warnings rather than halting the initialization of the editor. - Fixed so splitbuttons become normal buttons in advlist plugin if styles are empty. Patch contributed by René Schleusner. - Fixed so you can multi insert rows/cols by selecting table cells and using insert rows/columns. -Version 4.5.1 (2016-12-07) - Fixed bug where the lists plugin wouldn't initialize without the advlist plugins if served from cdn. - Fixed bug where selectors with "*" would cause the style format preview to throw an error. - Fixed bug with toggling lists off on lists with empty list items would throw an error. - Fixed bug where editing images would produce non existing blob uris. - Fixed bug where the offscreen toc selection would be treated as the real toc element. - Fixed bug where the aria level attribute for element path would have an incorrect start index. - Fixed bug where the offscreen selection of cE=false that where very wide would be shown onscreen. Patch contributed by Steven Bufton. - Fixed so the default_link_target gets applied to links created by the autolink plugin. - Fixed so that the name attribute gets removed by the anchor plugin if editing anchors. -Version 4.5.0 (2016-11-23) - Added new toc plugin allows you to insert table of contents based on editor headings. - Added new auto complete menu to all url fields. Adds history, link to anchors etc. - Added new sidebar api that allows you to add custom sidebar panels and buttons to toggle these. - Added new insert menu button that allows you to have multiple insert functions under the same menu button. - Added new open link feature to ctrl+click, alt+enter and context menu. - Added new media_embed_handler option to allow the media plugin to be populated with custom embeds. - Added new support for editing transparent images using the image tools dialog. - Added new images_reuse_filename option to allow filenames of images to be retained for upload. - Added new security feature where links with target="_blank" will by default get rel="noopener noreferrer". - Added new allow_unsafe_link_target to allow you to opt-out of the target="_blank" security feature. - Added new style_formats_autohide option to automatically hide styles based on context. - Added new codesample_content_css option to specify where the code sample prism css is loaded from. - Added new support for Japanese/Chinese word count following the unicode standards on this. - Added new fragmented undo levels this dramatically reduces flicker on contents with iframes. - Added new live previews for complex elements like table or lists. - Fixed bug where it wasn't possible to properly tab between controls in a dialog with a disabled form item control. - Fixed bug where firefox would generate a rectangle on elements produced after/before a cE=false elements. - Fixed bug with advlist plugin not switching list element format properly in some edge cases. - Fixed bug where col/rowspans wasn't correctly computed by the table plugin in some cases. - Fixed bug where the table plugin would thrown an error if object_resizing was disabled. - Fixed bug where some invalid markup would cause issues when running in XHTML mode. Patch contributed by Charles Bourasseau. - Fixed bug where the fullscreen class wouldn't be removed properly when closing dialogs. - Fixed bug where the PastePlainTextToggle event wasn't fired by the paste plugin when the state changed. - Fixed bug where table the row type wasn't properly updated in table row dialog. Patch contributed by Matthias Balmer. - Fixed bug where select all and cut wouldn't place caret focus back to the editor in WebKit. Patch contributed by Daniel Jalkut. - Fixed bug where applying cell/row properties to multiple cells/rows would reset other unchanged properties. - Fixed bug where some elements in the schema would have redundant/incorrect children. - Fixed bug where selector and target options would cause issues if used together. - Fixed bug where drag/drop of images from desktop on chrome would thrown an error. - Fixed bug where cut on WebKit/Blink wouldn't add an undo level. - Fixed bug where IE 11 would scroll to the cE=false elements when they where selected. - Fixed bug where keys like F5 wouldn't work when a cE=false element was selected. - Fixed bug where the undo manager wouldn't stop the typing state when commands where executed. - Fixed bug where unlink on wrapped links wouldn't work properly. - Fixed bug with drag/drop of images on WebKit where the image would be deleted form the source editor. - Fixed bug where the visual characters mode would be disabled when contents was extracted from the editor. - Fixed bug where some browsers would toggle of formats applied to the caret when clicking in the editor toolbar. - Fixed bug where the custom theme function wasn't working correctly. - Fixed bug where image option for custom buttons required you to have icon specified as well. - Fixed bug where the context menu and contextual toolbars would be visible at the same time and sometimes overlapping. - Fixed bug where the noneditable plugin would double wrap elements when using the noneditable_regexp option. - Fixed bug where tables would get padding instead of margin when you used the indent button. - Fixed bug where the charmap plugin wouldn't properly insert non breaking spaces. - Fixed bug where the color previews in color input boxes wasn't properly updated. - Fixed bug where the list items of previous lists wasn't merged in the right order. - Fixed bug where it wasn't possible to drag/drop inline-block cE=false elements on IE 11. - Fixed bug where some table cell merges would produce incorrect rowspan/colspan. - Fixed so the font size of the editor defaults to 14px instead of 11px this can be overridden by custom css. - Fixed so wordcount is debounced to reduce cpu hogging on larger texts. - Fixed so tinymce global gets properly exported as a module when used with some module bundlers. - Fixed so it's possible to specify what css properties you want to preview on specific formats. - Fixed so anchors are contentEditable=false while within the editor. - Fixed so selected contents gets wrapped in a inline code element by the codesample plugin. - Fixed so conditional comments gets properly stripped independent of case. Patch contributed by Georgii Dolzhykov. - Fixed so some escaped css sequences gets properly handled. Patch contributed by Georgii Dolzhykov. - Fixed so notifications with the same message doesn't get displayed at the same time. - Fixed so F10 can be used as an alternative key to focus to the toolbar. - Fixed various api documentation issues and typos. - Removed layer plugin since it wasn't really ported from 3.x and there doesn't seem to be much use for it. - Removed moxieplayer.swf from the media plugin since it wasn't used by the media plugin. - Removed format state from the advlist plugin to be more consistent with common word processors. -Version 4.4.3 (2016-09-01) - Fixed bug where copy would produce an exception on Chrome. - Fixed bug where deleting lists on IE 11 would merge in correct text nodes. - Fixed bug where deleting partial lists with indentation wouldn't cause proper normalization. -Version 4.4.2 (2016-08-25) - Added new importcss_exclusive option to disable unique selectors per group. - Added new group specific selector_converter option to importcss plugin. - Added new codesample_languages option to apply custom languages to codesample plugin. - Added new codesample_dialog_width/codesample_dialog_height options. - Fixed bug where fullscreen button had an incorrect keyboard shortcut. - Fixed bug where backspace/delete wouldn't work correctly from a block to a cE=false element. - Fixed bug where smartpaste wasn't detecting links with special characters in them like tilde. - Fixed bug where the editor wouldn't get proper focus if you clicked on a cE=false element. - Fixed bug where it wasn't possible to copy/paste table rows that had merged cells. - Fixed bug where merging cells could some times produce invalid col/rowspan attibute values. - Fixed bug where getBody would sometimes thrown an exception now it just returns null if the iframe is clobbered. - Fixed bug where drag/drop of cE=false element wasn't properly constrained to viewport. - Fixed bug where contextmenu on Mac would collapse any selection to a caret. - Fixed bug where rtl mode wasn't rendered properly when loading a language pack with the rtl flag. - Fixed bug where Kamer word bounderies would be stripped from contents. - Fixed bug where lists would sometimes render two dots or numbers on the same line. - Fixed bug where the skin_url wasn't used by the inlite theme. - Fixed so data attributes are ignored when comparing formats in the formatter. - Fixed so it's possible to disable inline toolbars in the inlite theme. - Fixed so template dialog gets resized if it doesn't fit the window viewport. -Version 4.4.1 (2016-07-26) - Added smart_paste option to paste plugin to allow disabling the paste behavior if needed. - Fixed bug where png urls wasn't properly detected by the smart paste logic. - Fixed bug where the element path wasn't working properly when multiple editor instances where used. - Fixed bug with creating lists out of multiple paragraphs would just create one list item instead of multiple. - Fixed bug where scroll position wasn't properly handled by the inlite theme to place the toolbar properly. - Fixed bug where multiple instances of the editor using the inlite theme didn't render the toolbar properly. - Fixed bug where the shortcut label for fullscreen mode didn't match the actual shortcut key. - Fixed bug where it wasn't possible to select cE=false blocks using touch devices on for example iOS. - Fixed bug where it was possible to select the child image within a cE=false on IE 11. - Fixed so inserts of html containing lists doesn't merge with any existing lists unless it's a paste operation. -Version 4.4.0 (2016-06-30) - Added new inlite theme this is a more lightweight inline UI. - Added smarter paste logic that auto detects urls in the clipboard and inserts images/links based on that. - Added a better image resize algorithm for better image quality in the imagetools plugin. - Fixed bug where it wasn't possible to drag/dropping cE=false elements on FF. - Fixed bug where backspace/delete before/after a cE=false block would produce a new paragraph. - Fixed bug where list style type css property wasn't preserved when indenting lists. - Fixed bug where merging of lists where done even if the list style type was different. - Fixed bug where the image_dataimg_filter function wasn't used when pasting images. - Fixed bug where nested editable within a non editable element would cause scroll on focus in Chrome. - Fixed so invalid targets for inline mode is blocked on initialization. We only support elements that can have children. -Version 4.3.13 (2016-06-08) - Added characters with a diacritical mark to charmap plugin. Patch contributed by Dominik Schilling. - Added better error handling if the image proxy service would produce errors. - Fixed issue with pasting list items into list items would produce nested list rather than a merged list. - Fixed bug where table selection could get stuck in selection mode for inline editors. - Fixed bug where it was possible to place the caret inside the resize grid elements. - Fixed bug where it wasn't possible to place in elements horizontally adjacent cE=false blocks. - Fixed bug where multiple notifications wouldn't be properly placed on screen. - Fixed bug where multiple editor instance of the same id could be produces in some specific integrations. -Version 4.3.12 (2016-05-10) - Fixed bug where focus calls couldn't be made inside the editors PostRender event handler. - Fixed bug where some translations wouldn't work as expected due to a bug in editor.translate. - Fixed bug where the node change event could fire with a node out side the root of the editor. - Fixed bug where Chrome wouldn't properly present the keyboard paste clipboard details when paste was clicked. - Fixed bug where merged cells in tables couldn't be selected from right to left. - Fixed bug where insert row wouldn't properly update a merged cells rowspan property. - Fixed bug where the color input boxes preview field wasn't properly set on initialization. - Fixed bug where IME composition inside table cells wouldn't work as expected on IE 11. - Fixed so all shadow dom support is under and experimental flag due to flaky browser support. -Version 4.3.11 (2016-04-25) - Fixed bug where it wasn't possible to insert empty blocks though the API unless they where padded. - Fixed bug where you couldn't type the Euro character on Windows. - Fixed bug where backspace/delete from a cE=false element to a text block didn't work properly. - Fixed bug where the text color default grid would render incorrectly. - Fixed bug where the codesample plugin wouldn't load the css in the editor for multiple editors. - Fixed so the codesample plugin textarea gets focused by default. -Version 4.3.10 (2016-04-12) - Fixed bug where the key "y" on WebKit couldn't be entered due to conflict with keycode for F10 on keypress. -Version 4.3.9 (2016-04-12) - Added support for focusing the contextual toolbars using keyboard. - Added keyboard support for slider UI controls. You can no increase/decrease using arrow keys. - Added url pattern matching for Dailymotion to media plugin. Patch contributed by Bertrand Darbon. - Added body_class to template plugin preview. Patch contributed by Milen Petrinski. - Added options to better override textcolor pickers with custom colors. Patch contributed by Xavier Boubert. - Added visual arrows to inline contextual toolbars so that they point to the element being active. - Fixed so toolbars for tables or other larger elements get better positioned below the scrollable viewport. - Fixed bug where it was possible to click links inside cE=false blocks. - Fixed bug where event targets wasn't properly handled in Safari Technical Preview. - Fixed bug where drag/drop text in FF 45 would make the editor caret invisible. - Fixed bug where the remove state wasn't properly set on editor instances when detected as clobbered. - Fixed bug where offscreen selection of some cE=false elements would render onscreen. Patch contributed by Steven Bufton - Fixed bug where enter would clone styles out side the root on editors inside a span. Patch contributed by ChristophKaser. - Fixed bug where drag/drop of images into the editor didn't work correctly in FF. - Fixed so the first item in panels for the imagetools dialog gets proper keyboard focus. - Changed the Meta+Shift+F shortcut to Ctrl+Shift+F since Czech, Slovak, Polish languages used the first one for input. -Version 4.3.8 (2016-03-15) - Fixed bug where inserting HR at the end of a block element would produce an extra empty block. - Fixed bug where links would be clickable when readonly mode was enabled. - Fixed bug where the formatter would normalize to the wrong node on very specific content. - Fixed bug where some nested list items couldn't be indented properly. - Fixed bug where links where clickable in the preview dialog. - Fixed so the alt attribute doesn't get padded with an empty value by default. - Fixed so nested alignment works more correctly. You will now alter the alignment to the closest block parent. -Version 4.3.7 (2016-03-02) - Fixed bug where incorrect icons would be rendered for imagetools edit and color levels. - Fixed bug where navigation using arrow keys inside a SelectBox didn't move up/down. - Fixed bug where the visualblocks plugin would render borders round internal UI elements. -Version 4.3.6 (2016-03-01) - Added new paste_remember_plaintext_info option to allow a global disable of the plain text mode notification. - Added new PastePlainTextToggle event that fires when plain text mode toggles on/off. - Fixed bug where it wasn't possible to select media elements since the drag logic would snap it to mouse cursor. - Fixed bug where it was hard to place the caret inside nested cE=true elements when the outer cE=false element was focused. - Fixed bug where editors wouldn't properly initialize if both selector and mode where used. - Fixed bug where IME input inside table cells would switch the IME off. - Fixed bug where selection inside the first table cell would cause the whole table cell to get selected. - Fixed bug where error handling of images being uploaded wouldn't properly handle faulty statuses. - Fixed bug where inserting contents before a HR would cause an exception to be thrown. - Fixed bug where copy/paste of Excel data would be inserted as an image. - Fixed caret position issues with copy/paste of inline block cE=false elements. - Fixed issues with various menu item focus bugs in Chrome. Where the focused menu bar item wasn't properly blurred. - Fixed so the notifications have a solid background since it would be hard to read if there where text under it. - Fixed so notifications gets animated similar to the ones used by dialogs. - Fixed so larger images that gets pasted is handled better. - Fixed so the window close button is more uniform on various platform and also increased it's hit area. -Version 4.3.5 (2016-02-11) - Npm version bump due to package not being fully updated. -Version 4.3.4 (2016-02-11) - Added new OpenWindow/CloseWindow events that gets fired when windows open/close. - Added new NewCell/NewRow events that gets fired when table cells/rows are created. - Added new Promise return value to tinymce.init makes it easier to handle initialization. - Removed the jQuery version the jQuery plugin is now moved into the main package. - Removed jscs from build process since eslint can now handle code style checking. - Fixed various bugs with drag/drop of contentEditable:false elements. - Fixed bug where deleting of very specific nested list items would result in an odd list. - Fixed bug where lists would get merged with adjacent lists outside the editable inline root. - Fixed bug where MS Edge would crash when closing a dialog then clicking a menu item. - Fixed bug where table cell selection would add undo levels. - Fixed bug where table cell selection wasn't removed when inline editor where removed. - Fixed bug where table cell selection wouldn't work properly on nested tables. - Fixed bug where table merge menu would be available when merging between thead and tbody. - Fixed bug where table row/column resize wouldn't get properly removed when the editor was removed. - Fixed bug where Chrome would scroll to the editor if there where a empty hash value in document url. - Fixed bug where the cache suffix wouldn't work correctly with the importcss plugin. - Fixed bug where selection wouldn't work properly on MS Edge on Windows Phone 10. - Fixed so adjacent pre blocks gets joined into one pre block since that seems like the user intent. - Fixed so events gets properly dispatched in shadow dom. Patch provided by Nazar Mokrynskyi. -Version 4.3.3 (2016-01-14) - Added new table_resize_bars configuration setting. This setting allows you to disable the table resize bars. - Added new beforeInitialize event to tinymce.util.XHR lets you modify XHR properties before open. Patch contributed by Brent Clintel. - Added new autolink_pattern setting to autolink plugin. Enables you to override the default autolink formats. Patch contributed by Ben Tiedt. - Added new charmap option that lets you override the default charmap of the charmap plugin. - Added new charmap_append option that lets you add new characters to the default charmap of the charmap plugin. - Added new insertCustomChar event that gets fired when a character is inserted by the charmap plugin. - Fixed bug where table cells started with a superfluous   in IE10+. - Fixed bug where table plugin would retain all BR tags when cells were merged. - Fixed bug where media plugin would strip underscores from youtube urls. - Fixed bug where IME input would fail on IE 11 if you typed within a table. - Fixed bug where double click selection of a word would remove the space before the word on insert contents. - Fixed bug where table plugin would produce exceptions when hovering tables with invalid structure. - Fixed bug where fullscreen wouldn't scroll back to it's original position when untoggled. - Fixed so the template plugins templates setting can be a function that gets a callback that can provide templates. -Version 4.3.2 (2015-12-14) - Fixed bug where the resize bars for table cells were not affected by the object_resizing property. - Fixed bug where the contextual table toolbar would appear incorrectly if TinyMCE was initialized inline inside a table. - Fixed bug where resizing table cells did not fire a node change event or add an undo level. - Fixed bug where double click selection of text on IE 11 wouldn't work properly. - Fixed bug where codesample plugin would incorrectly produce br elements inside code elements. - Fixed bug where media plugin would strip dashes from youtube urls. - Fixed bug where it was possible to move the caret into the table resize bars. - Fixed bug where drag/drop into a cE=false element was possible on IE. -Version 4.3.1 (2015-11-30) - Fixed so it's possible to disable the table inline toolbar by setting it to false or an empty string. - Fixed bug where it wasn't possible to resize some tables using the drag handles. - Fixed bug where unique id:s would clash for multiple editor instances and cE=false selections. - Fixed bug where the same plugin could be initialized multiple times. - Fixed bug where the table inline toolbars would be displayed at the same time as the image toolbars. - Fixed bug where the table selection rect wouldn't be removed when selecting another control element. -Version 4.3.0 (2015-11-23) - Added new table column/row resize support. Makes it a lot more easy to resize the columns/rows in a table. - Added new table inline toolbar. Makes it easier to for example add new rows or columns to a table. - Added new notification API. Lets you display floating notifications to the end user. - Added new codesample plugin that lets you insert syntax highlighted pre elements into the editor. - Added new image_caption to images. Lets you create images with captions using a HTML5 figure/figcaption elements. - Added new live previews of embeded videos. Lets you play the video right inside the editor. - Added new setDirty method and "dirty" event to the editor. Makes it easier to track the dirty state change. - Added new setMode method to Editor instances that lets you dynamically switch between design/readonly. - Added new core support for contentEditable=false elements within the editor overrides the browsers broken behavior. - Rewrote the noneditable plugin to use the new contentEditable false core logic. - Fixed so the dirty state doesn't set to false automatically when the undo index is set to 0. - Fixed the Selection.placeCaretAt so it works better on IE when the coordinate is between paragraphs. - Fixed bug where data-mce-bogus="all" element contents where counted by the word count plugin. - Fixed bug where contentEditable=false elements would be indented by the indent buttons. - Fixed bug where images within contentEditable=false would be selected in WebKit on mouse click. - Fixed bug in DOMUntils split method where the replacement parameter wouldn't work on specific cases. - Fixed bug where the importcss plugin would import classes from the skin content css file. - Fixed so all button variants have a wrapping span for it's text to make it easier to skin. - Fixed so it's easier to exit pre block using the arrow keys. - Fixed bug where listboxes with fix widths didn't render correctly. -Version 4.2.8 (2015-11-13) - Fixed bug where it was possible to delete tables as the inline root element if all columns where selected. - Fixed bug where the UI buttons active state wasn't properly updated due to recent refactoring of that logic. -Version 4.2.7 (2015-10-27) - Fixed bug where backspace/delete would remove all formats on the last paragraph character in WebKit/Blink. - Fixed bug where backspace within a inline format element with a bogus caret container would move the caret. - Fixed bug where backspace/delete on selected table cells wouldn't add an undo level. - Fixed bug where script tags embedded within the editor could sometimes get a mce- prefix prepended to them - Fixed bug where validate: false option could produce an error to be thrown from the Serialization step. - Fixed bug where inline editing of a table as the root element could let the user delete that table. - Fixed bug where inline editing of a table as the root element wouldn't properly handle enter key. - Fixed bug where inline editing of a table as the root element would normalize the selection incorrectly. - Fixed bug where inline editing of a list as the root element could let the user delete that list. - Fixed bug where inline editing of a list as the root element could let the user split that list. - Fixed bug where resize handles would be rendered on editable root elements such as table. -Version 4.2.6 (2015-09-28) - Added capability to set request headers when using XHRs. - Added capability to upload local images automatically default delay is set to 30 seconds after editing images. - Added commands ids mceEditImage, mceAchor and mceMedia to be avaiable from execCommand. - Added Edge browser to saucelabs grunt task. Patch contributed by John-David Dalton. - Fixed bug where blob uris not produced by tinymce would produce HTML invalid markup. - Fixed bug where selection of contents of a nearly empty editor in Edge would sometimes fail. - Fixed bug where color styles woudln't be retained on copy/paste in Blink/Webkit. - Fixed bug where the table plugin would throw an error when inserting rows after a child table. - Fixed bug where the template plugin wouldn't handle functions as variable replacements. - Fixed bug where undo/redo sometimes wouldn't work properly when applying formatting collapsed ranges. - Fixed bug where shift+delete wouldn't do a cut operation on Blink/WebKit. - Fixed bug where cut action wouldn't properly store the before selection bookmark for the undo level. - Fixed bug where backspace in side an empty list element on IE would loose editor focus. - Fixed bug where the save plugin wouldn't enable the buttons when a change occurred. - Fixed bug where Edge wouldn't initialize the editor if a document.domain was specified. - Fixed bug where enter key before nested images would sometimes not properly expand the previous block. - Fixed bug where the inline toolbars wouldn't get properly hidden when blurring the editor instance. - Fixed bug where Edge would paste Chinese characters on some Windows 10 installations. - Fixed bug where IME would loose focus on IE 11 due to the double trailing br bug fix. - Fixed bug where the proxy url in imagetools was incorrect. Patch contributed by Wong Ho Wang. -Version 4.2.5 (2015-08-31) - Added fullscreen capability to embedded youtube and vimeo videos. - Fixed bug where the uploadImages call didn't work on IE 10. - Fixed bug where image place holders would be uploaded by uploadImages call. - Fixed bug where images marked with bogus would be uploaded by the uploadImages call. - Fixed bug where multiple calls to uploadImages would result in decreased performance. - Fixed bug where pagebreaks were editable to imagetools patch contributed by Rasmus Wallin. - Fixed bug where the element path could cause too much recursion exception. - Fixed bug for domains containing ".min". Patch contributed by Loïc Février. - Fixed so validation of external links to accept a number after www. Patch contributed by Victor Carvalho. - Fixed so the charmap is exposed though execCommand. Patch contributed by Matthew Will. - Fixed so that the image uploads are concurrent for improved performance. - Fixed various grammar problems in inline documentation. Patches provided by nikolas. -Version 4.2.4 (2015-08-17) - Added picture as a valid element to the HTML 5 schema. Patch contributed by Adam Taylor. - Fixed bug where contents would be duplicated on drag/drop within the same editor. - Fixed bug where floating/alignment of images on Edge wouldn't work properly. - Fixed bug where it wasn't possible to drag images on IE 11. - Fixed bug where image selection on Edge would sometimes fail. - Fixed bug where contextual toolbars icons wasn't rendered properly when using the toolbar_items_size. - Fixed bug where searchreplace dialog doesn't get prefilled with the selected text. - Fixed bug where fragmented matches wouldn't get properly replaced by the searchreplace plugin. - Fixed bug where enter key wouldn't place the caret if was after a trailing space within an inline element. - Fixed bug where the autolink plugin could produce multiple links for the same text on Gecko. - Fixed bug where EditorUpload could sometimes throw an exception if the blob wasn't found. - Fixed xss issues with media plugin not properly filtering out some script attributes. -Version 4.2.3 (2015-07-30) - Fixed bug where image selection wasn't possible on Edge due to incompatible setBaseAndExtend API. - Fixed bug where image blobs urls where not properly destroyed by the imagetools plugin. - Fixed bug where keyboard shortcuts wasn't working correctly on IE 8. - Fixed skin issue where the borders of panels where not visible on IE 8. -Version 4.2.2 (2015-07-22) - Fixed bug where float panels were not being hidden on inline editor blur when fixed_toolbar_container config option was in use. - Fixed bug where combobox states wasn't properly updated if contents where updated without keyboard. - Fixed bug where pasting into textbox or combobox would move the caret to the end of text. - Fixed bug where removal of bogus span elements before block elements would remove whitespace between nodes. - Fixed bug where repositioning of inline toolbars where async and producing errors if the editor was removed from DOM to early. Patch by iseulde. - Fixed bug where element path wasn't working correctly. Patch contributed by iseulde. - Fixed bug where menus wasn't rendered correctly when custom images where added to a menu. Patch contributed by Naim Hammadi. -Version 4.2.1 (2015-06-29) - Fixed bug where back/forward buttons in the browser would render blob images as broken images. - Fixed bug where Firefox would throw regexp to big error when replacing huge base64 chunks. - Fixed bug rendering issues with resize and context toolbars not being placed properly until next animation frame. - Fixed bug where the rendering of the image while cropping would some times not be centered correctly. - Fixed bug where listbox items with submenus would me selected as active. - Fixed bug where context menu where throwing an error when rendering. - Fixed bug where resize both option wasn't working due to resent addClass API change. Patch contributed by Jogai. - Fixed bug where a hideAll call for container rendered inline toolbars would throw an error. - Fixed bug where onclick event handler on combobox could cause issues if element.id was a function by some polluting libraries. - Fixed bug where listboxes wouldn't get proper selected sub menu item when using link_list or image_list. - Fixed so the UI controls are as wide as 4.1.x to avoid wrapping controls in toolbars. - Fixed so the imagetools dialog is adaptive for smaller screen sizes. -Version 4.2.0 (2015-06-25) - Added new flat default skin to make the UI more modern. - Added new imagetools plugin, lets you crop/resize and apply filters to images. - Added new contextual toolbars support to the API lets you add floating toolbars for specific CSS selectors. - Added new promise feature fill as tinymce.util.Promise. - Added new built in image upload feature lets you upload any base64 encoded image within the editor as files. - Fixed bug where resize handles would appear in the right position in the wrong editor when switching between resizable content in different inline editors. - Fixed bug where tables would not be inserted in inline mode due to previous float panel fix. - Fixed bug where floating panels would remain open when focus was lost on inline editors. - Fixed bug where cut command on Chrome would thrown a browser security exception. - Fixed bug where IE 11 sometimes would report an incorrect size for images in the image dialog. - Fixed bug where it wasn't possible to remove inline formatting at the end of block elements. - Fixed bug where it wasn't possible to delete table cell contents when cell selection was vertical. - Fixed bug where table cell wasn't emptied from block elements if delete/backspace where pressed in empty cell. - Fixed bug where cmd+shift+arrow didn't work correctly on Firefox mac when selecting to start/end of line. - Fixed bug where removal of bogus elements would sometimes remove whitespace between nodes. - Fixed bug where the resize handles wasn't updated when the main window was resized. - Fixed so script elements gets removed by default to prevent possible XSS issues in default config implementations. - Fixed so the UI doesn't need manual reflows when using non native layout managers. - Fixed so base64 encoded images doesn't slow down the editor on modern browsers while editing. - Fixed so all UI elements uses touch events to improve mobile device support. - Removed the touch click quirks patch for iOS since it did more harm than good. - Removed the non proportional resize handles since. Unproportional resize can still be done by holding the shift key. -Version 4.1.10 (2015-05-05) - Fixed bug where plugins loaded with compat3x would sometimes throw errors when loading using the jQuery version. - Fixed bug where extra empty paragraphs would get deleted in WebKit/Blink due to recent Quriks fix. - Fixed bug where the editor wouldn't work properly on IE 12 due to some required browser sniffing. - Fixed bug where formatting shortcut keys where interfering with Mac OS X screenshot keys. - Fixed bug where the caret wouldn't move to the next/previous line boundary on Cmd+Left/Right on Gecko. - Fixed bug where it wasn't possible to remove formats from very specific nested contents. - Fixed bug where undo levels wasn't produced when typing letters using the shift or alt+ctrl modifiers. - Fixed bug where the dirty state wasn't properly updated when typing using the shift or alt+ctrl modifiers. - Fixed bug where an error would be thrown if an autofocused editor was destroyed quickly after its initialization. Patch provided by thorn0. - Fixed issue with dirty state not being properly updated on redo operation. - Fixed issue with entity decoder not handling incorrectly written numeric entities. - Fixed issue where some PI element values wouldn't be properly encoded. -Version 4.1.9 (2015-03-10) - Fixed bug where indentation wouldn't work properly for non list elements. - Fixed bug with image plugin not pulling the image dimensions out correctly if a custom document_base_url was used. - Fixed bug where ctrl+alt+[1-9] would conflict with the AltGr+[1-9] on Windows. New shortcuts is ctrl+shift+[1-9]. - Fixed bug with removing formatting on nodes in inline mode would sometimes include nodes outside the editor body. - Fixed bug where extra nbsp:s would be inserted when you replaced a word surrounded by spaces using insertContent. - Fixed bug with pasting from Google Docs would produce extra strong elements and line feeds. -Version 4.1.8 (2015-03-05) - Added new html5 sizes attribute to img elements used together with srcset. - Added new elementpath option that makes it possible to disable the element path but keep the statusbar. - Added new option table_style_by_css for the table plugin to set table styling with css rather than table attributes. - Added new link_assume_external_targets option to prompt the user to prepend http:// prefix if the supplied link does not contain a protocol prefix. - Added new image_prepend_url option to allow a custom base path/url to be added to images. - Added new table_appearance_options option to make it possible to disable some options. - Added new image_title option to make it possible to alter the title of the image, disabled by default. - Fixed bug where selection starting from out side of the body wouldn't produce a proper selection range on IE 11. - Fixed bug where pressing enter twice before a table moves the cursor in the table and causes a javascript error. - Fixed bug where advanced image styles were not respected. - Fixed bug where the less common Shift+Delete didn't produce a proper cut operation on WebKit browsers. - Fixed bug where image/media size constrain logic would produce NaN when handling non number values. - Fixed bug where internal classes where removed by the removeformat command. - Fixed bug with creating links table cell contents with a specific selection would throw a exceptions on WebKit/Blink. - Fixed bug where valid_classes option didn't work as expected according to docs. Patch provided by thorn0. - Fixed bug where jQuery plugin would patch the internal methods multiple times. Patch provided by Drew Martin. - Fixed bug where backspace key wouldn't delete the current selection of newly formatted content. - Fixed bug where type over of inline formatting elements wouldn't properly keep the format on WebKit/Blink. - Fixed bug where selection needed to be properly normalized on modern IE versions. - Fixed bug where Command+Backspace didn't properly delete the whole line of text but the previous word. - Fixed bug where UI active states wheren't properly updated on IE if you placed caret within the current range. - Fixed bug where delete/backspace on WebKit/Blink would remove span elements created by the user. - Fixed bug where delete/backspace would produce incorrect results when deleting between two text blocks with br elements. - Fixed bug where captions where removed when pasting from MS Office. - Fixed bug where lists plugin wouldn't properly remove fully selected nested lists. - Fixed bug where the ttf font used for icons would throw an warning message on Gecko on Mac OS X. - Fixed a bug where applying a color to text did not update the undo/redo history. - Fixed so shy entities gets displayed when using the visualchars plugin. - Fixed so removeformat removes ins/del by default since these might be used for strikethough. - Fixed so multiple language packs can be loaded and added to the global I18n data structure. - Fixed so transparent color selection gets treated as a normal color selection. Patch contributed by Alexander Hofbauer. - Fixed so it's possible to disable autoresize_overflow_padding, autoresize_bottom_margin options by setting them to false. - Fixed so the charmap plugin shows the description of the character in the dialog. Patch contributed by Jelle Hissink. - Removed address from the default list of block formats since it tends to be missused. - Fixed so the pre block format is called preformatted to make it more verbose. - Fixed so it's possible to context scope translation strings this isn't needed most of the time. - Fixed so the max length of the width/height input fields of the media dialog is 5 instead of 3. - Fixed so drag/dropped contents gets properly processed by paste plugin since it's basically a paste. Patch contributed by Greg Fairbanks. - Fixed so shortcut keys for headers is ctrl+alt+[1-9] instead of ctrl+[1-9] since these are for switching tabs in the browsers. - Fixed so "u" doesn't get converted into a span element by the legacy input filter. Since this is now a valid HTML5 element. - Fixed font families in order to provide appropriate web-safe fonts. -Version 4.1.7 (2014-11-27) - Added HTML5 schema support for srcset, source and picture. Patch contributed by mattheu. - Added new cache_suffix setting to enable cache busting by producing unique urls. - Added new paste_convert_word_fake_lists option to enable users to disable the fake lists convert logic. - Fixed so advlist style changes adds undo levels for each change. - Fixed bug where WebKit would sometimes produce an exception when the autolink plugin where looking for URLs. - Fixed bug where IE 7 wouldn't be rendered properly due to aggressive css compression. - Fixed bug where DomQuery wouldn't accept window as constructor element. - Fixed bug where the color picker in 3.x dialogs wouldn't work properly. Patch contributed by Callidior. - Fixed bug where the image plugin wouldn't respect the document_base_url. - Fixed bug where the jQuery plugin would fail to append to elements named array prototype names. -Version 4.1.6 (2014-10-08) - Fixed bug with clicking on the scrollbar of the iframe would cause a JS error to be thrown. - Fixed bug where null would produce an exception if you passed it to selection.setRng. - Fixed bug where Ctrl/Cmd+Tab would indent the current list item if you switched tabs in the browser. - Fixed bug where pasting empty cells from Excel would result in a broken table. - Fixed bug where it wasn't possible to switch back to default list style type. - Fixed issue where the select all quirk fix would fire for other modifiers than Ctrl/Cmd combinations. - Replaced jake with grunt since it is more mainstream and has better plugin support. -Version 4.1.5 (2014-09-09) - Fixed bug where sometimes the resize rectangles wouldn't properly render on images on WebKit/Blink. - Fixed bug in list plugin where delete/backspace would merge empty LI elements in lists incorrectly. - Fixed bug where empty list elements would result in empty LI elements without it's parent container. - Fixed bug where backspace in empty caret formatted element could produce an type error exception of Gecko. - Fixed bug where lists pasted from word with a custom start index above 9 wouldn't be properly handled. - Fixed bug where tabfocus plugin would tab out of the editor instance even if the default action was prevented. - Fixed bug where tabfocus wouldn't tab properly to other adjacent editor instances. - Fixed bug where the DOMUtils setStyles wouldn't properly removed or update the data-mce-style attribute. - Fixed bug where dialog select boxes would be placed incorrectly if document.body wasn't statically positioned. - Fixed bug where pasting would sometimes scroll to the top of page if the user was using the autoresize plugin. - Fixed bug where caret wouldn't be properly rendered by Chrome when clicking on the iframes documentElement. - Fixed so custom images for menubutton/splitbutton can be provided. Patch contributed by Naim Hammadi. - Fixed so the default action of windows closing can be prevented by blocking the default action of the close event. - Fixed so nodeChange and focus of the editor isn't automatically performed when opening sub dialogs. -Version 4.1.4 (2014-08-21) - Added new media_filter_html option to media plugin that blocks any conditional comments, scripts etc within a video element. - Added new content_security_policy option allows you to set custom policy for iframe contents. Patch contributed by Francois Chagnon. - Fixed bug where activate/deactivate events wasn't firing properly when switching between editors. - Fixed bug where placing the caret on iOS was difficult due to a WebKit bug with touch events. - Fixed bug where the resize helper wouldn't render properly on older IE versions. - Fixed bug where resizing images inside tables on older IE versions would sometimes fail depending mouse position. - Fixed bug where editor.insertContent would produce an exception when inserting select/option elements. - Fixed bug where extra empty paragraphs would be produced if block elements where inserted inside span elements. - Fixed bug where the spellchecker menu item wouldn't be properly checked if spell checking was started before it was rendered. - Fixed bug where the DomQuery filter function wouldn't remove non elements from collection. - Fixed bug where document with custom document.domain wouldn't properly render the editor. - Fixed bug where IE 8 would throw exception when trying to enter invalid color values into colorboxes. - Fixed bug where undo manager could incorrectly add an extra undo level when custom resize handles was removed. - Fixed bug where it wouldn't be possible to alter cell properties properly on table cells on IE 8. - Fixed so the color picker button in table dialog isn't shown unless you include the colorpicker plugin or add your own custom color picker. - Fixed so activate/deactivate events fire when windowManager opens a window since. - Fixed so the table advtab options isn't separated by an underscore to normalize naming with image_advtab option. - Fixed so the table cell dialog has proper padding when the advanced tab in disabled. -Version 4.1.3 (2014-07-29) - Added event binding logic to tinymce.util.XHR making it possible to override headers and settings before any request is made. - Fixed bug where drag events wasn't fireing properly on older IE versions since the event handlers where bound to document. - Fixed bug where drag/dropping contents within the editor on IE would force the contents into plain text mode even if it was internal content. - Fixed bug where IE 7 wouldn't open menus properly due to a resize bug in the browser auto closing them immediately. - Fixed bug where the DOMUtils getPos logic wouldn't produce a valid coordinate inside the body if the body was positioned non static. - Fixed bug where the element path and format state wasn't properly updated if you had the wordcount plugin enabled. - Fixed bug where a comment at the beginning of source would produce an exception in the formatter logic. - Fixed bug where setAttrib/getAttrib on null would throw exception together with any hooked attributes like style. - Fixed bug where table sizes wasn't properly retained when copy/pasting on WebKit/Blink. - Fixed bug where WebKit/Blink would produce colors in RGB format instead of the forced HEX format when deleting contents. - Fixed bug where the width attribute wasn't updated on tables if you changed the size inside the table dialog. - Fixed bug where control selection wasn't properly handled when the caret was placed directly after an image. - Fixed bug where selecting the contents of table cells using the selection.select method wouldn't place the caret properly. - Fixed bug where the selection state for images wasn't removed when placing the caret right after an image on WebKit/Blink. - Fixed bug where all events wasn't properly unbound when and editor instance was removed or destroyed by some external innerHTML call. - Fixed bug where it wasn't possible or very hard to select images on iOS when the onscreen keyboard was visible. - Fixed so auto_focus can take a boolean argument this will auto focus the last initialized editor might be useful for single inits. - Fixed so word auto detect lists logic works better for faked lists that doesn't have specific markup. - Fixed so nodeChange gets fired on mouseup as it used to before 4.1.1 we optimized that event to fire less often. - Removed the finish menu item from spellchecker menu since it's redundant you can stop spellchecking by toggling menu item or button. -Version 4.1.2 (2014-07-15) - Added offset/grep to DomQuery class works basically the same as it's jQuery equivalent. - Fixed bug where backspace/delete or setContent with an empty string would remove header data when using the fullpage plugin. - Fixed bug where tinymce.remove with a selector not matching any editors would remove all editors. - Fixed bug where resizing of the editor didn't work since the theme was calling setStyles instead of setStyle. - Fixed bug where IE 7 would fail to append html fragments to iframe document when using DomQuery. - Fixed bug where the getStyle DOMUtils method would produce an exception if it was called with null as it's element. - Fixed bug where the paste plugin would remove the element if the none of the paste_webkit_styles rules matched the current style. - Fixed bug where contextmenu table items wouldn't work properly on IE since it would some times fire an incorrect selection change. - Fixed bug where the padding/border values wasn't used in the size calculation for the body size when using autoresize. Patch contributed by Matt Whelan. - Fixed bug where conditional word comments wouldn't be properly removed when pasting plain text. - Fixed bug where resizing would sometime fail on IE 11 when the mouseup occurred inside the resizable element. - Fixed so the iframe gets initialized without any inline event handlers for better CSP support. Patch contributed by Matt Whelan. - Fixed so the tinymce.dom.Sizzle is the latest version of sizzle this resolves the document context bug. -Version 4.1.1 (2014-07-08) - Fixed bug where pasting plain text on some WebKit versions would result in an empty line. - Fixed bug where resizing images inside tables on IE 11 wouldn't work properly. - Fixed bug where IE 11 would sometimes throw "Invalid argument" exception when editor contents was set to an empty string. - Fixed bug where document.activeElement would throw exceptions on IE 9 when that element was hidden or removed from dom. - Fixed bug where WebKit/Blink sometimes produced br elements with the Apple-interchange-newline class. - Fixed bug where table cell selection wasn't properly removed when copy/pasting table cells. - Fixed bug where pasting nested list items from Word wouldn't produce proper semantic nested lists. - Fixed bug where right clicking using the contextmenu plugin on WebKit/Blink on Mac OS X would select the target current word or line. - Fixed bug where it wasn't possible to alter table cell properties on IE 8 using the context menu. - Fixed bug where the resize helper wouldn't be correctly positioned on older IE versions. - Fixed bug where fullpage plugin would produce an error if you didn't specify a doctype encoding. - Fixed bug where anchor plugin would get the name/id of the current element even if it wasn't anchor element. - Fixed bug where visual aids for tables wouldn't be properly disabled when changing the border size. - Fixed bug where some control selection events wasn't properly fired on older IE versions. - Fixed bug where table cell selection on older IE versions would prevent resizing of images. - Fixed bug with paste_data_images paste option not working properly on modern IE versions. - Fixed bug where custom elements with underscores in the name wasn't properly parsed/serialized. - Fixed bug where applying inline formats to nested list elements would produce an incorrect formatting result. - Fixed so it's possible to hide items from elements path by using preventDefault/stopPropagation. - Fixed so inline mode toolbar gets rendered right aligned if the editable element positioned to the documents right edge. - Fixed so empty inline elements inside empty block elements doesn't get removed if configured to be kept intact. - Fixed so DomQuery parentsUntil/prevUntil/nextUntil supports selectors/elements/filters etc. - Fixed so legacyoutput plugin overrides fontselect and fontsizeselect controls and handles font elements properly. -Version 4.1.0 (2014-06-18) - Added new file_picker_callback option to replace the old file_browser_callback the latter will still work though. - Added new custom colors to textcolor plugin will be displayed if a color picker is provided also shows the latest colors. - Added new color_picker_callback option to enable you to add custom color pickers to the editor. - Added new advanced tabs to table/cell/row dialogs to enable you to select colors for border/background. - Added new colorpicker plugin that lets you select colors from a hsv color picker. - Added new tinymce.util.Color class to handle color parsing and converting. - Added new colorpicker UI widget element lets you add a hsv color picker to any form/window. - Added new textpattern plugin that allows you to use markdown like text patterns to format contents. - Added new resize helper element that shows the current width & height while resizing. - Added new "once" method to Editor and EventDispatcher enables since callback execution events. - Added new jQuery like class under tinymce.dom.DomQuery it's exposed on editor instances (editor.$) and globally under (tinymce.$). - Fixed so the default resize method for images are proportional shift/ctrl can be used to make an unproportional size. - Fixed bug where the image_dimensions option of the image plugin would cause exceptions when it tried to update the size. - Fixed bug where table cell dialog class field wasn't properly updated when editing an a table cell with an existing class. - Fixed bug where Safari on Mac would produce webkit-fake-url for pasted images so these are now removed. - Fixed bug where the nodeChange event would get fired before the selection was changed when clicking inside the current selection range. - Fixed bug where valid_classes option would cause exception when it removed internal prefixed classes like mce-item-. - Fixed bug where backspace would cause navigation in IE 8 on an inline element and after a caret formatting was applied. - Fixed so placeholder images produced by the media plugin gets selected when inserted/edited. - Fixed so it's possible to drag in images when the paste_data_images option is enabled. Might be useful for mail clients. - Fixed so images doesn't get a width/height applied if the image_dimensions option is set to false useful for responsive contents. - Fixed so it's possible to pass in an optional arguments object for the nodeChanged function to be passed to all nodechange event listeners. - Fixed bug where media plugin embed code didn't update correctly. +Version 4.7.11 (2018-04-11) + Added a new imagetools_credentials_hosts option to the Imagetools Plugin. + Fixed a bug where toggling a list containing empty LIs would throw an error. Patch contributed by bradleyke. + Fixed a bug where applying block styles to a text with the caret at the end of the paragraph would select all text in the paragraph. + Fixed a bug where toggling on the Spellchecker Plugin would trigger isDirty on the editor. + Fixed a bug where it was possible to enter content into selection bookmark spans. + Fixed a bug where if a non paragraph block was configured in forced_root_block the editor.getContent method would return incorrect values with an empty editor. + Fixed a bug where dropdown menu panels stayed open and fixed in position when dragging dialog windows. + Fixed a bug where it wasn't possible to extend table cells with the space button in Safari. + Fixed a bug where the setupeditor event would thrown an error when using the Compat3x Plugin. + Fixed a bug where an error was thrown in FontInfo when called on a detached element. +Version 4.7.10 (2018-04-03) + Removed the "read" step from the mobile theme. + Added normalization of triple clicks across browsers in the editor. + Added a `hasFocus` method to the editor that checks if the editor has focus. + Added correct icon to the Nonbreaking Plugin menu item. + Fixed so the `getContent`/`setContent` methods work even if the editor is not initialized. + Fixed a bug with the Media Plugin where query strings were being stripped from youtube links. + Fixed a bug where image styles were changed/removed when opening and closing the Image Plugin dialog. + Fixed a bug in the Table Plugin where some table cell styles were not correctly added to the content html. + Fixed a bug in the Spellchecker Plugin where it wasn't possible to change the spellchecker language. + Fixed so the the unlink action in the Link Plugin has a menu item and can be added to the contextmenu. + Fixed a bug where it wasn't possible to keyboard navigate to the start of an inline element on a new line within the same block element. + Fixed a bug with the Text Color Plugin where if used with an inline editor located at the bottom of the screen the colorpicker could appear off screen. + Fixed a bug with the UndoManager where undo levels were being added for nbzwsp characters. + Fixed a bug with the Table Plugin where the caret would sometimes be lost when keyboard navigating up through a table. + Fixed a bug where FontInfo.getFontFamily would throw an error when called on a removed editor. + Fixed a bug in Firefox where undo levels were not being added correctly for some specific operations. + Fixed a bug where initializing an inline editor inside of a table would make the whole table resizeable. + Fixed a bug where the fake cursor that appears next to tables on Firefox was positioned incorrectly when switching to fullscreen. + Fixed a bug where zwsp's weren't trimmed from the output from `editor.getContent({ format: 'text' })`. + Fixed a bug where the fontsizeselect/fontselect toolbar items showed the body info rather than the first possible caret position info on init. + Fixed a bug where it wasn't possible to select all content if the editor only contained an inline boundary element. + Fixed a bug where `content_css` urls with query strings wasn't working. + Fixed a bug in the Table Plugin where some table row styles were removed when changing other styles in the row properties dialog. +Version 4.7.9 (2018-02-27) + Fixed a bug where the editor target element didn't get the correct style when removing the editor. +Version 4.7.8 (2018-02-26) + Fixed an issue with the Help Plugin where the menuitem name wasn't lowercase. + Fixed an issue on MacOS where text and bold text did not have the same line-height in the autocomplete dropdown in the Link Plugin dialog. + Fixed a bug where the "paste as text" option in the Paste Plugin didn't work. + Fixed a bug where dialog list boxes didn't get positioned correctly in documents with scroll. + Fixed a bug where the Inlite Theme didn't use the Table Plugin api to insert correct tables. + Fixed a bug where the Inlite Theme panel didn't hide on blur in a correct way. + Fixed a bug where placing the cursor before a table in Firefox would scroll to the bottom of the table. + Fixed a bug where selecting partial text in table cells with rowspans and deleting would produce faulty tables. + Fixed a bug where the Preview Plugin didn't work on Safari due to sandbox security. + Fixed a bug where table cell selection using the keyboard threw an error. + Fixed so the font size and font family doesn't toggle the text but only sets the selected format on the selected text. + Fixed so the built-in spellchecking on Chrome and Safari creates an undo level when replacing words. +Version 4.7.7 (2018-02-19) + Added a border style selector to the advanced tab of the Image Plugin. + Added better controls for default table inserted by the Table Plugin. + Added new `table_responsive_width` option to the Table Plugin that controls whether to use pixel or percentage widths. + Fixed a bug where the Link Plugin text didn't update when a URL was pasted using the context menu. + Fixed a bug with the Spellchecker Plugin where using "Add to dictionary" in the context menu threw an error. + Fixed a bug in the Media Plugin where the preview node for iframes got default width and height attributes that interfered with width/height styles. + Fixed a bug where backslashes were being added to some font family names in Firefox in the fontselect toolbar item. + Fixed a bug where errors would be thrown when trying to remove an editor that had not yet been fully initialized. + Fixed a bug where the Imagetools Plugin didn't update the images atomically. + Fixed a bug where the Fullscreen Plugin was throwing errors when being used on an inline editor. + Fixed a bug where drop down menus weren't positioned correctly in inline editors on scroll. + Fixed a bug with a semicolon missing at the end of the bundled javascript files. + Fixed a bug in the Table Plugin with cursor navigation inside of tables where the cursor would sometimes jump into an incorrect table cells. + Fixed a bug where indenting a table that is a list item using the "Increase indent" button would create a nested table. + Fixed a bug where text nodes containing only whitespace were being wrapped by paragraph elements. + Fixed a bug where whitespace was being inserted after br tags inside of paragraph tags. + Fixed a bug where converting an indented paragraph to a list item would cause the list item to have extra padding. + Fixed a bug where Copy/Paste in an editor with a lot of content would cause the editor to scroll to the top of the content in IE11. + Fixed a bug with a memory leak in the DragHelper. Path contributed by ben-mckernan. + Fixed a bug where the advanced tab in the Media Plugin was being shown even if it didn't contain anything. Patch contributed by gabrieeel. + Fixed an outdated eventname in the EventUtils. Patch contributed by nazar-pc. + Fixed an issue where the Json.parse function would throw an error when being used on a page with strict CSP settings. + Fixed so you can place the curser before and after table elements within the editor in Firefox and Edge/IE. +Version 4.7.6 (2018-01-29) + Fixed a bug in the jquery integration where it threw an error saying that "global is not defined". + Fixed a bug where deleting a table cell whose previous sibling was set to contenteditable false would create a corrupted table. + Fixed a bug where highlighting text in an unfocused editor did not work correctly in IE11/Edge. + Fixed a bug where the table resize handles were not being repositioned when activating the Fullscreen Plugin. + Fixed a bug where the Imagetools Plugin dialog didn't honor editor RTL settings. + Fixed a bug where block elements weren't being merged correctly if you deleted from after a contenteditable false element to the beginning of another block element. + Fixed a bug where TinyMCE didn't work with module loaders like webpack. +Version 4.7.5 (2018-01-22) + Fixed bug with the Codesample Plugin where it wasn't possible to edit codesamples when the editor was in inline mode. + Fixed bug where focusing on the status bar broke the keyboard navigation functionality. + Fixed bug where an error would be thrown on Edge by the Table Plugin when pasting using the PowerPaste Plugin. + Fixed bug in the Table Plugin where selecting row border style from the dropdown menu in advanced row properties would throw an error. + Fixed bug with icons being rendered incorrectly on Chrome on Mac OS. + Fixed bug in the Textcolor Plugin where the font color and background color buttons wouldn't trigger an ExecCommand event. + Fixed bug in the Link Plugin where the url field wasn't forced LTR. + Fixed bug where the Nonbreaking Plugin incorrectly inserted spaces into tables. + Fixed bug with the inline theme where the toolbar wasn't repositioned on window resize. +Version 4.7.4 (2017-12-05) + Fixed bug in the Nonbreaking Plugin where the nonbreaking_force_tab setting was being ignored. + Fixed bug in the Table Plugin where changing row height incorrectly converted column widths to pixels. + Fixed bug in the Table Plugin on Edge and IE11 where resizing the last column after resizing the table would cause invalid column heights. + Fixed bug in the Table Plugin where keyboard navigation was not normalized between browsers. + Fixed bug in the Table Plugin where the colorpicker button would show even without defining the colorpicker_callback. + Fixed bug in the Table Plugin where it wasn't possible to set the cell background color. + Fixed bug where Firefox would throw an error when intialising an editor on an element that is hidden or not yet added to the DOM. + Fixed bug where Firefox would throw an error when intialising an editor inside of a hidden iframe. +Version 4.7.3 (2017-11-23) + Added functionality to open the Codesample Plugin dialog when double clicking on a codesample. Patch contributed by dakuzen. + Fixed bug where undo/redo didn't work correctly with some formats and caret positions. + Fixed bug where the color picker didn't show up in Table Plugin dialogs. + Fixed bug where it wasn't possible to change the width of a table through the Table Plugin dialog. + Fixed bug where the Charmap Plugin couldn't insert some special characters. + Fixed bug where editing a newly inserted link would not actually edit the link but insert a new link next to it. + Fixed bug where deleting all content in a table cell made it impossible to place the caret into it. + Fixed bug where the vertical alignment field in the Table Plugin cell properties dialog didn't do anything. + Fixed bug where an image with a caption showed two sets of resize handles in IE11. + Fixed bug where pressing the enter button inside of an h1 with contenteditable set to true would sometimes produce a p tag. + Fixed bug with backspace not working as expected before a noneditable element. + Fixed bug where operating on tables with invalid rowspans would cause an error to be thrown. + Fixed so a real base64 representation of the image is available on the blobInfo that the images_upload_handler gets called with. + Fixed so the image upload tab is available when the images_upload_handler is defined (and not only when the images_upload_url is defined). +Version 4.7.2 (2017-11-07) + Added newly rewritten Table Plugin. + Added support for attributes with colon in valid_elements and addValidElements. + Added support for dailymotion short url in the Media Plugin. Patch contributed by maat8. + Added support for converting to half pt when converting font size from px to pt. Patch contributed by danny6514. + Added support for location hash to the Autosave plugin to make it work better with SPAs using hash routing. + Added support for merging table cells when pasting a table into another table. + Changed so the language packs are only loaded once. Patch contributed by 0xor1. + Simplified the css for inline boundaries selection by switching to an attribute selector. + Fixed bug where an error would be thrown on editor initialization if the window.getSelection() returned null. + Fixed bug where holding down control or alt keys made the keyboard navigation inside an inline boundary not work as expected. + Fixed bug where applying formats in IE11 produced extra, empty paragraphs in the editor. + Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly. + Fixed bug where removing an inline editor removed the element that the editor had been initialized on. + Fixed bug where setting the selection to the end of an editable container caused some formatting problems. + Fixed bug where an error would be thrown sometimes when an editor was removed because of the selection bookmark was being stored asynchronously. + Fixed a bug where an editor initialized on an empty list did not contain any valid cursor positions. + Fixed a bug with the Context Menu Plugin and webkit browsers on Mac where right-clicking inside a table would produce an incorrect selection. + Fixed bug where the Image Plugin constrain proportions setting wasn't working as expected. + Fixed bug where deleting the last character in a span with decorations produced an incorrect element when typing. + Fixed bug where focusing on inline editors made the toolbar flicker when moving between elements quickly. + Fixed bug where the selection would be stored incorrectly in inline editors when the mouseup event was fired outside the editor body. + Fixed bug where toggling bold at the end of an inline boundary would toggle off the whole word. + Fixed bug where setting the skin to false would not stop the loading of some skin css files. + Fixed bug in mobile theme where pinch-to-zoom would break after exiting the editor. + Fixed bug where sublists of a fully selected list would not be switched correctly when changing list style. + Fixed bug where inserting media by source would break the UndoManager. + Fixed bug where inserting some content into the editor with a specific selection would replace some content incorrectly. + Fixed bug where selecting all content with ctrl+a in IE11 caused problems with untoggling some formatting. + Fixed bug where the Search and Replace Plugin left some marker spans in the editor when undoing and redoing after replacing some content. + Fixed bug where the editor would not get a scrollbar when using the Fullscreen and Autoresize plugins together. + Fixed bug where the font selector would stop working correctly after selecting fonts three times. + Fixed so pressing the enter key inside of an inline boundary inserts a br after the inline boundary element. + Fixed a bug where it wasn't possible to use tab navigation inside of a table that was inside of a list. + Fixed bug where end_container_on_empty_block would incorrectly remove elements. + Fixed bug where content_styles weren't added to the Preview Plugin iframe. + Fixed so the beforeSetContent/beforeGetContent events are preventable. + Fixed bug where changing height value in Table Plugin advanced tab didn't do anything. + Fixed bug where it wasn't possible to remove formatting from content in beginning of table cell. +Version 4.7.1 (2017-10-09) + Fixed bug where theme set to false on an inline editor produced an extra div element after the target element. + Fixed bug where the editor drag icon was misaligned with the branding set to false. + Fixed bug where doubled menu items were not being removed as expected with the removed_menuitems setting. + Fixed bug where the Table of contents plugin threw an error when initialized. + Fixed bug where it wasn't possible to add inline formats to text selected right to left. + Fixed bug where the paste from plain text mode did not work as expected. + Fixed so the style previews do not set color and background color when selected. + Fixed bug where the Autolink plugin didn't work as expected with some formats applied on an empty editor. + Fixed bug where the Textpattern plugin were throwing errors on some patterns. + Fixed bug where the Save plugin saved all editors instead of only the active editor. Patch contributed by dannoe. +Version 4.7.0 (2017-10-03) + Added new mobile ui that is specifically designed for mobile devices. + Updated the default skin to be more modern and white since white is preferred by most implementations. + Restructured the default menus to be more similar to common office suites like Google Docs. + Fixed so theme can be set to false on both inline and iframe editor modes. + Fixed bug where inline editor would add/remove the visualblocks css multiple times. + Fixed bug where selection wouldn't be properly restored when editor lost focus and commands where invoked. + Fixed bug where toc plugin would generate id:s for headers even though a toc wasn't inserted into the content. + Fixed bug where is wasn't possible to drag/drop contents within the editor if paste_data_images where set to true. + Fixed bug where getParam and close in WindowManager would get the first opened window instead of the last opened window. + Fixed bug where delete would delete between cells inside a table in Firefox. +Version 4.6.7 (2017-09-18) + Fixed bug where paste wasn't working in IOS. + Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly. + Fixed bug where inserting a list in a table caused the cell to expand in height. + Fixed bug where pressing enter in a list located inside of a table deleted list items instead of inserting new list item. + Fixed bug where copy and pasting table cells produced inconsistent results. + Fixed bug where initializing an editor with an ID of 'length' would throw an exception. + Fixed bug where it was possible to split a non merged table cell. + Fixed bug where copy and pasting a list with a very specific selection into another list would produce a nested list. + Fixed bug where copy and pasting ordered lists sometimes produced unordered lists. + Fixed bug where padded elements inside other elements would be treated as empty. + Added some missing translations to Image, Link and Help plugins. + Fixed so you can resize images inside a figure element. + Fixed bug where an inline TinyMCE editor initialized on a table did not set selection on load in Chrome. + Fixed the positioning of the inlite toolbar when the target element wasn't big enough to fit the toolbar. +Version 4.6.6 (2017-08-30) + Fixed so that notifications wrap long text content instead of bleeding outside the notification element. + Fixed so the content_style css is added after the skin and custom stylesheets. + Fixed bug where it wasn't possible to remove a table with the Cut button. + Fixed bug where the center format wasn't getting the same font size as the other formats in the format preview. + Fixed bug where the wordcount plugin wasn't counting hyphenated words correctly. + Fixed bug where all content pasted into the editor was added to the end of the editor. + Fixed bug where enter keydown on list item selection only deleted content and didn't create a new line. + Fixed bug where destroying the editor while the content css was still loading caused error notifications on Firefox. + Fixed bug where undoing cut operation in IE11 left some unwanted html in the editor content. + Fixed bug where enter keydown would throw an error in IE11. + Fixed bug where duplicate instances of an editor were added to the editors array when using the createEditor API. + Fixed bug where the formatter applied formats on the wrong content when spellchecker was activated. + Fixed bug where switching formats would reset font size on child nodes. + Fixed bug where the table caption element weren't always the first descendant to the table tag. + Fixed bug where pasting some content into the editor on chrome some newlines were removed. + Fixed bug where it wasn't possible to remove a list if a list item was a table element. + Fixed bug where copy/pasting partial selections of tables wouldn't produce a proper table. + Fixed bug where the searchreplace plugin could not find consecutive spaces. + Fixed bug where background color wasn't applied correctly on some partially selected contents. +Version 4.6.5 (2017-08-02) + Added new inline_boundaries_selector that allows you to specify the elements that should have boundaries. + Added new local upload feature this allows the user to upload images directly from the image dialog. + Added a new api for providing meta data for plugins. It will show up in the help dialog if it's provided. + Fixed so that the notifications created by the notification manager are more screen reader accessible. + Fixed bug where changing the list format on multiple selected lists didn't change all of the lists. + Fixed bug where the nonbreaking plugin would insert multiple undo levels when pressing the tab key. + Fixed bug where delete/backspace wouldn't render a caret when all editor contents where deleted. + Fixed bug where delete/backspace wouldn't render a caret if the deleted element was a single contentEditable false element. + Fixed bug where the wordcount plugin wouldn't count words correctly if word where typed after applying a style format. + Fixed bug where the wordcount plugin would count mathematical formulas as multiple words for example 1+1=2. + Fixed bug where formatting of triple clicked blocks on Chrome/Safari would result in styles being added outside the visual selection. + Fixed bug where paste would add the contents to the end of the editor area when inline mode was used. + Fixed bug where toggling off bold formatting on text entered in a new paragraph would add an extra line break. + Fixed bug where autolink plugin would only produce a link on every other consecutive link on Firefox. + Fixed bug where it wasn't possible to select all contents if the content only had one pre element. + Fixed bug where sizzle would produce lagging behavior on some sites due to repaints caused by feature detection. + Fixed bug where toggling off inline formats wouldn't include the space on selected contents with leading or trailing spaces. + Fixed bug where the cut operation in UI wouldn't work in Chrome. + Fixed bug where some legacy editor initialization logic would throw exceptions about editor settings not being defined. + Fixed bug where it wasn't possible to apply text color to links if they where part of a non collapsed selection. + Fixed bug where an exception would be thrown if the user selected a video element and then moved the focus outside the editor. + Fixed bug where list operations didn't work if there where block elements inside the list items. + Fixed bug where applying block formats to lists wrapped in block elements would apply to all elements in that wrapped block. +Version 4.6.4 (2017-06-13) + Fixed bug where the editor would move the caret when clicking on the scrollbar next to a content editable false block. + Fixed bug where the text color select dropdowns wasn't placed correctly when they didn't fit the width of the screen. + Fixed bug where the default editor line height wasn't working for mixed font size contents. + Fixed bug where the content css files for inline editors were loaded multiple times for multiple editor instances. + Fixed bug where the initial value of the font size/font family dropdowns wasn't displayed. + Fixed bug where the I18n api was not supporting arrays as the translation replacement values. + Fixed bug where chrome would display "The given range isn't in document." errors for invalid ranges passed to setRng. + Fixed bug where the compat3x plugin wasn't working since the global tinymce references wasn't resolved correctly. + Fixed bug where the preview plugin wasn't encoding the base url passed into the iframe contents producing a xss bug. + Fixed bug where the dom parser/serializer wasn't handling some special elements like noframes, title and xmp. + Fixed bug where the dom parser/serializer wasn't handling cdata sections with comments inside. + Fixed bug where the editor would scroll to the top of the editable area if a dialog was closed in inline mode. + Fixed bug where the link dialog would not display the right rel value if rel_list was configured. + Fixed bug where the context menu would select images on some platforms but not others. + Fixed bug where the filenames of images were not retained on dragged and drop into the editor from the desktop. + Fixed bug where the paste plugin would misrepresent newlines when pasting plain text and having forced_root_block configured. + Fixed so that the error messages for the imagetools plugin is more human readable. + Fixed so the internal validate setting for the parser/serializer can't be set from editor initialization settings. +Version 4.6.3 (2017-05-30) + Fixed bug where the arrow keys didn't work correctly when navigating on nested inline boundary elements. + Fixed bug where delete/backspace didn't work correctly on nested inline boundary elements. + Fixed bug where image editing didn't work on subsequent edits of the same image. + Fixed bug where charmap descriptions wouldn't properly wrap if they exceeded the width of the box. + Fixed bug where the default image upload handler only accepted 200 as a valid http status code. + Fixed so rel on target=_blank links gets forced with only noopener instead of both noopener and noreferrer. +Version 4.6.2 (2017-05-23) + Fixed bug where the SaxParser would run out of memory on very large documents. + Fixed bug with formatting like font size wasn't applied to del elements. + Fixed bug where various api calls would be throwing exceptions if they where invoked on a removed editor instance. + Fixed bug where the branding position would be incorrect if the editor was inside a hidden tab and then later showed. + Fixed bug where the color levels feature in the imagetools dialog wasn't working properly. + Fixed bug where imagetools dialog wouldn't pre-load images from CORS domains, before trying to prepare them for editing. + Fixed bug where the tab key would move the caret to the next table cell if being pressed inside a list inside a table. + Fixed bug where the cut/copy operations would loose parent context like the current format etc. + Fixed bug with format preview not working on invalid elements excluded by valid_elements. + Fixed bug where blocks would be merged in incorrect order on backspace/delete. + Fixed bug where zero length text nodes would cause issues with the undo logic if there where iframes present. + Fixed bug where the font size/family select lists would throw errors if the first node was a comment. + Fixed bug with csp having to allow local script evaluation since it was used to detect global scope. + Fixed bug where CSP required a relaxed option for javascript: URLs in unsupported legacy browsers. + Fixed bug where a fake caret would be rendered for td with the contenteditable=false. + Fixed bug where typing would be blocked on IE 11 when within a nested contenteditable=true/false structure. +Version 4.6.1 (2017-05-10) + Added configuration option to list plugin to disable tab indentation. + Fixed bug where format change on very specific content could cause the selection to change. + Fixed bug where TinyMCE could not be lazyloaded through jquery integration. + Fixed bug where entities in style attributes weren't decoded correctly on paste in webkit. + Fixed bug where fontsize_formats option had been renamed incorrectly. + Fixed bug with broken backspace/delete behaviour between contenteditable=false blocks. + Fixed bug where it wasn't possible to backspace to the previous line with the inline boundaries functionality turned on. + Fixed bug where is wasn't possible to move caret left and right around a linked image with the inline boundaries functionality turned on. + Fixed bug where pressing enter after/before hr element threw exception. Patch contributed bradleyke. + Fixed so the CSS in the visualblocks plugin doesn't overwrite background color. Patch contributed by Christian Rank. + Fixed bug where multibyte characters weren't encoded correctly. Patch contributed by James Tarkenton. + Fixed bug where shift-click to select within contenteditable=true fields wasn't working. +Version 4.6.0 (2017-05-04) + Dropped support for IE 8-10 due to market share and lack of support from Microsoft. See tinymce docs for details. + Added an inline boundary caret position feature that makes it easier to type at the beginning/end of links/code elements. + Added a help plugin that adds a button and a dialog showing the editor shortcuts and loaded plugins. + Added an inline_boundaries option that allows you to disable the inline boundary feature if it's not desired. + Added a new ScrollIntoView event that allows you to override the default scroll to element behavior. + Added role and aria- attributes as valid elements in the default valid elements config. + Added new internal flag for PastePreProcess/PastePostProcess this is useful to know if the paste was coming from an external source. + Added new ignore function to UndoManager this works similar to transact except that it doesn't add an undo level by default. + Fixed so that urls gets retained for images when being edited. This url is then passed on to the upload handler. + Fixed so that the editors would be initialized on readyState interactive instead of complete. + Fixed so that the init event of the editor gets fired once all contentCSS files have been properly loaded. + Fixed so that width/height of the editor gets taken from the textarea element if it's explicitly specified in styles. + Fixed so that keep_styles set to false no longer clones class/style from the previous paragraph on enter. + Fixed so that the default line-height is 1.2em to avoid zwnbsp characters from producing text rendering glitches on Windows. + Fixed so that loading errors of content css gets presented by a notification message. + Fixed so figure image elements can be linked when selected this wraps the figure image in a anchor element. + Fixed bug where it wasn't possible to copy/paste rows with colspans by using the table copy/paste feature. + Fixed bug where the protect setting wasn't properly applied to header/footer parts when using the fullpage plugin. + Fixed bug where custom formats that specified upper case element names where not applied correctly. + Fixed bug where some screen readers weren't reading buttons due to an aria specific fix for IE 8. + Fixed bug where cut wasn't working correctly on iOS due to it's clipboard API not working correctly. + Fixed bug where Edge would paste div elements instead of paragraphs when pasting plain text. + Fixed bug where the textpattern plugin wasn't dealing with trailing punctuations correctly. + Fixed bug where image editing would some times change the image format from jpg to png. + Fixed bug where some UI elements could be inserted into the toolbar even if they where not registered. + Fixed bug where it was possible to click the TD instead of the character in the character map and that caused an exception. + Fixed bug where the font size/font family dropdowns would sometimes show an incorrect value due to css not being loaded in time. + Fixed bug with the media plugin inserting undefined instead of retaining size when media_dimensions was set to false. + Fixed bug with deleting images when forced_root_blocks where set to false. + Fixed bug where input focus wasn't properly handled on nested content editable elements. + Fixed bug where Chrome/Firefox would throw an exception when selecting images due to recent change of setBaseAndExtent support. + Fixed bug where malformed blobs would throw exceptions now they are simply ignored. + Fixed bug where backspace/delete wouldn't work properly in some cases where all contents was selected in WebKit. + Fixed bug with Angular producing errors since it was expecting events objects to be patched with their custom properties. + Fixed bug where the formatter would apply formatting to spellchecker errors now all bogus elements are excluded. + Fixed bug with backspace/delete inside table caption elements wouldn't behave properly on IE 11. + Fixed bug where typing after a contenteditable false inline element could move the caret to the end of that element. + Fixed bug where backspace before/after contenteditable false blocks wouldn't properly remove the right element. + Fixed bug where backspace before/after contenteditable false inline elements wouldn't properly empty the current block element. + Fixed bug where vertical caret navigation with a custom line-height would sometimes match incorrect positions. + Fixed bug with paste on Edge where character encoding wasn't handled properly due to a browser bug. + Fixed bug with paste on Edge where extra fragment data was inserted into the contents when pasting. + Fixed bug with pasting contents when having a whole block element selected on WebKit could cause WebKit spans to appear. + Fixed bug where the visualchars plugin wasn't working correctly showing invisible nbsp characters. + Fixed bug where browsers would hang if you tried to load some malformed html contents. + Fixed bug where the init call promise wouldn't resolve if the specified selector didn't find any matching elements. + Fixed bug where the Schema isValidChild function was case sensitive. +Version 4.5.3 (2017-02-01) + Added keyboard navigation for menu buttons when the menu is in focus. + Added api to the list plugin for setting custom classes/attributes on lists. + Added validation for the anchor plugin input field according to W3C id naming specifications. + Fixed bug where media placeholders were removed after resize with the forced_root_block setting set to false. + Fixed bug where deleting selections with similar sibling nodes sometimes deleted the whole document. + Fixed bug with inlite theme where several toolbars would appear scrolling when more than one instance of the editor was in use. + Fixed bug where the editor would throw error with the fontselect plugin on hidden editor instances in Firefox. + Fixed bug where the background color would not stretch to the font size. + Fixed bug where font size would be removed when changing background color. + Fixed bug where the undomanager trimmed away whitespace between nodes on undo/redo. + Fixed bug where media_dimensions=false in media plugin caused the editor to throw an error. + Fixed bug where IE was producing font/u elements within links on paste. + Fixed bug where some button tooltips were broken when compat3x was in use. + Fixed bug where backspace/delete/typeover would remove the caption element. + Fixed bug where powerspell failed to function when compat3x was enabled. + Fixed bug where it wasn't possible to apply sub/sup on text with large font size. + Fixed bug where pre tags with spaces weren't treated as content. + Fixed bug where Meta+A would select the entire document instead of all contents in nested ce=true elements. +Version 4.5.2 (2017-01-04) + Added missing keyboard shortcut description for the underline menu item in the format menu. + Fixed bug where external blob urls wasn't properly handled by editor upload logic. Patch contributed by David Oviedo. + Fixed bug where urls wasn't treated as a single word by the wordcount plugin. + Fixed bug where nbsp characters wasn't treated as word delimiters by the wordcount plugin. + Fixed bug where editor instance wasn't properly passed to the format preview logic. Patch contributed by NullQuery. + Fixed bug where the fake caret wasn't hidden when you moved selection to a cE=false element. + Fixed bug where it wasn't possible to edit existing code sample blocks. + Fixed bug where it wasn't possible to delete editor contents if the selection included an empty block. + Fixed bug where the formatter wasn't expanding words on some international characters. Patch contributed by Martin Larochelle. + Fixed bug where the open link feature wasn't working correctly on IE 11. + Fixed bug where enter before/after a cE=false block wouldn't properly padd the paragraph with an br element. + Fixed so font size and font family select boxes always displays a value by using the runtime style as a fallback. + Fixed so missing plugins will be logged to console as warnings rather than halting the initialization of the editor. + Fixed so splitbuttons become normal buttons in advlist plugin if styles are empty. Patch contributed by René Schleusner. + Fixed so you can multi insert rows/cols by selecting table cells and using insert rows/columns. +Version 4.5.1 (2016-12-07) + Fixed bug where the lists plugin wouldn't initialize without the advlist plugins if served from cdn. + Fixed bug where selectors with "*" would cause the style format preview to throw an error. + Fixed bug with toggling lists off on lists with empty list items would throw an error. + Fixed bug where editing images would produce non existing blob uris. + Fixed bug where the offscreen toc selection would be treated as the real toc element. + Fixed bug where the aria level attribute for element path would have an incorrect start index. + Fixed bug where the offscreen selection of cE=false that where very wide would be shown onscreen. Patch contributed by Steven Bufton. + Fixed so the default_link_target gets applied to links created by the autolink plugin. + Fixed so that the name attribute gets removed by the anchor plugin if editing anchors. +Version 4.5.0 (2016-11-23) + Added new toc plugin allows you to insert table of contents based on editor headings. + Added new auto complete menu to all url fields. Adds history, link to anchors etc. + Added new sidebar api that allows you to add custom sidebar panels and buttons to toggle these. + Added new insert menu button that allows you to have multiple insert functions under the same menu button. + Added new open link feature to ctrl+click, alt+enter and context menu. + Added new media_embed_handler option to allow the media plugin to be populated with custom embeds. + Added new support for editing transparent images using the image tools dialog. + Added new images_reuse_filename option to allow filenames of images to be retained for upload. + Added new security feature where links with target="_blank" will by default get rel="noopener noreferrer". + Added new allow_unsafe_link_target to allow you to opt-out of the target="_blank" security feature. + Added new style_formats_autohide option to automatically hide styles based on context. + Added new codesample_content_css option to specify where the code sample prism css is loaded from. + Added new support for Japanese/Chinese word count following the unicode standards on this. + Added new fragmented undo levels this dramatically reduces flicker on contents with iframes. + Added new live previews for complex elements like table or lists. + Fixed bug where it wasn't possible to properly tab between controls in a dialog with a disabled form item control. + Fixed bug where firefox would generate a rectangle on elements produced after/before a cE=false elements. + Fixed bug with advlist plugin not switching list element format properly in some edge cases. + Fixed bug where col/rowspans wasn't correctly computed by the table plugin in some cases. + Fixed bug where the table plugin would thrown an error if object_resizing was disabled. + Fixed bug where some invalid markup would cause issues when running in XHTML mode. Patch contributed by Charles Bourasseau. + Fixed bug where the fullscreen class wouldn't be removed properly when closing dialogs. + Fixed bug where the PastePlainTextToggle event wasn't fired by the paste plugin when the state changed. + Fixed bug where table the row type wasn't properly updated in table row dialog. Patch contributed by Matthias Balmer. + Fixed bug where select all and cut wouldn't place caret focus back to the editor in WebKit. Patch contributed by Daniel Jalkut. + Fixed bug where applying cell/row properties to multiple cells/rows would reset other unchanged properties. + Fixed bug where some elements in the schema would have redundant/incorrect children. + Fixed bug where selector and target options would cause issues if used together. + Fixed bug where drag/drop of images from desktop on chrome would thrown an error. + Fixed bug where cut on WebKit/Blink wouldn't add an undo level. + Fixed bug where IE 11 would scroll to the cE=false elements when they where selected. + Fixed bug where keys like F5 wouldn't work when a cE=false element was selected. + Fixed bug where the undo manager wouldn't stop the typing state when commands where executed. + Fixed bug where unlink on wrapped links wouldn't work properly. + Fixed bug with drag/drop of images on WebKit where the image would be deleted form the source editor. + Fixed bug where the visual characters mode would be disabled when contents was extracted from the editor. + Fixed bug where some browsers would toggle of formats applied to the caret when clicking in the editor toolbar. + Fixed bug where the custom theme function wasn't working correctly. + Fixed bug where image option for custom buttons required you to have icon specified as well. + Fixed bug where the context menu and contextual toolbars would be visible at the same time and sometimes overlapping. + Fixed bug where the noneditable plugin would double wrap elements when using the noneditable_regexp option. + Fixed bug where tables would get padding instead of margin when you used the indent button. + Fixed bug where the charmap plugin wouldn't properly insert non breaking spaces. + Fixed bug where the color previews in color input boxes wasn't properly updated. + Fixed bug where the list items of previous lists wasn't merged in the right order. + Fixed bug where it wasn't possible to drag/drop inline-block cE=false elements on IE 11. + Fixed bug where some table cell merges would produce incorrect rowspan/colspan. + Fixed so the font size of the editor defaults to 14px instead of 11px this can be overridden by custom css. + Fixed so wordcount is debounced to reduce cpu hogging on larger texts. + Fixed so tinymce global gets properly exported as a module when used with some module bundlers. + Fixed so it's possible to specify what css properties you want to preview on specific formats. + Fixed so anchors are contentEditable=false while within the editor. + Fixed so selected contents gets wrapped in a inline code element by the codesample plugin. + Fixed so conditional comments gets properly stripped independent of case. Patch contributed by Georgii Dolzhykov. + Fixed so some escaped css sequences gets properly handled. Patch contributed by Georgii Dolzhykov. + Fixed so notifications with the same message doesn't get displayed at the same time. + Fixed so F10 can be used as an alternative key to focus to the toolbar. + Fixed various api documentation issues and typos. + Removed layer plugin since it wasn't really ported from 3.x and there doesn't seem to be much use for it. + Removed moxieplayer.swf from the media plugin since it wasn't used by the media plugin. + Removed format state from the advlist plugin to be more consistent with common word processors. +Version 4.4.3 (2016-09-01) + Fixed bug where copy would produce an exception on Chrome. + Fixed bug where deleting lists on IE 11 would merge in correct text nodes. + Fixed bug where deleting partial lists with indentation wouldn't cause proper normalization. +Version 4.4.2 (2016-08-25) + Added new importcss_exclusive option to disable unique selectors per group. + Added new group specific selector_converter option to importcss plugin. + Added new codesample_languages option to apply custom languages to codesample plugin. + Added new codesample_dialog_width/codesample_dialog_height options. + Fixed bug where fullscreen button had an incorrect keyboard shortcut. + Fixed bug where backspace/delete wouldn't work correctly from a block to a cE=false element. + Fixed bug where smartpaste wasn't detecting links with special characters in them like tilde. + Fixed bug where the editor wouldn't get proper focus if you clicked on a cE=false element. + Fixed bug where it wasn't possible to copy/paste table rows that had merged cells. + Fixed bug where merging cells could some times produce invalid col/rowspan attibute values. + Fixed bug where getBody would sometimes thrown an exception now it just returns null if the iframe is clobbered. + Fixed bug where drag/drop of cE=false element wasn't properly constrained to viewport. + Fixed bug where contextmenu on Mac would collapse any selection to a caret. + Fixed bug where rtl mode wasn't rendered properly when loading a language pack with the rtl flag. + Fixed bug where Kamer word bounderies would be stripped from contents. + Fixed bug where lists would sometimes render two dots or numbers on the same line. + Fixed bug where the skin_url wasn't used by the inlite theme. + Fixed so data attributes are ignored when comparing formats in the formatter. + Fixed so it's possible to disable inline toolbars in the inlite theme. + Fixed so template dialog gets resized if it doesn't fit the window viewport. +Version 4.4.1 (2016-07-26) + Added smart_paste option to paste plugin to allow disabling the paste behavior if needed. + Fixed bug where png urls wasn't properly detected by the smart paste logic. + Fixed bug where the element path wasn't working properly when multiple editor instances where used. + Fixed bug with creating lists out of multiple paragraphs would just create one list item instead of multiple. + Fixed bug where scroll position wasn't properly handled by the inlite theme to place the toolbar properly. + Fixed bug where multiple instances of the editor using the inlite theme didn't render the toolbar properly. + Fixed bug where the shortcut label for fullscreen mode didn't match the actual shortcut key. + Fixed bug where it wasn't possible to select cE=false blocks using touch devices on for example iOS. + Fixed bug where it was possible to select the child image within a cE=false on IE 11. + Fixed so inserts of html containing lists doesn't merge with any existing lists unless it's a paste operation. +Version 4.4.0 (2016-06-30) + Added new inlite theme this is a more lightweight inline UI. + Added smarter paste logic that auto detects urls in the clipboard and inserts images/links based on that. + Added a better image resize algorithm for better image quality in the imagetools plugin. + Fixed bug where it wasn't possible to drag/dropping cE=false elements on FF. + Fixed bug where backspace/delete before/after a cE=false block would produce a new paragraph. + Fixed bug where list style type css property wasn't preserved when indenting lists. + Fixed bug where merging of lists where done even if the list style type was different. + Fixed bug where the image_dataimg_filter function wasn't used when pasting images. + Fixed bug where nested editable within a non editable element would cause scroll on focus in Chrome. + Fixed so invalid targets for inline mode is blocked on initialization. We only support elements that can have children. +Version 4.3.13 (2016-06-08) + Added characters with a diacritical mark to charmap plugin. Patch contributed by Dominik Schilling. + Added better error handling if the image proxy service would produce errors. + Fixed issue with pasting list items into list items would produce nested list rather than a merged list. + Fixed bug where table selection could get stuck in selection mode for inline editors. + Fixed bug where it was possible to place the caret inside the resize grid elements. + Fixed bug where it wasn't possible to place in elements horizontally adjacent cE=false blocks. + Fixed bug where multiple notifications wouldn't be properly placed on screen. + Fixed bug where multiple editor instance of the same id could be produces in some specific integrations. +Version 4.3.12 (2016-05-10) + Fixed bug where focus calls couldn't be made inside the editors PostRender event handler. + Fixed bug where some translations wouldn't work as expected due to a bug in editor.translate. + Fixed bug where the node change event could fire with a node out side the root of the editor. + Fixed bug where Chrome wouldn't properly present the keyboard paste clipboard details when paste was clicked. + Fixed bug where merged cells in tables couldn't be selected from right to left. + Fixed bug where insert row wouldn't properly update a merged cells rowspan property. + Fixed bug where the color input boxes preview field wasn't properly set on initialization. + Fixed bug where IME composition inside table cells wouldn't work as expected on IE 11. + Fixed so all shadow dom support is under and experimental flag due to flaky browser support. +Version 4.3.11 (2016-04-25) + Fixed bug where it wasn't possible to insert empty blocks though the API unless they where padded. + Fixed bug where you couldn't type the Euro character on Windows. + Fixed bug where backspace/delete from a cE=false element to a text block didn't work properly. + Fixed bug where the text color default grid would render incorrectly. + Fixed bug where the codesample plugin wouldn't load the css in the editor for multiple editors. + Fixed so the codesample plugin textarea gets focused by default. +Version 4.3.10 (2016-04-12) + Fixed bug where the key "y" on WebKit couldn't be entered due to conflict with keycode for F10 on keypress. +Version 4.3.9 (2016-04-12) + Added support for focusing the contextual toolbars using keyboard. + Added keyboard support for slider UI controls. You can no increase/decrease using arrow keys. + Added url pattern matching for Dailymotion to media plugin. Patch contributed by Bertrand Darbon. + Added body_class to template plugin preview. Patch contributed by Milen Petrinski. + Added options to better override textcolor pickers with custom colors. Patch contributed by Xavier Boubert. + Added visual arrows to inline contextual toolbars so that they point to the element being active. + Fixed so toolbars for tables or other larger elements get better positioned below the scrollable viewport. + Fixed bug where it was possible to click links inside cE=false blocks. + Fixed bug where event targets wasn't properly handled in Safari Technical Preview. + Fixed bug where drag/drop text in FF 45 would make the editor caret invisible. + Fixed bug where the remove state wasn't properly set on editor instances when detected as clobbered. + Fixed bug where offscreen selection of some cE=false elements would render onscreen. Patch contributed by Steven Bufton + Fixed bug where enter would clone styles out side the root on editors inside a span. Patch contributed by ChristophKaser. + Fixed bug where drag/drop of images into the editor didn't work correctly in FF. + Fixed so the first item in panels for the imagetools dialog gets proper keyboard focus. + Changed the Meta+Shift+F shortcut to Ctrl+Shift+F since Czech, Slovak, Polish languages used the first one for input. +Version 4.3.8 (2016-03-15) + Fixed bug where inserting HR at the end of a block element would produce an extra empty block. + Fixed bug where links would be clickable when readonly mode was enabled. + Fixed bug where the formatter would normalize to the wrong node on very specific content. + Fixed bug where some nested list items couldn't be indented properly. + Fixed bug where links where clickable in the preview dialog. + Fixed so the alt attribute doesn't get padded with an empty value by default. + Fixed so nested alignment works more correctly. You will now alter the alignment to the closest block parent. +Version 4.3.7 (2016-03-02) + Fixed bug where incorrect icons would be rendered for imagetools edit and color levels. + Fixed bug where navigation using arrow keys inside a SelectBox didn't move up/down. + Fixed bug where the visualblocks plugin would render borders round internal UI elements. +Version 4.3.6 (2016-03-01) + Added new paste_remember_plaintext_info option to allow a global disable of the plain text mode notification. + Added new PastePlainTextToggle event that fires when plain text mode toggles on/off. + Fixed bug where it wasn't possible to select media elements since the drag logic would snap it to mouse cursor. + Fixed bug where it was hard to place the caret inside nested cE=true elements when the outer cE=false element was focused. + Fixed bug where editors wouldn't properly initialize if both selector and mode where used. + Fixed bug where IME input inside table cells would switch the IME off. + Fixed bug where selection inside the first table cell would cause the whole table cell to get selected. + Fixed bug where error handling of images being uploaded wouldn't properly handle faulty statuses. + Fixed bug where inserting contents before a HR would cause an exception to be thrown. + Fixed bug where copy/paste of Excel data would be inserted as an image. + Fixed caret position issues with copy/paste of inline block cE=false elements. + Fixed issues with various menu item focus bugs in Chrome. Where the focused menu bar item wasn't properly blurred. + Fixed so the notifications have a solid background since it would be hard to read if there where text under it. + Fixed so notifications gets animated similar to the ones used by dialogs. + Fixed so larger images that gets pasted is handled better. + Fixed so the window close button is more uniform on various platform and also increased it's hit area. +Version 4.3.5 (2016-02-11) + Npm version bump due to package not being fully updated. +Version 4.3.4 (2016-02-11) + Added new OpenWindow/CloseWindow events that gets fired when windows open/close. + Added new NewCell/NewRow events that gets fired when table cells/rows are created. + Added new Promise return value to tinymce.init makes it easier to handle initialization. + Removed the jQuery version the jQuery plugin is now moved into the main package. + Removed jscs from build process since eslint can now handle code style checking. + Fixed various bugs with drag/drop of contentEditable:false elements. + Fixed bug where deleting of very specific nested list items would result in an odd list. + Fixed bug where lists would get merged with adjacent lists outside the editable inline root. + Fixed bug where MS Edge would crash when closing a dialog then clicking a menu item. + Fixed bug where table cell selection would add undo levels. + Fixed bug where table cell selection wasn't removed when inline editor where removed. + Fixed bug where table cell selection wouldn't work properly on nested tables. + Fixed bug where table merge menu would be available when merging between thead and tbody. + Fixed bug where table row/column resize wouldn't get properly removed when the editor was removed. + Fixed bug where Chrome would scroll to the editor if there where a empty hash value in document url. + Fixed bug where the cache suffix wouldn't work correctly with the importcss plugin. + Fixed bug where selection wouldn't work properly on MS Edge on Windows Phone 10. + Fixed so adjacent pre blocks gets joined into one pre block since that seems like the user intent. + Fixed so events gets properly dispatched in shadow dom. Patch provided by Nazar Mokrynskyi. +Version 4.3.3 (2016-01-14) + Added new table_resize_bars configuration setting. This setting allows you to disable the table resize bars. + Added new beforeInitialize event to tinymce.util.XHR lets you modify XHR properties before open. Patch contributed by Brent Clintel. + Added new autolink_pattern setting to autolink plugin. Enables you to override the default autolink formats. Patch contributed by Ben Tiedt. + Added new charmap option that lets you override the default charmap of the charmap plugin. + Added new charmap_append option that lets you add new characters to the default charmap of the charmap plugin. + Added new insertCustomChar event that gets fired when a character is inserted by the charmap plugin. + Fixed bug where table cells started with a superfluous   in IE10+. + Fixed bug where table plugin would retain all BR tags when cells were merged. + Fixed bug where media plugin would strip underscores from youtube urls. + Fixed bug where IME input would fail on IE 11 if you typed within a table. + Fixed bug where double click selection of a word would remove the space before the word on insert contents. + Fixed bug where table plugin would produce exceptions when hovering tables with invalid structure. + Fixed bug where fullscreen wouldn't scroll back to it's original position when untoggled. + Fixed so the template plugins templates setting can be a function that gets a callback that can provide templates. +Version 4.3.2 (2015-12-14) + Fixed bug where the resize bars for table cells were not affected by the object_resizing property. + Fixed bug where the contextual table toolbar would appear incorrectly if TinyMCE was initialized inline inside a table. + Fixed bug where resizing table cells did not fire a node change event or add an undo level. + Fixed bug where double click selection of text on IE 11 wouldn't work properly. + Fixed bug where codesample plugin would incorrectly produce br elements inside code elements. + Fixed bug where media plugin would strip dashes from youtube urls. + Fixed bug where it was possible to move the caret into the table resize bars. + Fixed bug where drag/drop into a cE=false element was possible on IE. +Version 4.3.1 (2015-11-30) + Fixed so it's possible to disable the table inline toolbar by setting it to false or an empty string. + Fixed bug where it wasn't possible to resize some tables using the drag handles. + Fixed bug where unique id:s would clash for multiple editor instances and cE=false selections. + Fixed bug where the same plugin could be initialized multiple times. + Fixed bug where the table inline toolbars would be displayed at the same time as the image toolbars. + Fixed bug where the table selection rect wouldn't be removed when selecting another control element. +Version 4.3.0 (2015-11-23) + Added new table column/row resize support. Makes it a lot more easy to resize the columns/rows in a table. + Added new table inline toolbar. Makes it easier to for example add new rows or columns to a table. + Added new notification API. Lets you display floating notifications to the end user. + Added new codesample plugin that lets you insert syntax highlighted pre elements into the editor. + Added new image_caption to images. Lets you create images with captions using a HTML5 figure/figcaption elements. + Added new live previews of embeded videos. Lets you play the video right inside the editor. + Added new setDirty method and "dirty" event to the editor. Makes it easier to track the dirty state change. + Added new setMode method to Editor instances that lets you dynamically switch between design/readonly. + Added new core support for contentEditable=false elements within the editor overrides the browsers broken behavior. + Rewrote the noneditable plugin to use the new contentEditable false core logic. + Fixed so the dirty state doesn't set to false automatically when the undo index is set to 0. + Fixed the Selection.placeCaretAt so it works better on IE when the coordinate is between paragraphs. + Fixed bug where data-mce-bogus="all" element contents where counted by the word count plugin. + Fixed bug where contentEditable=false elements would be indented by the indent buttons. + Fixed bug where images within contentEditable=false would be selected in WebKit on mouse click. + Fixed bug in DOMUntils split method where the replacement parameter wouldn't work on specific cases. + Fixed bug where the importcss plugin would import classes from the skin content css file. + Fixed so all button variants have a wrapping span for it's text to make it easier to skin. + Fixed so it's easier to exit pre block using the arrow keys. + Fixed bug where listboxes with fix widths didn't render correctly. +Version 4.2.8 (2015-11-13) + Fixed bug where it was possible to delete tables as the inline root element if all columns where selected. + Fixed bug where the UI buttons active state wasn't properly updated due to recent refactoring of that logic. +Version 4.2.7 (2015-10-27) + Fixed bug where backspace/delete would remove all formats on the last paragraph character in WebKit/Blink. + Fixed bug where backspace within a inline format element with a bogus caret container would move the caret. + Fixed bug where backspace/delete on selected table cells wouldn't add an undo level. + Fixed bug where script tags embedded within the editor could sometimes get a mce- prefix prepended to them + Fixed bug where validate: false option could produce an error to be thrown from the Serialization step. + Fixed bug where inline editing of a table as the root element could let the user delete that table. + Fixed bug where inline editing of a table as the root element wouldn't properly handle enter key. + Fixed bug where inline editing of a table as the root element would normalize the selection incorrectly. + Fixed bug where inline editing of a list as the root element could let the user delete that list. + Fixed bug where inline editing of a list as the root element could let the user split that list. + Fixed bug where resize handles would be rendered on editable root elements such as table. +Version 4.2.6 (2015-09-28) + Added capability to set request headers when using XHRs. + Added capability to upload local images automatically default delay is set to 30 seconds after editing images. + Added commands ids mceEditImage, mceAchor and mceMedia to be avaiable from execCommand. + Added Edge browser to saucelabs grunt task. Patch contributed by John-David Dalton. + Fixed bug where blob uris not produced by tinymce would produce HTML invalid markup. + Fixed bug where selection of contents of a nearly empty editor in Edge would sometimes fail. + Fixed bug where color styles woudln't be retained on copy/paste in Blink/Webkit. + Fixed bug where the table plugin would throw an error when inserting rows after a child table. + Fixed bug where the template plugin wouldn't handle functions as variable replacements. + Fixed bug where undo/redo sometimes wouldn't work properly when applying formatting collapsed ranges. + Fixed bug where shift+delete wouldn't do a cut operation on Blink/WebKit. + Fixed bug where cut action wouldn't properly store the before selection bookmark for the undo level. + Fixed bug where backspace in side an empty list element on IE would loose editor focus. + Fixed bug where the save plugin wouldn't enable the buttons when a change occurred. + Fixed bug where Edge wouldn't initialize the editor if a document.domain was specified. + Fixed bug where enter key before nested images would sometimes not properly expand the previous block. + Fixed bug where the inline toolbars wouldn't get properly hidden when blurring the editor instance. + Fixed bug where Edge would paste Chinese characters on some Windows 10 installations. + Fixed bug where IME would loose focus on IE 11 due to the double trailing br bug fix. + Fixed bug where the proxy url in imagetools was incorrect. Patch contributed by Wong Ho Wang. +Version 4.2.5 (2015-08-31) + Added fullscreen capability to embedded youtube and vimeo videos. + Fixed bug where the uploadImages call didn't work on IE 10. + Fixed bug where image place holders would be uploaded by uploadImages call. + Fixed bug where images marked with bogus would be uploaded by the uploadImages call. + Fixed bug where multiple calls to uploadImages would result in decreased performance. + Fixed bug where pagebreaks were editable to imagetools patch contributed by Rasmus Wallin. + Fixed bug where the element path could cause too much recursion exception. + Fixed bug for domains containing ".min". Patch contributed by Loïc Février. + Fixed so validation of external links to accept a number after www. Patch contributed by Victor Carvalho. + Fixed so the charmap is exposed though execCommand. Patch contributed by Matthew Will. + Fixed so that the image uploads are concurrent for improved performance. + Fixed various grammar problems in inline documentation. Patches provided by nikolas. +Version 4.2.4 (2015-08-17) + Added picture as a valid element to the HTML 5 schema. Patch contributed by Adam Taylor. + Fixed bug where contents would be duplicated on drag/drop within the same editor. + Fixed bug where floating/alignment of images on Edge wouldn't work properly. + Fixed bug where it wasn't possible to drag images on IE 11. + Fixed bug where image selection on Edge would sometimes fail. + Fixed bug where contextual toolbars icons wasn't rendered properly when using the toolbar_items_size. + Fixed bug where searchreplace dialog doesn't get prefilled with the selected text. + Fixed bug where fragmented matches wouldn't get properly replaced by the searchreplace plugin. + Fixed bug where enter key wouldn't place the caret if was after a trailing space within an inline element. + Fixed bug where the autolink plugin could produce multiple links for the same text on Gecko. + Fixed bug where EditorUpload could sometimes throw an exception if the blob wasn't found. + Fixed xss issues with media plugin not properly filtering out some script attributes. +Version 4.2.3 (2015-07-30) + Fixed bug where image selection wasn't possible on Edge due to incompatible setBaseAndExtend API. + Fixed bug where image blobs urls where not properly destroyed by the imagetools plugin. + Fixed bug where keyboard shortcuts wasn't working correctly on IE 8. + Fixed skin issue where the borders of panels where not visible on IE 8. +Version 4.2.2 (2015-07-22) + Fixed bug where float panels were not being hidden on inline editor blur when fixed_toolbar_container config option was in use. + Fixed bug where combobox states wasn't properly updated if contents where updated without keyboard. + Fixed bug where pasting into textbox or combobox would move the caret to the end of text. + Fixed bug where removal of bogus span elements before block elements would remove whitespace between nodes. + Fixed bug where repositioning of inline toolbars where async and producing errors if the editor was removed from DOM to early. Patch by iseulde. + Fixed bug where element path wasn't working correctly. Patch contributed by iseulde. + Fixed bug where menus wasn't rendered correctly when custom images where added to a menu. Patch contributed by Naim Hammadi. +Version 4.2.1 (2015-06-29) + Fixed bug where back/forward buttons in the browser would render blob images as broken images. + Fixed bug where Firefox would throw regexp to big error when replacing huge base64 chunks. + Fixed bug rendering issues with resize and context toolbars not being placed properly until next animation frame. + Fixed bug where the rendering of the image while cropping would some times not be centered correctly. + Fixed bug where listbox items with submenus would me selected as active. + Fixed bug where context menu where throwing an error when rendering. + Fixed bug where resize both option wasn't working due to resent addClass API change. Patch contributed by Jogai. + Fixed bug where a hideAll call for container rendered inline toolbars would throw an error. + Fixed bug where onclick event handler on combobox could cause issues if element.id was a function by some polluting libraries. + Fixed bug where listboxes wouldn't get proper selected sub menu item when using link_list or image_list. + Fixed so the UI controls are as wide as 4.1.x to avoid wrapping controls in toolbars. + Fixed so the imagetools dialog is adaptive for smaller screen sizes. +Version 4.2.0 (2015-06-25) + Added new flat default skin to make the UI more modern. + Added new imagetools plugin, lets you crop/resize and apply filters to images. + Added new contextual toolbars support to the API lets you add floating toolbars for specific CSS selectors. + Added new promise feature fill as tinymce.util.Promise. + Added new built in image upload feature lets you upload any base64 encoded image within the editor as files. + Fixed bug where resize handles would appear in the right position in the wrong editor when switching between resizable content in different inline editors. + Fixed bug where tables would not be inserted in inline mode due to previous float panel fix. + Fixed bug where floating panels would remain open when focus was lost on inline editors. + Fixed bug where cut command on Chrome would thrown a browser security exception. + Fixed bug where IE 11 sometimes would report an incorrect size for images in the image dialog. + Fixed bug where it wasn't possible to remove inline formatting at the end of block elements. + Fixed bug where it wasn't possible to delete table cell contents when cell selection was vertical. + Fixed bug where table cell wasn't emptied from block elements if delete/backspace where pressed in empty cell. + Fixed bug where cmd+shift+arrow didn't work correctly on Firefox mac when selecting to start/end of line. + Fixed bug where removal of bogus elements would sometimes remove whitespace between nodes. + Fixed bug where the resize handles wasn't updated when the main window was resized. + Fixed so script elements gets removed by default to prevent possible XSS issues in default config implementations. + Fixed so the UI doesn't need manual reflows when using non native layout managers. + Fixed so base64 encoded images doesn't slow down the editor on modern browsers while editing. + Fixed so all UI elements uses touch events to improve mobile device support. + Removed the touch click quirks patch for iOS since it did more harm than good. + Removed the non proportional resize handles since. Unproportional resize can still be done by holding the shift key. +Version 4.1.10 (2015-05-05) + Fixed bug where plugins loaded with compat3x would sometimes throw errors when loading using the jQuery version. + Fixed bug where extra empty paragraphs would get deleted in WebKit/Blink due to recent Quriks fix. + Fixed bug where the editor wouldn't work properly on IE 12 due to some required browser sniffing. + Fixed bug where formatting shortcut keys where interfering with Mac OS X screenshot keys. + Fixed bug where the caret wouldn't move to the next/previous line boundary on Cmd+Left/Right on Gecko. + Fixed bug where it wasn't possible to remove formats from very specific nested contents. + Fixed bug where undo levels wasn't produced when typing letters using the shift or alt+ctrl modifiers. + Fixed bug where the dirty state wasn't properly updated when typing using the shift or alt+ctrl modifiers. + Fixed bug where an error would be thrown if an autofocused editor was destroyed quickly after its initialization. Patch provided by thorn0. + Fixed issue with dirty state not being properly updated on redo operation. + Fixed issue with entity decoder not handling incorrectly written numeric entities. + Fixed issue where some PI element values wouldn't be properly encoded. +Version 4.1.9 (2015-03-10) + Fixed bug where indentation wouldn't work properly for non list elements. + Fixed bug with image plugin not pulling the image dimensions out correctly if a custom document_base_url was used. + Fixed bug where ctrl+alt+[1-9] would conflict with the AltGr+[1-9] on Windows. New shortcuts is ctrl+shift+[1-9]. + Fixed bug with removing formatting on nodes in inline mode would sometimes include nodes outside the editor body. + Fixed bug where extra nbsp:s would be inserted when you replaced a word surrounded by spaces using insertContent. + Fixed bug with pasting from Google Docs would produce extra strong elements and line feeds. +Version 4.1.8 (2015-03-05) + Added new html5 sizes attribute to img elements used together with srcset. + Added new elementpath option that makes it possible to disable the element path but keep the statusbar. + Added new option table_style_by_css for the table plugin to set table styling with css rather than table attributes. + Added new link_assume_external_targets option to prompt the user to prepend http:// prefix if the supplied link does not contain a protocol prefix. + Added new image_prepend_url option to allow a custom base path/url to be added to images. + Added new table_appearance_options option to make it possible to disable some options. + Added new image_title option to make it possible to alter the title of the image, disabled by default. + Fixed bug where selection starting from out side of the body wouldn't produce a proper selection range on IE 11. + Fixed bug where pressing enter twice before a table moves the cursor in the table and causes a javascript error. + Fixed bug where advanced image styles were not respected. + Fixed bug where the less common Shift+Delete didn't produce a proper cut operation on WebKit browsers. + Fixed bug where image/media size constrain logic would produce NaN when handling non number values. + Fixed bug where internal classes where removed by the removeformat command. + Fixed bug with creating links table cell contents with a specific selection would throw a exceptions on WebKit/Blink. + Fixed bug where valid_classes option didn't work as expected according to docs. Patch provided by thorn0. + Fixed bug where jQuery plugin would patch the internal methods multiple times. Patch provided by Drew Martin. + Fixed bug where backspace key wouldn't delete the current selection of newly formatted content. + Fixed bug where type over of inline formatting elements wouldn't properly keep the format on WebKit/Blink. + Fixed bug where selection needed to be properly normalized on modern IE versions. + Fixed bug where Command+Backspace didn't properly delete the whole line of text but the previous word. + Fixed bug where UI active states wheren't properly updated on IE if you placed caret within the current range. + Fixed bug where delete/backspace on WebKit/Blink would remove span elements created by the user. + Fixed bug where delete/backspace would produce incorrect results when deleting between two text blocks with br elements. + Fixed bug where captions where removed when pasting from MS Office. + Fixed bug where lists plugin wouldn't properly remove fully selected nested lists. + Fixed bug where the ttf font used for icons would throw an warning message on Gecko on Mac OS X. + Fixed a bug where applying a color to text did not update the undo/redo history. + Fixed so shy entities gets displayed when using the visualchars plugin. + Fixed so removeformat removes ins/del by default since these might be used for strikethough. + Fixed so multiple language packs can be loaded and added to the global I18n data structure. + Fixed so transparent color selection gets treated as a normal color selection. Patch contributed by Alexander Hofbauer. + Fixed so it's possible to disable autoresize_overflow_padding, autoresize_bottom_margin options by setting them to false. + Fixed so the charmap plugin shows the description of the character in the dialog. Patch contributed by Jelle Hissink. + Removed address from the default list of block formats since it tends to be missused. + Fixed so the pre block format is called preformatted to make it more verbose. + Fixed so it's possible to context scope translation strings this isn't needed most of the time. + Fixed so the max length of the width/height input fields of the media dialog is 5 instead of 3. + Fixed so drag/dropped contents gets properly processed by paste plugin since it's basically a paste. Patch contributed by Greg Fairbanks. + Fixed so shortcut keys for headers is ctrl+alt+[1-9] instead of ctrl+[1-9] since these are for switching tabs in the browsers. + Fixed so "u" doesn't get converted into a span element by the legacy input filter. Since this is now a valid HTML5 element. + Fixed font families in order to provide appropriate web-safe fonts. +Version 4.1.7 (2014-11-27) + Added HTML5 schema support for srcset, source and picture. Patch contributed by mattheu. + Added new cache_suffix setting to enable cache busting by producing unique urls. + Added new paste_convert_word_fake_lists option to enable users to disable the fake lists convert logic. + Fixed so advlist style changes adds undo levels for each change. + Fixed bug where WebKit would sometimes produce an exception when the autolink plugin where looking for URLs. + Fixed bug where IE 7 wouldn't be rendered properly due to aggressive css compression. + Fixed bug where DomQuery wouldn't accept window as constructor element. + Fixed bug where the color picker in 3.x dialogs wouldn't work properly. Patch contributed by Callidior. + Fixed bug where the image plugin wouldn't respect the document_base_url. + Fixed bug where the jQuery plugin would fail to append to elements named array prototype names. +Version 4.1.6 (2014-10-08) + Fixed bug with clicking on the scrollbar of the iframe would cause a JS error to be thrown. + Fixed bug where null would produce an exception if you passed it to selection.setRng. + Fixed bug where Ctrl/Cmd+Tab would indent the current list item if you switched tabs in the browser. + Fixed bug where pasting empty cells from Excel would result in a broken table. + Fixed bug where it wasn't possible to switch back to default list style type. + Fixed issue where the select all quirk fix would fire for other modifiers than Ctrl/Cmd combinations. + Replaced jake with grunt since it is more mainstream and has better plugin support. +Version 4.1.5 (2014-09-09) + Fixed bug where sometimes the resize rectangles wouldn't properly render on images on WebKit/Blink. + Fixed bug in list plugin where delete/backspace would merge empty LI elements in lists incorrectly. + Fixed bug where empty list elements would result in empty LI elements without it's parent container. + Fixed bug where backspace in empty caret formatted element could produce an type error exception of Gecko. + Fixed bug where lists pasted from word with a custom start index above 9 wouldn't be properly handled. + Fixed bug where tabfocus plugin would tab out of the editor instance even if the default action was prevented. + Fixed bug where tabfocus wouldn't tab properly to other adjacent editor instances. + Fixed bug where the DOMUtils setStyles wouldn't properly removed or update the data-mce-style attribute. + Fixed bug where dialog select boxes would be placed incorrectly if document.body wasn't statically positioned. + Fixed bug where pasting would sometimes scroll to the top of page if the user was using the autoresize plugin. + Fixed bug where caret wouldn't be properly rendered by Chrome when clicking on the iframes documentElement. + Fixed so custom images for menubutton/splitbutton can be provided. Patch contributed by Naim Hammadi. + Fixed so the default action of windows closing can be prevented by blocking the default action of the close event. + Fixed so nodeChange and focus of the editor isn't automatically performed when opening sub dialogs. +Version 4.1.4 (2014-08-21) + Added new media_filter_html option to media plugin that blocks any conditional comments, scripts etc within a video element. + Added new content_security_policy option allows you to set custom policy for iframe contents. Patch contributed by Francois Chagnon. + Fixed bug where activate/deactivate events wasn't firing properly when switching between editors. + Fixed bug where placing the caret on iOS was difficult due to a WebKit bug with touch events. + Fixed bug where the resize helper wouldn't render properly on older IE versions. + Fixed bug where resizing images inside tables on older IE versions would sometimes fail depending mouse position. + Fixed bug where editor.insertContent would produce an exception when inserting select/option elements. + Fixed bug where extra empty paragraphs would be produced if block elements where inserted inside span elements. + Fixed bug where the spellchecker menu item wouldn't be properly checked if spell checking was started before it was rendered. + Fixed bug where the DomQuery filter function wouldn't remove non elements from collection. + Fixed bug where document with custom document.domain wouldn't properly render the editor. + Fixed bug where IE 8 would throw exception when trying to enter invalid color values into colorboxes. + Fixed bug where undo manager could incorrectly add an extra undo level when custom resize handles was removed. + Fixed bug where it wouldn't be possible to alter cell properties properly on table cells on IE 8. + Fixed so the color picker button in table dialog isn't shown unless you include the colorpicker plugin or add your own custom color picker. + Fixed so activate/deactivate events fire when windowManager opens a window since. + Fixed so the table advtab options isn't separated by an underscore to normalize naming with image_advtab option. + Fixed so the table cell dialog has proper padding when the advanced tab in disabled. +Version 4.1.3 (2014-07-29) + Added event binding logic to tinymce.util.XHR making it possible to override headers and settings before any request is made. + Fixed bug where drag events wasn't fireing properly on older IE versions since the event handlers where bound to document. + Fixed bug where drag/dropping contents within the editor on IE would force the contents into plain text mode even if it was internal content. + Fixed bug where IE 7 wouldn't open menus properly due to a resize bug in the browser auto closing them immediately. + Fixed bug where the DOMUtils getPos logic wouldn't produce a valid coordinate inside the body if the body was positioned non static. + Fixed bug where the element path and format state wasn't properly updated if you had the wordcount plugin enabled. + Fixed bug where a comment at the beginning of source would produce an exception in the formatter logic. + Fixed bug where setAttrib/getAttrib on null would throw exception together with any hooked attributes like style. + Fixed bug where table sizes wasn't properly retained when copy/pasting on WebKit/Blink. + Fixed bug where WebKit/Blink would produce colors in RGB format instead of the forced HEX format when deleting contents. + Fixed bug where the width attribute wasn't updated on tables if you changed the size inside the table dialog. + Fixed bug where control selection wasn't properly handled when the caret was placed directly after an image. + Fixed bug where selecting the contents of table cells using the selection.select method wouldn't place the caret properly. + Fixed bug where the selection state for images wasn't removed when placing the caret right after an image on WebKit/Blink. + Fixed bug where all events wasn't properly unbound when and editor instance was removed or destroyed by some external innerHTML call. + Fixed bug where it wasn't possible or very hard to select images on iOS when the onscreen keyboard was visible. + Fixed so auto_focus can take a boolean argument this will auto focus the last initialized editor might be useful for single inits. + Fixed so word auto detect lists logic works better for faked lists that doesn't have specific markup. + Fixed so nodeChange gets fired on mouseup as it used to before 4.1.1 we optimized that event to fire less often. + Removed the finish menu item from spellchecker menu since it's redundant you can stop spellchecking by toggling menu item or button. +Version 4.1.2 (2014-07-15) + Added offset/grep to DomQuery class works basically the same as it's jQuery equivalent. + Fixed bug where backspace/delete or setContent with an empty string would remove header data when using the fullpage plugin. + Fixed bug where tinymce.remove with a selector not matching any editors would remove all editors. + Fixed bug where resizing of the editor didn't work since the theme was calling setStyles instead of setStyle. + Fixed bug where IE 7 would fail to append html fragments to iframe document when using DomQuery. + Fixed bug where the getStyle DOMUtils method would produce an exception if it was called with null as it's element. + Fixed bug where the paste plugin would remove the element if the none of the paste_webkit_styles rules matched the current style. + Fixed bug where contextmenu table items wouldn't work properly on IE since it would some times fire an incorrect selection change. + Fixed bug where the padding/border values wasn't used in the size calculation for the body size when using autoresize. Patch contributed by Matt Whelan. + Fixed bug where conditional word comments wouldn't be properly removed when pasting plain text. + Fixed bug where resizing would sometime fail on IE 11 when the mouseup occurred inside the resizable element. + Fixed so the iframe gets initialized without any inline event handlers for better CSP support. Patch contributed by Matt Whelan. + Fixed so the tinymce.dom.Sizzle is the latest version of sizzle this resolves the document context bug. +Version 4.1.1 (2014-07-08) + Fixed bug where pasting plain text on some WebKit versions would result in an empty line. + Fixed bug where resizing images inside tables on IE 11 wouldn't work properly. + Fixed bug where IE 11 would sometimes throw "Invalid argument" exception when editor contents was set to an empty string. + Fixed bug where document.activeElement would throw exceptions on IE 9 when that element was hidden or removed from dom. + Fixed bug where WebKit/Blink sometimes produced br elements with the Apple-interchange-newline class. + Fixed bug where table cell selection wasn't properly removed when copy/pasting table cells. + Fixed bug where pasting nested list items from Word wouldn't produce proper semantic nested lists. + Fixed bug where right clicking using the contextmenu plugin on WebKit/Blink on Mac OS X would select the target current word or line. + Fixed bug where it wasn't possible to alter table cell properties on IE 8 using the context menu. + Fixed bug where the resize helper wouldn't be correctly positioned on older IE versions. + Fixed bug where fullpage plugin would produce an error if you didn't specify a doctype encoding. + Fixed bug where anchor plugin would get the name/id of the current element even if it wasn't anchor element. + Fixed bug where visual aids for tables wouldn't be properly disabled when changing the border size. + Fixed bug where some control selection events wasn't properly fired on older IE versions. + Fixed bug where table cell selection on older IE versions would prevent resizing of images. + Fixed bug with paste_data_images paste option not working properly on modern IE versions. + Fixed bug where custom elements with underscores in the name wasn't properly parsed/serialized. + Fixed bug where applying inline formats to nested list elements would produce an incorrect formatting result. + Fixed so it's possible to hide items from elements path by using preventDefault/stopPropagation. + Fixed so inline mode toolbar gets rendered right aligned if the editable element positioned to the documents right edge. + Fixed so empty inline elements inside empty block elements doesn't get removed if configured to be kept intact. + Fixed so DomQuery parentsUntil/prevUntil/nextUntil supports selectors/elements/filters etc. + Fixed so legacyoutput plugin overrides fontselect and fontsizeselect controls and handles font elements properly. +Version 4.1.0 (2014-06-18) + Added new file_picker_callback option to replace the old file_browser_callback the latter will still work though. + Added new custom colors to textcolor plugin will be displayed if a color picker is provided also shows the latest colors. + Added new color_picker_callback option to enable you to add custom color pickers to the editor. + Added new advanced tabs to table/cell/row dialogs to enable you to select colors for border/background. + Added new colorpicker plugin that lets you select colors from a hsv color picker. + Added new tinymce.util.Color class to handle color parsing and converting. + Added new colorpicker UI widget element lets you add a hsv color picker to any form/window. + Added new textpattern plugin that allows you to use markdown like text patterns to format contents. + Added new resize helper element that shows the current width & height while resizing. + Added new "once" method to Editor and EventDispatcher enables since callback execution events. + Added new jQuery like class under tinymce.dom.DomQuery it's exposed on editor instances (editor.$) and globally under (tinymce.$). + Fixed so the default resize method for images are proportional shift/ctrl can be used to make an unproportional size. + Fixed bug where the image_dimensions option of the image plugin would cause exceptions when it tried to update the size. + Fixed bug where table cell dialog class field wasn't properly updated when editing an a table cell with an existing class. + Fixed bug where Safari on Mac would produce webkit-fake-url for pasted images so these are now removed. + Fixed bug where the nodeChange event would get fired before the selection was changed when clicking inside the current selection range. + Fixed bug where valid_classes option would cause exception when it removed internal prefixed classes like mce-item-. + Fixed bug where backspace would cause navigation in IE 8 on an inline element and after a caret formatting was applied. + Fixed so placeholder images produced by the media plugin gets selected when inserted/edited. + Fixed so it's possible to drag in images when the paste_data_images option is enabled. Might be useful for mail clients. + Fixed so images doesn't get a width/height applied if the image_dimensions option is set to false useful for responsive contents. + Fixed so it's possible to pass in an optional arguments object for the nodeChanged function to be passed to all nodechange event listeners. + Fixed bug where media plugin embed code didn't update correctly. diff --git a/backoffice/vendors/tinymce/js/tinymce/langs/de.js b/backoffice/vendors/tinymce/js/tinymce/langs/de.js index 026b252..0cfcb88 100644 --- a/backoffice/vendors/tinymce/js/tinymce/langs/de.js +++ b/backoffice/vendors/tinymce/js/tinymce/langs/de.js @@ -1,260 +1,260 @@ -tinymce.addI18n('de',{ -"Redo": "Wiederholen", -"Undo": "R\u00fcckg\u00e4ngig", -"Cut": "Ausschneiden", -"Copy": "Kopieren", -"Paste": "Einf\u00fcgen", -"Select all": "Alles ausw\u00e4hlen", -"New document": "Neues Dokument", -"Ok": "Ok", -"Cancel": "Abbrechen", -"Visual aids": "Visuelle Hilfen", -"Bold": "Fett", -"Italic": "Kursiv", -"Underline": "Unterstrichen", -"Strikethrough": "Durchgestrichen", -"Superscript": "Hochgestellt", -"Subscript": "Tiefgestellt", -"Clear formatting": "Formatierung entfernen", -"Align left": "Linksb\u00fcndig ausrichten", -"Align center": "Zentriert ausrichten", -"Align right": "Rechtsb\u00fcndig ausrichten", -"Justify": "Blocksatz", -"Bullet list": "Aufz\u00e4hlung", -"Numbered list": "Nummerierte Liste", -"Decrease indent": "Einzug verkleinern", -"Increase indent": "Einzug vergr\u00f6\u00dfern", -"Close": "Schlie\u00dfen", -"Formats": "Formate", -"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V Tastenkombinationen.", -"Headers": "\u00dcberschriften", -"Header 1": "\u00dcberschrift 1", -"Header 2": "\u00dcberschrift 2", -"Header 3": "\u00dcberschrift 3", -"Header 4": "\u00dcberschrift 4", -"Header 5": "\u00dcberschrift 5", -"Header 6": "\u00dcberschrift 6", -"Headings": "\u00dcberschriften", -"Heading 1": "\u00dcberschrift 1", -"Heading 2": "\u00dcberschrift 2", -"Heading 3": "\u00dcberschrift 3", -"Heading 4": "\u00dcberschrift 4", -"Heading 5": "\u00dcberschrift 5", -"Heading 6": "\u00dcberschrift 6", -"Div": "Textblock", -"Pre": "Vorformatierter Text", -"Code": "Quelltext", -"Paragraph": "Absatz", -"Blockquote": "Zitat", -"Inline": "Zeichenformate", -"Blocks": "Absatzformate", -"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!", -"Font Family": "Schriftart", -"Font Sizes": "Schriftgr\u00f6\u00dfe", -"Class": "Klasse", -"Browse for an image": "Bild...", -"OR": "ODER", -"Drop an image here": "Bild hier ablegen", -"Upload": "Hochladen", -"Block": "Block", -"Align": "Ausrichtung", -"Default": "Standard", -"Circle": "Kreis", -"Disc": "Punkt", -"Square": "Quadrat", -"Lower Alpha": "Kleinbuchstaben", -"Lower Greek": "Griechische Kleinbuchstaben", -"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)", -"Upper Alpha": "Gro\u00dfbuchstaben", -"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)", -"Anchor": "Textmarke", -"Name": "Name", -"Id": "Kennung", -"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Die Kennung sollte mit einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche (Minus), Punkte, Kommas und Unterstriche.", -"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?", -"Restore last draft": "Letzten Entwurf wiederherstellen", -"Special character": "Sonderzeichen", -"Source code": "Quelltext", -"Insert\/Edit code sample": "Codebeispiel einf\u00fcgen\/bearbeiten", -"Language": "Sprache", -"Code sample": "Codebeispiel", -"Color": "Farbe", -"R": "R", -"G": "G", -"B": "B", -"Left to right": "Von links nach rechts", -"Right to left": "Von rechts nach links", -"Emoticons": "Emoticons", -"Document properties": "Dokumenteigenschaften", -"Title": "Titel", -"Keywords": "Sch\u00fcsselw\u00f6rter", -"Description": "Beschreibung", -"Robots": "Robots", -"Author": "Verfasser", -"Encoding": "Zeichenkodierung", -"Fullscreen": "Vollbild", -"Action": "Aktion", -"Shortcut": "Shortcut", -"Help": "Hilfe", -"Address": "Adresse", -"Focus to menubar": "Fokus auf Men\u00fcleiste", -"Focus to toolbar": "Fokus auf Werkzeugleiste", -"Focus to element path": "Fokus auf Elementpfad", -"Focus to contextual toolbar": "Fokus auf kontextbezogene Werkzeugleiste", -"Insert link (if link plugin activated)": "Link einf\u00fcgen (wenn Link-Plugin aktiviert ist)", -"Save (if save plugin activated)": "Speichern (wenn Save-Plugin aktiviert ist)", -"Find (if searchreplace plugin activated)": "Suchen einf\u00fcgen (wenn Suchen\/Ersetzen-Plugin aktiviert ist)", -"Plugins installed ({0}):": "installierte Plugins ({0}):", -"Premium plugins:": "Premium Plugins:", -"Learn more...": "Erfahren Sie mehr dazu...", -"You are using {0}": "Sie verwenden {0}", -"Plugins": "Plugins", -"Handy Shortcuts": "Handy Shortcuts", -"Horizontal line": "Horizontale Linie", -"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten", -"Image description": "Bildbeschreibung", -"Source": "Quelle", -"Dimensions": "Abmessungen", -"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten", -"General": "Allgemein", -"Advanced": "Erweitert", -"Style": "Stil", -"Vertical space": "Vertikaler Abstand", -"Horizontal space": "Horizontaler Abstand", -"Border": "Rahmen", -"Insert image": "Bild einf\u00fcgen", -"Image": "Bild", -"Image list": "Bildliste", -"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen", -"Rotate clockwise": "Im Uhrzeigersinn drehen", -"Flip vertically": "Vertikal spiegeln", -"Flip horizontally": "Horizontal spiegeln", -"Edit image": "Bild bearbeiten", -"Image options": "Bildeigenschaften", -"Zoom in": "Ansicht vergr\u00f6\u00dfern", -"Zoom out": "Ansicht verkleinern", -"Crop": "Bescheiden", -"Resize": "Skalieren", -"Orientation": "Ausrichtung", -"Brightness": "Helligkeit", -"Sharpen": "Sch\u00e4rfen", -"Contrast": "Kontrast", -"Color levels": "Farbwerte", -"Gamma": "Gamma", -"Invert": "Invertieren", -"Apply": "Anwenden", -"Back": "Zur\u00fcck", -"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ", -"Date\/time": "Datum\/Uhrzeit", -"Insert link": "Link einf\u00fcgen", -"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten", -"Text to display": "Anzuzeigender Text", -"Url": "URL", -"Target": "Ziel", -"None": "Keine", -"New window": "Neues Fenster", -"Remove link": "Link entfernen", -"Anchors": "Textmarken", -"Link": "Link", -"Paste or type a link": "Link einf\u00fcgen oder eintippen", -"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?", -"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?", -"Link list": "Linkliste", -"Insert video": "Video einf\u00fcgen", -"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten", -"Insert\/edit media": "Medien einf\u00fcgen\/bearbeiten", -"Alternative source": "Alternative Quelle", -"Poster": "Poster", -"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:", -"Embed": "Einbetten", -"Media": "Medium", -"Nonbreaking space": "Gesch\u00fctztes Leerzeichen", -"Page break": "Seitenumbruch", -"Paste as text": "Als Text einf\u00fcgen", -"Preview": "Vorschau", -"Print": "Drucken", -"Save": "Speichern", -"Find": "Suchen", -"Replace with": "Ersetzen durch", -"Replace": "Ersetzen", -"Replace all": "Alles ersetzen", -"Prev": "Zur\u00fcck", -"Next": "Weiter", -"Find and replace": "Suchen und ersetzen", -"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.", -"Match case": "Gro\u00df-\/Kleinschreibung beachten", -"Whole words": "Nur ganze W\u00f6rter", -"Spellcheck": "Rechtschreibpr\u00fcfung", -"Ignore": "Ignorieren", -"Ignore all": "Alles Ignorieren", -"Finish": "Ende", -"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen", -"Insert table": "Tabelle einf\u00fcgen", -"Table properties": "Tabelleneigenschaften", -"Delete table": "Tabelle l\u00f6schen", -"Cell": "Zelle", -"Row": "Zeile", -"Column": "Spalte", -"Cell properties": "Zelleneigenschaften", -"Merge cells": "Zellen verbinden", -"Split cell": "Zelle aufteilen", -"Insert row before": "Neue Zeile davor einf\u00fcgen ", -"Insert row after": "Neue Zeile danach einf\u00fcgen", -"Delete row": "Zeile l\u00f6schen", -"Row properties": "Zeileneigenschaften", -"Cut row": "Zeile ausschneiden", -"Copy row": "Zeile kopieren", -"Paste row before": "Zeile davor einf\u00fcgen", -"Paste row after": "Zeile danach einf\u00fcgen", -"Insert column before": "Neue Spalte davor einf\u00fcgen", -"Insert column after": "Neue Spalte danach einf\u00fcgen", -"Delete column": "Spalte l\u00f6schen", -"Cols": "Spalten", -"Rows": "Zeilen", -"Width": "Breite", -"Height": "H\u00f6he", -"Cell spacing": "Zellenabstand", -"Cell padding": "Zelleninnenabstand", -"Caption": "Beschriftung", -"Left": "Linksb\u00fcndig", -"Center": "Zentriert", -"Right": "Rechtsb\u00fcndig", -"Cell type": "Zellentyp", -"Scope": "G\u00fcltigkeitsbereich", -"Alignment": "Ausrichtung", -"H Align": "Horizontale Ausrichtung", -"V Align": "Vertikale Ausrichtung", -"Top": "Oben", -"Middle": "Mitte", -"Bottom": "Unten", -"Header cell": "Kopfzelle", -"Row group": "Zeilengruppe", -"Column group": "Spaltengruppe", -"Row type": "Zeilentyp", -"Header": "Kopfzeile", -"Body": "Inhalt", -"Footer": "Fu\u00dfzeile", -"Border color": "Rahmenfarbe", -"Insert template": "Vorlage einf\u00fcgen ", -"Templates": "Vorlagen", -"Template": "Vorlage", -"Text color": "Textfarbe", -"Background color": "Hintergrundfarbe", -"Custom...": "Benutzerdefiniert...", -"Custom color": "Benutzerdefinierte Farbe", -"No color": "Keine Farbe", -"Table of Contents": "Inhaltsverzeichnis", -"Show blocks": "Bl\u00f6cke anzeigen", -"Show invisible characters": "Unsichtbare Zeichen anzeigen", -"Words: {0}": "W\u00f6rter: {0}", -"{0} words": "{0} W\u00f6rter", -"File": "Datei", -"Edit": "Bearbeiten", -"Insert": "Einf\u00fcgen", -"View": "Ansicht", -"Format": "Format", -"Table": "Tabelle", -"Tools": "Werkzeuge", -"Powered by {0}": "Betrieben von {0}", -"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe" +tinymce.addI18n('de',{ +"Redo": "Wiederholen", +"Undo": "R\u00fcckg\u00e4ngig", +"Cut": "Ausschneiden", +"Copy": "Kopieren", +"Paste": "Einf\u00fcgen", +"Select all": "Alles ausw\u00e4hlen", +"New document": "Neues Dokument", +"Ok": "Ok", +"Cancel": "Abbrechen", +"Visual aids": "Visuelle Hilfen", +"Bold": "Fett", +"Italic": "Kursiv", +"Underline": "Unterstrichen", +"Strikethrough": "Durchgestrichen", +"Superscript": "Hochgestellt", +"Subscript": "Tiefgestellt", +"Clear formatting": "Formatierung entfernen", +"Align left": "Linksb\u00fcndig ausrichten", +"Align center": "Zentriert ausrichten", +"Align right": "Rechtsb\u00fcndig ausrichten", +"Justify": "Blocksatz", +"Bullet list": "Aufz\u00e4hlung", +"Numbered list": "Nummerierte Liste", +"Decrease indent": "Einzug verkleinern", +"Increase indent": "Einzug vergr\u00f6\u00dfern", +"Close": "Schlie\u00dfen", +"Formats": "Formate", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V Tastenkombinationen.", +"Headers": "\u00dcberschriften", +"Header 1": "\u00dcberschrift 1", +"Header 2": "\u00dcberschrift 2", +"Header 3": "\u00dcberschrift 3", +"Header 4": "\u00dcberschrift 4", +"Header 5": "\u00dcberschrift 5", +"Header 6": "\u00dcberschrift 6", +"Headings": "\u00dcberschriften", +"Heading 1": "\u00dcberschrift 1", +"Heading 2": "\u00dcberschrift 2", +"Heading 3": "\u00dcberschrift 3", +"Heading 4": "\u00dcberschrift 4", +"Heading 5": "\u00dcberschrift 5", +"Heading 6": "\u00dcberschrift 6", +"Div": "Textblock", +"Pre": "Vorformatierter Text", +"Code": "Quelltext", +"Paragraph": "Absatz", +"Blockquote": "Zitat", +"Inline": "Zeichenformate", +"Blocks": "Absatzformate", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!", +"Font Family": "Schriftart", +"Font Sizes": "Schriftgr\u00f6\u00dfe", +"Class": "Klasse", +"Browse for an image": "Bild...", +"OR": "ODER", +"Drop an image here": "Bild hier ablegen", +"Upload": "Hochladen", +"Block": "Block", +"Align": "Ausrichtung", +"Default": "Standard", +"Circle": "Kreis", +"Disc": "Punkt", +"Square": "Quadrat", +"Lower Alpha": "Kleinbuchstaben", +"Lower Greek": "Griechische Kleinbuchstaben", +"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)", +"Upper Alpha": "Gro\u00dfbuchstaben", +"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)", +"Anchor": "Textmarke", +"Name": "Name", +"Id": "Kennung", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Die Kennung sollte mit einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche (Minus), Punkte, Kommas und Unterstriche.", +"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?", +"Restore last draft": "Letzten Entwurf wiederherstellen", +"Special character": "Sonderzeichen", +"Source code": "Quelltext", +"Insert\/Edit code sample": "Codebeispiel einf\u00fcgen\/bearbeiten", +"Language": "Sprache", +"Code sample": "Codebeispiel", +"Color": "Farbe", +"R": "R", +"G": "G", +"B": "B", +"Left to right": "Von links nach rechts", +"Right to left": "Von rechts nach links", +"Emoticons": "Emoticons", +"Document properties": "Dokumenteigenschaften", +"Title": "Titel", +"Keywords": "Sch\u00fcsselw\u00f6rter", +"Description": "Beschreibung", +"Robots": "Robots", +"Author": "Verfasser", +"Encoding": "Zeichenkodierung", +"Fullscreen": "Vollbild", +"Action": "Aktion", +"Shortcut": "Shortcut", +"Help": "Hilfe", +"Address": "Adresse", +"Focus to menubar": "Fokus auf Men\u00fcleiste", +"Focus to toolbar": "Fokus auf Werkzeugleiste", +"Focus to element path": "Fokus auf Elementpfad", +"Focus to contextual toolbar": "Fokus auf kontextbezogene Werkzeugleiste", +"Insert link (if link plugin activated)": "Link einf\u00fcgen (wenn Link-Plugin aktiviert ist)", +"Save (if save plugin activated)": "Speichern (wenn Save-Plugin aktiviert ist)", +"Find (if searchreplace plugin activated)": "Suchen einf\u00fcgen (wenn Suchen\/Ersetzen-Plugin aktiviert ist)", +"Plugins installed ({0}):": "installierte Plugins ({0}):", +"Premium plugins:": "Premium Plugins:", +"Learn more...": "Erfahren Sie mehr dazu...", +"You are using {0}": "Sie verwenden {0}", +"Plugins": "Plugins", +"Handy Shortcuts": "Handy Shortcuts", +"Horizontal line": "Horizontale Linie", +"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten", +"Image description": "Bildbeschreibung", +"Source": "Quelle", +"Dimensions": "Abmessungen", +"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten", +"General": "Allgemein", +"Advanced": "Erweitert", +"Style": "Stil", +"Vertical space": "Vertikaler Abstand", +"Horizontal space": "Horizontaler Abstand", +"Border": "Rahmen", +"Insert image": "Bild einf\u00fcgen", +"Image": "Bild", +"Image list": "Bildliste", +"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen", +"Rotate clockwise": "Im Uhrzeigersinn drehen", +"Flip vertically": "Vertikal spiegeln", +"Flip horizontally": "Horizontal spiegeln", +"Edit image": "Bild bearbeiten", +"Image options": "Bildeigenschaften", +"Zoom in": "Ansicht vergr\u00f6\u00dfern", +"Zoom out": "Ansicht verkleinern", +"Crop": "Bescheiden", +"Resize": "Skalieren", +"Orientation": "Ausrichtung", +"Brightness": "Helligkeit", +"Sharpen": "Sch\u00e4rfen", +"Contrast": "Kontrast", +"Color levels": "Farbwerte", +"Gamma": "Gamma", +"Invert": "Invertieren", +"Apply": "Anwenden", +"Back": "Zur\u00fcck", +"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ", +"Date\/time": "Datum\/Uhrzeit", +"Insert link": "Link einf\u00fcgen", +"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten", +"Text to display": "Anzuzeigender Text", +"Url": "URL", +"Target": "Ziel", +"None": "Keine", +"New window": "Neues Fenster", +"Remove link": "Link entfernen", +"Anchors": "Textmarken", +"Link": "Link", +"Paste or type a link": "Link einf\u00fcgen oder eintippen", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?", +"Link list": "Linkliste", +"Insert video": "Video einf\u00fcgen", +"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten", +"Insert\/edit media": "Medien einf\u00fcgen\/bearbeiten", +"Alternative source": "Alternative Quelle", +"Poster": "Poster", +"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:", +"Embed": "Einbetten", +"Media": "Medium", +"Nonbreaking space": "Gesch\u00fctztes Leerzeichen", +"Page break": "Seitenumbruch", +"Paste as text": "Als Text einf\u00fcgen", +"Preview": "Vorschau", +"Print": "Drucken", +"Save": "Speichern", +"Find": "Suchen", +"Replace with": "Ersetzen durch", +"Replace": "Ersetzen", +"Replace all": "Alles ersetzen", +"Prev": "Zur\u00fcck", +"Next": "Weiter", +"Find and replace": "Suchen und ersetzen", +"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.", +"Match case": "Gro\u00df-\/Kleinschreibung beachten", +"Whole words": "Nur ganze W\u00f6rter", +"Spellcheck": "Rechtschreibpr\u00fcfung", +"Ignore": "Ignorieren", +"Ignore all": "Alles Ignorieren", +"Finish": "Ende", +"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen", +"Insert table": "Tabelle einf\u00fcgen", +"Table properties": "Tabelleneigenschaften", +"Delete table": "Tabelle l\u00f6schen", +"Cell": "Zelle", +"Row": "Zeile", +"Column": "Spalte", +"Cell properties": "Zelleneigenschaften", +"Merge cells": "Zellen verbinden", +"Split cell": "Zelle aufteilen", +"Insert row before": "Neue Zeile davor einf\u00fcgen ", +"Insert row after": "Neue Zeile danach einf\u00fcgen", +"Delete row": "Zeile l\u00f6schen", +"Row properties": "Zeileneigenschaften", +"Cut row": "Zeile ausschneiden", +"Copy row": "Zeile kopieren", +"Paste row before": "Zeile davor einf\u00fcgen", +"Paste row after": "Zeile danach einf\u00fcgen", +"Insert column before": "Neue Spalte davor einf\u00fcgen", +"Insert column after": "Neue Spalte danach einf\u00fcgen", +"Delete column": "Spalte l\u00f6schen", +"Cols": "Spalten", +"Rows": "Zeilen", +"Width": "Breite", +"Height": "H\u00f6he", +"Cell spacing": "Zellenabstand", +"Cell padding": "Zelleninnenabstand", +"Caption": "Beschriftung", +"Left": "Linksb\u00fcndig", +"Center": "Zentriert", +"Right": "Rechtsb\u00fcndig", +"Cell type": "Zellentyp", +"Scope": "G\u00fcltigkeitsbereich", +"Alignment": "Ausrichtung", +"H Align": "Horizontale Ausrichtung", +"V Align": "Vertikale Ausrichtung", +"Top": "Oben", +"Middle": "Mitte", +"Bottom": "Unten", +"Header cell": "Kopfzelle", +"Row group": "Zeilengruppe", +"Column group": "Spaltengruppe", +"Row type": "Zeilentyp", +"Header": "Kopfzeile", +"Body": "Inhalt", +"Footer": "Fu\u00dfzeile", +"Border color": "Rahmenfarbe", +"Insert template": "Vorlage einf\u00fcgen ", +"Templates": "Vorlagen", +"Template": "Vorlage", +"Text color": "Textfarbe", +"Background color": "Hintergrundfarbe", +"Custom...": "Benutzerdefiniert...", +"Custom color": "Benutzerdefinierte Farbe", +"No color": "Keine Farbe", +"Table of Contents": "Inhaltsverzeichnis", +"Show blocks": "Bl\u00f6cke anzeigen", +"Show invisible characters": "Unsichtbare Zeichen anzeigen", +"Words: {0}": "W\u00f6rter: {0}", +"{0} words": "{0} W\u00f6rter", +"File": "Datei", +"Edit": "Bearbeiten", +"Insert": "Einf\u00fcgen", +"View": "Ansicht", +"Format": "Format", +"Table": "Tabelle", +"Tools": "Werkzeuge", +"Powered by {0}": "Betrieben von {0}", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe" }); \ No newline at end of file diff --git a/backoffice/vendors/tinymce/js/tinymce/langs/fr_FR.js b/backoffice/vendors/tinymce/js/tinymce/langs/fr_FR.js index 3e50877..5757ed1 100644 --- a/backoffice/vendors/tinymce/js/tinymce/langs/fr_FR.js +++ b/backoffice/vendors/tinymce/js/tinymce/langs/fr_FR.js @@ -1,261 +1,261 @@ -tinymce.addI18n('fr_FR',{ -"Redo": "R\u00e9tablir", -"Undo": "Annuler", -"Cut": "Couper", -"Copy": "Copier", -"Paste": "Coller", -"Select all": "Tout s\u00e9lectionner", -"New document": "Nouveau document", -"Ok": "Ok", -"Cancel": "Annuler", -"Visual aids": "Aides visuelle", -"Bold": "Gras", -"Italic": "Italique", -"Underline": "Soulign\u00e9", -"Strikethrough": "Barr\u00e9", -"Superscript": "Exposant", -"Subscript": "Indice", -"Clear formatting": "Effacer la mise en forme", -"Align left": "Aligner \u00e0 gauche", -"Align center": "Centrer", -"Align right": "Aligner \u00e0 droite", -"Justify": "Justifier", -"Bullet list": "Puces", -"Numbered list": "Num\u00e9rotation", -"Decrease indent": "Diminuer le retrait", -"Increase indent": "Augmenter le retrait", -"Close": "Fermer", -"Formats": "Formats", -"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.", -"Headers": "Titres", -"Header 1": "Titre 1", -"Header 2": "Titre 2", -"Header 3": "Titre 3", -"Header 4": "Titre 4", -"Header 5": "Titre 5", -"Header 6": "Titre 6", -"Headings": "En-t\u00eates", -"Heading 1": "En-t\u00eate 1", -"Heading 2": "En-t\u00eate 2", -"Heading 3": "En-t\u00eate 3", -"Heading 4": "En-t\u00eate 4", -"Heading 5": "En-t\u00eate 5", -"Heading 6": "En-t\u00eate 6", -"Preformatted": "Pr\u00e9-formatt\u00e9", -"Div": "Div", -"Pre": "Pre", -"Code": "Code", -"Paragraph": "Paragraphe", -"Blockquote": "Citation", -"Inline": "En ligne", -"Blocks": "Blocs", -"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.", -"Font Family": "Police", -"Font Sizes": "Taille de police", -"Class": "Classe", -"Browse for an image": "Parcourir pour s\u00e9lectionner une image", -"OR": "OU", -"Drop an image here": "Glisser une image ici", -"Upload": "D\u00e9poser", -"Block": "Bloquer", -"Align": "Aligner", -"Default": "Par d\u00e9faut", -"Circle": "Cercle", -"Disc": "Disque", -"Square": "Carr\u00e9", -"Lower Alpha": "Alpha minuscule", -"Lower Greek": "Grec minuscule", -"Lower Roman": "Romain minuscule", -"Upper Alpha": "Alpha majuscule", -"Upper Roman": "Romain majuscule", -"Anchor": "Ancre", -"Name": "Nom", -"Id": "Id", -"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores", -"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?", -"Restore last draft": "Restaurer le dernier brouillon", -"Special character": "Caract\u00e8res sp\u00e9ciaux", -"Source code": "Code source", -"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code", -"Language": "Langue", -"Code sample": "Extrait de code", -"Color": "Couleur", -"R": "R", -"G": "V", -"B": "B", -"Left to right": "Gauche \u00e0 droite", -"Right to left": "Droite \u00e0 gauche", -"Emoticons": "Emotic\u00f4nes", -"Document properties": "Propri\u00e9t\u00e9 du document", -"Title": "Titre", -"Keywords": "Mots-cl\u00e9s", -"Description": "Description", -"Robots": "Robots", -"Author": "Auteur", -"Encoding": "Encodage", -"Fullscreen": "Plein \u00e9cran", -"Action": "Action", -"Shortcut": "Raccourci", -"Help": "Aide", -"Address": "Adresse", -"Focus to menubar": "Cibler la barre de menu", -"Focus to toolbar": "Cibler la barre d'outils", -"Focus to element path": "Cibler le chemin vers l'\u00e9l\u00e9ment", -"Focus to contextual toolbar": "Cibler la barre d'outils contextuelle", -"Insert link (if link plugin activated)": "Ins\u00e9rer un lien (si le module link est activ\u00e9)", -"Save (if save plugin activated)": "Enregistrer (si le module save est activ\u00e9)", -"Find (if searchreplace plugin activated)": "Rechercher (si le module searchreplace est activ\u00e9)", -"Plugins installed ({0}):": "Modules install\u00e9s ({0}) : ", -"Premium plugins:": "Modules premium :", -"Learn more...": "En savoir plus...", -"You are using {0}": "Vous utilisez {0}", -"Plugins": "Plugins", -"Handy Shortcuts": "Raccourci", -"Horizontal line": "Ligne horizontale", -"Insert\/edit image": "Ins\u00e9rer\/modifier une image", -"Image description": "Description de l'image", -"Source": "Source", -"Dimensions": "Dimensions", -"Constrain proportions": "Conserver les proportions", -"General": "G\u00e9n\u00e9ral", -"Advanced": "Avanc\u00e9", -"Style": "Style", -"Vertical space": "Espacement vertical", -"Horizontal space": "Espacement horizontal", -"Border": "Bordure", -"Insert image": "Ins\u00e9rer une image", -"Image": "Image", -"Image list": "Liste d'images", -"Rotate counterclockwise": "Rotation anti-horaire", -"Rotate clockwise": "Rotation horaire", -"Flip vertically": "Retournement vertical", -"Flip horizontally": "Retournement horizontal", -"Edit image": "Modifier l'image", -"Image options": "Options de l'image", -"Zoom in": "Zoomer", -"Zoom out": "D\u00e9zoomer", -"Crop": "Rogner", -"Resize": "Redimensionner", -"Orientation": "Orientation", -"Brightness": "Luminosit\u00e9", -"Sharpen": "Affiner", -"Contrast": "Contraste", -"Color levels": "Niveaux de couleur", -"Gamma": "Gamma", -"Invert": "Inverser", -"Apply": "Appliquer", -"Back": "Retour", -"Insert date\/time": "Ins\u00e9rer date\/heure", -"Date\/time": "Date\/heure", -"Insert link": "Ins\u00e9rer un lien", -"Insert\/edit link": "Ins\u00e9rer\/modifier un lien", -"Text to display": "Texte \u00e0 afficher", -"Url": "Url", -"Target": "Cible", -"None": "n\/a", -"New window": "Nouvelle fen\u00eatre", -"Remove link": "Enlever le lien", -"Anchors": "Ancres", -"Link": "Lien", -"Paste or type a link": "Coller ou taper un lien", -"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?", -"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?", -"Link list": "Liste de liens", -"Insert video": "Ins\u00e9rer une vid\u00e9o", -"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o", -"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia", -"Alternative source": "Source alternative", -"Poster": "Publier", -"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :", -"Embed": "Int\u00e9grer", -"Media": "M\u00e9dia", -"Nonbreaking space": "Espace ins\u00e9cable", -"Page break": "Saut de page", -"Paste as text": "Coller comme texte", -"Preview": "Pr\u00e9visualiser", -"Print": "Imprimer", -"Save": "Enregistrer", -"Find": "Chercher", -"Replace with": "Remplacer par", -"Replace": "Remplacer", -"Replace all": "Tout remplacer", -"Prev": "Pr\u00e9c ", -"Next": "Suiv", -"Find and replace": "Trouver et remplacer", -"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.", -"Match case": "Respecter la casse", -"Whole words": "Mots entiers", -"Spellcheck": "V\u00e9rification orthographique", -"Ignore": "Ignorer", -"Ignore all": "Tout ignorer", -"Finish": "Finie", -"Add to Dictionary": "Ajouter au dictionnaire", -"Insert table": "Ins\u00e9rer un tableau", -"Table properties": "Propri\u00e9t\u00e9s du tableau", -"Delete table": "Supprimer le tableau", -"Cell": "Cellule", -"Row": "Ligne", -"Column": "Colonne", -"Cell properties": "Propri\u00e9t\u00e9s de la cellule", -"Merge cells": "Fusionner les cellules", -"Split cell": "Diviser la cellule", -"Insert row before": "Ins\u00e9rer une ligne avant", -"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s", -"Delete row": "Effacer la ligne", -"Row properties": "Propri\u00e9t\u00e9s de la ligne", -"Cut row": "Couper la ligne", -"Copy row": "Copier la ligne", -"Paste row before": "Coller la ligne avant", -"Paste row after": "Coller la ligne apr\u00e8s", -"Insert column before": "Ins\u00e9rer une colonne avant", -"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s", -"Delete column": "Effacer la colonne", -"Cols": "Colonnes", -"Rows": "Lignes", -"Width": "Largeur", -"Height": "Hauteur", -"Cell spacing": "Espacement inter-cellulles", -"Cell padding": "Espacement interne cellule", -"Caption": "Titre", -"Left": "Gauche", -"Center": "Centr\u00e9", -"Right": "Droite", -"Cell type": "Type de cellule", -"Scope": "Etendue", -"Alignment": "Alignement", -"H Align": "Alignement H", -"V Align": "Alignement V", -"Top": "Haut", -"Middle": "Milieu", -"Bottom": "Bas", -"Header cell": "Cellule d'en-t\u00eate", -"Row group": "Groupe de lignes", -"Column group": "Groupe de colonnes", -"Row type": "Type de ligne", -"Header": "En-t\u00eate", -"Body": "Corps", -"Footer": "Pied", -"Border color": "Couleur de la bordure", -"Insert template": "Ajouter un th\u00e8me", -"Templates": "Th\u00e8mes", -"Template": "Mod\u00e8le", -"Text color": "Couleur du texte", -"Background color": "Couleur d'arri\u00e8re-plan", -"Custom...": "Personnalis\u00e9...", -"Custom color": "Couleur personnalis\u00e9e", -"No color": "Aucune couleur", -"Table of Contents": "Table des mati\u00e8res", -"Show blocks": "Afficher les blocs", -"Show invisible characters": "Afficher les caract\u00e8res invisibles", -"Words: {0}": "Mots : {0}", -"{0} words": "{0} mots", -"File": "Fichier", -"Edit": "Editer", -"Insert": "Ins\u00e9rer", -"View": "Voir", -"Format": "Format", -"Table": "Tableau", -"Tools": "Outils", -"Powered by {0}": "Propuls\u00e9 par {0}", -"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide." +tinymce.addI18n('fr_FR',{ +"Redo": "R\u00e9tablir", +"Undo": "Annuler", +"Cut": "Couper", +"Copy": "Copier", +"Paste": "Coller", +"Select all": "Tout s\u00e9lectionner", +"New document": "Nouveau document", +"Ok": "Ok", +"Cancel": "Annuler", +"Visual aids": "Aides visuelle", +"Bold": "Gras", +"Italic": "Italique", +"Underline": "Soulign\u00e9", +"Strikethrough": "Barr\u00e9", +"Superscript": "Exposant", +"Subscript": "Indice", +"Clear formatting": "Effacer la mise en forme", +"Align left": "Aligner \u00e0 gauche", +"Align center": "Centrer", +"Align right": "Aligner \u00e0 droite", +"Justify": "Justifier", +"Bullet list": "Puces", +"Numbered list": "Num\u00e9rotation", +"Decrease indent": "Diminuer le retrait", +"Increase indent": "Augmenter le retrait", +"Close": "Fermer", +"Formats": "Formats", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.", +"Headers": "Titres", +"Header 1": "Titre 1", +"Header 2": "Titre 2", +"Header 3": "Titre 3", +"Header 4": "Titre 4", +"Header 5": "Titre 5", +"Header 6": "Titre 6", +"Headings": "En-t\u00eates", +"Heading 1": "En-t\u00eate 1", +"Heading 2": "En-t\u00eate 2", +"Heading 3": "En-t\u00eate 3", +"Heading 4": "En-t\u00eate 4", +"Heading 5": "En-t\u00eate 5", +"Heading 6": "En-t\u00eate 6", +"Preformatted": "Pr\u00e9-formatt\u00e9", +"Div": "Div", +"Pre": "Pre", +"Code": "Code", +"Paragraph": "Paragraphe", +"Blockquote": "Citation", +"Inline": "En ligne", +"Blocks": "Blocs", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.", +"Font Family": "Police", +"Font Sizes": "Taille de police", +"Class": "Classe", +"Browse for an image": "Parcourir pour s\u00e9lectionner une image", +"OR": "OU", +"Drop an image here": "Glisser une image ici", +"Upload": "D\u00e9poser", +"Block": "Bloquer", +"Align": "Aligner", +"Default": "Par d\u00e9faut", +"Circle": "Cercle", +"Disc": "Disque", +"Square": "Carr\u00e9", +"Lower Alpha": "Alpha minuscule", +"Lower Greek": "Grec minuscule", +"Lower Roman": "Romain minuscule", +"Upper Alpha": "Alpha majuscule", +"Upper Roman": "Romain majuscule", +"Anchor": "Ancre", +"Name": "Nom", +"Id": "Id", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores", +"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?", +"Restore last draft": "Restaurer le dernier brouillon", +"Special character": "Caract\u00e8res sp\u00e9ciaux", +"Source code": "Code source", +"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code", +"Language": "Langue", +"Code sample": "Extrait de code", +"Color": "Couleur", +"R": "R", +"G": "V", +"B": "B", +"Left to right": "Gauche \u00e0 droite", +"Right to left": "Droite \u00e0 gauche", +"Emoticons": "Emotic\u00f4nes", +"Document properties": "Propri\u00e9t\u00e9 du document", +"Title": "Titre", +"Keywords": "Mots-cl\u00e9s", +"Description": "Description", +"Robots": "Robots", +"Author": "Auteur", +"Encoding": "Encodage", +"Fullscreen": "Plein \u00e9cran", +"Action": "Action", +"Shortcut": "Raccourci", +"Help": "Aide", +"Address": "Adresse", +"Focus to menubar": "Cibler la barre de menu", +"Focus to toolbar": "Cibler la barre d'outils", +"Focus to element path": "Cibler le chemin vers l'\u00e9l\u00e9ment", +"Focus to contextual toolbar": "Cibler la barre d'outils contextuelle", +"Insert link (if link plugin activated)": "Ins\u00e9rer un lien (si le module link est activ\u00e9)", +"Save (if save plugin activated)": "Enregistrer (si le module save est activ\u00e9)", +"Find (if searchreplace plugin activated)": "Rechercher (si le module searchreplace est activ\u00e9)", +"Plugins installed ({0}):": "Modules install\u00e9s ({0}) : ", +"Premium plugins:": "Modules premium :", +"Learn more...": "En savoir plus...", +"You are using {0}": "Vous utilisez {0}", +"Plugins": "Plugins", +"Handy Shortcuts": "Raccourci", +"Horizontal line": "Ligne horizontale", +"Insert\/edit image": "Ins\u00e9rer\/modifier une image", +"Image description": "Description de l'image", +"Source": "Source", +"Dimensions": "Dimensions", +"Constrain proportions": "Conserver les proportions", +"General": "G\u00e9n\u00e9ral", +"Advanced": "Avanc\u00e9", +"Style": "Style", +"Vertical space": "Espacement vertical", +"Horizontal space": "Espacement horizontal", +"Border": "Bordure", +"Insert image": "Ins\u00e9rer une image", +"Image": "Image", +"Image list": "Liste d'images", +"Rotate counterclockwise": "Rotation anti-horaire", +"Rotate clockwise": "Rotation horaire", +"Flip vertically": "Retournement vertical", +"Flip horizontally": "Retournement horizontal", +"Edit image": "Modifier l'image", +"Image options": "Options de l'image", +"Zoom in": "Zoomer", +"Zoom out": "D\u00e9zoomer", +"Crop": "Rogner", +"Resize": "Redimensionner", +"Orientation": "Orientation", +"Brightness": "Luminosit\u00e9", +"Sharpen": "Affiner", +"Contrast": "Contraste", +"Color levels": "Niveaux de couleur", +"Gamma": "Gamma", +"Invert": "Inverser", +"Apply": "Appliquer", +"Back": "Retour", +"Insert date\/time": "Ins\u00e9rer date\/heure", +"Date\/time": "Date\/heure", +"Insert link": "Ins\u00e9rer un lien", +"Insert\/edit link": "Ins\u00e9rer\/modifier un lien", +"Text to display": "Texte \u00e0 afficher", +"Url": "Url", +"Target": "Cible", +"None": "n\/a", +"New window": "Nouvelle fen\u00eatre", +"Remove link": "Enlever le lien", +"Anchors": "Ancres", +"Link": "Lien", +"Paste or type a link": "Coller ou taper un lien", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?", +"Link list": "Liste de liens", +"Insert video": "Ins\u00e9rer une vid\u00e9o", +"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o", +"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia", +"Alternative source": "Source alternative", +"Poster": "Publier", +"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :", +"Embed": "Int\u00e9grer", +"Media": "M\u00e9dia", +"Nonbreaking space": "Espace ins\u00e9cable", +"Page break": "Saut de page", +"Paste as text": "Coller comme texte", +"Preview": "Pr\u00e9visualiser", +"Print": "Imprimer", +"Save": "Enregistrer", +"Find": "Chercher", +"Replace with": "Remplacer par", +"Replace": "Remplacer", +"Replace all": "Tout remplacer", +"Prev": "Pr\u00e9c ", +"Next": "Suiv", +"Find and replace": "Trouver et remplacer", +"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.", +"Match case": "Respecter la casse", +"Whole words": "Mots entiers", +"Spellcheck": "V\u00e9rification orthographique", +"Ignore": "Ignorer", +"Ignore all": "Tout ignorer", +"Finish": "Finie", +"Add to Dictionary": "Ajouter au dictionnaire", +"Insert table": "Ins\u00e9rer un tableau", +"Table properties": "Propri\u00e9t\u00e9s du tableau", +"Delete table": "Supprimer le tableau", +"Cell": "Cellule", +"Row": "Ligne", +"Column": "Colonne", +"Cell properties": "Propri\u00e9t\u00e9s de la cellule", +"Merge cells": "Fusionner les cellules", +"Split cell": "Diviser la cellule", +"Insert row before": "Ins\u00e9rer une ligne avant", +"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s", +"Delete row": "Effacer la ligne", +"Row properties": "Propri\u00e9t\u00e9s de la ligne", +"Cut row": "Couper la ligne", +"Copy row": "Copier la ligne", +"Paste row before": "Coller la ligne avant", +"Paste row after": "Coller la ligne apr\u00e8s", +"Insert column before": "Ins\u00e9rer une colonne avant", +"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s", +"Delete column": "Effacer la colonne", +"Cols": "Colonnes", +"Rows": "Lignes", +"Width": "Largeur", +"Height": "Hauteur", +"Cell spacing": "Espacement inter-cellulles", +"Cell padding": "Espacement interne cellule", +"Caption": "Titre", +"Left": "Gauche", +"Center": "Centr\u00e9", +"Right": "Droite", +"Cell type": "Type de cellule", +"Scope": "Etendue", +"Alignment": "Alignement", +"H Align": "Alignement H", +"V Align": "Alignement V", +"Top": "Haut", +"Middle": "Milieu", +"Bottom": "Bas", +"Header cell": "Cellule d'en-t\u00eate", +"Row group": "Groupe de lignes", +"Column group": "Groupe de colonnes", +"Row type": "Type de ligne", +"Header": "En-t\u00eate", +"Body": "Corps", +"Footer": "Pied", +"Border color": "Couleur de la bordure", +"Insert template": "Ajouter un th\u00e8me", +"Templates": "Th\u00e8mes", +"Template": "Mod\u00e8le", +"Text color": "Couleur du texte", +"Background color": "Couleur d'arri\u00e8re-plan", +"Custom...": "Personnalis\u00e9...", +"Custom color": "Couleur personnalis\u00e9e", +"No color": "Aucune couleur", +"Table of Contents": "Table des mati\u00e8res", +"Show blocks": "Afficher les blocs", +"Show invisible characters": "Afficher les caract\u00e8res invisibles", +"Words: {0}": "Mots : {0}", +"{0} words": "{0} mots", +"File": "Fichier", +"Edit": "Editer", +"Insert": "Ins\u00e9rer", +"View": "Voir", +"Format": "Format", +"Table": "Tableau", +"Tools": "Outils", +"Powered by {0}": "Propuls\u00e9 par {0}", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide." }); \ No newline at end of file diff --git a/backoffice/vendors/tinymce/js/tinymce/license.txt b/backoffice/vendors/tinymce/js/tinymce/license.txt index b17fc90..c020cdb 100644 --- a/backoffice/vendors/tinymce/js/tinymce/license.txt +++ b/backoffice/vendors/tinymce/js/tinymce/license.txt @@ -1,504 +1,504 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/backoffice/vendors/tinymce/js/tinymce/plugins/codesample/css/prism.css b/backoffice/vendors/tinymce/js/tinymce/plugins/codesample/css/prism.css index 128237f..aeafa14 100644 --- a/backoffice/vendors/tinymce/js/tinymce/plugins/codesample/css/prism.css +++ b/backoffice/vendors/tinymce/js/tinymce/plugins/codesample/css/prism.css @@ -1,138 +1,138 @@ -/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ -/** - * prism.js default theme for JavaScript, CSS and HTML - * Based on dabblet (http://dabblet.com) - * @author Lea Verou - */ - -code[class*="language-"], -pre[class*="language-"] { - color: black; - text-shadow: 0 1px white; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - direction: ltr; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #b3d4fc; -} - -pre[class*="language-"]::selection, pre[class*="language-"] ::selection, -code[class*="language-"]::selection, code[class*="language-"] ::selection { - text-shadow: none; - background: #b3d4fc; -} - -@media print { - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #f5f2f0; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #999; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #905; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #690; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #a67f59; - background: hsla(0, 0%, 100%, .5); -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #07a; -} - -.token.function { - color: #DD4A68; -} - -.token.regex, -.token.important, -.token.variable { - color: #e90; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + diff --git a/backoffice/vendors/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css b/backoffice/vendors/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css index 96e4d7c..82c7142 100644 --- a/backoffice/vendors/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css +++ b/backoffice/vendors/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css @@ -1,154 +1,154 @@ -.mce-visualblocks p { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); - background-repeat: no-repeat; -} - -.mce-visualblocks h1 { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks h2 { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks h3 { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); - background-repeat: no-repeat; -} - -.mce-visualblocks h4 { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks h5 { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks h6 { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks div:not([data-mce-bogus]) { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); - background-repeat: no-repeat; -} - -.mce-visualblocks section { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); - background-repeat: no-repeat; -} - -.mce-visualblocks article { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); - background-repeat: no-repeat; -} - -.mce-visualblocks blockquote { - padding-top: 10px; - border: 1px dashed #BBB; - background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); - background-repeat: no-repeat; -} - -.mce-visualblocks address { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); - background-repeat: no-repeat; -} - -.mce-visualblocks pre { - padding-top: 10px; - border: 1px dashed #BBB; - margin-left: 3px; - background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks figure { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); - background-repeat: no-repeat; -} - -.mce-visualblocks hgroup { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); - background-repeat: no-repeat; -} - -.mce-visualblocks aside { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); - background-repeat: no-repeat; -} - -.mce-visualblocks figcaption { - border: 1px dashed #BBB; -} - -.mce-visualblocks ul { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks ol { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); - background-repeat: no-repeat; -} - -.mce-visualblocks dl { - padding-top: 10px; - border: 1px dashed #BBB; - margin: 0 0 1em 3px; - background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); - background-repeat: no-repeat; -} +.mce-visualblocks p { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); + background-repeat: no-repeat; +} + +.mce-visualblocks h1 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h2 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h3 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks h4 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h5 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks h6 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks div:not([data-mce-bogus]) { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks section { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); + background-repeat: no-repeat; +} + +.mce-visualblocks article { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks blockquote { + padding-top: 10px; + border: 1px dashed #BBB; + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); + background-repeat: no-repeat; +} + +.mce-visualblocks address { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); + background-repeat: no-repeat; +} + +.mce-visualblocks pre { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks figure { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); + background-repeat: no-repeat; +} + +.mce-visualblocks hgroup { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); + background-repeat: no-repeat; +} + +.mce-visualblocks aside { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); + background-repeat: no-repeat; +} + +.mce-visualblocks figcaption { + border: 1px dashed #BBB; +} + +.mce-visualblocks ul { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks ol { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); + background-repeat: no-repeat; +} + +.mce-visualblocks dl { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); + background-repeat: no-repeat; +} diff --git a/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.svg b/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.svg index b4ee6f4..686f467 100644 --- a/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +++ b/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.svg @@ -1,63 +1,63 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.svg b/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.svg index 9fa215f..8ccb4dd 100644 --- a/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.svg +++ b/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.svg @@ -1,131 +1,131 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/skin.mobile.min.css b/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/skin.mobile.min.css index ac322a0..7442fe8 100644 --- a/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/skin.mobile.min.css +++ b/backoffice/vendors/tinymce/js/tinymce/skins/lightgray/skin.mobile.min.css @@ -1,2 +1,2 @@ -.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{-webkit-box-sizing:initial;box-sizing:initial;line-height:1;margin:0;padding:0;border:0;outline:0;text-shadow:none;float:none;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent}.tinymce-mobile-icon-arrow-back:before{content:"\e5cd"}.tinymce-mobile-icon-image:before{content:"\e412"}.tinymce-mobile-icon-cancel-circle:before{content:"\e5c9"}.tinymce-mobile-icon-full-dot:before{content:"\e061"}.tinymce-mobile-icon-align-center:before{content:"\e234"}.tinymce-mobile-icon-align-left:before{content:"\e236"}.tinymce-mobile-icon-align-right:before{content:"\e237"}.tinymce-mobile-icon-bold:before{content:"\e238"}.tinymce-mobile-icon-italic:before{content:"\e23f"}.tinymce-mobile-icon-unordered-list:before{content:"\e241"}.tinymce-mobile-icon-ordered-list:before{content:"\e242"}.tinymce-mobile-icon-font-size:before{content:"\e245"}.tinymce-mobile-icon-underline:before{content:"\e249"}.tinymce-mobile-icon-link:before{content:"\e157"}.tinymce-mobile-icon-unlink:before{content:"\eca2"}.tinymce-mobile-icon-color:before{content:"\e891"}.tinymce-mobile-icon-previous:before{content:"\e314"}.tinymce-mobile-icon-next:before{content:"\e315"}.tinymce-mobile-icon-large-font:before,.tinymce-mobile-icon-style-formats:before{content:"\e264"}.tinymce-mobile-icon-undo:before{content:"\e166"}.tinymce-mobile-icon-redo:before{content:"\e15a"}.tinymce-mobile-icon-removeformat:before{content:"\e239"}.tinymce-mobile-icon-small-font:before{content:"\e906"}.tinymce-mobile-icon-readonly-back:before,.tinymce-mobile-format-matches:after{content:"\e5ca"}.tinymce-mobile-icon-small-heading:before{content:"small"}.tinymce-mobile-icon-large-heading:before{content:"large"}.tinymce-mobile-icon-small-heading:before,.tinymce-mobile-icon-large-heading:before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon:before{content:"\e254"}.tinymce-mobile-icon-back:before{content:"\e5c4"}.tinymce-mobile-icon-heading:before{content:"Headings";font-family:sans-serif;font-weight:bold;font-size:80%}.tinymce-mobile-icon-h1:before{content:"H1";font-weight:bold}.tinymce-mobile-icon-h2:before{content:"H2";font-weight:bold}.tinymce-mobile-icon-h3:before{content:"H3";font-weight:bold}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;width:100%;height:100%;top:0;background:rgba(51,51,51,0.5)}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-border-radius:50%;border-radius:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-family:sans-serif;font-size:1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;color:#4682B4;background-color:white}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon:before{font-family:'tinymce-mobile';content:"\e900"}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{position:fixed;top:0;bottom:0;left:0;right:0;border:none;background:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:-webkit-box !important;display:-webkit-flex !important;display:-ms-flexbox !important;display:flex !important;height:auto !important;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#eceff1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;z-index:1;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:100%;height:2.5em;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#4682B4;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-left:2px;margin-right:2px;height:80%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#455a64;color:#b1bec6}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-top:.4em;padding-bottom:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;position:relative;width:100%;min-height:1.5em;padding-left:0;padding-right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{-webkit-transition:left cubic-bezier(.4, 0, 1, 1) .15s;transition:left cubic-bezier(.4, 0, 1, 1) .15s;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{position:absolute;right:0;color:#888;font-size:.6em;font-weight:bold;background:inherit;-webkit-border-radius:50%;border-radius:50%;border:none;-webkit-align-self:center;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;height:100%;padding-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next:before{padding-left:.5em;padding-right:.5em;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;font-weight:bold}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled:before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{margin:0 2px;font-size:10px;line-height:10px;padding-top:3px;color:#b1bec6}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative;padding:.28em 0;margin-left:10%;margin-right:10%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading:before{margin-right:.9em;margin-left:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading:before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{margin-left:0;margin-right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin-top:.3em;margin-bottom:.3em;background:#b1bec6;height:.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin-top:.3em;margin-bottom:.3em;background:-webkit-gradient(linear, left top, right top, color-stop(0, #f00), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(#f00));background:-webkit-linear-gradient(left, #f00 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);background:linear-gradient(to right, #f00 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);height:.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:black;width:1.2em;height:.2em;margin-top:.3em;margin-bottom:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:white;width:1.2em;height:.2em;margin-top:.3em;margin-bottom:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{position:absolute;height:.5em;width:.5em;left:-10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin:auto;top:0;bottom:0;-webkit-transition:border 120ms cubic-bezier(.39, .58, .57, 1);transition:border 120ms cubic-bezier(.39, .58, .57, 1);background-color:#455a64;background-clip:padding-box;color:#eceff1;border:.5em solid rgba(136,136,136,0);-webkit-border-radius:3em;border-radius:3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,0.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{padding-top:.1em;padding-bottom:.1em;padding-left:5px;font-size:.85em;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background:#fff;border:none;-webkit-border-radius:0;border-radius:0;color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input:-ms-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation: landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-dropup{background:white;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;overflow:hidden}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{-webkit-transition:height .3s ease-out;transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{-webkit-transition:height .3s ease-in;transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-styles-menu{overflow:hidden;outline:4px solid black;position:relative;width:100%;font-family:sans-serif}.tinymce-mobile-styles-menu [role="menu"]{height:100%;position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.tinymce-mobile-styles-menu [role="menu"].transitioning{-webkit-transition:-webkit-transform .5s ease-in-out;transition:-webkit-transform .5s ease-in-out;transition:transform .5s ease-in-out;transition:transform .5s ease-in-out, -webkit-transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{cursor:pointer;padding:1em 1em;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-bottom:1px solid #ddd;color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon:before{font-family:'tinymce-mobile';content:"\e314";color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu:after{font-family:'tinymce-mobile';content:"\e315";position:absolute;padding-left:1em;padding-right:1em;right:0;color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches:after{font-family:'tinymce-mobile';position:absolute;padding-left:1em;padding-right:1em;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser{border-top:#455a64;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;background:#eceff1;color:#455a64}.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="before"]{-webkit-transform:translate(-100%);transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="current"]{-webkit-transform:translate(0);transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="after"]{-webkit-transform:translate(100%);transform:translate(100%)}@font-face{font-family:'tinymce-mobile';src:url('fonts/tinymce-mobile.woff?8x92w3') format('woff');font-weight:normal;font-style:normal}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:'tinymce-mobile'}.mixin-flex-and-centre{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.mixin-flex-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{overflow:hidden;height:300px}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{position:fixed;right:2em;bottom:1em;color:white;background-color:#4682B4;-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}input[type="file"]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{-webkit-box-sizing:initial;box-sizing:initial;line-height:1;margin:0;padding:0;border:0;outline:0;text-shadow:none;float:none;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent}.tinymce-mobile-icon-arrow-back:before{content:"\e5cd"}.tinymce-mobile-icon-image:before{content:"\e412"}.tinymce-mobile-icon-cancel-circle:before{content:"\e5c9"}.tinymce-mobile-icon-full-dot:before{content:"\e061"}.tinymce-mobile-icon-align-center:before{content:"\e234"}.tinymce-mobile-icon-align-left:before{content:"\e236"}.tinymce-mobile-icon-align-right:before{content:"\e237"}.tinymce-mobile-icon-bold:before{content:"\e238"}.tinymce-mobile-icon-italic:before{content:"\e23f"}.tinymce-mobile-icon-unordered-list:before{content:"\e241"}.tinymce-mobile-icon-ordered-list:before{content:"\e242"}.tinymce-mobile-icon-font-size:before{content:"\e245"}.tinymce-mobile-icon-underline:before{content:"\e249"}.tinymce-mobile-icon-link:before{content:"\e157"}.tinymce-mobile-icon-unlink:before{content:"\eca2"}.tinymce-mobile-icon-color:before{content:"\e891"}.tinymce-mobile-icon-previous:before{content:"\e314"}.tinymce-mobile-icon-next:before{content:"\e315"}.tinymce-mobile-icon-large-font:before,.tinymce-mobile-icon-style-formats:before{content:"\e264"}.tinymce-mobile-icon-undo:before{content:"\e166"}.tinymce-mobile-icon-redo:before{content:"\e15a"}.tinymce-mobile-icon-removeformat:before{content:"\e239"}.tinymce-mobile-icon-small-font:before{content:"\e906"}.tinymce-mobile-icon-readonly-back:before,.tinymce-mobile-format-matches:after{content:"\e5ca"}.tinymce-mobile-icon-small-heading:before{content:"small"}.tinymce-mobile-icon-large-heading:before{content:"large"}.tinymce-mobile-icon-small-heading:before,.tinymce-mobile-icon-large-heading:before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon:before{content:"\e254"}.tinymce-mobile-icon-back:before{content:"\e5c4"}.tinymce-mobile-icon-heading:before{content:"Headings";font-family:sans-serif;font-weight:bold;font-size:80%}.tinymce-mobile-icon-h1:before{content:"H1";font-weight:bold}.tinymce-mobile-icon-h2:before{content:"H2";font-weight:bold}.tinymce-mobile-icon-h3:before{content:"H3";font-weight:bold}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;width:100%;height:100%;top:0;background:rgba(51,51,51,0.5)}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-border-radius:50%;border-radius:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-family:sans-serif;font-size:1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;color:#4682B4;background-color:white}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon:before{font-family:'tinymce-mobile';content:"\e900"}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{position:fixed;top:0;bottom:0;left:0;right:0;border:none;background:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:-webkit-box !important;display:-webkit-flex !important;display:-ms-flexbox !important;display:flex !important;height:auto !important;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#eceff1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;z-index:1;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:100%;height:2.5em;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#4682B4;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-left:2px;margin-right:2px;height:80%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#455a64;color:#b1bec6}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-top:.4em;padding-bottom:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;position:relative;width:100%;min-height:1.5em;padding-left:0;padding-right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{-webkit-transition:left cubic-bezier(.4, 0, 1, 1) .15s;transition:left cubic-bezier(.4, 0, 1, 1) .15s;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{position:absolute;right:0;color:#888;font-size:.6em;font-weight:bold;background:inherit;-webkit-border-radius:50%;border-radius:50%;border:none;-webkit-align-self:center;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;height:100%;padding-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next:before{padding-left:.5em;padding-right:.5em;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;font-weight:bold}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled:before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{margin:0 2px;font-size:10px;line-height:10px;padding-top:3px;color:#b1bec6}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative;padding:.28em 0;margin-left:10%;margin-right:10%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading:before{margin-right:.9em;margin-left:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading:before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{margin-left:0;margin-right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin-top:.3em;margin-bottom:.3em;background:#b1bec6;height:.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin-top:.3em;margin-bottom:.3em;background:-webkit-gradient(linear, left top, right top, color-stop(0, #f00), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(#f00));background:-webkit-linear-gradient(left, #f00 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);background:linear-gradient(to right, #f00 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);height:.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:black;width:1.2em;height:.2em;margin-top:.3em;margin-bottom:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:white;width:1.2em;height:.2em;margin-top:.3em;margin-bottom:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{position:absolute;height:.5em;width:.5em;left:-10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin:auto;top:0;bottom:0;-webkit-transition:border 120ms cubic-bezier(.39, .58, .57, 1);transition:border 120ms cubic-bezier(.39, .58, .57, 1);background-color:#455a64;background-clip:padding-box;color:#eceff1;border:.5em solid rgba(136,136,136,0);-webkit-border-radius:3em;border-radius:3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,0.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{padding-top:.1em;padding-bottom:.1em;padding-left:5px;font-size:.85em;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background:#fff;border:none;-webkit-border-radius:0;border-radius:0;color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input:-ms-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation: landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-dropup{background:white;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;overflow:hidden}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{-webkit-transition:height .3s ease-out;transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{-webkit-transition:height .3s ease-in;transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-styles-menu{overflow:hidden;outline:4px solid black;position:relative;width:100%;font-family:sans-serif}.tinymce-mobile-styles-menu [role="menu"]{height:100%;position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.tinymce-mobile-styles-menu [role="menu"].transitioning{-webkit-transition:-webkit-transform .5s ease-in-out;transition:-webkit-transform .5s ease-in-out;transition:transform .5s ease-in-out;transition:transform .5s ease-in-out, -webkit-transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{cursor:pointer;padding:1em 1em;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-bottom:1px solid #ddd;color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon:before{font-family:'tinymce-mobile';content:"\e314";color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu:after{font-family:'tinymce-mobile';content:"\e315";position:absolute;padding-left:1em;padding-right:1em;right:0;color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches:after{font-family:'tinymce-mobile';position:absolute;padding-left:1em;padding-right:1em;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser{border-top:#455a64;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;background:#eceff1;color:#455a64}.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="before"]{-webkit-transform:translate(-100%);transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="current"]{-webkit-transform:translate(0);transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="after"]{-webkit-transform:translate(100%);transform:translate(100%)}@font-face{font-family:'tinymce-mobile';src:url('fonts/tinymce-mobile.woff?8x92w3') format('woff');font-weight:normal;font-style:normal}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:'tinymce-mobile'}.mixin-flex-and-centre{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.mixin-flex-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{overflow:hidden;height:300px}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{position:fixed;right:2em;bottom:1em;color:white;background-color:#4682B4;-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}input[type="file"]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} /*# sourceMappingURL=skin.mobile.min.css.map */ \ No newline at end of file diff --git a/backoffice/vendors/tinymce/js/tinymce/tinymce.min.js b/backoffice/vendors/tinymce/js/tinymce/tinymce.min.js index b3d4d46..28ab615 100644 --- a/backoffice/vendors/tinymce/js/tinymce/tinymce.min.js +++ b/backoffice/vendors/tinymce/js/tinymce/tinymce.min.js @@ -1,2 +1,2 @@ -// 4.7.11 (2018-04-11) +// 4.7.11 (2018-04-11) !function(){"use strict";var e,t,n,r,o,i,a,u,s,c,l,f,d,m,p,g,h,v=function(e){return function(){return e}},V={noop:function(){for(var e=[],t=0;t+~]|"+Ke+")"+Ke+"*"),et=new RegExp("="+Ke+"*([^\\]'\"]*?)"+Ke+"*\\]","g"),tt=new RegExp(Ge),nt=new RegExp("^"+Xe+"$"),rt={ID:new RegExp("^#("+Xe+")"),CLASS:new RegExp("^\\.("+Xe+")"),TAG:new RegExp("^("+Xe+"|[*])"),ATTR:new RegExp("^"+Ye),PSEUDO:new RegExp("^"+Ge),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+Ke+"*(even|odd|(([+-]|)(\\d*)n|)"+Ke+"*(?:([+-]|)"+Ke+"*(\\d+)|))"+Ke+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+Ke+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+Ke+"*((?:-\\d)?\\d*)"+Ke+"*\\)|)(?=[^-]|$)","i")},ot=/^(?:input|select|textarea|button)$/i,it=/^h\d$/i,at=/^[^{]+\{\s*\[native \w/,ut=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,st=/[+~]/,ct=/'|\\/g,lt=new RegExp("\\\\([\\da-f]{1,6}"+Ke+"?|("+Ke+")|.)","ig"),ft=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{je.apply(qe=$e.call(_e.childNodes),_e.childNodes),qe[_e.childNodes.length].nodeType}catch(Zx){je={apply:qe.length?function(e,t){He.apply(e,$e.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var dt=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:_e)!==ce&&se(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||ce).nodeType)&&9!==u)return[];if(fe&&!r){if(o=ut.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&pe(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return je.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&Q.getElementsByClassName)return je.apply(n,t.getElementsByClassName(a)),n}if(Q.qsa&&(!de||!de.test(e))){if(f=l=Be,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=ne(e),(l=t.getAttribute("id"))?f=l.replace(ct,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+xt(c[s]);d=st.test(e)&&bt(t.parentNode)||t,m=c.join(",")}if(m)try{return je.apply(n,d.querySelectorAll(m)),n}catch(p){}finally{l||t.removeAttribute("id")}}}return oe(e.replace(Je,"$1"),t,n,r)};function mt(){var r=[];return function e(t,n){return r.push(t+" ")>Z.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function pt(e){return e[Be]=!0,e}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||ze)-(~e.sourceIndex||ze);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function ht(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function vt(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function yt(a){return pt(function(i){return i=+i,pt(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function bt(e){return e&&typeof e.getElementsByTagName!==Fe&&e}for(J in Q=dt.support={},te=dt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},se=dt.setDocument=function(e){var t,s=e?e.ownerDocument||e:_e,n=s.defaultView;return s!==ce&&9===s.nodeType&&s.documentElement?(le=(ce=s).documentElement,fe=!te(s),n&&n!==function(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){se()},!1):n.attachEvent&&n.attachEvent("onunload",function(){se()})),Q.attributes=!0,Q.getElementsByTagName=!0,Q.getElementsByClassName=at.test(s.getElementsByClassName),Q.getById=!0,Z.find.ID=function(e,t){if(typeof t.getElementById!==Fe&&fe){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},Z.filter.ID=function(e){var t=e.replace(lt,ft);return function(e){return e.getAttribute("id")===t}},Z.find.TAG=Q.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==Fe)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},Z.find.CLASS=Q.getElementsByClassName&&function(e,t){if(fe)return t.getElementsByClassName(e)},me=[],de=[],Q.disconnectedMatch=!0,de=de.length&&new RegExp(de.join("|")),me=me.length&&new RegExp(me.join("|")),t=at.test(le.compareDocumentPosition),pe=t||at.test(le.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Me=t?function(e,t){if(e===t)return ue=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!Q.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===_e&&pe(_e,e)?-1:t===s||t.ownerDocument===_e&&pe(_e,t)?1:ae?We.call(ae,e)-We.call(ae,t):0:4&n?-1:1)}:function(e,t){if(e===t)return ue=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:ae?We.call(ae,e)-We.call(ae,t):0;if(o===i)return gt(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?gt(a[r],u[r]):a[r]===_e?-1:u[r]===_e?1:0},s):ce},dt.matches=function(e,t){return dt(e,null,null,t)},dt.matchesSelector=function(e,t){if((e.ownerDocument||e)!==ce&&se(e),t=t.replace(et,"='$1']"),Q.matchesSelector&&fe&&(!me||!me.test(t))&&(!de||!de.test(t)))try{var n=(void 0).call(e,t);if(n||Q.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(Zx){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(lt,ft),e[3]=(e[3]||e[4]||e[5]||"").replace(lt,ft),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||dt.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&dt.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return rt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&tt.test(n)&&(t=ne(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(lt,ft).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Pe[e+" "];return t||(t=new RegExp("(^|"+Ke+")"+e+"("+Ke+"|$)"))&&Pe(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Fe&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=dt.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1)[^>]*$|#([\w\-]*)$)/,Ut=Re.Event,qt=Lt.makeMap("children,contents,next,prev"),Vt=function(e){return void 0!==e},Ht=function(e){return"string"==typeof e},jt=function(e,t){var n,r,o;for(o=(t=t||It).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n},$t=function(e,t,n,r){var o;if(Ht(t))t=jt(t,an(e[0]));else if(t.length&&!t.nodeType){if(t=en.makeArray(t),r)for(o=t.length-1;0<=o;o--)$t(e,t[o],n,r);else for(o=0;o"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:zt.exec(e)))return en(t).find(e);if(n[1])for(r=jt(e,an(t)).firstChild;r;)Mt.call(o,r),r=r.nextSibling;else{if(!(r=an(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Lt.toArray(this)},add:function(e,t){var n,r,o=this;if(Ht(e))return o.add(en(e));if(!1!==t)for(n=en.unique(o.toArray().concat(en.makeArray(e))),o.length=n.length,r=0;r=a.length&&r(o)}))})})},Jr=function(e){return Gr(e,Yr.nu)},Qr={par:Jr,mapM:function(e,t){var n=H.map(e,t);return Jr(n)},compose:function(t,n){return function(e){return n(e).bind(t)}}},Zr=function(n){return{is:function(e){return n===e},isValue:V.always,isError:V.never,getOr:V.constant(n),getOrThunk:V.constant(n),getOrDie:V.constant(n),or:function(e){return Zr(n)},orThunk:function(e){return Zr(n)},fold:function(e,t){return t(n)},map:function(e){return Zr(e(n))},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return A.some(n)}}},eo=function(n){return{is:V.never,isValue:V.never,isError:V.always,getOr:V.identity,getOrThunk:function(e){return e()},getOrDie:function(){return V.die(String(n))()},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return eo(n)},each:V.noop,bind:function(e){return eo(n)},exists:V.never,forall:V.always,toOption:A.none}},to={value:Zr,error:eo};function no(e,u){var t=e,n=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==u){if(o=e[n])return o;for(i=e.parentNode;i&&i!==u;i=i.parentNode)if(o=i[n])return o}}};this.current=function(){return t},this.next=function(e){return t=n(t,"firstChild","nextSibling",e)},this.prev=function(e){return t=n(t,"lastChild","previousSibling",e)},this.prev2=function(e){return t=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],u&&o===u)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==u)return i}}(t,"lastChild","previousSibling",e)}}var ro,oo,io,ao=function(t){var n;return function(e){return(n=n||H.mapToObject(t,V.constant(!0))).hasOwnProperty(Qn.name(e))}},uo=ao(["h1","h2","h3","h4","h5","h6"]),so=ao(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),co=function(e){return Qn.isElement(e)&&!so(e)},lo=function(e){return Qn.isElement(e)&&"br"===Qn.name(e)},fo=ao(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),mo=ao(["ul","ol","dl"]),po=ao(["li","dd","dt"]),go=ao(["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),ho=ao(["thead","tbody","tfoot"]),vo=ao(["td","th"]),yo=function(t){return function(e){return!!e&&e.nodeType===t}},bo=yo(1),Co=function(e){var r=e.toLowerCase().split(" ");return function(e){var t,n;if(e&&e.nodeType)for(n=e.nodeName.toLowerCase(),t=0;t\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Po=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Lo=/[<>&\"\']/g,Io=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Mo={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};oo={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},io={"<":"<",">":">","&":"&",""":'"',"'":"'"};var Fo=function(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n>10),56320+(1023&t))):Mo[t]||String.fromCharCode(t):io[e]||ro[e]||(n=e,(r=qn.fromTag("div").dom()).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},Ho={},jo={},$o=Lt.makeMap,Wo=Lt.each,Ko=Lt.extend,Xo=Lt.explode,Yo=Lt.inArray,Go=function(e,t){return(e=Lt.trim(e))?e.split(t||" "):[]},Jo=function(e){var u,t,n,r,o,i,s={},a=function(e,t,n){var r,o,i,a=function(e,t){var n,r,o={};for(n=0,r=e.length;n
").html("
"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)},B=function(e,n,r,o,i){return T(e,function(e){var t="string"==typeof n?a.createElement(n):n;return A(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&R(t,o)),i?t:e.appendChild(t)})},_=function(e,t,n){return B(a.createElement(e),e,t,n,!0)},D=Vo.decode,O=Vo.encodeAllRaw,P=function(e,t){var n=h(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1"+n+"":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:P,setStyle:function(e,t,n){var r=h(e).css(t,n);u.update_styles&&ci(d,r)},getStyle:w,setStyles:function(e,t){var n=h(e).css(t);u.update_styles&&ci(d,n)},removeAllAttribs:function(e){return T(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:b,setAttribs:A,getAttrib:v,getPos:x,parseStyle:function(e){return d.parse(e)},serializeStyle:function(e,t){return d.serialize(e,t)},addStyle:function(e){var t,n;if(q!==fi.DOM&&a===document){if(r[e])return;r[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;q===fi.DOM||a!==document?(e||(e=""),n=a.getElementsByTagName("head")[0],ri(e.split(","),function(e){var t;e=Lt._addCacheSuffix(e),o[e]||(o[e]=!0,t=_("link",{rel:"stylesheet",href:e}),n.appendChild(t))})):fi.DOM.loadCSS(e)},addClass:function(e,t){h(e).addClass(t)},removeClass:function(e,t){L(e,t,!1)},hasClass:function(e,t){return h(e).hasClass(t)},toggleClass:L,show:function(e){h(e).show()},hide:function(e){h(e).hide()},isHidden:function(e){return"none"===h(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:R,getOuterHTML:function(e){var t="string"==typeof e?g(e):e;return Ao.isElement(t)?t.outerHTML:en("
").append(en(t).clone()).html()},setOuterHTML:function(e,t){h(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}P(en(this).html(t),!0)})},decode:D,encode:O,insertAfter:function(e,t){var r=g(t);return T(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:I,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=_(e),ri(y(t),function(e){b(n,e.nodeName,v(t,e.nodeName))}),I(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return d.toHex(Lt.trim(e))},run:T,getAttribs:y,isEmpty:function(e,t){var n,r,o,i,a,u,s=0;if(e=e.firstChild){a=new no(e,e.parentNode),t=t||(f?f.getNonEmptyElements():null),i=f?f.getWhiteSpaceElements():{};do{if(o=e.nodeType,Ao.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=a.next("all"===c);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){s++,e=a.next();continue}return!1}for(n=(r=y(e)).length;n--;)if("name"===(u=r[n].nodeName)||"data-mce-bookmark"===u)return!1}if(8===o)return!1;if(3===o&&!ui.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&i[e.parentNode.nodeName]&&ui.test(e.nodeValue))return!1;e=a.next()}while(e)}return s<=1},createRng:M,nodeIndex:li,split:function(e,t,n){var r,o,i,a=M();if(e&&t)return a.setStart(e.parentNode,li(e)),a.setEnd(t.parentNode,li(t)),r=a.extractContents(),(a=M()).setStart(t.parentNode,li(t)+1),a.setEnd(e.parentNode,li(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(_o.trimNode(q,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(_o.trimNode(q,o),e),P(e),n||t},bind:F,unbind:z,fire:function(e,t,n){return m.fire(e,t,n)},getContentEditable:U,getContentEditableParent:function(e){for(var t=C(),n=null;e&&e!==t&&null===(n=U(e));e=e.parentNode);return n},destroy:function(){if(l)for(var e=l.length;e--;){var t=l[e];m.unbind(t[0],t[1],t[2])}dt.setDocument&&dt.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=si(d,u,function(){return q}),q}(ni=fi||(fi={})).DOM=ni(document),ni.nodeIndex=li;var di=fi,mi=di.DOM,pi=Lt.each,gi=Lt.grep,hi=function(e){return"function"==typeof e},vi=function(){var f={},o=[],i={},a=[],d=0;this.isDone=function(e){return 2===f[e]},this.markDone=function(e){f[e]=2},this.add=this.load=function(e,t,n,r){f[e]===undefined&&(o.push(e),f[e]=0),t&&(i[e]||(i[e]=[]),i[e].push({success:t,failure:r,scope:n||this}))},this.remove=function(e){delete f[e],delete i[e]},this.loadQueue=function(e,t,n){this.loadScripts(o,e,t,n)},this.loadScripts=function(n,e,t,r){var s,c=[],l=function(t,e){pi(i[e],function(e){hi(e[t])&&e[t].call(e.scope)}),i[e]=undefined};a.push({success:e,failure:r,scope:t||this}),(s=function(){var e=gi(n);if(n.length=0,pi(e,function(e){var t,n,r,o,i,a,u;2!==f[e]?3!==f[e]?1!==f[e]&&(f[e]=1,d++,t=e,n=function(){f[e]=2,d--,l("success",e),s()},r=function(){f[e]=3,d--,c.push(e),l("failure",e),s()},u=function(){a.remove(i),o&&(o.onreadystatechange=o.onload=o=null),n()},i=(a=mi).uniqueId(),(o=document.createElement("script")).id=i,o.type="text/javascript",o.src=Lt._addCacheSuffix(t),"onreadystatechange"in o?o.onreadystatechange=function(){/loaded|complete/.test(o.readyState)&&u()}:o.onload=u,o.onerror=function(){hi(r)?r():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+t)},(document.getElementsByTagName("head")[0]||document.body).appendChild(o)):l("failure",e):l("success",e)}),!d){var t=a.slice(0);a.length=0,pi(t,function(e){0===c.length?hi(e.success)&&e.success.call(e.scope):hi(e.failure)&&e.failure.call(e.scope,c)})}})()}};vi.ScriptLoader=new vi;var yi,bi=Lt.each;function Ci(){var r=this,o=[],a={},u={},i=[],s=function(e){var t;return u[e]&&(t=u[e].dependencies),t||[]},c=function(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}},l=function(n,e,t){var r=s(name);bi(r,function(e){var t=c(n,e);f(t.resource,t,undefined,undefined)}),e&&(t?e.call(t):e.call(vi))},f=function(e,t,n,r,o){if(!a[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=Ci.baseURL+"/"+i),a[e]=i.substring(0,i.lastIndexOf("/")),u[e]?l(t,n,r):vi.ScriptLoader.add(i,function(){return l(t,n,r)},r,o)}};return{items:o,urls:a,lookup:u,_listeners:i,get:function(e){return u[e]?u[e].instance:undefined},dependencies:s,requireLangPack:function(e,t){var n=Ci.language;if(n&&!1!==Ci.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;vi.ScriptLoader.add(a[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),u[t]={instance:e,dependencies:n};var r=H.partition(i,function(e){return e.name===t});return i=r.fail,bi(r.pass,function(e){e.callback()}),e},remove:function(e){delete a[e],delete u[e]},createUrl:c,addComponents:function(e,t){var n=r.urls[e];bi(t,function(e){vi.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){u.hasOwnProperty(e)?t():i.push({name:e,callback:t})}}}(yi=Ci||(Ci={})).PluginManager=yi(),yi.ThemeManager=yi();var xi,wi="\ufeff",Ni=function(e){return e===wi},Ei=wi,Si=function(e){return e.replace(new RegExp(wi,"g"),"")},ki=Ao.isElement,Ti=Ao.isText,Ai=function(e){return Ti(e)&&(e=e.parentNode),ki(e)&&e.hasAttribute("data-mce-caret")},Ri=function(e){return Ti(e)&&Ni(e.data)},Bi=function(e){return Ai(e)||Ri(e)},_i=function(e){return e.firstChild!==e.lastChild||!Ao.isBr(e.firstChild)},Di=function(e){var t=e.container();return e&&Ao.isText(t)&&t.data.charAt(e.offset())===Ei},Oi=function(e){var t=e.container();return e&&Ao.isText(t)&&t.data.charAt(e.offset()-1)===Ei},Pi=function(e,t,n){var r,o,i;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(((i=document.createElement("br")).setAttribute("data-mce-bogus","1"),i)),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r},Li=function(e){return Ti(e)&&e.data[0]===Ei},Ii=function(e){return Ti(e)&&e.data[e.data.length-1]===Ei},Mi=function(e){return e&&e.hasAttribute("data-mce-caret")?(t=e.getElementsByTagName("br"),n=t[t.length-1],Ao.isBogus(n)&&n.parentNode.removeChild(n),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n},Fi=Ao.isContentEditableTrue,zi=Ao.isContentEditableFalse,Ui=Ao.isBr,qi=Ao.isText,Vi=Ao.matchNodeNames("script style textarea"),Hi=Ao.matchNodeNames("img input textarea hr iframe video audio object"),ji=Ao.matchNodeNames("table"),$i=Bi,Wi=function(e){return!$i(e)&&(qi(e)?!Vi(e.parentNode):Hi(e)||Ui(e)||ji(e)||Ki(e))},Ki=function(e){return!1===(t=e,Ao.isElement(t)&&"true"===t.getAttribute("unselectable"))&&zi(e);var t},Xi=function(e,t){return Wi(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(Ki(e))return!1;if(Fi(e))return!0}return!0}(e,t)},Yi=Math.round,Gi=function(e){return e?{left:Yi(e.left),top:Yi(e.top),bottom:Yi(e.bottom),right:Yi(e.right),width:Yi(e.width),height:Yi(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}},Ji=function(e,t){return e=Gi(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e},Qi=function(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2},Zi=function(e,t){return e.bottom-e.height/2t.bottom)&&Qi(t.top-e.bottom,e,t)},ea=function(e,t){return e.top>t.bottom||!(e.bottom=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},ra=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),oa=function(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&ra.test(e)},ia=[].slice,aa=function(e){for(var t=[],n=1;n=e.length?e.apply(this,r.slice(1)):function(){var e=r.concat([].slice.call(arguments));return aa.apply(this,e)}},ua={constant:function(e){return function(){return e}},negate:function(t){return function(e){return!t(e)}},and:function(){for(var e=[],t=0;t=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return ya(t,e?n-1:n)}}}(xi=Ta||(Ta={})).fromRangeStart=function(e){return xi(e.startContainer,e.startOffset)},xi.fromRangeEnd=function(e){return xi(e.endContainer,e.endOffset)},xi.after=function(e){return xi(e.parentNode,va(e)+1)},xi.before=function(e){return xi(e.parentNode,va(e))},xi.isAbove=function(e,t){return sa([H.head(t.getClientRects()),H.last(e.getClientRects())],Zi).getOr(!1)},xi.isBelow=function(e,t){return sa([H.last(t.getClientRects()),H.head(e.getClientRects())],ea).getOr(!1)},xi.isAtStart=function(e){return!!e&&e.isAtStart()},xi.isAtEnd=function(e){return!!e&&e.isAtEnd()},xi.isTextPosition=function(e){return!!e&&Ao.isText(e.container())},xi.isElementPosition=function(e){return!1===xi.isTextPosition(e)};var Aa,Ra,Ba=Ta,_a=Ao.isElement,Da=Ao.isText,Oa=function(e){var t=e.parentNode;t&&t.removeChild(e)},Pa=function(e,t){0===t.length?Oa(e):e.nodeValue=t},La=function(e){var t=Si(e);return{count:e.length-t.length,text:t}},Ia=function(e,t){return za(e),t},Ma=function(e,t){return Da(e)&&t.container()===e?(r=t,o=La((n=e).data.substr(0,r.offset())),i=La(n.data.substr(r.offset())),0<(a=o.text+i.text).length?(Pa(n,a),Ba(n,r.offset()-o.count)):r):Ia(e,t);var n,r,o,i,a},Fa=function(e,t){return t.container()===e.parentNode?(n=e,o=(r=t).container(),i=H.indexOf(H.from(o.childNodes),n).map(function(e){return et}),gu=function(t,n){return H.head(n.getClientRects()).bind(function(e){return mu(t,e.left,e.top)}).bind(function(e){return au((t=e,Ka.lastPositionIn(t).map(function(e){return uu(t,e).positions.concat(e)}).getOr([])),n);var t})},hu=function(t,n){return H.last(n.getClientRects()).bind(function(e){return pu(t,e.left,e.top)}).bind(function(e){return au((t=e,Ka.firstPositionIn(t).map(function(e){return[e].concat(su(t,e).positions)}).getOr([])),n);var t})},vu=function(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}},yu=function(e,t,n){var r,o,i,a,u,s=e.dom,c=s.getRoot(),l=0;if(u={elm:t,alignToTop:n},e.fire("scrollIntoView",u),!u.isDefaultPrevented()&&Ao.isElement(t)){if(!1===n&&(l=t.offsetHeight),"BODY"!==c.nodeName){var f=e.selection.getScrollContainer();if(f)return r=vu(t).y-vu(f).y+l,a=f.clientHeight,void((r<(i=f.scrollTop)||i+ai.left&&a.rightr.top&&o.bottom")},Nu=function(e){return e.getParam("document_base_url","")},Eu=function(e){return Cu(e,"body_id","tinymce")},Su=function(e){return Cu(e,"body_class","")},ku=function(e){return e.getParam("content_security_policy","")},Tu=function(e){return e.getParam("br_in_pre",!0)},Au=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":t},Ru=function(e){return e.getParam("forced_root_block_attrs",{})},Bu=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},_u=function(e){return e.getParam("no_newline_selector","")},Du=function(e){return e.getParam("keep_styles",!0)},Ou=function(e){return e.getParam("end_container_on_empty_block",!1)},Pu=function(e){return Lt.explode(e.getParam("font_size_style_values",""))},Lu=function(e){return Lt.explode(e.getParam("font_size_classes",""))},Iu=function(t,n){qr.parent(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})},Mu=function(e,t){e.dom().appendChild(t.dom())},Fu={before:Iu,after:function(e,t){qr.nextSibling(e).fold(function(){qr.parent(e).each(function(e){Mu(e,t)})},function(e){Iu(e,t)})},prepend:function(t,n){qr.firstChild(t).fold(function(){Mu(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},append:Mu,appendAt:function(e,t,n){qr.child(e,n).fold(function(){Mu(e,t)},function(e){Iu(e,t)})},wrap:function(e,t){Iu(e,t),Mu(t,e)}},zu=zn.detect().browser,Uu=function(){return zu.isIE()||zu.isEdge()||zu.isFirefox()},qu=function(e,t){e.selection.setRng(t),bu(e,t)},Vu=function(t,n,e){var r=t(n,e);return r.breakType===Aa.Wrap&&0===r.positions.length?r.breakAt.map(function(e){return t(n,e).breakAt.isNone()}).getOr(!0):r.breakAt.isNone()},Hu=ua.curry(Vu,uu),ju=ua.curry(Vu,su),$u=function(e,t,n,r){var o,i,a,u,s=e.selection.getRng(),c=t?1:-1;if(Uu()&&(o=t,i=s,a=n,u=Ba.fromRangeStart(i),Ka.positionIn(!o,a).map(function(e){return e.isEqual(u)}).getOr(!1))){var l=Ga(c,e,n,!t,!0);return qu(e,l),!0}return!1},Wu=function(e,t){var n=t.getNode(e);return Ao.isElement(n)&&"TABLE"===n.nodeName?A.some(n):A.none()},Ku=function(u,s,c){var e=Wu(!!s,c),t=!1===s;e.fold(function(){return qu(u,c.toRange())},function(a){return Ka.positionIn(t,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return qu(u,c.toRange())},function(e){return n=s,o=a,t=c,void((i=Au(r=u))?r.undoManager.transact(function(){var e=qn.fromTag(i);cr.setAll(e,Ru(r)),Fu.append(e,qn.fromTag("br")),n?Fu.after(qn.fromDom(o),e):Fu.before(qn.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),qu(r,t)}):qu(r,t.toRange()));var n,r,o,t,i})})},Xu=function(e,t,n,r){var o,i,a,u,s,c,l=e.selection.getRng(),f=Ba.fromRangeStart(l),d=e.getBody();if(!t&&Hu(r,f)){var m=(u=d,gu(s=n,c=f).orThunk(function(){return H.head(c.getClientRects()).bind(function(e){return iu(cu(u,Ba.before(s)),e.left)})}).getOr(Ba.before(s)));return Ku(e,t,m),!0}return!(!t||!ju(r,f))&&(o=d,m=hu(i=n,a=f).orThunk(function(){return H.head(a.getClientRects()).bind(function(e){return iu(lu(o,Ba.after(i)),e.left)})}).getOr(Ba.after(i)),Ku(e,t,m),!0)},Yu=function(t,n){return function(){return A.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return A.from(t.dom.getParent(e,"table")).map(function(e){return $u(t,n,e)})}).getOr(!1)}},Gu=function(n,r){return function(){return A.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return A.from(n.dom.getParent(t,"table")).map(function(e){return Xu(n,r,e,t)})}).getOr(!1)}},Ju=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return Ju(n())}}},Qu=Ao.isContentEditableFalse,Zu=function(e,t,n){var r,o,i,a,u,s=Ji(t.getBoundingClientRect(),n);return"BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,i=e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,i=e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s},es=function(a,u,e){var t,s,c=Ju(A.none()),l=function(){!function(e){var t,n,r,o,i;for(t=en("*[contentEditable=false]",e),o=0;o
').css(n).appendTo(a)[0];return c.set(A.some({caret:i,element:e,before:t})),c.get().each(function(e){t&&en(e.caret).addClass("mce-visual-caret-before")}),f(),(r=e.ownerDocument.createRange()).setStart(s,0),r.setEnd(s,0),r},hide:l,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){c.get().each(function(e){var t=Zu(a,e.element,e.before);en(e.caret).css(t)})},destroy:function(){return Ce.clearInterval(t)}}},ts=function(e){return Qu(e)||Ao.isTable(e)&&Uu()},ns=Ao.isContentEditableFalse,rs=Ao.matchStyleValues("display","block table table-cell table-caption list-item"),os=Bi,is=Ai,as=ua.curry,us=Ao.isElement,ss=Wi,cs=function(e){return 0=o.data.length-1)return 1===e&&(r=s(o))?ys(r):n;if(Li(o)&&i<=1)return-1===e&&(r=u(o))?bs(r):n;if(i===o.data.length)return(r=s(o))?ys(r):n;if(0===i)return(r=u(o))?bs(r):n}return n},xs=function(e,t){var n=gs(e,t);return ns(n)&&!Ao.isBogusAll(n)},ws=function(e,t){return Ao.isTable(gs(e,t))},Ns=function(e,t){return A.from(gs(e?0:-1,t)).filter(ns)},Es=function(e,t,n){var r=Cs(e,t,n);return-1===e?Ta.fromRangeStart(r):Ta.fromRangeEnd(r)},Ss=as(xs,0),ks=as(xs,-1),Ts=as(ws,0),As=as(ws,-1);(tu=eu||(eu={}))[tu.Backwards=-1]="Backwards",tu[tu.Forwards=1]="Forwards";var Rs,Bs,_s,Ds,Os,Ps=Ao.isContentEditableFalse,Ls=Ao.isText,Is=Ao.isElement,Ms=Ao.isBr,Fs=Wi,zs=function(e){return Hi(e)||!!Ki(t=e)&&!0!==Bt.reduce(t.getElementsByTagName("*"),function(e,t){return e||Fi(t)},!1);var t},Us=Xi,qs=function(e,t){return e.hasChildNodes()&&t=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(ac(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;!(t===e||n&&n(t));t=t.parentNode)r.push(t);return r}(e,n),a=Bt.filter(a,ua.negate(Ao.isBogus)),(u=u.concat(Bt.map(a,function(e){return ac(e)}))).reverse().join("/")+","+o},sc=function(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1e.data.length&&(t=e.data.length),Ba(e,t)}(r,parseInt(o,10)):(o="after"===o?nc(r)+1:nc(r),Ba(r.parentNode,o)):null):null},cc=Ao.isContentEditableFalse,lc=function(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Ao.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&Ao.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s},fc=function(e){Ao.isText(e)&&0===e.data.length&&e.parentNode.removeChild(e)},dc=function(e,t,n){var r=0;return Lt.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r},mc=function(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],Ao.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))},pc=function(e){return mc(e,!0),mc(e,!1),e},gc=function(e,t){var n;if(Ao.isElement(e)&&(e=na(e,t),cc(e)))return e;if(Bi(e)){if(Ao.isText(e)&&Ai(e)&&(e=e.parentNode),n=e.previousSibling,cc(n))return n;if(n=e.nextSibling,cc(n))return n}},hc=function(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(cc(r)||"IMG"===o)return{name:o,index:dc(n.dom,o,r)};var a,u,s,c,l,f,d,m=gc((a=i).startContainer,a.startOffset)||gc(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:dc(n.dom,o,m)}:(u=e,c=t,l=i,f=(s=n).dom,(d={}).start=lc(f,u,c,l,!0),s.isCollapsed()||(d.end=lc(f,u,c,l,!1)),d)},vc=function(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,""):e.create("span",r)},yc=function(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:dc(n,u,a)};var s=pc(r.cloneRange());if(!i){s.collapse(!1);var c=vc(n,o+"_end",t);s.insertNode(c),fc(c.nextSibling)}(r=pc(r)).collapse(!0);var l=vc(n,o+"_start",t);return r.insertNode(l),fc(l.previousSibling),e.moveToBookmark({id:o,keep:1}),{id:o}},bc={getBookmark:function(e,t,n){return 2===t?hc(Si,n,e):3===t?(o=(r=e).getRng(),{start:uc(r.dom.getRoot(),Ba.fromRangeStart(o)),end:uc(r.dom.getRoot(),Ba.fromRangeEnd(o))}):t?{rng:e.getRng()}:yc(e,!1);var r,o},getUndoBookmark:V.curry(hc,V.identity,!0),getPersistentBookmark:yc},Cc="_mce_caret",xc=function(e){return Ao.isElement(e)&&e.id===Cc},wc=function(e,t){for(;t&&t!==e;){if(t.id===Cc)return t;t=t.parentNode}return null},Nc=function(e,t){return!e.isBlock(t)||t.innerHTML||ge.ie||(t.innerHTML='
'),t},Ec=function(e,t){return Ka.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})},Sc=function(e,t,n){return!(!1!==t.hasChildNodes()||!wc(e,t)||(o=n,i=(r=t).ownerDocument.createTextNode(Ei),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),0));var r,o,i},kc=function(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,Sc(c,i,r))return!0;if(s[o]>u.length-1)return!!Sc(c,i,r)||Ec(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0},Tc=function(e){return Ao.isText(e)&&0'))},qc=function(n){qr.lastChild(n).each(function(t){qr.prevSibling(t).each(function(e){so(n)&&lo(t)&&so(e)&&Ic.remove(t)})})},Vc=Lt.makeMap;function Hc(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=Vc(e.indent_before||""),c=Vc(e.indent_after||""),l=Vo.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0":" />",n&&u&&c[e]&&0"),u&&c[e]&&0")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push(""):d.push(""),u&&d.push("\n")},doctype:function(e){d.push("",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function jc(t,p){void 0===p&&(p=Zo());var g=Hc(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){g.text(e.value,e.raw)},8:function(e){g.comment(e.value)},7:function(e){g.pi(e.name,e.value)},10:function(e){g.doctype(e.value)},4:function(e){g.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}},g.reset();var m=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1|)$/," "):o("nextSibling")||(e=e.replace(/( | )(
|)$/," "))),e}(e)),n=o.parser,p=t.merge,r=jc({validate:o.settings.validate},o.schema),m='​',s={content:e,format:"html",selection:!0,paste:t.paste},(s=o.fire("BeforeSetContent",s)).isDefaultPrevented())o.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:t.paste});else{-1===(e=s.content).indexOf("{$caret}")&&(e+="{$caret}"),e=e.replace(/\{\$caret\}/,m);var y,b,C,x,w=(l=h.getRng()).startContainer||(l.parentElement?l.parentElement():null),N=o.getBody();w===N&&h.isCollapsed()&&v.isBlock(N.firstChild)&&(y=N.firstChild)&&!o.schema.getShortEndedElements()[y.nodeName]&&v.isEmpty(N.firstChild)&&((l=v.createRng()).setStart(N.firstChild,0),l.setEnd(N.firstChild,0),h.setRng(l)),h.isCollapsed()||(o.selection.setRng(Wc(o.selection.getRng())),o.getDoc().execCommand("Delete",!1,null),C=(b=h.getRng()).startContainer,x=b.startOffset,3===C.nodeType&&b.collapsed&&("\xa0"===C.data[x]?(C.deleteData(x,1),/[\u00a0| ]$/.test(e)||(e+=" ")):"\xa0"===C.data[x-1]&&(C.deleteData(x-1,1),/[\u00a0| ]$/.test(e)||(e=" "+e))));var E,S,k,T={context:(i=h.getNode()).nodeName.toLowerCase(),data:t.data,insert:!0};if(u=n.parse(e,T),!0===t.paste&&Js(o.schema,u)&&Zs(v,i))return l=Qs(r,v,o.selection.getRng(),u),o.selection.setRng(l),void o.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!v.isBlock(f.name)){o.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(o._selectionOverrides.showBlockCaretContainer(i),T.invalid){for(h.setContent(m),i=h.getNode(),a=o.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;e=i===a?a.innerHTML:v.getOuterHTML(i),e=r.serialize(n.parse(e.replace(//i,function(){return r.serialize(u)}))),i===a?v.setHTML(a,e):v.setOuterHTML(i,e)}else e=r.serialize(u),function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):e.selection.setContent(t)}}(o,e,i);!function(){if(p){var n=o.getBody(),r=new Dc(v);Lt.each(v.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==n;t=t.parentNode)g[e.nodeName.toLowerCase()]&&r.compare(t,e)&&v.remove(e,!0)})}}(),function(e){var t,n,r;if(e){if(h.scrollIntoView(e),t=function(e){for(var t=o.getBody();e&&e!==t;e=e.parentNode)if("false"===o.dom.getContentEditable(e))return e;return null}(e))return v.remove(e),h.select(t);l=v.createRng(),(f=e.previousSibling)&&3===f.nodeType?(l.setStart(f,f.nodeValue.length),ge.ie||(d=e.nextSibling)&&3===d.nodeType&&(f.appendData(d.data),d.parentNode.removeChild(d))):(l.setStartBefore(e),l.setEndBefore(e)),n=v.getParent(e,v.isBlock),v.remove(e),n&&v.isEmpty(n)&&(o.$(n).empty(),l.setStart(n,0),l.setEnd(n,0),Kc(n)||n.getAttribute("data-mce-fragment")||!(r=function(e){var t=Ba.fromRangeStart(e);if(t=js(o.getBody()).next(t))return t.toRange()}(l))?v.add(n,v.create("br",{"data-mce-bogus":"1"})):(l=r,v.remove(n))),h.setRng(l)}}(v.get("mce_marker")),E=o.getBody(),Lt.each(E.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),S=o.dom,k=o.selection.getStart(),A.from(S.getParent(k,"td,th")).map(qn.fromDom).each(qc),o.fire("SetContent",s),o.addVisual()}},Yc={insertAtCaret:function(e,t){var n,r,o="string"!=typeof(n=t)?(r=Lt.extend({paste:n.paste,data:{paste:n.paste}},n),{content:n.content,details:r}):{content:n,details:{}};Xc(e,o.content,o.details)}};function Gc(e,t,n,r,o){return e(n,r)?A.some(n):E.isFunction(o)&&o(n)?A.none():t(n,r,o)}var Jc=function(e,t,n){for(var r=e.dom(),o=E.isFunction(n)?n:V.constant(!1);r.parentNode;){r=r.parentNode;var i=qn.fromDom(r);if(t(i))return A.some(i);if(o(i))break}return A.none()},Qc=function(e,t){return H.find(e.dom().childNodes,V.compose(t,qn.fromDom)).map(qn.fromDom)},Zc=function(e,r){var o=function(e){for(var t=0;tBa.before(r).offset()?Ba(t.container(),t.offset()-1):t;var n,r,o,i},tf=function(e){return Wi(e.previousSibling)?A.some((t=e.previousSibling,Ao.isText(t)?Ba(t,t.data.length):Ba.after(t))):e.previousSibling?Ka.lastPositionIn(e.previousSibling):A.none();var t},nf=function(e){return Wi(e.nextSibling)?A.some((t=e.nextSibling,Ao.isText(t)?Ba(t,0):Ba.before(t))):e.nextSibling?Ka.firstPositionIn(e.nextSibling):A.none();var t},rf=function(r,o){return tf(o).orThunk(function(){return nf(o)}).orThunk(function(){return e=r,t=o,n=Ba.before(t.previousSibling?t.previousSibling:t.parentNode),Ka.prevPosition(e,n).fold(function(){return Ka.nextPosition(e,Ba.after(t))},A.some);var e,t,n})},of=function(n,r){return nf(r).orThunk(function(){return tf(r)}).orThunk(function(){return e=n,t=r,Ka.nextPosition(e,Ba.after(t)).fold(function(){return Ka.prevPosition(e,Ba.before(t))},A.some);var e,t})},af=function(e,t,n){return(r=e,o=t,i=n,r?of(o,i):rf(o,i)).map(V.curry(ef,n));var r,o,i},uf=function(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})},sf=function(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(Qn.name(t))},cf=function(e){if(Al(e)){var t=qn.fromHtml('
');return Ic.empty(e),Fu.append(e,t),A.some(Ba.before(t.dom()))}return A.none()},lf=function(t,n,e){var r,a,o,i=af(n,t.getBody(),e.dom()),u=el.ancestor(e,V.curry(sf,t),(r=t.getBody(),function(e){return e.dom()===r})),s=(a=e,o=i,sa([qr.prevSibling(a),qr.nextSibling(a),o],function(e,t,n){var r,o=e.dom(),i=t.dom();return Ao.isText(o)&&Ao.isText(i)?(r=o.data.length,o.appendData(i.data),Ic.remove(t),Ic.remove(a),n.container()===i?Ba(o,r):n):(Ic.remove(a),n)}).orThunk(function(){return Ic.remove(a),o}));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):u.bind(cf).fold(function(){uf(t,n,s)},function(e){uf(t,n,A.some(e))})},ff=function(a,u){var e,t,n,r,o;return(e=a.getBody(),t=u,n=a.selection.getRng(),r=Cs(t?1:-1,e,n),o=Ba.fromRangeStart(r),!1===t&&ks(o)?A.some(Gl.remove(o.getNode(!0))):t&&Ss(o)?A.some(Gl.remove(o.getNode())):Zl(e,t,o)).map(function(e){return e.fold((o=a,i=u,function(e){return o._selectionOverrides.hideFakeCaret(),lf(o,i,qn.fromDom(e)),!0}),(n=a,r=u,function(e){var t=r?Ba.before(e):Ba.after(e);return n.selection.setRng(t.toRange()),!0}),(t=a,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i}).getOr(!1)},df=function(e,t){var n,r=e.selection.getNode();return!!Ao.isContentEditableFalse(r)&&(n=qn.fromDom(e.getBody()),H.each(fu(n,".mce-offscreen-selection"),Ic.remove),lf(e,t,qn.fromDom(e.selection.getNode())),hl(e),!0)},mf=function(e,t){return e.selection.isCollapsed()?ff(e,t):df(e,t)},pf=function(e){var t,n=function(e,t){for(;t&&t!==e;){if(Ao.isContentEditableTrue(t)||Ao.isContentEditableFalse(t))return t;t=t.parentNode}return null}(e.getBody(),e.selection.getNode());return Ao.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(Ba.before(t).toRange())),!0},gf=Ao.isText,hf=function(e){return gf(e)&&e.data[0]===Ei},vf=function(e){return gf(e)&&e.data[e.data.length-1]===Ei},yf=function(e){return e.ownerDocument.createTextNode(Ei)},bf=function(e,t){return e?function(e){if(gf(e.previousSibling))return vf(e.previousSibling)||e.previousSibling.appendData(Ei),e.previousSibling;if(gf(e))return hf(e)||e.insertData(0,Ei),e;var t=yf(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(gf(e.nextSibling))return hf(e.nextSibling)||e.nextSibling.insertData(0,Ei),e.nextSibling;if(gf(e))return vf(e)||e.appendData(Ei),e;var t=yf(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)},Cf=V.curry(bf,!0),xf=V.curry(bf,!1),wf=function(e,t){return Ao.isText(e.container())?bf(t,e.container()):bf(t,e.getNode())},Nf=function(e,t){var n=t.get();return n&&e.container()===n&&Ri(n)},Ef=function(n,e){return e.fold(function(e){Ua.remove(n.get());var t=Cf(e);return n.set(t),A.some(Ba(t,t.length-1))},function(e){return Ka.firstPositionIn(e).map(function(e){if(Nf(e,n))return Ba(n.get(),1);Ua.remove(n.get());var t=wf(e,!0);return n.set(t),Ba(t,1)})},function(e){return Ka.lastPositionIn(e).map(function(e){if(Nf(e,n))return Ba(n.get(),n.get().length-1);Ua.remove(n.get());var t=wf(e,!1);return n.set(t),Ba(t,t.length-1)})},function(e){Ua.remove(n.get());var t=xf(e);return n.set(t),A.some(Ba(t,1))})},Sf=function(e,t){for(var n=0;no.childNodes.length-1&&(c=!1),Ao.isDocument(o)&&(o=p,i=0),o===p){if(c&&(u=o.childNodes[0s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=t&&t.ctrlKey;"LI"!==d||m||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&(function(e,t,n){for(var r,o=new no(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0")},mceToggleVisualAid:function(){s.hasVisual=!s.hasVisual,s.addVisual()},mceReplaceContent:function(e,t,n){s.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=o.getParent(i.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||a.remove("link"),n.href&&a.apply("link",n,r)},selectAll:function(){var e=o.getParent(i.getStart(),Ao.isContentEditableTrue);if(e){var t=o.createRng();t.selectNodeContents(e),i.setRng(t)}},"delete":function(){Ud.deleteCommand(s)},forwardDelete:function(){Ud.forwardDeleteCommand(s)},mceNewDocument:function(){s.setContent("")},InsertLineBreak:function(e,t,n){return mm.insert(s,n),!0}}),e({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=i.isCollapsed()?[o.getParent(i.getNode(),o.isBlock)]:i.getSelectedBlocks(),r=Lm(n,function(e){return!!a.matchNode(e,t)});return-1!==Im(r,!0)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return f(e)},mceBlockQuote:function(){return f("blockquote")},Outdent:function(){var e;if(n.inline_styles){if((e=o.getParent(i.getStart(),o.isBlock))&&0"),u))[o.length-1]=Lt.extend(o[o.length-1],{func:n,scope:r||i}),Lt.extend(o[0],{desc:i.translate(t),subpatterns:o.slice(1)})},o=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},c=function(e){return e.func?e.func.call(e.scope):null};i.on("keyup keypress keydown",function(t){var e,n;((n=t).altKey||n.ctrlKey||n.metaKey||"keydown"===(e=t).type&&112<=e.keyCode&&e.keyCode<=123)&&!t.isDefaultPrevented()&&(Jm(a,function(e){if(o(t,e))return r=e.subpatterns.slice(0),"keydown"===t.type&&c(e),!0}),o(t,r[0])&&(1===r.length&&"keydown"===t.type&&c(r[0]),r.shift()))}),this.add=function(e,n,r,o){var t;return"string"==typeof(t=r)?r=function(){i.execCommand(t,!1,null)}:Lt.isArray(t)&&(r=function(){i.execCommand(t[0],t[1],t[2])}),Jm(Qm(Lt.trim(e.toLowerCase())),function(e){var t=s(e,n,r,o);a[t.id]=t}),!0},this.remove=function(e){var t=s(e);return!!a[t.id]&&(delete a[t.id],!0)}}var np=function(e){var t=e!==undefined?e.dom():document;return A.from(t.activeElement).map(qn.fromDom)},rp=function(e){var t=qr.owner(e).dom();return e.dom()===t.activeElement},op=function(t){return np(qr.owner(t)).filter(function(e){return t.dom().contains(e.dom())})},ip=function(t,e){return(n=e,n.collapsed?A.from(na(n.startContainer,n.startOffset)).map(qn.fromDom):A.none()).bind(function(e){return ho(e)?A.some(e):!1===Or.contains(t,e)?A.some(t):A.none()});var n},ap=function(t,e){ip(qn.fromDom(t.getBody()),e).bind(function(e){return Ka.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})},up=function(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()},sp=function(e){var t,n=e.getBody();return n&&(t=qn.fromDom(n),rp(t)||op(t).isSome())},cp=function(e){return e.inline?sp(e):(t=e).iframeElement&&rp(qn.fromDom(t.iframeElement));var t},lp=function(e){return e.editorManager.setActive(e)},fp=function(e,t){e.removed||(t?lp(e):function(t){var e=t.selection,n=t.settings.content_editable,r=t.getBody(),o=e.getRng();t.quirks.refreshContentEditable();var i,a,u=(i=t,a=e.getNode(),i.dom.getParent(a,function(e){return"true"===i.dom.getContentEditable(e)}));if(t.$.contains(r,u))return up(u),ap(t,o),lp(t);t.bookmark!==undefined&&!1===cp(t)&&_m.getRng(t).each(function(e){t.selection.setRng(e),o=e}),n||(ge.opera||up(r),t.getWin().focus()),(ge.gecko||n)&&(up(r),ap(t,o)),lp(t)}(e))},dp=cp,mp=function(e,t){return t.dom()[e]},pp=function(e,t){return parseInt(yr(t,e),10)},gp=V.curry(mp,"clientWidth"),hp=V.curry(mp,"clientHeight"),vp=V.curry(pp,"margin-top"),yp=V.curry(pp,"margin-left"),bp={isXYInContentArea:function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m=qn.fromDom(e.getBody()),p=e.inline?m:qr.documentElement(m),g=(r=e.inline,i=t,a=n,u=(o=p).dom().getBoundingClientRect(),{x:i-(r?u.left+o.dom().clientLeft+yp(o):0),y:a-(r?u.top+o.dom().clientTop+vp(o):0)});return c=g.x,l=g.y,f=gp(s=p),d=hp(s),0<=c&&0<=l&&c<=f&&l<=d},isEditorAttachedToDom:function(e){var t,n=e.inline?e.getBody():e.getContentAreaContainer();return(t=n,A.from(t).map(qn.fromDom)).map(function(e){return Or.contains(qr.owner(e),e)}).getOr(!1)}};function Cp(n){var t,o=[],i=function(){var e,t=n.theme;return t&&t.getNotificationManagerImpl?t.getNotificationManagerImpl():{open:e=function(){throw new Error("Theme did not provide a NotificationManager implementation.")},close:e,reposition:e,getArgs:e}},a=function(){0i&&(u=n.pageX+r-i),n.pageY+o>a&&(s=n.pageY+o-a),t.style.width=r-u+"px",t.style.height=o-s+"px",v(e.clientX,e.clientY)}},o=ig(c,e),u=c,i=function(){ag(u),u.dragging&&s.fire("dragend")},(s=e).on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})},sg=function(e){var n;ug(e),(n=e).on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;(tg(t)||tg(n.dom.getContentEditableParent(t)))&&e.preventDefault()})},cg=function(e){return Bt.reduce(e,function(e,t){return e.concat(function(t){var e=function(e){return Bt.map(e,function(e){return(e=Gi(e)).node=t,e})};if(Ao.isElement(t))return e(t.getClientRects());if(Ao.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])};(Qp=Jp||(Jp={}))[Qp.Up=-1]="Up",Qp[Qp.Down=1]="Down";var lg=function(o,i,a,e,u,t){var n,s,c=0,l=[],r=function(e){var t,n,r;for(r=cg([e]),-1===o&&(r=r.reverse()),t=0;tt;var t}},pg=function(n){return function(e){return t=n,e.line===t;var t}},gg=Ao.isContentEditableFalse,hg=ds,vg=function(e,t){return Math.abs(e.left-t)},yg=function(e,t){return Math.abs(e.right-t)},bg=function(e,t){return e>=t.left&&e<=t.right},Cg=function(e,o){return Bt.reduce(e,function(e,t){var n,r;return n=Math.min(vg(e,o),yg(e,o)),r=Math.min(vg(t,o),yg(t,o)),bg(o,t)?t:bg(o,e)?e:r===n&&gg(t.node)?t:r=e.top&&n<=e.bottom});return(r=Cg(d,t))&&(r=Cg((u=e,l=function(t,e){var n;return n=Bt.filter(cg([e]),function(e){return!t(e,s)}),c=c.concat(n),0===n.length},(c=[]).push(s=r),xg(Jp.Up,u,V.curry(l,Zi),s.node),xg(Jp.Down,u,V.curry(l,ea),s.node),c),t))&&ts(r.node)?(a=t,{node:(i=r).node,before:vg(i,a)=(n=t).left&&r<=n.right&&o>=n.top&&o<=n.bottom);var n,r,o},!1)},Eg=function(t,n){var r=null;return{cancel:function(){null!==r&&(clearTimeout(r),r=null)},throttle:function(){var e=arguments;null===r&&(r=setTimeout(function(){t.apply(null,e),e=r=null},n))}}},Sg=function(t){var e=Eg(function(){if(!t.removed&&t.selection.getRng().collapsed){var e=Za(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},kg={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return ge.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Tg=Ao.isContentEditableTrue,Ag=Ao.isContentEditableFalse,Rg=ks,Bg=Ss,_g=function(e,t){for(var n=e.getBody();t&&t!==n;){if(Tg(t)||Ag(t))return t;t=t.parentNode}return null},Dg=function(p){var g,e,t,a=p.getBody(),o=es(p.getBody(),function(e){return p.dom.isBlock(e)},function(){return dp(p)}),h="sel-"+p.dom.uniqueId(),u=function(e){e&&p.selection.setRng(e)},s=function(){return p.selection.getRng()},v=function(e,t,n,r){return void 0===r&&(r=!0),p.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&p.selection.scrollIntoView(t,-1===e),o.show(n,t))},y=function(e,t){return t=Cs(e,a,t),-1===e?Ba.fromRangeStart(t):Ba.fromRangeEnd(t)},n=function(e){return Bi(e)||Li(e)||Ii(e)},b=function(e){return n(e.startContainer)||n(e.endContainer)},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=p.$,m=p.dom;if(!e)return null;if(e.collapsed){if(!b(e))if(!1===t){if(c=y(-1,e),ts(c.getNode(!0)))return v(-1,c.getNode(!0),!1,!1);if(ts(c.getNode()))return v(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=y(1,e),ts(c.getNode()))return v(1,c.getNode(),!c.isAtEnd(),!1);if(ts(c.getNode(!0)))return v(1,c.getNode(!0),!1,!1)}return null}return i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&Ag(i.parentNode)&&(i=i.parentNode,a=m.nodeIndex(i),i=i.parentNode),1!==i.nodeType?null:(u===a+1&&(n=i.childNodes[a]),Ag(n)?(l=f=n.cloneNode(!0),(s=p.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented()?null:(r=Cl(qn.fromDom(p.getBody()),"#"+h).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('
').attr("id",h)).appendTo(p.getBody()),e=p.dom.createRng(),l===f&&ge.ie?(r.empty().append('

\xa0

').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:m.getPos(n,p.getBody()).y}),r[0].focus(),(o=p.selection.getSel()).removeAllRanges(),o.addRange(e),H.each(fu(qn.fromDom(p.getBody()),"*[data-mce-selected]"),function(e){cr.remove(e,"data-mce-selected")}),n.setAttribute("data-mce-selected","1"),g=n,C(),e)):null)},l=function(){g&&(g.removeAttribute("data-mce-selected"),Cl(qn.fromDom(p.getBody()),"#"+h).each(Ic.remove),g=null)},C=function(){o.hide()};return ge.ceFalse&&(function(){p.on("mouseup",function(e){var t=s();t.collapsed&&bp.isXYInContentArea(p,e.clientX,e.clientY)&&u(Qa(p,t,!1))}),p.on("click",function(e){var t;(t=_g(p,e.target))&&(Ag(t)&&(e.preventDefault(),p.focus()),Tg(t)&&p.dom.isChildOf(t,p.selection.getNode())&&l())}),p.on("blur NewBlock",function(){l()}),p.on("ResizeWindow FullscreenStateChanged",function(){return o.reposition()});var n,r,i=function(e,t){var n,r,o=p.dom.getParent(e,p.dom.isBlock),i=p.dom.getParent(t,p.dom.isBlock);return!(!o||!p.dom.isChildOf(o,i)||!1!==Ag(_g(p,o)))||o&&(n=o,r=i,!(p.dom.getParent(n,p.dom.isBlock)===p.dom.getParent(r,p.dom.isBlock)))&&function(e){var t=js(e);if(!e.firstChild)return!1;var n=Ba.before(e.firstChild),r=t.next(n);return r&&!Bg(r)&&!Rg(r)}(o)};r=!1,(n=p).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){var t=_g(n,e.target);Ag(t)&&(r||(e.preventDefault(),c(Ja(n,t))))}),p.on("mousedown",function(e){var t,n=e.target;if((n===a||"HTML"===n.nodeName||p.dom.isChildOf(n,a))&&!1!==bp.isXYInContentArea(p,e.clientX,e.clientY))if(t=_g(p,n))Ag(t)?(e.preventDefault(),c(Ja(p,t))):(l(),Tg(t)&&e.shiftKey||Ng(e.clientX,e.clientY,p.selection.getRng())||p.selection.placeCaretAt(e.clientX,e.clientY));else if(!1===ts(n)){l(),C();var r=wg(a,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=v(1,r.node,r.before,!1);p.getBody().focus(),u(o)}}}),p.on("keypress",function(e){kg.modifierPressed(e)||(e.keyCode,Ag(p.selection.getNode())&&e.preventDefault())}),p.on("getSelectionRange",function(e){var t=e.range;if(g){if(!g.parentNode)return void(g=null);(t=t.cloneRange()).selectNode(g),e.range=t}}),p.on("setSelectionRange",function(e){var t;(t=c(e.range,e.forward))&&(e.range=t)}),p.on("AfterSetSelectionRange",function(e){var t,n=e.range;b(n)||C(),t=n.startContainer.parentNode,p.dom.hasClass(t,"mce-offscreen-selection")||l()}),p.on("copy",function(e){var t,n=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!ge.ie){var r=(t=p.dom.get(h))?t.getElementsByTagName("*")[0]:t;r&&(e.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),sg(p),Sg(p)}(),e=p.contentStyles,t=".mce-content-body",e.push(o.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")),{showCaret:v,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Mi(e),u(s()),p.selection.scrollIntoView(e[0]))},hideFakeCaret:C,destroy:function(){o.destroy(),g=null}}},Og=Lt.each,Pg=function(e){return 0===e.indexOf("data-")||0===e.indexOf("aria-")},Lg=function(e){return e.replace(//g,"")},Ig=function(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r};function Mg(z,U){void 0===U&&(U=Zo());var t=function(){};!1!==(z=z||{}).fix_self_closing&&(z.fix_self_closing=!0),Og("comment cdata text start end pi doctype".split(" "),function(e){e&&(self[e]=z[e]||t)});var q=z.comment?z.comment:t,V=z.cdata?z.cdata:t,H=z.text?z.text:t,j=z.start?z.start:t,$=z.end?z.end:t,W=z.pi?z.pi:t,K=z.doctype?z.doctype:t;return{parse:function(e){var t,n,r,c,o,i,a,l,u,s,f,d,m,p,g,h,v,y,b,C,x,w,N,E,S,k,T,A,R,B=0,_=[],D=0,O=Vo.decode,P=Lt.makeMap("src,href,data,background,formaction,poster"),L=/((java|vb)script|mhtml):/i,I=/^data:/i,M=function(e){var t,n;for(t=_.length;t--&&_[t].name!==e;);if(0<=t){for(n=_.length-1;t<=n;n--)(e=_[n]).valid&&$(e.name);_.length=t}},F=function(e,t,n,r,o){var i,a;if(n=(t=t.toLowerCase())in f?t:O(n||r||o||""),m&&!l&&!1===Pg(t)){if(!(i=y[t])&&b){for(a=b.length;a--&&!(i=b[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(P[t]&&!z.allow_script_urls){var u=n.replace(/[\s\u0000-\u001F]+/g,"");try{u=decodeURIComponent(u)}catch(s){u=unescape(u)}if(L.test(u))return;if(!z.allow_html_data_urls&&I.test(u)&&!/^data:image\//i.test(u))return}l&&(t in P||0===t.indexOf("on"))||(c.map[t]=n,c.push({name:t,value:n}))};for(S=new RegExp("<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),k=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,s=U.getShortEndedElements(),E=z.self_closing_elements||U.getSelfClosingElements(),f=U.getBoolAttrs(),m=z.validate,u=z.remove_internals,R=z.fix_self_closing,T=U.getSpecialElements(),N=e+">";t=S.exec(N);){if(Be.length){H(O(e.substr(t.index))),B=t.index+t[0].length;continue}if(":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),d=n in s,R&&E[n]&&0<_.length&&_[_.length-1].name===n&&M(n),!m||(p=U.getElementRule(n))){if(g=!0,m&&(y=p.attributes,b=p.attributePatterns),(v=t[8])?((l=-1!==v.indexOf("data-mce-type"))&&u&&(g=!1),(c=[]).map={},v.replace(k,F)):(c=[]).map={},m&&!l){if(C=p.attributesRequired,x=p.attributesDefault,w=p.attributesForced,p.removeEmptyAttrs&&!c.length&&(g=!1),w)for(o=w.length;o--;)a=(h=w[o]).name,"{$uid}"===(A=h.value)&&(A="mce_"+D++),c.map[a]=A,c.push({name:a,value:A});if(x)for(o=x.length;o--;)(a=(h=x[o]).name)in c.map||("{$uid}"===(A=h.value)&&(A="mce_"+D++),c.map[a]=A,c.push({name:a,value:A}));if(C){for(o=C.length;o--&&!(C[o]in c.map););-1===o&&(g=!1)}if(h=c.map["data-mce-bogus"]){if("all"===h){B=Ig(U,e,S.lastIndex),S.lastIndex=B;continue}g=!1}}g&&j(n,c,d)}else g=!1;if(r=T[n]){r.lastIndex=B=t.index+t[0].length,(t=r.exec(e))?(g&&(i=e.substr(B,t.index-B)),B=t.index+t[0].length):(i=e.substr(B),B=e.length),g&&(0"===n.charAt(0)&&(n=" "+n),z.allow_conditional_comments||"[if"!==n.substr(0,3).toLowerCase()||(n=" "+n),q(n)):(n=t[2])?V(Lg(n)):(n=t[3])?K(n):(n=t[4])&&W(n,t[5]);B=t.index+t[0].length}for(B]*data-mce-bogus="all"[^>]*>/g,d=e.schema;for(u=e.getTempAttrs(),s=l,c=new RegExp(["\\s?("+u.join("|")+')="[^"]+"'].join("|"),"gi"),l=s.replace(c,""),a=d.getShortEndedElements();i=f.exec(l);)r=f.lastIndex,o=i[0].length,n=a[i[1]]?r:Fg.findEndTag(d,l,r),l=l.substring(0,r-o)+l.substring(n),f.lastIndex=r-o;return Si(l)},Ug={trimExternal:zg,trimInternal:zg},qg=0,Vg=2,Hg=1,jg=function(p,g){var e=p.length+g.length+2,h=new Array(e),v=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a")?Zg(r):eh(t)},applyToEditor:function(e,t,n){"fragmented"===t.type?Xg(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},isEq:function(e,t){return!(!e||!t)&&(r=t,th(e)===th(r)||(n=t,nh(e)===nh(n)));var n,r}};function oh(u){var s,r,o=this,c=0,l=[],t=0,f=function(){return 0===t},i=function(e){f()&&(o.typing=e)},d=function(e){u.setDirty(e)},a=function(e){i(!1),o.add({},e)},n=function(){o.typing&&(i(!1),o.add())};return u.on("init",function(){o.add()}),u.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(n(),o.beforeChange())}),u.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&a(e)}),u.on("ObjectResizeStart Cut",function(){o.beforeChange()}),u.on("SaveContent ObjectResized blur",a),u.on("DragEnd",a),u.on("KeyUp",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),u.nodeChanged()),46!==t&&8!==t||u.nodeChanged(),r&&o.typing&&!1===rh.isEq(rh.createFromEditor(u),l[0])&&(!1===u.isDirty()&&(d(!0),u.fire("change",{level:l[0],lastLevel:null})),u.fire("TypingUndo"),r=!1,u.nodeChanged()))}),u.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)o.typing&&a(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20i.custom_undo_redo_levels){for(n=0;n
").append(n.childNodes)}))},jh[ih="pre"]||(jh[ih]=[]),jh[ih].push(ah);var Kh=function(e,t){Wh(jh[e],function(e){e(t)})},Xh=Lt.each,Yh={walk:function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,m=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)Xh(c,function(e){o([e])});else{var p,g,h,v=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===m&&0h.length-1?g=h.length-1:g<0&&(g=0),d=h[g]||p),l===d)return o(v([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return C(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return C(d,n);if(a===n)break}r=b(l,n)||l,i=b(d,n)||d,C(l,r,!0),(s=y(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(v(s)),C(d,i)}}},Gh=/^(src|href|style)$/,Jh=Lt.each,Qh=lh.isEq,Zh=function(e){return/^(TH|TD)$/.test(e.nodeName)},ev=function(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],Ao.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i=r.nodeValue.length&&(r=new no(r,e.getBody()).next()||r),Ao.isText(r)&&!n&&0===o&&(r=new no(r,e.getBody()).prev()||r),r},tv=function(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o},nv=function(e,t,n,r){return!(t=lh.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)},rv=function(e,n,r,o,i){var t,a,u,s,c,l,f,d,m,p,g,h,v,y,b=e.dom;if(c=b,!(Qh(l=o,(f=n).inline)||Qh(l,f.block)||(f.selector?Ao.isElement(l)&&c.is(l,f.selector):void 0)||(s=o,n.links&&"A"===s.tagName)))return!1;if("all"!==n.remove)for(Jh(n.styles,function(e,t){e=lh.normalizeStyleValue(b,lh.replaceVars(e,r),t),"number"==typeof t&&(t=e,i=0),(n.remove_similar||!i||Qh(lh.getStyle(b,i,t),e))&&b.setStyle(o,t,""),u=1}),u&&""===b.getAttrib(o,"style")&&(o.removeAttribute("style"),o.removeAttribute("data-mce-style")),Jh(n.attributes,function(e,t){var n;if(e=lh.replaceVars(e,r),"number"==typeof t&&(t=e,i=0),!i||Qh(b.getAttrib(i,t),e)){if("class"===t&&(e=b.getAttrib(o,t))&&(n="",Jh(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void b.setAttrib(o,t,n);"class"===t&&o.removeAttribute("className"),Gh.test(t)&&o.removeAttribute("data-mce-"+t),o.removeAttribute(t)}}),Jh(n.classes,function(e){e=lh.replaceVars(e,r),i&&!b.hasClass(i,e)||b.removeClass(o,e)}),a=b.getAttribs(o),t=0;t)\s*/g,"$1"),Lt.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Lt.map(e.split(/(?:~\+|~|\+)/),Rv),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},_v={getCssText:function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");var c=function(e){return e.replace(/%(\w+)/g,"")};if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",(i=Bv(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,r=Av(i,n)):r=Av([t],n),o=Tv.select(t,r)[0]||r.firstChild,kv(e.styles,function(e,t){(e=c(e))&&Tv.setStyle(o,t,e)}),kv(e.attributes,function(e,t){(e=c(e))&&Tv.setAttrib(o,t,e)}),kv(e.classes,function(e){e=c(e),Tv.hasClass(o,e)||Tv.addClass(o,e)}),n.fire("PreviewFormats"),Tv.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=Tv.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,kv(u.split(" "),function(e){var t=Tv.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Tv.getStyle(n.getBody(),e,!0),"#ffffff"===Tv.toHex(t).toLowerCase())||"color"===e&&"#000000"===Tv.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Tv.remove(r),s)},parseSelector:Bv,selectorToHtml:function(e,t){return Av(Bv(e),t)}},Dv={toggle:function(e,t,n,r,o){var i=t.get(n);!Rh.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?wv.applyFormat(e,n,r,o):ov.remove(e,n,r,o)}},Ov={setup:function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])}};function Pv(e){var t,n,r,o=(t=e,n={},(r=function(e,t){e&&("string"!=typeof e?Lt.each(e,function(e,t){r(t,e)}):(t=t.length?t:[t],Lt.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))})(Sv.get(t.dom)),r(t.settings.formats),{get:function(e){return e?n[e]:n},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}),i=Ju(null);return Ov.setup(e),Vh(e),{get:o.get,register:o.register,unregister:o.unregister,apply:V.curry(wv.applyFormat,e),remove:V.curry(ov.remove,e),toggle:V.curry(Dv.toggle,e,o),match:V.curry(Rh.match,e),matchAll:V.curry(Rh.matchAll,e),matchNode:V.curry(Rh.matchNode,e),canApply:V.curry(Rh.canApply,e),formatChanged:V.curry(Ev.formatChanged,e,i),getCssText:V.curry(_v.getCssText,e)}}var Lv=function(a){return function(){for(var e=new Array(arguments.length),t=0;t)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0")):"xhtml"===s.element_format&&0T(n)?(C=A(b*y),b=A(C/y)):(b=A(C/y),C=A(b*y))),N.setStyles(_(s),{width:b,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,N.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=b+" × "+C,f[2]<0&&s.clientWidth<=b&&N.setStyle(s,"left",p+(h-b)),f[3]<0&&s.clientHeight<=C&&N.setStyle(s,"top",g+(v-C)),(t=R.scrollWidth-x)+(n=R.scrollHeight-w)!=0&&N.setStyles(c,{left:r-t,top:o-n}),i||(a.fire("ObjectResizeStart",{target:u,width:h,height:v}),i=!0)},P=function(){i=!1;var e=function(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?N.setStyle(_(u),e,t):N.setAttrib(_(u),e,t))};e("width",b),e("height",C),N.unbind(S,"mousemove",O),N.unbind(S,"mouseup",P),k!==S&&(N.unbind(k,"mousemove",O),N.unbind(k,"mouseup",P)),N.remove(s),N.remove(c),o(u),a.fire("ObjectResized",{target:u,width:b,height:C}),N.setAttrib(u,"style",N.getAttrib(u,"style")),a.nodeChanged()},o=function(e){var t,r,o,n,i;L(),F(),t=N.getPos(e,R),p=t.x,g=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,b=C=0),n=a.fire("ObjectSelected",{target:e}),D(e)&&!n.isDefaultPrevented()?E(l,function(n,e){var t;(t=N.get("mceResizeHandle"+e))&&N.remove(t),t=N.add(R,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),ge.ie&&(t.contentEditable=!1),N.bind(t,"mousedown",function(e){var t;e.stopImmediatePropagation(),e.preventDefault(),d=(t=e).screenX,m=t.screenY,h=_(u).clientWidth,v=_(u).clientHeight,y=v/h,(f=n).startPos={x:r*n[0]+p,y:o*n[1]+g},x=R.scrollWidth,w=R.scrollHeight,s=u.cloneNode(!0),N.addClass(s,"mce-clonedresizable"),N.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,N.setStyles(s,{left:p,top:g,margin:0}),s.removeAttribute("data-mce-selected"),R.appendChild(s),N.bind(S,"mousemove",O),N.bind(S,"mouseup",P),k!==S&&(N.bind(k,"mousemove",O),N.bind(k,"mouseup",P)),c=N.add(R,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},h+" × "+v)}),n.elm=t,N.setStyles(t,{left:r*n[0]+p-t.offsetWidth/2,top:o*n[1]+g-t.offsetHeight/2})}):L(),u.setAttribute("data-mce-selected","1")},L=function(){var e,t;for(e in F(),u&&u.removeAttribute("data-mce-selected"),l)(t=N.get("mceResizeHandle"+e))&&(N.unbind(t),N.remove(t))},I=function(e){var t,n=function(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)};i||a.removed||(E(N.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),t="mousedown"===e.type?e.target:r.getNode(),n(t=N.$(t).closest("table,img,figure.image,hr")[0],R)&&(z(),n(r.getStart(!0),t)&&n(r.getEnd(!0),t))?o(t):L())},M=function(e){return gy(function(e,t){for(;t&&t!==e;){if(hy(t)||gy(t))return t;t=t.parentNode}return null}(a.getBody(),e))},F=function(){for(var e in l){var t=l[e];t.elm&&(N.unbind(t.elm),delete t.elm)}},z=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){z(),ge.ie&&11<=ge.ie&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||M(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(R,"mscontrolselect",function(e){var t=function(e){Ce.setEditorTimeout(a,function(){a.selection.select(e)})};if(M(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=Ce.throttle(function(e){a.composing||I(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",L),a.on("contextmenu",n)}),a.on("remove",F),{isResizable:D,showResizeRect:o,hideResizeRect:L,updateResizeRect:I,destroy:function(){u=s=null}}},yy=function(e){return Ao.isContentEditableTrue(e)||Ao.isContentEditableFalse(e)},by={fromPoint:function(e,t,n){var r,o,i,a,u,s=n;if(s.caretPositionFromPoint)(o=s.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(s.body.createTextRange){r=s.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(c){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Lt.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return i=r,a=n.body,u=i&&i.parentElement?i.parentElement():null,Ao.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(u,a,yy))?null:i}return r}},Cy=function(n,e){return H.map(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},xy=function(e,t){return qn.fromDom(e.dom().cloneNode(t))},wy=function(e){return xy(e,!0)},Ny=function(e){return xy(e,!1)},Ey=wy,Sy=function(e,t){var n=(t||document).createDocumentFragment();return H.each(e,function(e){n.appendChild(e.dom())}),qn.fromDom(n)},ky=function(t){return qr.firstChild(t).fold(V.constant([t]),function(e){return[t].concat(ky(e))})},Ty=function(t){return qr.lastChild(t).fold(V.constant([t]),function(e){return"br"===Qn.name(e)?qr.prevSibling(e).map(function(e){return[t].concat(Ty(e))}).getOr([]):[t].concat(Ty(e))})},Ay=function(o,e){return sa([(i=e,a=i.startContainer,u=i.startOffset,Ao.isText(a)?0===u?A.some(qn.fromDom(a)):A.none():A.from(a.childNodes[u]).map(qn.fromDom)),(t=e,n=t.endContainer,r=t.endOffset,Ao.isText(n)?r===n.data.length?A.some(qn.fromDom(n)):A.none():A.from(n.childNodes[r-1]).map(qn.fromDom))],function(e,t){var n=H.find(ky(o),V.curry(Or.eq,e)),r=H.find(Ty(o),V.curry(Or.eq,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i,a,u},Ry=function(e,t,n,r){var o=n,i=new no(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Lt.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(ge.ie&&ge.ie<11&&e.isBlock(n)&&e.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))},By=wr.immutable("element","width","rows"),_y=wr.immutable("element","cells"),Dy=wr.immutable("x","y"),Oy=function(e,t){var n=parseInt(cr.get(e,t),10);return isNaN(n)?1:n},Py=function(e){return H.foldl(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)},Ly=function(e,t){for(var n=e.rows(),r=0;r"+(r.item?r.item(0).outerHTML:r.htmlText),o.removeChild(o.firstChild)):o.innerHTML=r.toString(),t.getInner=!0;var u=e.selection.serializer.serialize(o,t);return"tree"===t.format?u:(t.content=e.selection.isCollapsed()?"":u,e.fire("GetContent",t),t.content)},Ky=function(e,t,n){var r,o,i,a=e.selection.getRng(),u=e.getDoc();if((n=n||{format:"html"}).set=!0,n.selection=!0,n.content=t,n.no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){if(t=n.content,a.insertNode){t+='_',a.startContainer===u&&a.endContainer===u?u.body.innerHTML=t:(a.deleteContents(),0===u.body.childNodes.length?u.body.innerHTML=t:a.createContextualFragment?a.insertNode(a.createContextualFragment(t)):(o=u.createDocumentFragment(),i=u.createElement("div"),o.appendChild(i),i.outerHTML=t,a.insertNode(o))),r=e.dom.get("__caret"),(a=u.createRange()).setStartBefore(r),a.setEndBefore(r),e.selection.setRng(a),e.dom.remove("__caret");try{e.selection.setRng(a)}catch(s){}}else a.item&&(u.execCommand("Delete",!1,null),a=e.getRng()),/^\s+/.test(t)?(a.pasteHTML('_'+t),e.dom.remove("__mce_tmp")):a.pasteHTML(t);n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)},Xy=function(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return A.from(i).map(qn.fromDom).map(function(e){return r&&t.collapsed?e:qr.child(e,o(e,a)).getOr(e)}).bind(function(e){return Qn.isElement(e)?A.some(e):qr.parent(e)}).map(function(e){return e.dom()}).getOr(e)},Yy=function(e,t,n){return Xy(e,t,!0,n,function(e,t){return Math.min(qr.childNodesCount(e),t)})},Gy=function(e,t,n){return Xy(e,t,!1,n,function(e,t){return 0t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return yu(c,e,t)},placeCaretAt:function(e,t){return i(by.fromPoint(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=m();return e.collapsed?Ba.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,t.destroy()}};return n=py(g),t=vy(g,c),g.bookmarkManager=n,g.controlSelection=t,g},nb=Ao.isContentEditableFalse,rb=ta,ob=ks,ib=Ss,ab=function(e,t){for(;t=e(t);)if(t.isVisible())return t;return t},ub=function(e,t,n,r){var o,i,a,u,s,c,l=e===eu.Forwards,f=l?ib:ob;return!r.collapsed&&(o=rb(r),nb(o))?Ga(e,t,o,e===eu.Backwards,!0):(u=Ai(r.startContainer),f(i=Es(e,t.getBody(),r))?Ja(t,i.getNode(!l)):(i=n(i))?f(i)?Ga(e,t,i.getNode(!l),l,!0):f(a=n(i))&&(!(c=ps(s=i,a))&&Ao.isBr(s.getNode())||c)?Ga(e,t,a.getNode(!l),l,!0):u?Za(t,i.toRange(),!0):null:u?r:null)},sb=function(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=rb(r),o=Es(e,t.getBody(),r),i=n(t.getBody(),mg(1),o),a=Bt.filter(i,pg(1)),s=Bt.last(o.getClientRects()),(ib(o)||Ts(o))&&(d=o.getNode()),(ob(o)||As(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=Cg(a,c))&&nb(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),Ga(e,t,u.node,l'),o=a,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}},lb=function(l,f){return function(){var e,t,n,r,o,i,a,u,s,c=(t=f,r=js((e=l).getBody()),o=ua.curry(ab,r.next),i=ua.curry(ab,r.prev),a=t?eu.Forwards:eu.Backwards,u=t?o:i,s=e.selection.getRng(),(n=ub(a,e,u,s))?n:(n=cb(e,a,s))||null);return!!c&&(l.selection.setRng(c),!0)}},fb=function(u,s){return function(){var e,t,n,r,o,i,a=(r=(t=s)?1:-1,o=t?dg:fg,i=(e=u).selection.getRng(),(n=sb(r,e,o,i))?n:(n=cb(e,r,i))||null);return!!a&&(u.selection.setRng(a),!0)}},db=function(e,r){return H.bind((t=e,H.map(t,function(e){return Fv.merge({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:V.noop},e)})),function(e){return t=e,(n=r).keyCode===t.keyCode&&n.shiftKey===t.shiftKey&&n.altKey===t.altKey&&n.ctrlKey===t.ctrlKey&&n.metaKey===t.metaKey?[e]:[];var t,n});var t},mb=function(e){for(var t=[],n=1;n'},Ob=function(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t},Pb=function(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)},Lb=function(e,t,n){return!1===Ao.isText(t)?n:e?1===n&&t.data.charAt(n-1)===Ei?0:n:n===t.data.length-1&&t.data.charAt(n)===Ei?t.data.length:n},Ib=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},Mb=function(e,t){var n=Au(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&e.dom.setAttribs(t,Ru(e))},Fb=function(a,e){var t,u,s,i,c,n,r,o,l,f,d,m,p,g,h,v,y,b,C=a.dom,x=a.schema,w=x.getNonEmptyElements(),N=a.selection.getRng(),E=function(e){var t,n,r,o=s,i=x.getTextInlineElements();if(e||"TABLE"===f||"HR"===f?(t=C.create(e||m),Mb(a,t)):t=c.cloneNode(!1),r=t,!1===Du(a))C.setAttrib(t,"style",null),C.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(xc(o))continue;n=o.cloneNode(!1),C.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return Db(r),t},S=function(e){var t,n,r,o;if(o=Lb(e,s,i),Ao.isText(s)&&(e?0s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=p&&Ao.isText(s)?s.nodeValue.length:0),(u=Ib(C,s))&&((m&&!n||!m&&n)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f,d=t||"P",m=e.dom,p=Ib(m,r);if(!(a=m.getParent(r,m.isBlock))||!Pb(m,a)){if(l=(a=a||p)===e.getBody()||(f=a)&&/^(TD|TH|CAPTION)$/.test(f.nodeName)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=m.create(d),Mb(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!m.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,d.toLowerCase())){for(i=m.create(d),Mb(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!m.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,m,N,s,i)),c=C.getParent(s,C.isBlock),l=c?C.getParent(c.parentNode,C.isBlock):null,f=c?c.nodeName.toUpperCase():"","LI"!==(d=l?l.nodeName.toUpperCase():"")||e.ctrlKey||(l=(c=l).parentNode,f=d),/^(LI|DT|DD)$/.test(f)&&C.isEmpty(c)?_b(a,E,l,c,m):m&&c===a.getBody()||(m=m||"P",Ai(c)?(r=Mi(c),C.isEmpty(c)&&Db(c),wb(a,r)):S()?k():S(!0)?(r=c.parentNode.insertBefore(E(),c),wb(a,Ob(c,"HR")?r:c)):((t=(y=N,b=y.cloneRange(),b.setStart(y.startContainer,Lb(!0,y.startContainer,y.startOffset)),b.setEnd(y.endContainer,Lb(!1,y.endContainer,y.endOffset)),b).cloneRange()).setEndAfter(c),function(e){for(;Ao.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(o=t.extractContents()),r=o.firstChild,C.insertAfter(o,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Ao.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=o)&&"A"===a.nodeName&&0===Lt.trim(Si(a.innerText||a.textContent)).length&&e.remove(o);var a}}(C,w,r),g=C,(h=c).normalize(),(v=h.lastChild)&&!/^(left|right)$/gi.test(g.getStyle(v,"float",!0))||g.add(h,"br"),C.isEmpty(c)&&Db(c),r.normalize(),C.isEmpty(r)?(C.remove(r),k()):wb(a,r)),C.setAttrib(r,"id",""),a.fire("NewBlock",{newBlock:r})))},zb=function(e,t){return Eb(e).filter(function(e){return 0",Nu(f)!==f.documentBaseUrl&&(p+=''),p+='',d=Eu(f),m=Su(f),ku(f)&&(p+=''),p+='
'),gC.add(t.iframeContainer,l),g},vC=function(e,t){var n=hC(e,t);t.editorContainer&&(gC.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=gC.isHidden(t.editorContainer)),e.getElement().style.display="none",gC.setAttrib(e.id,"aria-hidden","true"),n||pC(e)},yC=di.DOM,bC=function(t,n,e){var r,o,i=Tp.get(e);if(r=Tp.urls[e]||t.documentBaseUrl.replace(/\/$/,""),e=Lt.trim(e),i&&-1===Lt.inArray(n,e)){if(Lt.each(Tp.dependencies(e),function(e){bC(t,n,e)}),t.plugins[e])return;o=new i(t,r,t.$),(t.plugins[e]=o).init&&(o.init(t,r),n.push(e))}},CC=function(e){return e.replace(/^\-/,"")},xC=function(e){return{editorContainer:e,iframeContainer:e}},wC=function(e){var t,n,r=e.getElement();return e.inline?xC(null):(t=r,n=yC.create("div"),yC.insertAfter(n,t),xC(n))},NC=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.getElement();return e.orgDisplay=m.style.display,E.isString(d.theme)?(l=(o=e).settings,f=o.getElement(),i=l.width||yC.getStyle(f,"width")||"100%",a=l.height||yC.getStyle(f,"height")||f.offsetHeight,u=l.min_height||100,(s=/^[0-9\.]+(|px)$/i).test(""+i)&&(i=Math.max(parseInt(i,10),100)),s.test(""+a)&&(a=Math.max(parseInt(a,10),u)),c=o.theme.renderUI({targetNode:f,width:i,height:a,deltaWidth:l.delta_width,deltaHeight:l.delta_height}),l.content_editable||(a=(c.iframeHeight||a)+("number"==typeof a?c.deltaHeight||0:""))=n.length)for(r=0,o=e.length;r=n.length||e[r]!==n[r]){i=r+1;break}if(e.length=e.length||e[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=e.length-(i-1);r]*>( | |\\s|\xa0|
|)<\\/"+a+">[\r\n]*|
[\r\n]*)$"),r=i.replace(u,"")}return"text"!==t.format?t.content=Lt.trim(r):t.content=r,t.no_events||e.fire("GetContent",t),t.content},zC=function(u,s,c){return void 0===c&&(c={}),c.format=c.format?c.format:"html",c.set=!0,c.content=MC(s)?"":s,MC(s)||c.no_events||(u.fire("BeforeSetContent",c),s=c.content),A.from(u.getBody()).fold(V.constant(s),function(e){return MC(s)?function(e,t,n,r){IC(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=jc({validate:e.validate},e.schema).serialize(n);return r.content=Lt.trim(o),e.dom.setHTML(t,r.content),r.no_events||e.fire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=s).length||/^\s+$/.test(r)?(a='
',"TABLE"===n.nodeName?r=""+a+"":/^(UL|OL)$/.test(n.nodeName)&&(r="
  • "+a+"
  • "),(i=Au(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),i.toLowerCase())?(r=a,r=t.dom.createHTML(i,t.settings.forced_root_block_attrs,r)):r||(r='
    '),t.dom.setHTML(n,r),t.fire("SetContent",o)):("raw"!==o.format&&(r=jc({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=Lt.trim(r),t.dom.setHTML(n,o.content),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})},UC=di.DOM,qC=function(e){return A.from(e).each(function(e){return e.destroy()})},VC=function(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save(),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&UC.remove(o.nextSibling),!e.inline&&r&&(i=e,UC.setStyle(i.id,"display",i.orgDisplay)),qv(e),e.editorManager.remove(e),UC.remove(e.getContainer()),qC(t),qC(n),e.destroy()}var i},HC=function(e,t){var n,r,o,i=e.selection,a=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),qC(i),qC(a)),(r=(n=e).formElement)&&(r._mceOldSubmit&&(r.submit=r._mceOldSubmit,r._mceOldSubmit=null),UC.unbind(r,"submit reset",n.formEventDelegate)),(o=e).contentAreaContainer=o.formElement=o.container=o.editorContainer=null,o.bodyElement=o.contentDocument=o.contentWindow=null,o.iframeElement=o.targetElm=null,o.selection&&(o.selection=o.selection.win=o.selection.dom=o.selection.dom.doc=null),e.destroyed=!0):e.remove())},jC=di.DOM,$C=Lt.extend,WC=Lt.each,KC=Lt.resolve,XC=ge.ie,YC=function(e,t,n){var r,o,i,a,u,s,c,l=this,f=l.documentBaseUrl=n.documentBaseURL,d=n.baseURI;r=l,o=e,i=f,a=n.defaultSettings,u=t,c={id:o,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:i,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:(s=r).convertURL,url_converter_scope:s,ie7_compat:!0},t=sl(nl,c,a,u),l.settings=t,Ci.language=t.language||"en",Ci.languageLoad=t.language_load,Ci.baseURL=n.baseURL,l.id=e,l.setDirty(!1),l.plugins={},l.documentBaseURI=new PC(t.document_base_url,{base_uri:d}),l.baseURI=d,l.contentCSS=[],l.contentStyles=[],l.shortcuts=new tp(l),l.loadedCSS={},l.editorCommands=new Mm(l),l.suffix=n.suffix,l.editorManager=n,l.inline=t.inline,l.buttons={},l.menuItems={},t.cache_suffix&&(ge.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),!1===t.override_viewport&&(ge.overrideViewPort=!1),n.fire("SetupEditor",{editor:l}),l.execCallback("setup",l),l.$=en.overrideDefaults(function(){return{context:l.inline?l.getBody():l.getDoc(),element:l.getBody()}})};$C(YC.prototype={render:function(){AC(this)},focus:function(e){fp(this,e)},hasFocus:function(){return dp(this)},execCallback:function(e){for(var t=[],n=1;n=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=Rx(e.x,t.x),r=Rx(e.y,t.y),o=Ax(e.x+e.w,t.x+t.w),i=Ax(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:Dx(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=Rx(0,t.x-u),o=Rx(0,t.y-s),i=Rx(0,c-f),a=Rx(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),Dx(u,s,(c-=i)-u,(l-=a)-s)},create:Dx,fromClientRect:function(e){return Dx(e.left,e.top,e.width,e.height)}},Px={},Lx={add:function(e,t){Px[e.toLowerCase()]=t},has:function(e){return!!Px[e.toLowerCase()]},get:function(e){var t=e.toLowerCase(),n=Px.hasOwnProperty(t)?Px[t]:null;if(null===n)throw new Error("Could not find module for type: "+e);return n},create:function(e,t){var n;if("string"==typeof e?(t=t||{}).type=e:e=(t=e).type,e=e.toLowerCase(),!(n=Px[e]))throw new Error("Could not find control by type: "+e);return(n=new n(t)).type=e,n}},Ix=Lt.each,Mx=Lt.extend,Fx=function(){};Fx.extend=Sx=function(n){var e,t,r,o=this.prototype,i=function(){var e,t,n;if(!kx&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)},a=function(){return this},u=function(n,r){return function(){var e,t=this._super;return this._super=o[n],e=r.apply(this,arguments),this._super=t,e}};for(t in kx=!0,e=new this,kx=!1,n.Mixins&&(Ix(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&Ix(n.Methods.split(","),function(e){n[e]=a}),n.Properties&&Ix(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&Ix(n.Statics,function(e,t){i[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=Mx({},o.Defaults,n.Defaults)),n)"function"==typeof(r=n[t])&&o[t]?e[t]=u(t,r):e[t]=r;return i.prototype=e,(i.constructor=i).extend=Sx,i};var zx=Math.min,Ux=Math.max,qx=Math.round,Vx=function(e,n){var r,o,t,i;if(n=n||'"',null===e)return"null";if("string"==(t=typeof e))return o="\bb\tt\nn\ff\rr\"\"''\\\\",n+e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=o.indexOf(t))+1?"\\"+o.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e)})+n;if("object"===t){if(e.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(e)){for(r=0,o="[";r - - - - - -
    - juridig -
    -
    - %%BODYCONTENT%% -
    -
    -
    - +INSERT INTO public.maillayouts (id, layoutname, mailtemplate) VALUES (1, 'juridig_basic', ' + + + + + +
    + juridig +
    +
    + %%BODYCONTENT%% +
    +
    +
    + '); @@ -1173,113 +1173,113 @@ SELECT pg_catalog.setval('public.maillog_id_seq', 1, false); -- Data for Name: mailtemplates; Type: TABLE DATA; Schema: public; Owner: - -- -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (1, 'user_registration', 'Bonjour %%prename%% %%surname%%,
    -
    -Merci pour votre création de compte sur juridig.lu, -

    -votre login: %%username%%
    -votre mot de passe: %%password%% -
    -Meilleurs salutations,
    -
    +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (1, 'user_registration', 'Bonjour %%prename%% %%surname%%,
    +
    +Merci pour votre création de compte sur juridig.lu, +

    +votre login: %%username%%
    +votre mot de passe: %%password%% +
    +Meilleurs salutations,
    +
    Juridig.lu Support Team', 'select prename,surname,username from users where id=''%%id%%'';', 'support@dks.lu', 'Confirmation requis pour votre création de compte sur juridig.lu', 1, '', ''); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (9, 'user_forgotpasswd', 'Bonjour %%prename%% %%surname%%,

    - -vous avez demandé un nouveau mot de passe via juridig.lu!
    -nouveau mot de passe: %%newpassword%%

    -
    -Meilleurs salutations,
    -
    -Juridig.lu Support Team - - - +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (9, 'user_forgotpasswd', 'Bonjour %%prename%% %%surname%%,

    + +vous avez demandé un nouveau mot de passe via juridig.lu!
    +nouveau mot de passe: %%newpassword%%

    +
    +Meilleurs salutations,
    +
    +Juridig.lu Support Team + + + ', 'select prename,surname from users where id=''%%id%%'';', 'support@dks.lu', 'Nouveau mot de passe pour le site juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (5, 'client_rendezvous_confirmation', '

    Bonjour,
    -
    -Vous avez demandé un rendez-vous via juridig.lu,

    -
    -Confirmer la demande

    -Annuler la demande
    -
    -Meilleurs Salutations,
    -
    -votre équipe de juridig.lu
    - +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (5, 'client_rendezvous_confirmation', '

    Bonjour,
    +
    +Vous avez demandé un rendez-vous via juridig.lu,

    +
    +Confirmer la demande

    +Annuler la demande
    +
    +Meilleurs Salutations,
    +
    +votre équipe de juridig.lu
    + ', 'select clientuuid from events where eventuuid=''%%eventuuid%%'';', 'support@dks.lu', 'Votre demande de rendezvous via juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (6, 'client_rendezvous_status_change', '

    Bonjour,
    -
    -Le status de votre demande de rendez-vous via juridig.lu à été changé,

    - -Voir la demande
    - -
    -Meilleurs Salutations,
    -
    +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (6, 'client_rendezvous_status_change', '

    Bonjour,
    +
    +Le status de votre demande de rendez-vous via juridig.lu à été changé,

    + +Voir la demande
    + +
    +Meilleurs Salutations,
    +
    votre équipe de juridig.lu
    ', 'select clientuuid from events where eventuuid=''%%eventuuid%%'';', 'support@dks.lu', 'Votre demande de rendezvous via juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (7, 'user_rendezvous', '

    Bonjour,
    -
    -nouvelle demande d''un rendez-vous via juridig.lu,

    -
    -Voir la demande

    -Confirmer la demande

    -Annuler la demande

    -
    -Meilleurs Salutations,
    -
    -votre équipe de juridig.lu
    +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (7, 'user_rendezvous', '

    Bonjour,
    +
    +nouvelle demande d''un rendez-vous via juridig.lu,

    +
    +Voir la demande

    +Confirmer la demande

    +Annuler la demande

    +
    +Meilleurs Salutations,
    +
    +votre équipe de juridig.lu
    ', 'select useruuid from events where eventuuid=''%%eventuuid%%'';', 'support@dks.lu', 'Nouvelle demande de rendez-vous via juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (8, 'user_rendezvous_status_change', '

    Bonjour,
    -
    -Le status d''une demande de rendez-vous via juridig.lu à été changé,

    -
    -Voir la demande
    -
    -Meilleurs Salutations,
    -
    +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (8, 'user_rendezvous_status_change', '

    Bonjour,
    +
    +Le status d''une demande de rendez-vous via juridig.lu à été changé,

    +
    +Voir la demande
    +
    +Meilleurs Salutations,
    +
    votre équipe de juridig.lu
    ', 'select useruuid from events where eventuuid=''%%eventuuid%%'';', 'support@dks.lu', 'Changement de status d''une demande de rendez-vous via juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (4, 'user_expiration_notice', 'Bonjour %%prename%% %%surname%%,
    -
    -Votre souscription au site juridig.lu expire bientôt, -

    -n''oublié pas à la prolonger! -Prolonger maintenant -
    -Meilleurs salutations,
    -
    +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (4, 'user_expiration_notice', 'Bonjour %%prename%% %%surname%%,
    +
    +Votre souscription au site juridig.lu expire bientôt, +

    +n''oublié pas à la prolonger! +Prolonger maintenant +
    +Meilleurs salutations,
    +
    Juridig.lu Support Team', 'select prename,surname from users where id=''%%id%%'';', 'support@dks.lu', 'Notice d''expiration de votre souscription sur juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (3, 'user_invoice_paypal', 'Bonjour %%prename%% %%surname%%,
    -
    -En annexe vous trouvez la facture pour votre souscription au site juridig.lu, -
    -Vous avez Payé déjà via PayPal! - -Meilleurs salutations,
    -
    +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (3, 'user_invoice_paypal', 'Bonjour %%prename%% %%surname%%,
    +
    +En annexe vous trouvez la facture pour votre souscription au site juridig.lu, +
    +Vous avez Payé déjà via PayPal! + +Meilleurs salutations,
    +
    Juridig.lu Support Team', 'select prename,surname from users where id=''%%id%%'';', 'support@dks.lu', 'Info facture pour votre souscription sur juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (2, 'nouse_client_registration_confirmation', 'Bonjour %%clientprename%% %%clientsurname%%,
    -
    -Merci pour votre création de compte sur juridig.lu, -

    -Pour confirmer et activer votre compte nous vous prions de -clicker sur le liens ci dessous.

    - -Confimer l''activation - -si c''étais pas vous, nous vous prions de clicker sur le liens ci-dessous pour que nous pouvons bloquer, respectivement supprimer les coordonnées de cette addresse de juridig.lu!
    - -Refuser l''activation - -Meilleurs salutations, - +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (2, 'nouse_client_registration_confirmation', 'Bonjour %%clientprename%% %%clientsurname%%,
    +
    +Merci pour votre création de compte sur juridig.lu, +

    +Pour confirmer et activer votre compte nous vous prions de +clicker sur le liens ci dessous.

    + +Confimer l''activation + +si c''étais pas vous, nous vous prions de clicker sur le liens ci-dessous pour que nous pouvons bloquer, respectivement supprimer les coordonnées de cette addresse de juridig.lu!
    + +Refuser l''activation + +Meilleurs salutations, + Juridig.lu Support Team', 'select * from clients where clientemail=''%%clientemail%%'';', 'support@dks.lu', 'Confirmation requis pour votre création de compte sur juridig.lu', 1, NULL, NULL); -INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (10, 'user_invoice', 'Bonjour %%prename%% %%surname%%,
    -
    -En annexe vous trouvez la facture pour votre souscription au site juridig.lu, -
    - -Meilleurs salutations,
    -
    +INSERT INTO public.mailtemplates (id, templatename, emailtext, emaildatasql, mailfrom, mailsubject, id_maillayout, successmsg, errormsg) VALUES (10, 'user_invoice', 'Bonjour %%prename%% %%surname%%,
    +
    +En annexe vous trouvez la facture pour votre souscription au site juridig.lu, +
    + +Meilleurs salutations,
    +
    Juridig.lu Support Team', 'select prename,surname from users where id=''%%id%%'';', 'support@dks.lu', 'Facture concernant votre souscription sur juridig.lu', 1, NULL, NULL); @@ -1318,51 +1318,51 @@ INSERT INTO public.prices (id, id_app, duration, price, package, evaluation, vat -- Data for Name: reporttemplates; Type: TABLE DATA; Schema: public; Owner: - -- -INSERT INTO public.reporttemplates (id, report, structure, data_de, data_fr, data_en) VALUES (1, 'invoice_dks', '{ - "13headerimg":{"x":50,"y":755,"width":160,"type":"image"}, - "02headerline":{"type":"line","color":"black","width":1,"start":{"x":50,"y":753},"end":{"x":285,"y":753}}, - "03dkstext":{"type":"text","align":"center","font":{"name":"Helvetica","size":9},"x":200,"y":743}, - "04dksfooter":{"type":"text","align":"center","font":{"name":"Helvetica","size":10},"x":297.5,"y":50,"lineheight":15}, - "05adrline":{"type":"line","color":"black","width":1,"start":{"x":52,"y":662},"end":{"x":280,"y":662}}, - "06header_right":{"type":"text","align":"right","font":{"name":"Helvetica","size":11},"x":550,"y":820,"lineheight":14}, - "07reporttype":{"type":"text","align":"right","font":{"name":"HelveticaBold","size":30},"x":550,"y":704,"lineheight":14}, - "08tbladdress":{"type":"table","x":"50","w":"230","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[{ "min_w":"200", "max_w":"200", "justify":"left" }],"header_props":[{ "font_size":"11", "font":"HelveticaBold", "bg_color":"white", "font_color":"black", "repeat":"1", "justify":"left" }],"border":"0"}, - "09tblinvoicedata":{"type":"table","x":"390","w":"175","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[ { "min_w":"70","max_w":"70","justify":"left" },{ "min_w":"90","max_w":"90","justify":"left","font":"HelveticaBold" } ],"border":"0"}, - "10tblproductdata":{"type":"table","x":"50","w":"500","font":"Helvetica","font_size":"11","start_y":"570","start_h":"300","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","header_props":[{"font_size":"11","font":"HelveticaBold","bg_color":"#e6e6e6","font_color":"black","repeat":"1","justify":"center" }],"column_props":[ { },{ "min_w":"40","max_w":"40","justify":"right" },{ "min_w":"20","max_w":"20","justify":"right" },{ "min_w":"50","max_w":"50","justify":"right","font":"Helvetica" } ],"border":"0.5"}, - "11totalsums":{"type":"table","x":"349.5","w":"201","font":"Helvetica","font_size":"11","start_y":"%%10tblproductdata:y%%","start_h":"150","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","column_props":[ { "justify":"right" },{ "min_w":"70","max_w":"70","justify":"right","font":"HelveticaBold" } ],"border":"0.5"}, - "12payementnote":{"type":"text","align":"left","font":{"name":"Helvetica","size":12},"x":50,"y":"%%11totalsums:y%%","lineheight":15} - }', '{ - "13headerimg":{"src":"dks_1000.png"}, - "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]}, - "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]}, - "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]}, - "08tbladdress":{"text":[ ["An:"], ["%%RECIPIENT%%"], ["%%ADDRESS%%"], ["%%COUNTRYSHORT%%-%%ZIP%% %%CITY%%"] ]}, - "07reporttype":{"text":["Rechnung"]}, - "09tblinvoicedata":{"text":[ ["Rechnungs-Nr.","%%REFERENCE%%"], ["Datum","%%INVOICEDATE%%"], ["Fälligkeit","%%REMINDERDATE%%"], ["Kunden-Nr.","%%CLIENTNUMBER%%"], ["Ust-Id","%%VATID%%"] ]}, - "10tblproductdata":{"text":[ ["Produkt", "Anzahl","EinzelPreis","Netto-Preis"], ["%%PRODUCT%%", "%%QUANTITY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]}, - "11totalsums":{"text":[ ["Gesamt Netto :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["MwSt. (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Gesamt Brutto :","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]} - }', '{ - "13headerimg":{"src":"dks_1000.png"}, - "03dkstext":{"text":"Database Knowledge Solutions - Simplify IT!"}, - "04dksfooter":{"text":"DKS, Société à responsabilité limitéeRC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"}, - "06header_right":{"text":"DKS s.à r.l.8b, rue du Moulin6914 Roodt/SyreTel: +352 691 504574info@dks.lu / www.dks.lu"}, - "08tbladdress":{"text":[ ["À:"], ["%%RECIPIENT%%"], ["%%ADDRESS%%"], ["%%COUNTRYSHORT%%-%%ZIP%% %%CITY%%"] ]}, - "07reporttype":{"text":"Facture"}, - "09tblinvoicedata":{"text":[ ["NO. Facture","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Échéance","%%REMINDERDATE%%"], ["No Client","%%CLIENTNUMBER%%"] ]}, - "10tblproductdata":{"text":[ ["Produit", "Quantité","Prix Unitaire","Prix Net"],["%%PRODUCTLIST:START%%"], ["%%PRODUCT%%", "%%QUANTITY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"],["%%PRODUCTLIST:END%%"] ]}, - "11totalsums":{"text":[ ["Total Net :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["TVA (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%"], ["Total à payer:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]}, - "12payementnote":{"text":"%%PAYEMENTNOTE%%"} - }', '{ - "13headerimg":{"src":"dks_1000.png"}, - "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]}, - "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]}, - "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]}, - "08tbladdress":{"text":[ ["To:"],["%%RECIPIENT%%"], ["%%ADDRESS%%"], ["%%COUNTRYSHORT%%-%%ZIP%% %%CITY%%"] ]}, - "07reporttype":{"text":["Invoice"]}, - "09tblinvoicedata":{"text":[ ["Reference.","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Due Date","%%REMINDERDATE%"], ["Client-Id","%%CLIENTNUMBER%%"], ["VAT-Id","%%VATID%%"] ]}, - "10tblproductdata":{"text":[ ["Product", "Quantity","Unit Amount","Net Amount"], ["%%PRODUCT%%", "%%QUANTITY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]}, - "11totalsums":{"text":[ ["Net Total :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["VAT (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Total to Pay:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ] - } +INSERT INTO public.reporttemplates (id, report, structure, data_de, data_fr, data_en) VALUES (1, 'invoice_dks', '{ + "13headerimg":{"x":50,"y":755,"width":160,"type":"image"}, + "02headerline":{"type":"line","color":"black","width":1,"start":{"x":50,"y":753},"end":{"x":285,"y":753}}, + "03dkstext":{"type":"text","align":"center","font":{"name":"Helvetica","size":9},"x":200,"y":743}, + "04dksfooter":{"type":"text","align":"center","font":{"name":"Helvetica","size":10},"x":297.5,"y":50,"lineheight":15}, + "05adrline":{"type":"line","color":"black","width":1,"start":{"x":52,"y":662},"end":{"x":280,"y":662}}, + "06header_right":{"type":"text","align":"right","font":{"name":"Helvetica","size":11},"x":550,"y":820,"lineheight":14}, + "07reporttype":{"type":"text","align":"right","font":{"name":"HelveticaBold","size":30},"x":550,"y":704,"lineheight":14}, + "08tbladdress":{"type":"table","x":"50","w":"230","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[{ "min_w":"200", "max_w":"200", "justify":"left" }],"header_props":[{ "font_size":"11", "font":"HelveticaBold", "bg_color":"white", "font_color":"black", "repeat":"1", "justify":"left" }],"border":"0"}, + "09tblinvoicedata":{"type":"table","x":"390","w":"175","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[ { "min_w":"70","max_w":"70","justify":"left" },{ "min_w":"90","max_w":"90","justify":"left","font":"HelveticaBold" } ],"border":"0"}, + "10tblproductdata":{"type":"table","x":"50","w":"500","font":"Helvetica","font_size":"11","start_y":"570","start_h":"300","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","header_props":[{"font_size":"11","font":"HelveticaBold","bg_color":"#e6e6e6","font_color":"black","repeat":"1","justify":"center" }],"column_props":[ { },{ "min_w":"40","max_w":"40","justify":"right" },{ "min_w":"20","max_w":"20","justify":"right" },{ "min_w":"50","max_w":"50","justify":"right","font":"Helvetica" } ],"border":"0.5"}, + "11totalsums":{"type":"table","x":"349.5","w":"201","font":"Helvetica","font_size":"11","start_y":"%%10tblproductdata:y%%","start_h":"150","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","column_props":[ { "justify":"right" },{ "min_w":"70","max_w":"70","justify":"right","font":"HelveticaBold" } ],"border":"0.5"}, + "12payementnote":{"type":"text","align":"left","font":{"name":"Helvetica","size":12},"x":50,"y":"%%11totalsums:y%%","lineheight":15} + }', '{ + "13headerimg":{"src":"dks_1000.png"}, + "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]}, + "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]}, + "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]}, + "08tbladdress":{"text":[ ["An:"], ["%%RECIPIENT%%"], ["%%ADDRESS%%"], ["%%COUNTRYSHORT%%-%%ZIP%% %%CITY%%"] ]}, + "07reporttype":{"text":["Rechnung"]}, + "09tblinvoicedata":{"text":[ ["Rechnungs-Nr.","%%REFERENCE%%"], ["Datum","%%INVOICEDATE%%"], ["Fälligkeit","%%REMINDERDATE%%"], ["Kunden-Nr.","%%CLIENTNUMBER%%"], ["Ust-Id","%%VATID%%"] ]}, + "10tblproductdata":{"text":[ ["Produkt", "Anzahl","EinzelPreis","Netto-Preis"], ["%%PRODUCT%%", "%%QUANTITY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]}, + "11totalsums":{"text":[ ["Gesamt Netto :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["MwSt. (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Gesamt Brutto :","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]} + }', '{ + "13headerimg":{"src":"dks_1000.png"}, + "03dkstext":{"text":"Database Knowledge Solutions - Simplify IT!"}, + "04dksfooter":{"text":"DKS, Société à responsabilité limitéeRC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"}, + "06header_right":{"text":"DKS s.à r.l.8b, rue du Moulin6914 Roodt/SyreTel: +352 691 504574info@dks.lu / www.dks.lu"}, + "08tbladdress":{"text":[ ["À:"], ["%%RECIPIENT%%"], ["%%ADDRESS%%"], ["%%COUNTRYSHORT%%-%%ZIP%% %%CITY%%"] ]}, + "07reporttype":{"text":"Facture"}, + "09tblinvoicedata":{"text":[ ["NO. Facture","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Échéance","%%REMINDERDATE%%"], ["No Client","%%CLIENTNUMBER%%"] ]}, + "10tblproductdata":{"text":[ ["Produit", "Quantité","Prix Unitaire","Prix Net"],["%%PRODUCTLIST:START%%"], ["%%PRODUCT%%", "%%QUANTITY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"],["%%PRODUCTLIST:END%%"] ]}, + "11totalsums":{"text":[ ["Total Net :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["TVA (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%"], ["Total à payer:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]}, + "12payementnote":{"text":"%%PAYEMENTNOTE%%"} + }', '{ + "13headerimg":{"src":"dks_1000.png"}, + "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]}, + "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]}, + "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]}, + "08tbladdress":{"text":[ ["To:"],["%%RECIPIENT%%"], ["%%ADDRESS%%"], ["%%COUNTRYSHORT%%-%%ZIP%% %%CITY%%"] ]}, + "07reporttype":{"text":["Invoice"]}, + "09tblinvoicedata":{"text":[ ["Reference.","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Due Date","%%REMINDERDATE%"], ["Client-Id","%%CLIENTNUMBER%%"], ["VAT-Id","%%VATID%%"] ]}, + "10tblproductdata":{"text":[ ["Product", "Quantity","Unit Amount","Net Amount"], ["%%PRODUCT%%", "%%QUANTITY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]}, + "11totalsums":{"text":[ ["Net Total :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["VAT (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Total to Pay:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ] + } }'); @@ -1394,19 +1394,19 @@ SELECT pg_catalog.setval('public.specifictions_id_seq', 37, true); -- Data for Name: timesheets; Type: TABLE DATA; Schema: public; Owner: - -- -INSERT INTO public.timesheets (id, id_user, startdate, enddate, rdvoption, rdvhours, hourinterval, starttime, endtime) VALUES (2, 4, '2019-06-21', '2019-08-31', '{ "name":"Service", - "values": ["Service 1","Service 2","Service 3"] -}', '{ - "1":["08:00","09:00","10:00","15:00","16:00"], - "3":["08:00","09:00","10:00","15:00","16:00"], - "5":["08:00","09:00","10:00","15:00","16:00"] +INSERT INTO public.timesheets (id, id_user, startdate, enddate, rdvoption, rdvhours, hourinterval, starttime, endtime) VALUES (2, 4, '2019-06-21', '2019-08-31', '{ "name":"Service", + "values": ["Service 1","Service 2","Service 3"] +}', '{ + "1":["08:00","09:00","10:00","15:00","16:00"], + "3":["08:00","09:00","10:00","15:00","16:00"], + "5":["08:00","09:00","10:00","15:00","16:00"] }', 60, '08:00:00', '17:00:00'); -INSERT INTO public.timesheets (id, id_user, startdate, enddate, rdvoption, rdvhours, hourinterval, starttime, endtime) VALUES (1, 4, '2019-06-01', '2019-06-20', '{ "name":"Service", - "values": ["Service 1","Service 2","Service 3"] -}', '{ - "1":["08:00","09:00","10:00","15:00","16:00"], - "2":["08:00","09:00","10:00","15:00","16:00"], - "4":["08:00","09:00","10:00","15:00","16:00"] +INSERT INTO public.timesheets (id, id_user, startdate, enddate, rdvoption, rdvhours, hourinterval, starttime, endtime) VALUES (1, 4, '2019-06-01', '2019-06-20', '{ "name":"Service", + "values": ["Service 1","Service 2","Service 3"] +}', '{ + "1":["08:00","09:00","10:00","15:00","16:00"], + "2":["08:00","09:00","10:00","15:00","16:00"], + "4":["08:00","09:00","10:00","15:00","16:00"] }', 30, '08:00:00', '17:00:00'); diff --git a/dev/db/tmp_function.sql b/dev/db/tmp_function.sql index acaf2b2..2af7294 100644 --- a/dev/db/tmp_function.sql +++ b/dev/db/tmp_function.sql @@ -1,60 +1,60 @@ -CREATE OR REPLACE FUNCTION public.geteventsbydisponibility(userid integer, evstartdate date, evenddate date) - RETURNS SETOF typ_event - LANGUAGE plpgsql -AS $function$ - declare - myts record; - dailytimes record; - weekdays record; - retrec typ_event; - cdate date := evstartdate; - cweekday text; - begin - - for myts in select * from timesheets where startdate <= evenddate and enddate >= evstartdate order by startdate,enddate - loop - while evenddate >= cdate loop - select null,userid,'libre','free','free',cdate,cdate,null,null into retrec; - cweekday := to_char(cdate,'ID'); --- select json_object_keys(myts.rdvhours) into weekdays; - for weekdays in select json_object_keys(myts.rdvhours) as wday - loop - if weekdays.wday = cweekday then - for dailytimes in execute 'select json_array_elements(rdvhours->''' || cweekday || ''') as ctime from timesheets where id=' || myts.id - loop - retrec.id_event := regexp_replace(userid || to_char(cdate,'YYMMDD') || (dailytimes.ctime)::TEXT, '[^0-9]+', '', 'g'); - retrec.starttime := dailytimes.ctime; - execute 'select ''' || retrec.starttime || ''' + interval '''|| myts.hourinterval || ' minutes''' into retrec.endtime; - return next retrec; - end loop; - - end if; - end loop; - cdate := cdate + interval '1 day'; - end loop; - end loop; - return; - END; -$function$ -; - -CREATE OR REPLACE FUNCTION public.unaccent_string(input_string text) - RETURNS text - LANGUAGE plpgsql -AS $function$ - -BEGIN - input_string := lower(input_string); - input_string := translate(input_string, 'áàâãäåāăą', 'aaaaaaaaa'); - input_string := translate(input_string, 'èéêëēĕėęě', 'eeeeeeeee'); - input_string := translate(input_string, 'èéêëēĕėęě', 'eeeeeeeee'); - input_string := translate(input_string, 'ìíîïìĩīĭ' , 'iiiiiiii'); - input_string := translate(input_string, 'òóôõöōŏő' , 'oooooooo'); - input_string := translate(input_string, 'ùúûüũūŭů' , 'uuuuuuuu'); - input_string := replace(input_string,'ß','ss'); - input_string := replace(input_string,'ç','c'); - input_string := replace(input_string,'œ','oe'); -return input_string; -END; -$function$ -; +CREATE OR REPLACE FUNCTION public.geteventsbydisponibility(userid integer, evstartdate date, evenddate date) + RETURNS SETOF typ_event + LANGUAGE plpgsql +AS $function$ + declare + myts record; + dailytimes record; + weekdays record; + retrec typ_event; + cdate date := evstartdate; + cweekday text; + begin + + for myts in select * from timesheets where startdate <= evenddate and enddate >= evstartdate order by startdate,enddate + loop + while evenddate >= cdate loop + select null,userid,'libre','free','free',cdate,cdate,null,null into retrec; + cweekday := to_char(cdate,'ID'); +-- select json_object_keys(myts.rdvhours) into weekdays; + for weekdays in select json_object_keys(myts.rdvhours) as wday + loop + if weekdays.wday = cweekday then + for dailytimes in execute 'select json_array_elements(rdvhours->''' || cweekday || ''') as ctime from timesheets where id=' || myts.id + loop + retrec.id_event := regexp_replace(userid || to_char(cdate,'YYMMDD') || (dailytimes.ctime)::TEXT, '[^0-9]+', '', 'g'); + retrec.starttime := dailytimes.ctime; + execute 'select ''' || retrec.starttime || ''' + interval '''|| myts.hourinterval || ' minutes''' into retrec.endtime; + return next retrec; + end loop; + + end if; + end loop; + cdate := cdate + interval '1 day'; + end loop; + end loop; + return; + END; +$function$ +; + +CREATE OR REPLACE FUNCTION public.unaccent_string(input_string text) + RETURNS text + LANGUAGE plpgsql +AS $function$ + +BEGIN + input_string := lower(input_string); + input_string := translate(input_string, 'áàâãäåāăą', 'aaaaaaaaa'); + input_string := translate(input_string, 'èéêëēĕėęě', 'eeeeeeeee'); + input_string := translate(input_string, 'èéêëēĕėęě', 'eeeeeeeee'); + input_string := translate(input_string, 'ìíîïìĩīĭ' , 'iiiiiiii'); + input_string := translate(input_string, 'òóôõöōŏő' , 'oooooooo'); + input_string := translate(input_string, 'ùúûüũūŭů' , 'uuuuuuuu'); + input_string := replace(input_string,'ß','ss'); + input_string := replace(input_string,'ç','c'); + input_string := replace(input_string,'œ','oe'); +return input_string; +END; +$function$ +; diff --git a/dev/lastupload.txt b/dev/lastupload.txt index 07f8857..0ac7710 100644 --- a/dev/lastupload.txt +++ b/dev/lastupload.txt @@ -1 +1 @@ -1cbbaf4 - 2019-07-09 09:23:45 +0200 +138e08f - 2019-07-09 09:55:35 +0200 diff --git a/dev/lib.old/pgsql.pm b/dev/lib.old/pgsql.pm index 6206c35..7942c89 100644 --- a/dev/lib.old/pgsql.pm +++ b/dev/lib.old/pgsql.pm @@ -1,327 +1,327 @@ -package pgsql; -use strict; -use DBI; -use File::Basename; -#use DBD::mysql; -use Data::Dumper; -use Digest::SHA::PurePerl qw(sha256_hex); - -# use lib (dirname($0).'/../lib'); -use lib ('.'); -use lib ('./lib'); -use DBD::PgPP; -use URI::Encode qw(uri_encode uri_decode); -#use DBD::SQLite; -use Encode; - -sub new { - my $class = shift; - my $p = shift; - my $self = bless {}, $class; - #foreach my $x (keys(%{$p})){ - # $self->{$x} = $p->{$x}; - #} - $self->{dbtype} = 'PgPP'; #PgPP,SQLite - #$self->{dbhost} = 'sql629.your-server.de'; - $self->{dbhost} = 'localhost'; - $self->{dbname} = 'juridiglu_db'; - $self->{dbuser} = 'juridiglu_user'; - $self->{dbpassword} = 'hfdR2C9pK9rQV4cH'; - return $self; -} - -sub securetext(){ - my $self = shift; - my $text = shift; - $text =~ s/'/''/g; - return $text; -} - -sub dbquery(){ - my $self = shift; - my $key = shift; - my $stat = shift; - #my $retempty = shift; - my $retdata =(); - my $dbh = DBI->connect('DBI:'.$self->{dbtype}.':dbname='.$self->{dbname}.';host='.$self->{dbhost},$self->{dbuser},$self->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; - $stat = encode("utf8", $stat); - - open FILE,">>sql.log"; - print FILE "$stat\n"; - close FILE; - my $sth = $dbh->prepare($stat); - $sth->execute() or return $retdata->{error} = "dbquery: ".$stat; - while(my $data = $sth->fetchrow_hashref()) - { - if (exists $data->{$key}){ - foreach my $k (keys %{$data}){ - #if ($k ne $key){ - - $retdata->{$data->{$key}}{$k} =$data->{$k}; - #} - } - } - } - if (keys(%{$retdata}) == 0){ - $retdata =(); - } - $sth->finish(); - $dbh->disconnect(); - return $retdata; -} - -sub dbquerysorted(){ - my $self = shift; - my $stat = shift; - my $vw_info = shift; - my $retdata; - my $dbh = DBI->connect('DBI:'.$self->{dbtype}.':dbname='.$self->{dbname}.';host='.$self->{dbhost},$self->{dbuser},$self->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; - $stat = encode("utf8", $stat); - open FILE,">>sql.log"; - print FILE "$stat\n"; - close FILE; - my $sth = $dbh->prepare($stat); - - - $sth->execute() or return $retdata->{error} = "dbquery: ".$sth->errstr; - my $count = 0; - - while(my $data = $sth->fetchrow_hashref()) - { - #$retdata->{$count} = $data; - foreach my $k (keys %{$data}){ - $retdata->{$count}->{$k} = $data->{$k}; - } - $count++; - } - -# my $qstruct = (); -# my $num_fields = $sth->{NUM_OF_FIELDS}; - -# for ( my $i=0; $i< $num_fields; $i++ ) { -# $qstruct->{$i}->{name} = $sth->{NAME}->[$i]; -# #$qstruct->{$i}->{type} = $sth->{COMMENT}->[$i]; -# #$qstruct->{$i}->{precision} = $sth->{PRECISION}->[$i]; -# } - - $sth->finish(); - $dbh->disconnect(); - - return $retdata; -} - -sub dbexec(){ - my $self = shift; - my $stat = shift; - my $retdata; - my $dbh = DBI->connect('DBI:'.$self->{dbtype}.':dbname='.$self->{dbname}.';host='.$self->{dbhost},$self->{dbuser},$self->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; - $stat = decode("UTF-8", $stat); - open FILE,">>sql.log"; - print FILE "$stat\n"; - close FILE; - my $sth = $dbh->prepare($stat); - $retdata->{success} = $dbh->do($stat) or return $retdata->{error} = "dbexec ".$dbh->errstr. "- SQL: ".$stat; - $dbh->disconnect(); - return $retdata; -} - -#sub dbqueryarray(){ -# my $self = shift; -# my $stat = shift; -# my @retdata = (); -# my $dbh = DBI->connect('DBI:SQLite:dbname='.$self->{dbfile},"","",{PrintError=>1,RaiseError=>1,AutoCommit=>1,mysql_enable_utf8 => 1}) or return $retdata[0]->{error} = "dbquery Connection Error!".$!; -# #$stat = encode("utf8", $stat); -# #open FILE,">>/tmp/sql.log"; -# #print "$stat\n"; -# # close FILE; -# my $sth = $dbh->prepare($stat); -# -# $sth->execute() or print "dbquery: ".$sth->errstr; -# my $count = 0; -# -# while(my $valdata = $sth->fetchrow_arrayref()) -# { -# if ($valdata == undef){ last;} -# my @rdata = (); -# foreach my $k (@{$valdata}){ -# push @rdata,decode( "utf8", $k); -# } -# push @retdata,\@rdata; -# } -# -# $sth->finish(); -# $dbh->disconnect(); -# #%retdata = sort {$a <=> $b} keys %retdata; -# return @retdata; -#} - - -sub create_ddl_insert(){ - my $self = shift; - my $data = shift; - my $fields = (); - my @ddl = (); - foreach my $f (keys(%{$data})){ - if ($f =~ /\_/){ - my $t = substr($f,0,index($f,"_")); - my $c = substr($f,length($t)+1); - #my ($t,$c) = $f =~ m/(.+)\_(.+)/; - $fields->{$t}->{$c} = $data->{$f}; - } - } - - foreach my $tb (keys(%{$fields})){ - my @sqlcol = (); - my @sqlval = (); - foreach my $c (keys(%{$fields->{$tb}})){ - my $v = $fields->{$tb}->{$c}; - $v =~ s/'/''/g; - push (@sqlcol,$c); - if ($v eq ''){ - $v = 'null'; - } else { - $v = "'".$v."'"; - } - push (@sqlval,$v); - } - push(@ddl,"INSERT INTO ".$tb." (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");"); - } - return @ddl; -} - -sub create_ddl_insert_json(){ - my $self = shift; - my $schema = shift; - my $table = shift; - my $columns = shift; - my $data = shift; - my @ddl = (); - my @sqlcol = (); - my @sqlval = (); - foreach my $c (keys(%{$data})){ - #if (exists($columns->{$c})){ - push (@sqlcol,'"'.$c.'"'); - my $v = $data->{$c}; - - if ($v eq ''){ - $v = 'null'; - }elsif ($v =~ /^data:.+;base64,/){ - $v =~ s/'/''/g; - $v = "'".$v."'"; - } - else { - $v= uri_decode($v); - $v =~ s/'/''/g; - if ($columns->{$c}->{data_type} eq "ARRAY"){ - if (ref($data->{$c}) eq "ARRAY"){ - $v = "{\"".join("\",\"",@{$data->{$c}})."\"}"; - } - else { - $v = 'null'; - } - $v =~ s/""/null/g; - }elsif ($columns->{$c}->{data_type} =~ /^timestamp/ ){ - - }elsif($columns->{$c}->{data_type} eq "date"){ - - }elsif($columns->{$c}->{data_type} eq "time"){ - - } - $v = "'".$v."'"; - } - push (@sqlval,$v); - #} - } - return "INSERT INTO ".$schema.".\"".$table."\" (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");"; -} - -sub create_ddl_update(){ - my $self = shift; - my $data = shift; - my $fields = (); - my @ddl = (); - foreach my $f (keys(%{$data})){ - if ($f =~ /^ident_/){ - my $fx = substr($f,6); - my $t = substr($fx,0,index($fx,"_")); - my $c = substr($fx,length($t)+1); - #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/; - $fields->{$t}->{cond}->{$c} = $data->{$f}; - } elsif ( ($f !~ /^ident/) && ($f =~ /.+\_.+/) ){ - my $t = substr($f,0,index($f,"_")); - my $c = substr($f,length($t)+1); - #my ($t,$c) = $f =~ m/^(.+)\_([a-z0-9|\_]+)/; - $fields->{$t}->{fields}->{$c} = $data->{$f}; - } - } - foreach my $tb (keys(%{$fields})){ - my @sqlupd = (); - my @sqlcond = (); - foreach my $c (keys(%{$fields->{$tb}->{fields}})){ - - my $v = $fields->{$tb}->{fields}->{$c}; - $v =~ s/'/''/g; - if ($v eq ''){ - $v = 'null'; - } else { - $v = "'".$v."'"; - } - push (@sqlupd,$c."=".$v); - } - foreach my $c (keys(%{$fields->{$tb}->{cond}})){ - my $v = $fields->{$tb}->{cond}->{$c}; - $v =~ s/'/''/g; - if ($v eq ''){ - $v = 'null'; - } else { - $v = "'".$v."'"; - } - push (@sqlcond,$c."=".$v); - } - push(@ddl,"UPDATE ".$tb." SET ".join(",",@sqlupd)." WHERE ".join(" AND ",@sqlcond).";"); - } - - return @ddl; -} - -sub create_ddl_delete(){ - my $self = shift; - my $data = shift; - my $fields = (); - my @ddl = (); - my @refcols = (); - my $refdata = (); - foreach my $f (keys(%{$data})){ - if ($f =~ /^ident_/){ - my ($t,$c) = $f =~ m/ident_(.+)\_(.+)/; - - $fields->{$t}->{cond}->{$c} = $data->{$f}; - push(@refcols,"'".$c.'_'.$t."'"); - $refdata->{$c.'_'.$t} = $data->{$f}; - } - } - -# my $ref = $self->dbquerysorted("select TABLE_NAME,COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where COLUMN_NAME in (".join(",",@refcols).") and CONSTRAINT_SCHEMA='".$self->{dbname}."';"); -# foreach my $r (keys(%{$ref})){ -# my $refv = $refdata->{$ref->{$r}->{COLUMN_NAME}}; -# if ($refv eq ''){ -# $refv = ' is null'; -# } else { -# $refv =~ s/'/''/g; -# $refv = "='".$refv."'"; -# } -# push(@ddl,"DELETE from ".$ref->{$r}->{TABLE_NAME}." where ".$ref->{$r}->{COLUMN_NAME}.$refv.";"); -# } - foreach my $tb (keys(%{$fields})){ - my @sqlcond = (); - foreach my $c (keys(%{$fields->{$tb}->{cond}})){ - my $v = $fields->{$tb}->{cond}->{$c}; - $v =~ s/'/''/g; - push (@sqlcond,$c."='".$v."'"); - } - push(@ddl,"DELETE FROM ".$tb." WHERE ".join(" AND ",@sqlcond).";"); - } - return @ddl; -} - -1; +package pgsql; +use strict; +use DBI; +use File::Basename; +#use DBD::mysql; +use Data::Dumper; +use Digest::SHA::PurePerl qw(sha256_hex); + +# use lib (dirname($0).'/../lib'); +use lib ('.'); +use lib ('./lib'); +use DBD::PgPP; +use URI::Encode qw(uri_encode uri_decode); +#use DBD::SQLite; +use Encode; + +sub new { + my $class = shift; + my $p = shift; + my $self = bless {}, $class; + #foreach my $x (keys(%{$p})){ + # $self->{$x} = $p->{$x}; + #} + $self->{dbtype} = 'PgPP'; #PgPP,SQLite + #$self->{dbhost} = 'sql629.your-server.de'; + $self->{dbhost} = 'localhost'; + $self->{dbname} = 'juridiglu_db'; + $self->{dbuser} = 'juridiglu_user'; + $self->{dbpassword} = 'hfdR2C9pK9rQV4cH'; + return $self; +} + +sub securetext(){ + my $self = shift; + my $text = shift; + $text =~ s/'/''/g; + return $text; +} + +sub dbquery(){ + my $self = shift; + my $key = shift; + my $stat = shift; + #my $retempty = shift; + my $retdata =(); + my $dbh = DBI->connect('DBI:'.$self->{dbtype}.':dbname='.$self->{dbname}.';host='.$self->{dbhost},$self->{dbuser},$self->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; + $stat = encode("utf8", $stat); + + open FILE,">>sql.log"; + print FILE "$stat\n"; + close FILE; + my $sth = $dbh->prepare($stat); + $sth->execute() or return $retdata->{error} = "dbquery: ".$stat; + while(my $data = $sth->fetchrow_hashref()) + { + if (exists $data->{$key}){ + foreach my $k (keys %{$data}){ + #if ($k ne $key){ + + $retdata->{$data->{$key}}{$k} =$data->{$k}; + #} + } + } + } + if (keys(%{$retdata}) == 0){ + $retdata =(); + } + $sth->finish(); + $dbh->disconnect(); + return $retdata; +} + +sub dbquerysorted(){ + my $self = shift; + my $stat = shift; + my $vw_info = shift; + my $retdata; + my $dbh = DBI->connect('DBI:'.$self->{dbtype}.':dbname='.$self->{dbname}.';host='.$self->{dbhost},$self->{dbuser},$self->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; + $stat = encode("utf8", $stat); + open FILE,">>sql.log"; + print FILE "$stat\n"; + close FILE; + my $sth = $dbh->prepare($stat); + + + $sth->execute() or return $retdata->{error} = "dbquery: ".$sth->errstr; + my $count = 0; + + while(my $data = $sth->fetchrow_hashref()) + { + #$retdata->{$count} = $data; + foreach my $k (keys %{$data}){ + $retdata->{$count}->{$k} = $data->{$k}; + } + $count++; + } + +# my $qstruct = (); +# my $num_fields = $sth->{NUM_OF_FIELDS}; + +# for ( my $i=0; $i< $num_fields; $i++ ) { +# $qstruct->{$i}->{name} = $sth->{NAME}->[$i]; +# #$qstruct->{$i}->{type} = $sth->{COMMENT}->[$i]; +# #$qstruct->{$i}->{precision} = $sth->{PRECISION}->[$i]; +# } + + $sth->finish(); + $dbh->disconnect(); + + return $retdata; +} + +sub dbexec(){ + my $self = shift; + my $stat = shift; + my $retdata; + my $dbh = DBI->connect('DBI:'.$self->{dbtype}.':dbname='.$self->{dbname}.';host='.$self->{dbhost},$self->{dbuser},$self->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!; + $stat = decode("UTF-8", $stat); + open FILE,">>sql.log"; + print FILE "$stat\n"; + close FILE; + my $sth = $dbh->prepare($stat); + $retdata->{success} = $dbh->do($stat) or return $retdata->{error} = "dbexec ".$dbh->errstr. "- SQL: ".$stat; + $dbh->disconnect(); + return $retdata; +} + +#sub dbqueryarray(){ +# my $self = shift; +# my $stat = shift; +# my @retdata = (); +# my $dbh = DBI->connect('DBI:SQLite:dbname='.$self->{dbfile},"","",{PrintError=>1,RaiseError=>1,AutoCommit=>1,mysql_enable_utf8 => 1}) or return $retdata[0]->{error} = "dbquery Connection Error!".$!; +# #$stat = encode("utf8", $stat); +# #open FILE,">>/tmp/sql.log"; +# #print "$stat\n"; +# # close FILE; +# my $sth = $dbh->prepare($stat); +# +# $sth->execute() or print "dbquery: ".$sth->errstr; +# my $count = 0; +# +# while(my $valdata = $sth->fetchrow_arrayref()) +# { +# if ($valdata == undef){ last;} +# my @rdata = (); +# foreach my $k (@{$valdata}){ +# push @rdata,decode( "utf8", $k); +# } +# push @retdata,\@rdata; +# } +# +# $sth->finish(); +# $dbh->disconnect(); +# #%retdata = sort {$a <=> $b} keys %retdata; +# return @retdata; +#} + + +sub create_ddl_insert(){ + my $self = shift; + my $data = shift; + my $fields = (); + my @ddl = (); + foreach my $f (keys(%{$data})){ + if ($f =~ /\_/){ + my $t = substr($f,0,index($f,"_")); + my $c = substr($f,length($t)+1); + #my ($t,$c) = $f =~ m/(.+)\_(.+)/; + $fields->{$t}->{$c} = $data->{$f}; + } + } + + foreach my $tb (keys(%{$fields})){ + my @sqlcol = (); + my @sqlval = (); + foreach my $c (keys(%{$fields->{$tb}})){ + my $v = $fields->{$tb}->{$c}; + $v =~ s/'/''/g; + push (@sqlcol,$c); + if ($v eq ''){ + $v = 'null'; + } else { + $v = "'".$v."'"; + } + push (@sqlval,$v); + } + push(@ddl,"INSERT INTO ".$tb." (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");"); + } + return @ddl; +} + +sub create_ddl_insert_json(){ + my $self = shift; + my $schema = shift; + my $table = shift; + my $columns = shift; + my $data = shift; + my @ddl = (); + my @sqlcol = (); + my @sqlval = (); + foreach my $c (keys(%{$data})){ + #if (exists($columns->{$c})){ + push (@sqlcol,'"'.$c.'"'); + my $v = $data->{$c}; + + if ($v eq ''){ + $v = 'null'; + }elsif ($v =~ /^data:.+;base64,/){ + $v =~ s/'/''/g; + $v = "'".$v."'"; + } + else { + $v= uri_decode($v); + $v =~ s/'/''/g; + if ($columns->{$c}->{data_type} eq "ARRAY"){ + if (ref($data->{$c}) eq "ARRAY"){ + $v = "{\"".join("\",\"",@{$data->{$c}})."\"}"; + } + else { + $v = 'null'; + } + $v =~ s/""/null/g; + }elsif ($columns->{$c}->{data_type} =~ /^timestamp/ ){ + + }elsif($columns->{$c}->{data_type} eq "date"){ + + }elsif($columns->{$c}->{data_type} eq "time"){ + + } + $v = "'".$v."'"; + } + push (@sqlval,$v); + #} + } + return "INSERT INTO ".$schema.".\"".$table."\" (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");"; +} + +sub create_ddl_update(){ + my $self = shift; + my $data = shift; + my $fields = (); + my @ddl = (); + foreach my $f (keys(%{$data})){ + if ($f =~ /^ident_/){ + my $fx = substr($f,6); + my $t = substr($fx,0,index($fx,"_")); + my $c = substr($fx,length($t)+1); + #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/; + $fields->{$t}->{cond}->{$c} = $data->{$f}; + } elsif ( ($f !~ /^ident/) && ($f =~ /.+\_.+/) ){ + my $t = substr($f,0,index($f,"_")); + my $c = substr($f,length($t)+1); + #my ($t,$c) = $f =~ m/^(.+)\_([a-z0-9|\_]+)/; + $fields->{$t}->{fields}->{$c} = $data->{$f}; + } + } + foreach my $tb (keys(%{$fields})){ + my @sqlupd = (); + my @sqlcond = (); + foreach my $c (keys(%{$fields->{$tb}->{fields}})){ + + my $v = $fields->{$tb}->{fields}->{$c}; + $v =~ s/'/''/g; + if ($v eq ''){ + $v = 'null'; + } else { + $v = "'".$v."'"; + } + push (@sqlupd,$c."=".$v); + } + foreach my $c (keys(%{$fields->{$tb}->{cond}})){ + my $v = $fields->{$tb}->{cond}->{$c}; + $v =~ s/'/''/g; + if ($v eq ''){ + $v = 'null'; + } else { + $v = "'".$v."'"; + } + push (@sqlcond,$c."=".$v); + } + push(@ddl,"UPDATE ".$tb." SET ".join(",",@sqlupd)." WHERE ".join(" AND ",@sqlcond).";"); + } + + return @ddl; +} + +sub create_ddl_delete(){ + my $self = shift; + my $data = shift; + my $fields = (); + my @ddl = (); + my @refcols = (); + my $refdata = (); + foreach my $f (keys(%{$data})){ + if ($f =~ /^ident_/){ + my ($t,$c) = $f =~ m/ident_(.+)\_(.+)/; + + $fields->{$t}->{cond}->{$c} = $data->{$f}; + push(@refcols,"'".$c.'_'.$t."'"); + $refdata->{$c.'_'.$t} = $data->{$f}; + } + } + +# my $ref = $self->dbquerysorted("select TABLE_NAME,COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where COLUMN_NAME in (".join(",",@refcols).") and CONSTRAINT_SCHEMA='".$self->{dbname}."';"); +# foreach my $r (keys(%{$ref})){ +# my $refv = $refdata->{$ref->{$r}->{COLUMN_NAME}}; +# if ($refv eq ''){ +# $refv = ' is null'; +# } else { +# $refv =~ s/'/''/g; +# $refv = "='".$refv."'"; +# } +# push(@ddl,"DELETE from ".$ref->{$r}->{TABLE_NAME}." where ".$ref->{$r}->{COLUMN_NAME}.$refv.";"); +# } + foreach my $tb (keys(%{$fields})){ + my @sqlcond = (); + foreach my $c (keys(%{$fields->{$tb}->{cond}})){ + my $v = $fields->{$tb}->{cond}->{$c}; + $v =~ s/'/''/g; + push (@sqlcond,$c."='".$v."'"); + } + push(@ddl,"DELETE FROM ".$tb." WHERE ".join(" AND ",@sqlcond).";"); + } + return @ddl; +} + +1; diff --git a/dev/lib.old/session.pm b/dev/lib.old/session.pm index bfa0a2e..cdf775f 100644 --- a/dev/lib.old/session.pm +++ b/dev/lib.old/session.pm @@ -1,89 +1,89 @@ -package session; - -use strict; -use File::Basename; -use Digest::SHA qw(sha256_hex); -use lib ('.'); -use lib ('.\\lib'); -use dksdb; -use Data::Dumper; - -sub new { - my $class = shift; - my $self = bless {}, $class; - $self->{db} = dksdb->new(); - return $self; -} - -sub checklogin(){ - my $self = shift; - my $login = shift; - my $password = shift; - my $pwd = sha256_hex($password); - my $sid = ""; - - my $sql = "select id from users where username='".$login."' and userpassword='".$pwd."' and activationkey is null and userblocked is null;"; - my $res = $self->{db}->dbquerysorted($sql); - if(keys(%{$res}) == 1){ - $sid = $self->createsessionid(); - $self->{db}->dbexec("UPDATE users set sessionid='".$sid."',remoteaddr='".$ENV{REMOTE_ADDR}."',lastlogin=CURRENT_TIMESTAMP,useragent='".$ENV{HTTP_USER_AGENT}."' WHERE username='".$login."' and userpassword='".$pwd."'"); - } - return $sid; -} - -sub getsession($){ - my $self = shift; - my $sid = shift; - my $sql = "SELECT us.id,us.usersurname,us.userprename,us.username,us.usergroup, - string_agg(CASE WHEN srv.expiration >= CURRENT_DATE or (prc.minmonth=0 and srv.expiration is null) then srv.service else null end,',') as service_valid, - string_agg(CASE WHEN srv.expiration < CURRENT_DATE then srv.service else null end,',') as service_expired - from users us - left join userservices srv on (srv.id_user=us.id) - left join appprices prc on (prc.id_app=srv.id_app) - where us.sessionid='".$sid."' and us.userblocked is null and us.activationkey is null and useragent='".$ENV{'HTTP_USER_AGENT'}."' and remoteaddr='".$ENV{'REMOTE_ADDR'}."' - group by us.id;"; - my $res= $self->{db}->dbquerysorted($sql); - my $ret = undef; - if (keys(%{$res}) > 0){ - return $res->{0}; - } - return $ret; -} - -sub createsessionid(){ - my $self = shift; - my $randnum =""; - my $i =0; - while ($i<50) - { - my $r1 = int(rand(3)) + 1 ; - if ($r1 == 1){ $randnum .= chr(int(rand(9) +48));$i++;} - if ($r1 == 2){ $randnum .= chr(int(rand(24) +65));$i++;} - if ($r1 == 3){ $randnum .= chr(int(rand(24) +97));$i++;} - } - return $randnum; -} - -sub deletesession(){ - my $self = shift; - my $sid = shift; - if ($sid ne ''){ - $self->{db}->dbexec("UPDATE users set sessionid=null where sessionid='".$sid."'"); - } -} - -sub resetpasswd(){ - -} - -sub registeruser(){ - -} - -sub randompasword(){ - my $self = shift; - my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9); - my $randpassword = join '', map $alphanumeric[rand @alphanumeric], 0..12; - return $randpassword; -} +package session; + +use strict; +use File::Basename; +use Digest::SHA qw(sha256_hex); +use lib ('.'); +use lib ('.\\lib'); +use dksdb; +use Data::Dumper; + +sub new { + my $class = shift; + my $self = bless {}, $class; + $self->{db} = dksdb->new(); + return $self; +} + +sub checklogin(){ + my $self = shift; + my $login = shift; + my $password = shift; + my $pwd = sha256_hex($password); + my $sid = ""; + + my $sql = "select id from users where username='".$login."' and userpassword='".$pwd."' and activationkey is null and userblocked is null;"; + my $res = $self->{db}->dbquerysorted($sql); + if(keys(%{$res}) == 1){ + $sid = $self->createsessionid(); + $self->{db}->dbexec("UPDATE users set sessionid='".$sid."',remoteaddr='".$ENV{REMOTE_ADDR}."',lastlogin=CURRENT_TIMESTAMP,useragent='".$ENV{HTTP_USER_AGENT}."' WHERE username='".$login."' and userpassword='".$pwd."'"); + } + return $sid; +} + +sub getsession($){ + my $self = shift; + my $sid = shift; + my $sql = "SELECT us.id,us.usersurname,us.userprename,us.username,us.usergroup, + string_agg(CASE WHEN srv.expiration >= CURRENT_DATE or (prc.minmonth=0 and srv.expiration is null) then srv.service else null end,',') as service_valid, + string_agg(CASE WHEN srv.expiration < CURRENT_DATE then srv.service else null end,',') as service_expired + from users us + left join userservices srv on (srv.id_user=us.id) + left join appprices prc on (prc.id_app=srv.id_app) + where us.sessionid='".$sid."' and us.userblocked is null and us.activationkey is null and useragent='".$ENV{'HTTP_USER_AGENT'}."' and remoteaddr='".$ENV{'REMOTE_ADDR'}."' + group by us.id;"; + my $res= $self->{db}->dbquerysorted($sql); + my $ret = undef; + if (keys(%{$res}) > 0){ + return $res->{0}; + } + return $ret; +} + +sub createsessionid(){ + my $self = shift; + my $randnum =""; + my $i =0; + while ($i<50) + { + my $r1 = int(rand(3)) + 1 ; + if ($r1 == 1){ $randnum .= chr(int(rand(9) +48));$i++;} + if ($r1 == 2){ $randnum .= chr(int(rand(24) +65));$i++;} + if ($r1 == 3){ $randnum .= chr(int(rand(24) +97));$i++;} + } + return $randnum; +} + +sub deletesession(){ + my $self = shift; + my $sid = shift; + if ($sid ne ''){ + $self->{db}->dbexec("UPDATE users set sessionid=null where sessionid='".$sid."'"); + } +} + +sub resetpasswd(){ + +} + +sub registeruser(){ + +} + +sub randompasword(){ + my $self = shift; + my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9); + my $randpassword = join '', map $alphanumeric[rand @alphanumeric], 0..12; + return $randpassword; +} 1; \ No newline at end of file diff --git a/dev/lib.old/testfiledata.pl b/dev/lib.old/testfiledata.pl index 87624b8..c2adf04 100644 --- a/dev/lib.old/testfiledata.pl +++ b/dev/lib.old/testfiledata.pl @@ -1,9 +1,9 @@ -#!/usr/bin/perl - -use strict; -# use lib ('/home/kilian/perl5/lib/perl5'); -use lib ('./lib'); -use dkssavefile; - -my $sf = dkssavefile->new(); +#!/usr/bin/perl + +use strict; +# use lib ('/home/kilian/perl5/lib/perl5'); +use lib ('./lib'); +use dkssavefile; + +my $sf = dkssavefile->new(); $sf->saveb64toFile('test','pathtofile','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAPw0lEQVR4Xu1dC3SbxZX+7vySnQdxmiZdXk5DSgstKRQopQvplhyW7pZCQyzHpW0W1pZk05Knf0NhoYBgaWkglkx4FGxJeUEo2JYDaYE2LQu73S0tPaeURx+nhe6GQCEJOdhpQmzpn7tnZCsVsSVL1oz0hzLn5PicaOabe+/3P+4/c+8dguG2MNhxZDXLaUkrxZmpRMrDFoTXIT6TiT3ZIggmkixTJMQcMI4lsDj4O8GRoG190daEYbErBk8mZ25oeMhyanb8D4AzNc3jgOjGRLT13zXhuQ7GKCF1X7vt7yhpvaFR610MXtoXa+vWiOkqKKOE+PzhAAhRjRq/TkBLb8zeqhHTVVBmCQmGt4FxnkaN/0Tg+t5Y2680YroKyhghDZffdYQzNLgTjMn6NOYXJh/wzr///hUD+jDdhWSMkPpA+IsMPKJVXeZnEvE2XQ6CVtF0gRkjxBeMbADzpboEBSCZ0NMXtS/WiOk6KHOEBMK7AMzSqHESRHcloq2tGjFdB2WEEF8gMh/gxwEcoU1jwtuQfE0i3tahDdOFQKYIWQ2wupK9unRmYACCl/R1tX1fF6YbcQwREv4pgPmaFd7DzOf2xdt+rRnXVXDaCVno7zjRQ3IbgNlaNSW8OktMndvZeVlSK67LwLQTUhcMNxEjAmC6Zl1/dcrsgTNCoZDUjOsqOP2EBMLrCfhXzVoyQA8lYq1f1ozrOjithCz0rz7GQ161NP5pzZpKYv5ub7xtmWZc18FpJaQuGDmXmGMAjtOsqQPGZYm4rbDf1U0rIT5/5AYQhwxYLCUYF/TE7R8ZwHYVpDZCFvpXT/NQVRfAJpY2hlKcnPtI/KrXXGU9A8JoI6TO3/4JItoA4BPa5WTstAgf647Ze7RjuwxQGyH1wchXGBzTu9x+0Fp/Ey6v0lYLIQ0NoSqnZnoI4H8zccER8FhvzP6CCWy3YWohxBdcW0uc6mTgfBMKMuG2vqj9DRPYbsPUQki9P3wGE9Tq7kwzClJzItaqc2/ejJgaUEsmZEEo5Jm5Y1ozM92tQZ4xIYTg+T1dbSqc6F3fSiZEubte4b2VGV8zZK1BME5KxO2XDeEbgW1sDE1SwLsmV0+uYo9XDopqS4hTiHkqg45k4uMJsEA4GQzV9xgAg6Su8AWAnOiinS+wZg4gnjTwdZ4x1OsWMK8SLm86UCM1NM0aSvKgp4otcqYzxBQlmEhBgHgOBD7EoAMC/HFmzGQCE8MC8MkRBY4C0gYvqJEvEHkYQI8j5ZMzeO+u9etDBwoame7E5POHF4DoicLHFN3z54mY/fdFjyppAJOv+fYzWMpbCTgNQBIMCcIHdHmmucQjXyCcibl9gwkbiUQ3D3pe7tu47M3xdGppude729l3FQCDoZ28JRFrqxtPFl2/h0Ih8dz2motAaAcwVxduoTjZhGTG9IP4+2Cr0xp46+nu7tBQLrD0LT049BjAnyl0wmL7MXBTX8y+odhxE+mvLrBdqb80gmgNATUTwSh1zFiEZDD/DMZmi2W8e90VvxlrovqWNR9lRzwLoLpUQXLewqBAb6w1bgo/g7tkydqa/ZOcbxD4aqiXbYVaPkIyIv2MSd7QF71Cbcu+o/kC4a8CuN+s7OKcRGzVf5qZgwkgVikTHubbAV5cSTKUjoUQohZYXlVXTm+07b5sw/iCHQmwNPl8d4jE6b3RVc+ZIQSoD7SfxkAHQJ81NUcxuIURMozYD6JgIrqqV11VDS3fme44VS8AqC1mwiL7breqq+d13730L0WOK6i7L9DxWSJ5JzNOLmhAGToVQ4jyvl9n0Of6YitfWBwM/4NkGHqUHNT8uRpn4NPFueKFWa0uGPEReK3K0ipsRHl6FUlI2gt/yurH+U4NlOejXF5zjWij1d/fnM/TK3byhobwZKcGTUg/pvQF8hUrR67+xRMyjLQUwGUATtElyJg4xDfuqd1785OhUErHPF9sWTPL44jlBFyvA88ExkQJUbKo+Ki/JmSakI65ydo7e1N395ecUuEXNUdOFZKvAdBQKpbJ8aUQYlKuNLYAn9cTs59QTkQpk9UHIosYvBrACWq9x/TyRwmyvuJmQgYZ1hnKgZiogup9IadjJTPUx57uSMqJipVjHL0EwtVU7w9vZcKFmtF1wO22kji1e6P96kTA1C4mZOomEP7FjS/vQ3TaDcbVKu6MGprWfiBlpc4mxk3GX9LFWfa/Lemp6163QiX+FNXq/JGzCLwGhLNc/Hj6q06Ep5JCLt7aecXugxtUwx4IrSaQcglL3rgqyoJjdGZgw5QDnhXFJnjW+9vrmehOAGof4nBpmxMxe4kSdpThfYHwNwHcaNyDGsdUDAqnrCnXbe28bH8hVlVVI1I1O653s0ubWw/aZlVX+dSKxJh3gi8YuQ7MipTK3SlFuLzp9wWn7gVwWIYKMfAbEqIx0bXqmZwG9wXb7wNT+jaqRCNQXW+sdUu+udX+xZv89rks+X6ADUW8lEt7jkpHXJmTkEWNkfcJi1Wkx8fKJVLWPPuJcU5v3P5lrrnVO69KiiAz3TL8aXH4Nwbuy/NIYqoPdnyZmTeXX1V6iQRf1NtlvzjW3MNxYHwtQIvKL5vZGfO+I9TGjZfl4wycalaMd6Iz8BMpuenhdW2vZP+i9rt/vb2mhQgqw1d9db/rWl5C0kEMct8KMNaUWfNu9jrL+u65cmdm3vSuHvhWMNcDmFpmeco23bhe1OJgZIFk/o+ySZRebKJvTXf6b87sg9Q1hc8hge8COLFc7jgDvxeMHzKll+qnlUv/cQkZyftQyfomdwYPfWZdm4i33qL+0xfsCIP5cgBV5TIKgJ9bTmpRSnjnEvFGAB8u19zjEqIiExlCZdYuKJtQjIsFyxccEl0gnF2uedNbCsQPvD3ZG3jsjhWDqiKeGLJi5VzrG5eQhpaODzpSqkQcnYXIcttY1TRh/BjApyqw/HFzImZfly1cvb/dZlKudXnu0PEJ8Xec6JB8yGULj2ZuGqKOlBy6LTuXseHS8LGOV7n+5YlKGZcQnz98HgijYrLMWKTyqAz8iCBbErEr/i8jjS8QuQDguwDMMS1hXkJUqpqcXmMzI/2C/ZtphB9bjmdl97oVByM264Lhi4jTnt7RJu2Ql5C6S++cSd7kAwB/zqQQLsX+JRNd1RdtPRjZP/K0+JbGOsSjVM9PSHP7CSTpt+Xy/V1HDON3LGhpNimLGiPHCYsDANQ2hfaWk5B0WP4rNarYi+HYXe066QZ8C0TNiWhrTwZYZUf1i2knEpFKRFXxzdpaTkLOX762etK+5Doi+oq22Q5foEEiajq5tv/B7EwztSkmZ2z/CDtiOQC1VVFyIEVOQoZzPwb/UIFvAffSxrRilmfKPWMVURtOXtr/TyCcB06XF1FpbCr9TaU2qPi1gmLYchJSpthd9xo/t2R3pjh5zSPxq/bmE17tYjKcM8H4EBGfDcm1IFIEVYExHZTejVX/VF1KdUJEelMnJyF1gcjNBLXn8F4bbQF6EKwqpBaXGayeOim5fwqGPMdbgj2OoxJHqRZCzhRM6Up5eQgJv0jASe/RkdMCT0tg5ZaY/QudNhqTkIZA+MMOoN4f77X8Fvgtg2/oi9k9pYa7ZqYZO+rEH1kO4rXvsVGQBd4A83esvbPv0BEUPjYhgfanyrWYVpDKY3dSd7AqRVtwUn4Jc403dJCAu4esqd8sNI4sF+AoQlRoqSNSKrhAJcm7sFE/gG9LB51CYCUonWJQzs2rXDZRhQWeYI+zJHvruVgDjo5cHD4Vp7NQv7nYCUvoL8G8zSJa1h2z/5jBqQuEN9Hw13JBfn4J8xc4lF5zHP78w+vt5wsc8I5u7yBExWKRxU/T8N61W5qqZL2DiJf1RtseHUuoOn/7ZpetKKidx68movZDxb7sDxKiitDM2D5tIxGpr0w3XG3qQ+kVMG9IxNvypqBdcsltU/dVWz8A4xy3XEUjcqy2gFuLKZyTJmQk3CcExpUuyaXYAcY2kLwxe6Mon7HTadop74Mg+meXkbJVCrp+S1erqngxbiN1de2vtpYzQ70cyxbukkOy3Qw8DqJ12Uve42ox0sHXEjkakh9w4Z3yosq/6Y23do/3CKP0EgmxbaiaaKG2TBGwDULcPuVA8qebNl25r9CBh/ZLh5kK3AvG6RPFMDTuTQbuSllTV+dzjckXDO+vMBlqVW3AIlzYE7X/S4cxFje3ny1lOmlH1bpyU1OVlX5oAXa2p5gtoFuSPnfXOAOzdVZsSKe1EXcBmOcmRoZloZdUUlQi1rrpUNncQsifEzFb1RzU2hYFwmcKQBXM+YhWYD1gBwjYJAZqv5695OIGQpR7+2giZhvJBPb5w3UgrNOxm6eHh0NQmJ8h0OWZXBh3EMLoSsRtVarDSPMF2y8Gk0p5K3mL1YiAjJ0kOCREcrMbCJHMWNoXt+8xomzGJQ5GFoNZxVXpPFtRr8hEG11BiGS6cEu89TG92o1GGw52UwWfWfv7SpfsriAE5JmTiK7YoUupfDh1ze0X0rBLbDwsdCL6uIGQwUTMLuuexnCsLlSNxeMnYjSTYypOCBGe743aZutujbIg0+Lm8FnSQQeIVNqDa1rFCQHE44nYKiPHXIxnZV9T5HQIuQGgj4/Xt1y/V5yQSp8NMlyVlFT+S9nS1vKRW3lCmFv64m1qiaNibfhO4d6RF/24OTMmBa04IcNV49p+YlLJQrAbmtac5BCtr/Q7peKESIdmbFnf+lYhRjPdJx1ZODi4hYB/ND1XLvyKEqKW3T0DOKq72367UgY4dN4Lvn7LjOrB6k4QVNkOFXNb1lZRQgA8bQ3UfkZHgJlOq6nC/AcmJa9jUFu5S1RVlhBGTyJuu7Js68jJpcsAVkk579NJuHu9LMa1ibj97XIpW+w86UicHTWXGDoffkxxKnqHENDYG7PVca2ubiP1Xr4H4EjTglaUEEvKebkOizGteLH4vuaOT7GUqsSI0RQNRchAVtpVJv2qHCfMDAHyhELjroo1oIn+DYHw+yXhSWaopZZiPiBVMo4ql67+ZurYJ0F4mSX/nkg8C5a/s9j7M1rov+MYD6XmEuGDkvmjpPYKiE4Hp48xyuTITWGgighe8MEUrFJ13sFe55OlBCaXKsBEx/sC7X0AqRVjlY6mmjJuCpw29hAIB8AYZCBJzAMg+l8QPQ+WO0laz6Yg9j6cVZQgW478lRwuDR+bqmZVLOwEODiaCLOI6SgGjlHk8Mjum/qrzg4aIVCRqK4E5Znk8+MftaqrLzZ1WMtEjV3IuMbGdZMGxFvXADwfhDfB2A5gDwN7CPyatMR2bzL5+rzj9u8s9nzIYm67UbKqSg8eSwpJqTlsCZIOz7KEnAkIh1keB6Ij1CAGvCQxF5S+41Q7TR1Lt6d24HZdR1EUYsjDoc//A7equg+eDmqjAAAAAElFTkSuQmCC'); \ No newline at end of file diff --git a/js/annuaire.js b/js/annuaire.js index a81cd4d..f83f6dc 100644 --- a/js/annuaire.js +++ b/js/annuaire.js @@ -1,30 +1,30 @@ - - -function imsg(data){ - var tmp = h1(data); - window.location.href=tmp; -} - -function h1(s) { - var n = 0; - var r = ""; - for( var i = 0; i < s.length; i++){ - n = s.charCodeAt( i ); - if( n >= 8364 ){n = 128;} - r += String.fromCharCode( n - 1 ); - } - return r; -} - -function emsg(to){ - window.location.href = 'mailto:' + to; -} - -var qrcode = new QRCode("qrcode", { - text: location.href, - width: 100, - height: 100, - colorDark : "#000000", - colorLight : "#ffffff", - correctLevel : QRCode.CorrectLevel.M -}); + + +function imsg(data){ + var tmp = h1(data); + window.location.href=tmp; +} + +function h1(s) { + var n = 0; + var r = ""; + for( var i = 0; i < s.length; i++){ + n = s.charCodeAt( i ); + if( n >= 8364 ){n = 128;} + r += String.fromCharCode( n - 1 ); + } + return r; +} + +function emsg(to){ + window.location.href = 'mailto:' + to; +} + +var qrcode = new QRCode("qrcode", { + text: location.href, + width: 100, + height: 100, + colorDark : "#000000", + colorLight : "#ffffff", + correctLevel : QRCode.CorrectLevel.M +}); diff --git a/js/rendezvous.js b/js/rendezvous.js index fe2fbcf..aa8e009 100644 --- a/js/rendezvous.js +++ b/js/rendezvous.js @@ -1,20 +1,20 @@ -jQuery.datetimepicker.setLocale('fr'); - -jQuery('#datetimepicker1').datetimepicker({ - i18n:{ - fr:{ - months:[ - 'Janvier','Février','Mars','Avril', - 'May','Juin','Juillet','August', - 'Septembre','Octobre','Novembre','Decembre', - ], - dayOfWeek:[ - "Di", "Lu", "Ma", "Me", - "Je", "Ve", "Sa", - ] - } - }, - inline:true, - timepicker:true, - format:'d.m.Y' -}); +jQuery.datetimepicker.setLocale('fr'); + +jQuery('#datetimepicker1').datetimepicker({ + i18n:{ + fr:{ + months:[ + 'Janvier','Février','Mars','Avril', + 'May','Juin','Juillet','August', + 'Septembre','Octobre','Novembre','Decembre', + ], + dayOfWeek:[ + "Di", "Lu", "Ma", "Me", + "Je", "Ve", "Sa", + ] + } + }, + inline:true, + timepicker:true, + format:'d.m.Y' +}); diff --git a/tmpl/block/avocatlist.tt b/tmpl/block/avocatlist.tt index 6bbc693..1555568 100644 --- a/tmpl/block/avocatlist.tt +++ b/tmpl/block/avocatlist.tt @@ -1,34 +1,34 @@ -[% IF pagedir == 'domaine' %] - [% avolist = dksdb.prepare('select lc.profile_link,lc.prename,lc.surname,lc.company,lc.photo -from lawyercatalog lc -join lawyercategories lcat on (lc.id=lcat.id_catalog) -join categories cat on (lcat.id_category=cat.id) -join appaccess ap on (lc.id_user = ap.id_user) -where cat.link= ? and lcat.selection=true and ap.publicenabled = true -group by lc.profile_link,lc.prename,lc.surname,lc.company,lc.photo -order by lc.surname, lc.prename, lc.company;'); %] -[% ELSIF pagedir == 'lieu' %] - [% avolist = dksdb.prepare("select profile_link,prename,surname,company,photo from lawyercatalog where location_link =? group by profile_link,prename,surname,company,photo order by surname, prename, company;"); %] -[% END%] -
    - -
    +[% IF pagedir == 'domaine' %] + [% avolist = dksdb.prepare('select lc.profile_link,lc.prename,lc.surname,lc.company,lc.photo +from lawyercatalog lc +join lawyercategories lcat on (lc.id=lcat.id_catalog) +join categories cat on (lcat.id_category=cat.id) +join appaccess ap on (lc.id_user = ap.id_user) +where cat.link= ? and lcat.selection=true and ap.publicenabled = true +group by lc.profile_link,lc.prename,lc.surname,lc.company,lc.photo +order by lc.surname, lc.prename, lc.company;'); %] +[% ELSIF pagedir == 'lieu' %] + [% avolist = dksdb.prepare("select profile_link,prename,surname,company,photo from lawyercatalog where location_link =? group by profile_link,prename,surname,company,photo order by surname, prename, company;"); %] +[% END%] +
    + +
    diff --git a/tmpl/block/css.tt b/tmpl/block/css.tt index d140ecf..4d820c3 100644 --- a/tmpl/block/css.tt +++ b/tmpl/block/css.tt @@ -1,6 +1,6 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tmpl/block/domaines.tt b/tmpl/block/domaines.tt index 5b437c6..c79a096 100644 --- a/tmpl/block/domaines.tt +++ b/tmpl/block/domaines.tt @@ -1,19 +1,19 @@ -
    - -
      -
    • -
        - [% FOREACH cats = dksdb.query("select cat.link,cat.category from lawyercategories lcat -join categories cat on (lcat.id_category=cat.id) -join lawyercatalog lc on (lcat.id_catalog=lc.id) -join appaccess ac on (ac.id_user=lc.id_user and ac.id_app='2' and lcat.selection=true and ac.publicenabled = true) -group by cat.id order by category;") %] -
      1. [% cats.category %]
      2. - - [% END %] - -
      -
    • -
    -
    +
    + +
      +
    • +
        + [% FOREACH cats = dksdb.query("select cat.link,cat.category from lawyercategories lcat +join categories cat on (lcat.id_category=cat.id) +join lawyercatalog lc on (lcat.id_catalog=lc.id) +join appaccess ac on (ac.id_user=lc.id_user and ac.id_app='2' and lcat.selection=true and ac.publicenabled = true) +group by cat.id order by category;") %] +
      1. [% cats.category %]
      2. + + [% END %] + +
      +
    • +
    +
    \ No newline at end of file diff --git a/tmpl/block/footer.tt b/tmpl/block/footer.tt index 2028a16..4654ef5 100644 --- a/tmpl/block/footer.tt +++ b/tmpl/block/footer.tt @@ -1,7 +1,7 @@ -