From 78661204595338f0f394862797265af536eb8670 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 15 Oct 2009 12:53:39 -0700 Subject: [PATCH 01/17] Handle bad dates in datetime related form plugins. Fixes bug #11128 Also, better date parsing by _splitMysql and reformat Thingy. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Wobject/Thingy.pm | 101 +++++++++++++++-------------- lib/WebGUI/DateTime.pm | 30 +++++---- lib/WebGUI/Form/Date.pm | 5 +- lib/WebGUI/Form/DateTime.pm | 6 +- t/DateTime.t | 11 +++- t/Form/Date.t | 10 ++- t/Form/DateTime.t | 8 ++- 8 files changed, 100 insertions(+), 72 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 53eaf4ead..c467087fc 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -18,6 +18,7 @@ - fixed #10914: Shop: No email notifications sent when the cart has net value 0 - fixed #11126: WebGUI database has varchar fields - fixed #10989: DataForm List: No pagination + - fixed #11128: Thing breaks w/ default value for date field 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/lib/WebGUI/Asset/Wobject/Thingy.pm b/lib/WebGUI/Asset/Wobject/Thingy.pm index 618294733..2f8b33f79 100644 --- a/lib/WebGUI/Asset/Wobject/Thingy.pm +++ b/lib/WebGUI/Asset/Wobject/Thingy.pm @@ -41,12 +41,13 @@ always taken from the field hashref. sub addField { - my $self = shift; - my $field = shift; - my $isImport = shift; + my $self = shift; + my $field = shift; + my $isImport = shift; my $dbDataType = shift || $self->_getDbDataType($field->{fieldType}); - my $db = $self->session->db; - my $error = $self->session->errorHandler; + my $session = $self->session; + my $db = $session->db; + my $error = $session->errorHandler; my ($oldFieldId, $newFieldId,$useAssetId,$useSequence); $error->info("Adding Field, label: ".$field->{label}.", fieldId: ".$field->{fieldId}.",thingId: ".$field->{thingId}); @@ -970,14 +971,14 @@ sub getFormPlugin { my $i18n = WebGUI::International->new($session,"Asset_Thingy"); $param{name} = "field_".$data->{fieldId}; - my $name = $param{name}; + my $name = $param{name}; $name =~ s/\^.*?\;//xgs ; # remove macro's from user input - $param{value} = $data->{value} || $data->{defaultValue}; - $param{size} = $data->{size}; - $param{height} = $data->{height}; - $param{width} = $data->{width}; - $param{extras} = $data->{extras}; - $param{vertical} = $data->{vertical}; + $param{value} = $data->{value} || $data->{defaultValue}; + $param{size} = $data->{size}; + $param{height} = $data->{height}; + $param{width} = $data->{width}; + $param{extras} = $data->{extras}; + $param{vertical} = $data->{vertical}; $param{fieldType} = $data->{fieldType}; if ($data->{fieldType} eq "Checkbox") { @@ -1034,14 +1035,14 @@ sub getFormPlugin { } if ($data->{fieldType} =~ m/^otherThing/x){ - my $otherThingId = $data->{fieldType}; - $otherThingId =~ s/^otherThing_(.*)/$1/x; - $param{fieldType} = "SelectList"; - $class = 'WebGUI::Form::'. $param{fieldType}; + my $otherThingId = $data->{fieldType}; + $otherThingId =~ s/^otherThing_(.*)/$1/x; + $param{fieldType} = "SelectList"; + $class = 'WebGUI::Form::'. $param{fieldType}; my $options = (); - my $tableName = 'Thingy_'.$otherThingId; - my $fieldName = 'field_'.$data->{fieldInOtherThingId}; + my $tableName = 'Thingy_'.$otherThingId; + my $fieldName = 'field_'.$data->{fieldInOtherThingId}; my $errorMessage = $self->badOtherThing($tableName, $fieldName); return $errorMessage if $errorMessage; @@ -1060,10 +1061,10 @@ sub getFormPlugin { .$dbh->quote_identifier($fieldName) .' from '.$dbh->quote_identifier($tableName) .' where thingDataId = ?',[$value]); - $param{size} = 1; + $param{size} = 1; $param{multiple} = 0; - $param{options} = $options; - $param{value} = $data->{value} || $data->{defaultValue}; + $param{options} = $options; + $param{value} = $data->{value} || $data->{defaultValue}; } my $formElement = eval { WebGUI::Pluggable::instanciate($class, "new", [$session, \%param ])}; @@ -2220,53 +2221,53 @@ Processes and saves a field. Returns the edited/added fieldId and the inner html sub www_editFieldSave { - my $self = shift; + my $self = shift; my $session = $self->session; return $session->privilege->insufficient() unless $self->canEdit; my ($fieldId, $fieldTypeChanged, $newFieldId, $formClass, $dbDataType, $thingyTableName, $columnName); my (%properties,$listItemHTML,$formElement); - my $i18n = WebGUI::International->new($self->session, "Asset_Thingy"); - my $label = $session->form->process("label"); - my $thingId = $self->session->form->process("thingId"); - my $error = $self->session->errorHandler; + my $i18n = WebGUI::International->new($session, "Asset_Thingy"); + my $label = $session->form->process("label"); + my $thingId = $session->form->process("thingId"); + my $log = $session->log; my $defaultValue = $session->form->process("defaultValue"); - my $fieldType = $session->form->process("fieldType") || "ReadOnly"; + my $fieldType = $session->form->process("fieldType") || "ReadOnly"; if ($fieldType =~ m/^otherThing/){ $defaultValue = $session->form->process("defaultFieldInThing"); } - $fieldId = $self->session->form->process("fieldId"); + $fieldId = $session->form->process("fieldId"); %properties = ( - fieldId=>$fieldId, - thingId=>$thingId, - label=>$label, - fieldType=>$fieldType, - defaultValue=>$defaultValue, - possibleValues=>$self->session->form->process("possibleValues"), - pretext=>$self->session->form->process("pretext"), - subtext=>$self->session->form->process("subtext"), - status=>$self->session->form->process("status"), - size=>$self->session->form->process("size"), - width=>$self->session->form->process("width"), - height=>$self->session->form->process("height"), - vertical=>$self->session->form->process("vertical"), - extras=>$self->session->form->process("extras"), - display=>$self->session->form->process("display") || 1, - viewScreenTitle=>$self->session->form->process("viewScreenTitle") || 0, - fieldInOtherThingId=>$session->form->process("fieldInOtherThingId") || "", + fieldId => $fieldId, + thingId => $thingId, + label => $label, + fieldType => $fieldType, + defaultValue => $defaultValue, + possibleValues => $session->form->process("possibleValues"), + pretext => $session->form->process("pretext"), + subtext => $session->form->process("subtext"), + status => $session->form->process("status"), + size => $session->form->process("size"), + width => $session->form->process("width"), + height => $session->form->process("height"), + vertical => $session->form->process("vertical"), + extras => $session->form->process("extras"), + display => $session->form->process("display") || 1, + viewScreenTitle => $session->form->process("viewScreenTitle") || 0, + fieldInOtherThingId => $session->form->process("fieldInOtherThingId") || "", ); # Get the field's data type $dbDataType = $self->_getDbDataType($properties{fieldType}); if ($fieldId eq "new") { $properties{dateCreated} = time(); - $properties{createdBy} = $self->session->user->userId; + $properties{createdBy} = $session->user->userId; $newFieldId = $self->addField(\%properties,0,$dbDataType); } else{ $properties{dateUpdated} = time(); - $properties{updatedBy} = $self->session->user->userId; + $properties{updatedBy} = $session->user->userId; # Check if column has to be altered for existing fields. $self->_updateFieldType($fieldType,$fieldId,$thingId,$self->get('assetId'),$dbDataType); $newFieldId = $self->setCollateral("Thingy_fields","fieldId",\%properties,1,1,"thingId",$thingId); @@ -2290,13 +2291,13 @@ sub www_editFieldSave { $listItemHTML = "\n\n\n" ."\n" - ."\n\n
".$label."".$formElement." session->url->page() + ." url->page() ."?func=editField;fieldId=".$newFieldId.";thingId=".$properties{thingId}."','".$newFieldId."')\" value='".$i18n->get('Edit','Icon')."' type='button'>" - ."session->url->page()."','".$newFieldId + ."url->page()."','".$newFieldId ."','".$properties{thingId}."')\" value='".$i18n->get('Delete','Icon')."' type='button'>
"; # Make sure we send debug information along with the field. - $session->log->preventDebugOutput; + $log->preventDebugOutput; $session->output->print($newFieldId.$listItemHTML); return "chunked"; diff --git a/lib/WebGUI/DateTime.pm b/lib/WebGUI/DateTime.pm index b320c0731..f21d8a7f6 100644 --- a/lib/WebGUI/DateTime.pm +++ b/lib/WebGUI/DateTime.pm @@ -594,23 +594,27 @@ sub _splitMysql @hash{ qw( year month day hour minute second ) } = $string =~ m{ - (\d+) # Year + ^ \D* - (\d+) # Month - \D* - (\d+) # Day - (?: \D* - (\d+) # Hours - \D* - (\d+) # Minutes - \D* - (\d+) # Seconds + (\d{1,4}) # Year + \D+ + (\d{1,2}) # Month + \D+ + (\d{1,2}) # Day + (?: \D+ + (\d{1,2}) # Hours + \D+ + (\d{1,2}) # Minutes + \D+ + (\d{1,2}) # Seconds )? + \D* + $ }x; - foreach my $unit (qw/hour minute second/) { - $hash{$unit} = 0 if ($hash{$unit} eq ''); - } + $hash{ hour } ||= 0; + $hash{ minute } ||= 0; + $hash{ second } ||= 0; return %hash; } diff --git a/lib/WebGUI/Form/Date.pm b/lib/WebGUI/Form/Date.pm index a3c62a0fd..501a4135d 100644 --- a/lib/WebGUI/Form/Date.pm +++ b/lib/WebGUI/Form/Date.pm @@ -217,13 +217,14 @@ sub toHtml { $value = $self->set("value",''); } else { - $value = WebGUI::DateTime->new($session, $self->getOriginalValue)->toMysqlDate; + $value = eval { WebGUI::DateTime->new($session, $self->getOriginalValue)->toMysqlDate; }; + $value = WebGUI::DateTime->new($session,0)->toMysqlDate if $value eq ''; } my $style = $session->style; my $url = $session->url; $style->setLink($url->extras('yui/build/calendar/assets/skins/sam/calendar.css'), { rel=>"stylesheet", type=>"text/css", media=>"all" }); - $style->setScript($url->extras('/yui/build/utilities/utilities.js'), { type => 'text/javascript' }); + $style->setScript($url->extras('yui/build/utilities/utilities.js'), { type => 'text/javascript' }); $style->setScript($url->extras('yui/build/json/json-min.js'), { type => 'text/javascript' }); $style->setScript($url->extras('yui/build/yahoo/yahoo-min.js'), { type => 'text/javascript' }); $style->setScript($url->extras('yui/build/dom/dom-min.js'), { type => 'text/javascript' }); diff --git a/lib/WebGUI/Form/DateTime.pm b/lib/WebGUI/Form/DateTime.pm index 8938654c6..ff5e16b29 100644 --- a/lib/WebGUI/Form/DateTime.pm +++ b/lib/WebGUI/Form/DateTime.pm @@ -220,9 +220,9 @@ Renders a date picker control. sub toHtml { my $self = shift; my $session = $self->session; - my $value = WebGUI::DateTime->new($session, $self->getOriginalValue) - ->set_time_zone($self->get("timeZone")) - ->strftime("%Y-%m-%d %H:%M:%S"); + my $value = eval { WebGUI::DateTime->new($session, $self->getOriginalValue); }; + $value = WebGUI::DateTime->new($session,0) if $value eq ''; + $value = $value->set_time_zone($self->get("timeZone"))->strftime("%Y-%m-%d %H:%M:%S"); my $style = $session->style; my $url = $session->url; diff --git a/t/DateTime.t b/t/DateTime.t index 07cb7976e..ac3c59c48 100644 --- a/t/DateTime.t +++ b/t/DateTime.t @@ -26,7 +26,7 @@ my $session = WebGUI::Test->session; # put your tests here -plan tests => 25; +plan tests => 28; my $timeZoneUser = addUser($session); @@ -84,6 +84,13 @@ is( '... has correct epoch' ); +my $badday = eval { WebGUI::DateTime->new($session, '2001-08-161'); }; +ok($@, 'new croaks on a bad date'); +my $badday = eval { WebGUI::DateTime->new($session, '2001-08-16 99:99:99'); }; +ok($@, 'new croaks on an out of range time'); +my $badday = eval { WebGUI::DateTime->new($session, '2001-08-16 99:199:99'); }; +ok($@, 'new croaks on an illegal time'); + sub addUser { my $session = shift; my $user = WebGUI::User->new($session, "new"); @@ -92,6 +99,6 @@ sub addUser { ##so the test will not fail in the summer $user->profileField("timeZone","America/Hermosillo"); $user->username("Time Zone"); - WebGUI::Test->usersToDelete($user); + addToCleanup($user); return $user; } diff --git a/t/Form/Date.t b/t/Form/Date.t index 6e2ef04fa..93f6056aa 100644 --- a/t/Form/Date.t +++ b/t/Form/Date.t @@ -50,7 +50,7 @@ my $testBlock = [ my $formType = 'date'; -my $numTests = 25 + scalar @{ $testBlock } ; +my $numTests = 26 + scalar @{ $testBlock } ; plan tests => $numTests; @@ -141,6 +141,14 @@ is( '2008-08-01', "toHtml: defaultValue in epoch format, returns date in mysql format" ); + +$date2 = WebGUI::Form::Date->new($session, {defaultValue => '2008-008-001'}); +is( + getValueFromForm($session, $date2->toHtml), + '1970-01-01', + "toHtml: defaultValue in bad mysql format returns date from epoch 0" +); + $date2 = WebGUI::Form::Date->new($session, {defaultValue => -1}); is($date2->getValueAsHtml(), '12/31/1969', "getValueAsHtml: defaultValue as negative epoch, returns in users's format"); diff --git a/t/Form/DateTime.t b/t/Form/DateTime.t index 8b9365659..3504fa3b0 100644 --- a/t/Form/DateTime.t +++ b/t/Form/DateTime.t @@ -29,7 +29,7 @@ my $session = WebGUI::Test->session; my $formType = 'datetime'; -my $numTests = 34; +my $numTests = 35; plan tests => $numTests; @@ -182,6 +182,12 @@ is( '2001-08-16 08:00:00', "toHtml: defaultValue in mysql format, value as mysql returns date in mysql format, adjusted for time zone" ); +$date2 = WebGUI::Form::DateTime->new($session, {defaultValue => '2008-081-01 11:34:26',}); +is( + getValueFromForm($session, $date2->toHtml), + '1969-12-31 18:00:00', + "toHtml: defaultValue in bad mysql format, returns value from epoch 0, adjusted for user time zone" +); sub getValueFromForm { my ($session, $textForm) = @_; From 04908891b52014ec09167746e6348392c0a2d2d0 Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Thu, 15 Oct 2009 15:59:24 -0500 Subject: [PATCH 02/17] Missing edit/manage buttons in Map #11129 --- lib/WebGUI/Asset/Wobject/Map.pm | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/lib/WebGUI/Asset/Wobject/Map.pm b/lib/WebGUI/Asset/Wobject/Map.pm index 2b590d662..d8cb81163 100644 --- a/lib/WebGUI/Asset/Wobject/Map.pm +++ b/lib/WebGUI/Asset/Wobject/Map.pm @@ -94,25 +94,28 @@ sub definition { hoverHelp => $i18n->get("startZoom description"), }, templateIdEditPoint => { - tab => "display", - fieldType => "template", - namespace => "MapPoint/Edit", - label => $i18n->get("templateIdEditPoint label"), - hoverHelp => $i18n->get("templateIdEditPoint description"), + tab => "display", + fieldType => "template", + defaultValue => "oHh0UqAJeY7u2n--WD-BAA", + namespace => "MapPoint/Edit", + label => $i18n->get("templateIdEditPoint label"), + hoverHelp => $i18n->get("templateIdEditPoint description"), }, templateIdView => { - tab => "display", - fieldType => "template", - namespace => "Map/View", - label => $i18n->get("templateIdView label"), - hoverHelp => $i18n->get("templateIdView description"), + tab => "display", + fieldType => "template", + defaultValue => "9j0_Z1j3Jd0QBbY2akb6qw", + namespace => "Map/View", + label => $i18n->get("templateIdView label"), + hoverHelp => $i18n->get("templateIdView description"), }, templateIdViewPoint => { - tab => "display", - fieldType => "template", - namespace => "MapPoint/View", - label => $i18n->get("templateIdViewPoint label"), - hoverHelp => $i18n->get("templateIdViewPoint description"), + tab => "display", + fieldType => "template", + defaultValue => "u9vfx33XDk5la1-QC5FK7g", + namespace => "MapPoint/View", + label => $i18n->get("templateIdViewPoint label"), + hoverHelp => $i18n->get("templateIdViewPoint description"), }, workflowIdPoint => { tab => "security", From dae721592245afe55cecacacdfc2783c64f07aaa Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Thu, 15 Oct 2009 20:51:03 -0500 Subject: [PATCH 03/17] fixed #10888: Problems with Map adding points --- docs/changelog/7.x.x.txt | 1 + .../home_map_map-templates.wgpkg | Bin 0 -> 2502 bytes lib/WebGUI/Asset/Wobject/Map.pm | 11 +- .../yui-webgui/build/map/assets/loading.gif | Bin 0 -> 6610 bytes www/extras/yui-webgui/build/map/map.js | 183 ++++++++++-------- 5 files changed, 111 insertions(+), 84 deletions(-) create mode 100644 docs/upgrades/packages-7.8.2/home_map_map-templates.wgpkg create mode 100644 www/extras/yui-webgui/build/map/assets/loading.gif diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index c467087fc..1e7ddd5c7 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -19,6 +19,7 @@ - fixed #11126: WebGUI database has varchar fields - fixed #10989: DataForm List: No pagination - fixed #11128: Thing breaks w/ default value for date field + - fixed #10888: Issues with adding points to Maps 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/docs/upgrades/packages-7.8.2/home_map_map-templates.wgpkg b/docs/upgrades/packages-7.8.2/home_map_map-templates.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..1116bf385aa3ca150e96acc9bed7b1d70685eaf4 GIT binary patch literal 2502 zcmV;%2|4y3iwFP!00000|Lt0BZ`-yO&gcCK!50HIptfbpvJ=+}ke8;(y0mGN+-zO8 zK(=U`jV!7n6*~>`-|rzQk(B%ryVuFOEd~->QfMmg{b8@b6|* zeB1TL#)hRn_C~E%Z@R5UtDgj$#cfvWDs$b*{QTW+xAXgye3Od5-lZh+|!`MNSh;|m=6WGu97U4bSn_70Kf zpLqj%;`OdU3k>I)q_-i7D4zBurz|XA#+RWsPR1dM&nb$Jgi+JmBo2hakc?1uyGP>$}Z~c$Iy6gjSBG(=`11*c`NlX}Fw~>s4(M?PbvG1d> z*nJ9Nei!>F78N_Ed)nF!rWgiv&+84*86F{$Fd^hLZNu;&CP{SUzw&Wfs|`?g8=$ka zOKBHQb{TY00EPP3G|b^}h+@pn#?f2Cz_p&2 z#jRw7bcDi0FUC2|^WG<75tO_L7WR#~z{ET~#b0FL9jB@Lh3PMZuPeD^bHil@R7|d| zt=86-+o~JB#fZ;D67FZqdsbLs>ciU2#?U~Mgd(}Bvo&5^0oj^cFhN_Jx-%&3#kUbV z$(k}8W!@k)a=80C=_h*^tFF&6 z*NWa^DxuNqP6MY1R2F6vYXoHGBj{|}Zlk_s%)UshH5COho@$ATA9dY{^k9DxP#KW zO4q*|B0LzfwrktbQt`)l8!5qrR5}tjzhv4bM7N)+@I7bi?2JWM6%(eR6*G?f1Lg-|F6V zxB1zSU6xuHnb!hlkO76rZaSP1T;aY&5#@Pa<;IIEo#BT zVVeiMla4A0dm=A~g(|cD3M|e_pY#&?F8qNFF|80m8R+lgL8>ADDD=_f4`?$;(2p-+ zZF8fStRsajQ4ThtqFlC4#d@?nE8?rZQhDNS^u`9O^;pM~7s56dsUxBw4L7${`#f(8%jaIt#;C%@5-u z8ko*eeVA1GdWf^uj&IgV&?Y@EfLhUlMk@o%bfJVWg_bFP3(&F@Vp%FiE5VhiwGvcm z_c%=HsjNx-N#A{aGu+xAhwlg1&GU2ns&O3Ww#3J$=uX`+S+_~iA36+Fvp-#Uk4nGi z@W1*~@;}#UP4hqJ`TYMu^0o$ne@e^psy{RpCnK28X?(<05^UrS%a<)e{2Mfwf2cqS_Z6@zPm}dn5sd zHRYTvouzOxBw^8h#LH$0A9#~OxBK2?mf$Ox>NqIKB3?F28hl`+Aea%uazID zJ|Ud_h`CjTX>8;He+^YJHhVKaUY@Ero5qdkQg=-mAK&&*V;*NAXN$H3-kNmc#E%`eE?SBo`xhCba}?XQC@$c5yUP!0r^l zT9dYm;pUs8GCMnpuaf?|Nx+7aW`CgP{uA7*Htc4zrCZG1tA10YZ4G&UW?~NibDom_ zHEQk@{{u?+{Qg%qNRRma%>U#IWc;ipM;q63ZzG7`g4>&9>!v?(oL~2^-N37r-|x8x zZ(2FjTkgd$;{bHE+Z%mT(dow3{PlxoOe*=-MO?aYp(CW=I!Lpqq8<>d1$vTBDIMdH z-!bvsc>9HJQvVVxAZuL8>EtGTo^jIwMir@2jj9sirzl1N1!9!hmtM`QO+t@f|@uG-vCI-8_sU*l*zWrQVDIxQ$VT}5~`#C>jq^$!c1%Uq-ixxRj zWNvsguxQ)^`+uIwcT3^Lz#p{5f;_*!v&{LVcj3Q=&KX=x4CzX*4%(Y`!>t*a#7cCI z-#m%r|FQ0$nzr#)9PizVbZ(x5PeA7km@|iEm0KvgRd*V7V|<^I&i(&aQ3bqKu%v-m zL76Vf!$DC8K)I+hh0{vM0A=oq@wgbHm4Or?Rg3Af!e=F@kXVVTl6mO6CTvzNtb)r* zX*o<*;%mcWWwC&*o%La{W@}Lw-aX>)dsession->style; my $url = $self->session->url; + $style->setLink($url->extras('yui/build/container/assets/skins/sam/container.css'),{type=>'text/css',rel=>'stylesheet'}); + $style->setLink($url->extras('yui/build/button/assets/skins/sam/button.css'),{type=>'text/css',rel=>'stylesheet'}); $style->setScript("http://www.google.com/jsapi?key=" . $self->get('mapApiKey'),{type=>"text/javascript"}); $style->setRawHeadTags(<<'ENDHTML'); + + + + + + +
+

Translation

+ +

This page enables you to translate TinyMCE by using XML files.

+

Steps to translate:

+
    +
  1. Download one of the language XML files from the TinyMCE site.
  2. +
  3. Place it in /jscripts/tiny_mce/langs directory, for example /jscripts/tiny_mce/langs/sv.xml.
  4. +
  5. Change the language init option in this file to match the XML file code. For example: sv
  6. +
  7. TinyMCE will now use the XML file instead of the .js versions.
  8. +
  9. Modify the XML file until everything is translated
  10. +
  11. Modify the author information, this is optional.
  12. +
  13. Upload the XML file to the TinyMCE site to share it with others.
  14. +
  15. You can now download the .js versions of the language pack from the TinyMCE site.
  16. +
+ + +
+ + + diff --git a/www/extras/tinymce/jscripts/tiny_mce/langs/en.js b/www/extras/tinymce/jscripts/tiny_mce/langs/en.js index 744145a92..8519b4de7 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/langs/en.js +++ b/www/extras/tinymce/jscripts/tiny_mce/langs/en.js @@ -61,7 +61,7 @@ iespell_desc:"Run spell checking", download:"ieSpell not detected. Do you want to install it now?" }, advhr:{ -advhr_desc:"Horizontale rule" +advhr_desc:"Horizontal rule" }, emotions:{ emotions_desc:"Emotions" diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js index f3350043f..4d3b062de 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.AdvancedHRPlugin',{init:function(ed,url){ed.addCommand('mceAdvancedHr',function(){ed.windowManager.open({file:url+'/rule.htm',width:250+parseInt(ed.getLang('advhr.delta_width',0)),height:160+parseInt(ed.getLang('advhr.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('advhr',{title:'advhr.advhr_desc',cmd:'mceAdvancedHr'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('advhr',n.nodeName=='HR');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='HR')ed.selection.select(e);});},getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advhr',tinymce.plugins.AdvancedHRPlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js index 73ee618d6..b6cbd66c7 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js @@ -3,25 +3,34 @@ var AdvHRDialog = { var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w; w = dom.getAttrib(n, 'width'); - f.width.value = w ? parseInt(w) : ''; - f.size.value = dom.getAttrib(n, 'size'); - f.noshade.checked = !!dom.getAttrib(n, 'noshade'); + f.width.value = w ? parseInt(w) : (dom.getStyle('width') || ''); + f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || ''; + f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width'); selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px'); }, update : function() { - var ed = tinyMCEPopup.editor, h, f = document.forms[0]; + var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = ''; h = ' -
@@ -22,7 +21,7 @@ - - + @@ -88,7 +88,7 @@ - @@ -122,7 +122,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - +
+
+ x px
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js index 571326485..347722661 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js @@ -16,6 +16,7 @@ var ImageDialog = { this.fillFileList('src_list', 'tinyMCEImageList'); this.fillFileList('over_list', 'tinyMCEImageList'); this.fillFileList('out_list', 'tinyMCEImageList'); + TinyMCE_EditableSelects.init(); if (n.nodeName == 'IMG') { nl.src.value = dom.getAttrib(n, 'src'); @@ -27,7 +28,7 @@ var ImageDialog = { nl.hspace.value = this.getAttrib(n, 'hspace'); nl.border.value = this.getAttrib(n, 'border'); selectByValue(f, 'align', this.getAttrib(n, 'align')); - selectByValue(f, 'class_list', dom.getAttrib(n, 'class')); + selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true); nl.style.value = dom.getAttrib(n, 'style'); nl.id.value = dom.getAttrib(n, 'id'); nl.dir.value = dom.getAttrib(n, 'dir'); @@ -102,7 +103,7 @@ var ImageDialog = { if (tinyMCEPopup.getParam("accessibility_warnings", 1)) { if (!f.alt.value) { - tinyMCEPopup.editor.windowManager.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { + tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { if (s) t.insertAndClose(); }); @@ -170,7 +171,7 @@ var ImageDialog = { if (el && el.nodeName == 'IMG') { ed.dom.setAttribs(el, args); } else { - ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); + ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); ed.dom.setAttribs('__mce_tmp', args); ed.dom.setAttrib('__mce_tmp', 'id', ''); ed.undoManager.add(); @@ -271,6 +272,7 @@ var ImageDialog = { cl = tinyMCEPopup.editor.dom.getClasses(); if (cl.length > 0) { + lst.options.length = 0; lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); tinymce.each(cl, function(o) { @@ -284,6 +286,7 @@ var ImageDialog = { var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; l = window[l]; + lst.options.length = 0; if (l && l.length > 0) { lst.options[lst.options.length] = new Option('', ''); @@ -380,7 +383,7 @@ var ImageDialog = { v = f.border.value; if (v || v == '0') { if (v == '0') - img.style.border = ''; + img.style.border = '0'; else img.style.border = v + 'px solid black'; } diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js index 4899f7b8c..983fe5a9c 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.AdvancedLinkPlugin',{init:function(ed,url){this.editor=ed;ed.addCommand('mceAdvLink',function(){var se=ed.selection;if(se.isCollapsed()&&!ed.dom.getParent(se.getNode(),'A'))return;ed.windowManager.open({file:url+'/link.htm',width:480+parseInt(ed.getLang('advlink.delta_width',0)),height:400+parseInt(ed.getLang('advlink.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('link',{title:'advlink.link_desc',cmd:'mceAdvLink'});ed.addShortcut('ctrl+k','advlink.advlink_desc','mceAdvLink');ed.onNodeChange.add(function(ed,cm,n,co){cm.setDisabled('link',co&&n.nodeName!='A');cm.setActive('link',n.nodeName=='A'&&!n.name);});},getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advlink',tinymce.plugins.AdvancedLinkPlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js index cdeec360e..bb7922a6e 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js @@ -14,8 +14,9 @@ function preinit() { } function changeClass() { - var formObj = document.forms[0]; - formObj.classes.value = getSelectValue(formObj, 'classlist'); + var f = document.forms[0]; + + f.classes.value = getSelectValue(f, 'classlist'); } function init() { @@ -115,7 +116,7 @@ function checkPrefix(n) { if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email'))) n.value = 'mailto:' + n.value; - if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external'))) + if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external'))) n.value = 'http://' + n.value; } @@ -234,7 +235,7 @@ function parseLink(link) { regExp += "\\);?"; // Build variable array - var variables = new Array(); + var variables = []; variables["_function"] = fnName; var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split(''); for (var i=0; i - @@ -28,7 +27,7 @@ - + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/table.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/table.htm index 02f34e85f..37e615970 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/table.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/table.htm @@ -6,9 +6,9 @@ + - @@ -56,8 +56,8 @@ @@ -108,24 +108,10 @@ - + - - - - - + + + + + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js index e6f87866f..ebe3c27d7 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js @@ -1 +1 @@ -(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TemplatePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceTemplate',function(ui){ed.windowManager.open({file:url+'/template.htm',width:ed.getParam('template_popup_width',750),height:ed.getParam('template_popup_height',600),inline:1},{plugin_url:url});});ed.addCommand('mceInsertTemplate',t._insertTemplate,t);ed.addButton('template',{title:'template.desc',cmd:'mceTemplate'});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;each(dom.select('div',o.node),function(e){if(dom.hasClass(e,'mceTmpl')){each(dom.select('*',e),function(e){if(dom.hasClass(e,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))e.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));});t._replaceVals(e);}});});},getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_insertTemplate:function(ui,v){var t=this,ed=t.editor,h,el,dom=ed.dom,sel=ed.selection.getContent();h=v.content;each(t.editor.getParam('template_replace_values'),function(v,k){if(typeof(v)!='function')h=h.replace(new RegExp('\\{\\$'+k+'\\}','g'),v);});el=dom.create('div',null,h);function hasClass(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className);};each(dom.select('*',el),function(n){if(hasClass(n,ed.getParam('template_cdate_classes','cdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_cdate_format",ed.getLang("template.cdate_format")));if(hasClass(n,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));if(hasClass(n,ed.getParam('template_selected_content_classes','selcontent').replace(/\s+/g,'|')))n.innerHTML=sel;});t._replaceVals(el);ed.execCommand('mceInsertContent',false,el.innerHTML);ed.addVisual();},_replaceVals:function(e){var dom=this.editor.dom,vl=this.editor.getParam('template_replace_values');each(dom.select('*',e),function(e){each(vl,function(v,k){if(dom.hasClass(e,k)){if(typeof(vl[k])=='function')vl[k](e);}});});},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length 0) { + el = dom.create('div', null); + el.appendChild(n[0].cloneNode(true)); + } + function hasClass(n, c) { return new RegExp('\\b' + c + '\\b', 'g').test(n.className); }; @@ -134,10 +141,10 @@ fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); - fmt = fmt.replace("%B", "" + tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]); - fmt = fmt.replace("%b", "" + tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]); - fmt = fmt.replace("%A", "" + tinyMCE.getLang("template_day_long").split(',')[d.getDay()]); - fmt = fmt.replace("%a", "" + tinyMCE.getLang("template_day_short").split(',')[d.getDay()]); + fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]); + fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]); + fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]); + fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]); fmt = fmt.replace("%%", "%"); return fmt; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/template/js/template.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/template/js/template.js index 383d3c8fe..24045d731 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/template/js/template.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/template/js/template.js @@ -24,6 +24,7 @@ var TemplateDialog = { sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src)); this.resize(); + this.tsrc = tsrc; }, resize : function() { @@ -47,19 +48,24 @@ var TemplateDialog = { loadCSSFiles : function(d) { var ed = tinyMCEPopup.editor; - + tinymce.each(ed.getParam("content_css", '').split(','), function(u) { - d.write(''); + d.write(''); }); }, - selectTemplate : function(u) { - var d = window.frames['templatesrc'].document; + selectTemplate : function(u, ti) { + var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc; if (!u) return; d.body.innerHTML = this.templateHTML = this.getFileContents(u); + + for (x=0; x -
{#template_dlg.desc}
-
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js index e1e4238a3..53d31c44f 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.VisualChars',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceVisualChars',t._toggleVisualChars,t);ed.addButton('visualchars',{title:'visualchars.desc',cmd:'mceVisualChars'});ed.onBeforeGetContent.add(function(ed,o){if(t.state){t.state=true;t._toggleVisualChars();}});},getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_toggleVisualChars:function(){var t=this,ed=t.editor,nl,i,h,d=ed.getDoc(),b=ed.getBody(),nv,s=ed.selection,bo;t.state=!t.state;ed.controlManager.setActive('visualchars',t.state);if(t.state){nl=[];tinymce.walk(b,function(n){if(n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1)nl.push(n);},'childNodes');for(i=0;i$1');nv=nv.replace(/\u00a0/g,'\u00b7');ed.dom.setOuterHTML(nl[i],nv,d);}}else{nl=tinymce.grep(ed.dom.select('span',b),function(n){return ed.dom.hasClass(n,'mceVisualNbsp');});for(i=0;i$1');j=j.replace(/\u00a0/g,"\u00b7");g.dom.setOuterHTML(a[e],j,k)}}else{a=tinymce.grep(g.dom.select("span",l),function(b){return g.dom.hasClass(b,"mceVisualNbsp")});for(e=0;e0')}}else{tinymce.DOM.add(h,"span",{},'0')}});a.onInit.add(function(e){e.selection.onSetContent.add(function(){c._count(e)});c._count(e)});a.onSetContent.add(function(e){c._count(e)});a.onKeyUp.add(function(f,g){if(g.keyCode==d){return}if(13==g.keyCode||8==d||46==d){c._count(f)}d=g.keyCode})},_count:function(b){var c=this,a=0;if(c.block){return}c.block=1;setTimeout(function(){var d=b.getContent({format:"raw"});if(d){d=d.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ");d=d.replace(c.cleanre,"");d.replace(c.countre,function(){a++})}tinymce.DOM.setHTML(c.id,a.toString());setTimeout(function(){c.block=0},2000)},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js new file mode 100644 index 000000000..41b78a9ee --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js @@ -0,0 +1,95 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. + */ + +(function() { + tinymce.create('tinymce.plugins.WordCount', { + block : 0, + id : null, + countre : null, + cleanre : null, + + init : function(ed, url) { + var t = this, last = 0; + + t.countre = ed.getParam('wordcount_countregex', /\S\s+/g); + t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$¿'"_+=\\/-]*/g); + t.id = ed.id + '-word-count'; + + ed.onPostRender.add(function(ed, cm) { + var row, id; + + // Add it to the specified id or the theme advanced path + id = ed.getParam('wordcount_target_id'); + if (!id) { + row = tinymce.DOM.get(ed.id + '_path_row'); + + if (row) + tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '0'); + } else + tinymce.DOM.add(id, 'span', {}, '0'); + }); + + ed.onInit.add(function(ed) { + ed.selection.onSetContent.add(function() { + t._count(ed); + }); + + t._count(ed); + }); + + ed.onSetContent.add(function(ed) { + t._count(ed); + }); + + ed.onKeyUp.add(function(ed, e) { + if (e.keyCode == last) + return; + + if (13 == e.keyCode || 8 == last || 46 == last) + t._count(ed); + + last = e.keyCode; + }); + }, + + _count : function(ed) { + var t = this, tc = 0; + + // Keep multiple calls from happening at the same time + if (t.block) + return; + + t.block = 1; + + setTimeout(function() { + var tx = ed.getContent({format : 'raw'}); + + if (tx) { + tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars + tx = tx.replace(t.cleanre, ''); // remove numbers and punctuation + tx.replace(t.countre, function() {tc++;}); // count the words + } + + tinymce.DOM.setHTML(t.id, tc.toString()); + + setTimeout(function() {t.block = 0;}, 2000); + }, 1); + }, + + getInfo: function() { + return { + longname : 'Word Count plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount); +})(); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm index 580028432..3928a17e1 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm @@ -9,7 +9,6 @@ - diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm index 54e4c9d9e..4d4ebaac0 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm @@ -9,7 +9,6 @@ - diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm index cfbb409ab..322b468e3 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm @@ -8,7 +8,6 @@ - @@ -36,12 +35,12 @@
- + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm index 7d9eaba4d..cdfaf4e85 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm @@ -9,7 +9,6 @@ - diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm index d03c4568a..f45676e3d 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm @@ -9,7 +9,6 @@ - @@ -31,7 +30,7 @@
@@ -38,25 +37,25 @@ - + - + - + - + @@ -73,7 +72,7 @@
 
 
 
- + - + @@ -260,8 +259,7 @@ - - + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js index 4fce503c1..f2dbbff2b 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.Nonbreaking',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceNonBreaking',function(){ed.execCommand('mceInsertContent',false,(ed.plugins.visualchars&&ed.plugins.visualchars.state)?'·':' ');});ed.addButton('nonbreaking',{title:'nonbreaking.nonbreaking_desc',cmd:'mceNonBreaking'});if(ed.getParam('nonbreaking_force_tab')){ed.onKeyDown.add(function(ed,e){if(tinymce.isIE&&e.keyCode==9){ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');tinymce.dom.Event.cancel(e);}});}},getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('nonbreaking',tinymce.plugins.Nonbreaking);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?'·':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js index 489a17408..9945cd858 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js @@ -1 +1 @@ -(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.NonEditablePlugin',{init:function(ed,url){var t=this,editClass,nonEditClass;t.editor=ed;editClass=ed.getParam("noneditable_editable_class","mceEditable");nonEditClass=ed.getParam("noneditable_noneditable_class","mceNonEditable");ed.onNodeChange.addToTop(function(ed,cm,n){var sc,ec;sc=ed.dom.getParent(ed.selection.getStart(),function(n){return ed.dom.hasClass(n,nonEditClass);});ec=ed.dom.getParent(ed.selection.getEnd(),function(n){return ed.dom.hasClass(n,nonEditClass);});if(sc||ec){t._setDisabled(1);return false;}else t._setDisabled(0);});},getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_block:function(ed,e){return Event.cancel(e);},_setDisabled:function(s){var t=this,ed=t.editor;tinymce.each(ed.controlManager.controls,function(c){c.setDisabled(s);});if(s!==t.disabled){if(s){ed.onKeyDown.addToTop(t._block);ed.onKeyPress.addToTop(t._block);ed.onKeyUp.addToTop(t._block);ed.onPaste.addToTop(t._block);}else{ed.onKeyDown.remove(t._block);ed.onKeyPress.remove(t._block);ed.onKeyUp.remove(t._block);ed.onPaste.remove(t._block);}t.disabled=s;}}});tinymce.PluginManager.add('noneditable',tinymce.plugins.NonEditablePlugin);})(); \ No newline at end of file +(function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(h,g,k){var j,i;j=h.dom.getParent(h.selection.getStart(),function(l){return h.dom.hasClass(l,b)});i=h.dom.getParent(h.selection.getEnd(),function(l){return h.dom.hasClass(l,b)});if(j||i){f._setDisabled(1);return false}else{f._setDisabled(0)}})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_block:function(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js index 2a07b4076..77db577cf 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js @@ -1,5 +1,5 @@ /** - * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $ + * $Id: editor_plugin_src.js 743 2008-03-23 17:47:33Z spocke $ * * @author Moxiecode * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. @@ -48,6 +48,12 @@ }, _block : function(ed, e) { + var k = e.keyCode; + + // Don't block arrow keys, pg up/down, and F1-F12 + if ((k > 32 && k < 41) || (k > 111 && k < 124)) + return; + return Event.cancel(e); }, diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js index c6cb710fb..a212f6963 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.PageBreakPlugin',{init:function(ed,url){var pb='',cls='mcePageBreak',sep=ed.getParam('pagebreak_separator',''),pbRE;pbRE=new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(a){return'\\'+a;}),'g');ed.addCommand('mcePageBreak',function(){ed.execCommand('mceInsertContent',0,pb);});ed.addButton('pagebreak',{title:'pagebreak.desc',cmd:cls});ed.onInit.add(function(){ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.node.nodeName=='IMG'&&ed.dom.hasClass(o.node,cls))o.name='pagebreak';});}});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='IMG'&&ed.dom.hasClass(e,cls))ed.selection.select(e);});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('pagebreak',n.nodeName==='IMG'&&ed.dom.hasClass(n,cls));});ed.onBeforeSetContent.add(function(ed,o){o.content=o.content.replace(pbRE,pb);});ed.onPostProcess.add(function(ed,o){if(o.get)o.content=o.content.replace(/]+>/g,function(im){if(im.indexOf('class="mcePageBreak')!==-1)im=sep;return im;});});},getInfo:function(){return{longname:'PageBreak',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('pagebreak',tinymce.plugins.PageBreakPlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.settings.content_css!==false){b.dom.loadCSS(d+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js index ffeeab061..16f574827 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js @@ -21,7 +21,8 @@ ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls}); ed.onInit.add(function() { - ed.dom.loadCSS(url + "/css/content.css"); + if (ed.settings.content_css !== false) + ed.dom.loadCSS(url + "/css/content.css"); if (ed.theme.onResolveName) { ed.theme.onResolveName.add(function(th, o) { diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js index 02971208c..7b2bbd9b3 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js @@ -1 +1 @@ -(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.PastePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mcePasteText',function(ui,v){if(ui){ed.windowManager.open({file:url+'/pastetext.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertText(v.html,v.linebreaks);});ed.addCommand('mcePasteWord',function(ui,v){if(ui){ed.windowManager.open({file:url+'/pasteword.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertWordContent(v);});ed.addCommand('mceSelectAll',function(){ed.execCommand('selectall');});ed.addButton('pastetext',{title:'paste.paste_text_desc',cmd:'mcePasteText',ui:true});ed.addButton('pasteword',{title:'paste.paste_word_desc',cmd:'mcePasteWord',ui:true});ed.addButton('selectall',{title:'paste.selectall_desc',cmd:'mceSelectAll'});if(ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onPaste.add(function(ed,e){return t._handlePasteEvent(e)});}if(!tinymce.isIE&&ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onKeyDown.add(function(ed,e){if(e.ctrlKey&&e.keyCode==86){window.setTimeout(function(){ed.execCommand("mcePasteText",true);},1);Event.cancel(e);}});}},getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_handlePasteEvent:function(e){var html=this._clipboardHTML(),ed=this.editor,sel=ed.selection,r;if(ed&&(r=sel.getRng())&&r.text.length>0)ed.execCommand('delete');if(html&&html.length>0)ed.execCommand('mcePasteWord',false,html);return Event.cancel(e);},_insertText:function(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(this.editor.getParam("paste_create_paragraphs",true)){var rl=this.editor.getParam("paste_replace_list",'\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i

');content=content.replace(/\r\r/g,'

');content=content.replace(/\n\n/g,'

');if((pos=content.indexOf('

'))!=-1){this.editor.execCommand("Delete");var node=this.editor.selection.getNode();var breakElms=[];do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node;}}while(node=node.parentNode);var before="",after="

";before+=content.substring(0,pos);for(var i=0;i";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">";}before+="

";content=before+content.substring(pos+7)+after;}}if(this.editor.getParam("paste_create_linebreaks",true)){content=content.replace(/\r\n/g,'
');content=content.replace(/\r/g,'
');content=content.replace(/\n/g,'
');}}this.editor.execCommand("mceInsertRawHTML",false,content);}},_insertWordContent:function(content){var t=this,ed=t.editor;if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','before',content);var rl=ed.getParam("paste_replace_list",'\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i(.*?)<\/p>','gi'),'

$1

');}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)
","gi"),"

"+middot+"$1

");content=content.replace(new RegExp('','gi'),""+bull);content=content.replace(/<\/o:p>/gi,"");content=content.replace(new RegExp('
]*>/gi,"");if(this.editor.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(this.editor.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break;}content=content.replace(new RegExp('href="?'+this._reEscape(""+document.location)+'','gi'),'href="'+this.editor.documentBaseURI.getURI());content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*

 <\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!this.editor.getParam('force_p_newlines')){content=content.replace('','','gi');content=content.replace('

','

','gi');}if(!tinymce.isIE&&!this.editor.getParam('force_p_newlines')){content=content.replace(/<\/?p[^>]*>/gi,"");}content=content.replace(/<\/?div[^>]*>/gi,"");if(this.editor.getParam("paste_convert_middot_lists",true)){var div=ed.dom.create("div",null,content);var className=this.editor.getParam("paste_unindented_list_class","unIndentedList");while(this._convertMiddots(div,"--list--"));while(this._convertMiddots(div,middot,className));while(this._convertMiddots(div,bull));content=div.innerHTML;}if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/ <\/h[1-6]>/gi,'

  

');content=content.replace(//gi,'

');content=content.replace(/<\/h[1-6]>/gi,'

');content=content.replace(/ <\/b>/gi,'  ');content=content.replace(/^( )*/gi,'');}content=content.replace(/--list--/gi,"");if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','after',content);this.editor.execCommand("mceInsertContent",false,content);if(this.editor.getParam('paste_force_cleanup_wordpaste',true)){var ed=this.editor;window.setTimeout(function(){ed.execCommand("mceCleanup");},1);}}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i span.Apple-style-span div",r)[0]||o.select("> span.Apple-style-span",r)[0]||r).innerHTML});a(n,function(r){o.remove(r)});if(k){j.setRng(k)}g({content:q})},0)}}if(c.getParam("paste_auto_cleanup_on_paste",true)){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){c.onKeyDown.add(function(h,i){if(((tinymce.isMac?i.metaKey:i.ctrlKey)&&i.keyCode==86)||(i.shiftKey&&i.keyCode==45)){f(i)}})}else{c.onPaste.addToTop(function(h,i){return f(i)})}}if(c.getParam("paste_block_drop")){c.onInit.add(function(){c.dom.bind(c.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(h){h.preventDefault();h.stopPropagation();return false})})}e._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(d,i){var b=this.editor,c=i.content,g,f;function g(h){a(h,function(j){if(j.constructor==RegExp){c=c.replace(j,"")}else{c=c.replace(j[0],j[1])}})}if(/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(c)||i.wordContent){i.wordContent=true;g([/^\s*( )+/g,/( |]*>)+\s*$/g]);if(b.getParam("paste_convert_middot_lists",true)){g([[//gi,"$&__MCE_ITEM__"],[/(]+:\s*symbol[^>]+>)/gi,"$1__MCE_ITEM__"],[/(]+mso-list:[^>]+>)/gi,"$1__MCE_ITEM__"]])}g([//gi,/<\/?(img|font|meta|link|style|div|v:\w+)[^>]*>/gi,/<\\?\?xml[^>]*>/gi,/<\/?o:[^>]*>/gi,/ (id|name|language|type|on\w+|v:\w+)=\"([^\"]*)\"/gi,/ (id|name|language|type|on\w+|v:\w+)=(\w+)/gi,[/<(\/?)s>/gi,"<$1strike>"],/]+>[\s\S]*?<\/script>/gi,[/ /g,"\u00a0"]]);if(!b.getParam("paste_retain_style_properties")){g([/<\/?(span)[^>]*>/gi])}}f=b.getParam("paste_strip_class_attributes");if(f!="none"){function e(l,h){var k,j="";if(f=="all"){return""}h=tinymce.explode(h," ");for(k=h.length-1;k>=0;k--){if(!/^(Mso)/i.test(h[k])){j+=(!j?"":" ")+h[k]}}return' class="'+j+'"'}g([[/ class=\"([^\"]*)\"/gi,e],[/ class=(\w+)/gi,e]])}if(b.getParam("paste_remove_spans")){g([/<\/?(span)[^>]*>/gi])}i.content=c},_postProcess:function(e,g){var d=this,c=d.editor,f=c.dom,b;if(g.wordContent){a(f.select("a",g.node),function(h){if(!h.href||h.href.indexOf("#_Toc")!=-1){f.remove(h,1)}});if(d.editor.getParam("paste_convert_middot_lists",true)){d._convertLists(e,g)}b=c.getParam("paste_retain_style_properties");if(tinymce.is(b,"string")){b=tinymce.explode(b)}a(f.select("*",g.node),function(l){var m={},j=0,k,n,h;if(b){for(k=0;k0){f.setStyles(l,m)}else{if(l.nodeName=="SPAN"&&!l.className){f.remove(l,true)}}})}if(c.getParam("paste_remove_styles")||(c.getParam("paste_remove_styles_if_webkit")&&tinymce.isWebKit)){a(f.select("*[style]",g.node),function(h){h.removeAttribute("style");h.removeAttribute("mce_style")})}else{if(tinymce.isWebKit){a(f.select("*",g.node),function(h){h.removeAttribute("mce_style")})}}},_convertLists:function(e,c){var g=e.editor.dom,f,j,b=-1,d,k=[],i,h;a(g.select("p",c.node),function(r){var n,s="",q,o,l,m;for(n=r.firstChild;n&&n.nodeType==3;n=n.nextSibling){s+=n.nodeValue}s=r.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/ /g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(s)){q="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(s)){q="ol"}if(q){d=parseFloat(r.style.marginLeft||0);if(d>b){k.push(d)}if(!f||q!=i){f=g.create(q);g.insertAfter(f,r)}else{if(d>b){f=j.appendChild(g.create(q))}else{if(d]*>/gi,"");if(q=="ul"&&/^[\u2022\u00b7\u00a7\u00d8o]/.test(p)){g.remove(t)}else{if(/^[\s\S]*\w+\.( |\u00a0)*\s*/.test(p)){g.remove(t)}}});o=r.innerHTML;if(q=="ul"){o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*( |\u00a0)+\s*/,"")}else{o=r.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.( |\u00a0)+\s*/,"")}j=f.appendChild(g.create("li",0,o));g.remove(r);b=d;i=q}else{f=b=0}});h=c.node.innerHTML;if(h.indexOf("__MCE_ITEM__")!=-1){c.node.innerHTML=h.replace(/__MCE_ITEM__/g,"")}},_insertBlockContent:function(h,e,i){var c,g,d=h.selection,m,j,b,k,f;function l(p){var o;if(tinymce.isIE){o=h.getDoc().body.createTextRange();o.moveToElementText(p);o.collapse(false);o.select()}else{d.select(p,1);d.collapse(false)}}this._insert(' ',1);g=e.get("_marker");c=e.getParent(g,"p,h1,h2,h3,h4,h5,h6,ul,ol,th,td");if(c&&!/TD|TH/.test(c.nodeName)){g=e.split(c,g);a(e.create("div",0,i).childNodes,function(o){m=g.parentNode.insertBefore(o.cloneNode(true),g)});l(m)}else{e.setOuterHTML(g,i);d.select(h.getBody(),1);d.collapse(0)}e.remove("_marker");j=d.getStart();b=e.getViewPort(h.getWin());k=h.dom.getPos(j).y;f=j.clientHeight;if(kb.y+b.h){h.getDoc().body.scrollTop=k
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js index 714134b96..806ef288f 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js @@ -1 +1 @@ -(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TablePlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;each([['table','table.desc','mceInsertTable',true],['delete_table','table.del','mceTableDelete'],['delete_col','table.delete_col_desc','mceTableDeleteCol'],['delete_row','table.delete_row_desc','mceTableDeleteRow'],['col_after','table.col_after_desc','mceTableInsertColAfter'],['col_before','table.col_before_desc','mceTableInsertColBefore'],['row_after','table.row_after_desc','mceTableInsertRowAfter'],['row_before','table.row_before_desc','mceTableInsertRowBefore'],['row_props','table.row_desc','mceTableRowProps',true],['cell_props','table.cell_desc','mceTableCellProps',true],['split_cells','table.split_cells_desc','mceTableSplitCells',true],['merge_cells','table.merge_cells_desc','mceTableMergeCells',true]],function(c){ed.addButton(c[0],{title:c[1],cmd:c[2],ui:c[3]});});ed.onInit.add(function(){if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){var sm;if(ed.dom.getParent(e,'td')||ed.dom.getParent(e,'th')){m.removeAll();m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true,value:{action:'insert'}});m.add({title:'table.props_desc',icon:'table_props',cmd:'mceInsertTable',ui:true});m.add({title:'table.del',icon:'delete_table',cmd:'mceTableDelete',ui:true});m.addSeparator();sm=m.addMenu({title:'table.cell'});sm.add({title:'table.cell_desc',icon:'cell_props',cmd:'mceTableCellProps',ui:true});sm.add({title:'table.split_cells_desc',icon:'split_cells',cmd:'mceTableSplitCells',ui:true});sm.add({title:'table.merge_cells_desc',icon:'merge_cells',cmd:'mceTableMergeCells',ui:true});sm=m.addMenu({title:'table.row'});sm.add({title:'table.row_desc',icon:'row_props',cmd:'mceTableRowProps',ui:true});sm.add({title:'table.row_before_desc',icon:'row_before',cmd:'mceTableInsertRowBefore'});sm.add({title:'table.row_after_desc',icon:'row_after',cmd:'mceTableInsertRowAfter'});sm.add({title:'table.delete_row_desc',icon:'delete_row',cmd:'mceTableDeleteRow'});sm.addSeparator();sm.add({title:'table.cut_row_desc',icon:'cut',cmd:'mceTableCutRow'});sm.add({title:'table.copy_row_desc',icon:'copy',cmd:'mceTableCopyRow'});sm.add({title:'table.paste_row_before_desc',icon:'paste',cmd:'mceTablePasteRowBefore'});sm.add({title:'table.paste_row_after_desc',icon:'paste',cmd:'mceTablePasteRowAfter'});sm=m.addMenu({title:'table.col'});sm.add({title:'table.col_before_desc',icon:'col_before',cmd:'mceTableInsertColBefore'});sm.add({title:'table.col_after_desc',icon:'col_after',cmd:'mceTableInsertColAfter'});sm.add({title:'table.delete_col_desc',icon:'delete_col',cmd:'mceTableDeleteCol'});}else m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true});});}});if(tinymce.isGecko){ed.onKeyPress.add(function(ed,e){var n;if(e.keyCode==46){n=ed.dom.getParent(ed.selection.getNode(),'TD,TH');if(n&&(!n.hasChildNodes()||(n.childNodes.length==1&&n.firstChild.nodeName=='BR')))tinymce.dom.Event.cancel(e);}});}ed.onKeyDown.add(function(ed,e){if(e.keyCode==9&&ed.dom.getParent(ed.selection.getNode(),'TABLE'))ed.undoManager.add();});ed.onNodeChange.add(function(ed,cm,n){var p=ed.dom.getParent(n,'td,th,caption');cm.setActive('table',!!p);if(p&&p.nodeName==='CAPTION')p=null;cm.setDisabled('delete_table',!p);cm.setDisabled('delete_col',!p);cm.setDisabled('delete_table',!p);cm.setDisabled('delete_row',!p);cm.setDisabled('col_after',!p);cm.setDisabled('col_before',!p);cm.setDisabled('row_after',!p);cm.setDisabled('row_before',!p);cm.setDisabled('row_props',!p);cm.setDisabled('cell_props',!p);cm.setDisabled('split_cells',!p||(parseInt(ed.dom.getAttrib(p,'colspan','1'))<2&&parseInt(ed.dom.getAttrib(p,'rowspan','1'))<2));cm.setDisabled('merge_cells',!p);});},execCommand:function(cmd,ui,val){var ed=this.editor,b;switch(cmd){case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":ed.execCommand('mceBeginUndoLevel');this._doExecCommand(cmd,ui,val);ed.execCommand('mceEndUndoLevel');return true;}return false;},getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_doExecCommand:function(command,user_interface,value){var inst=this.editor,ed=inst,url=this.url;var focusElm=inst.selection.getNode();var trElm=inst.dom.getParent(focusElm,"tr");var tdElm=inst.dom.getParent(focusElm,"td,th");var tableElm=inst.dom.getParent(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function select(dx,dy){var td;grid=getTableGrid(tableElm);dx=dx||0;dy=dy||0;dx=Math.max(cpos.cellindex+dx,0);dy=Math.max(cpos.rowindex+dy,0);inst.execCommand('mceRepaint');td=getCell(grid,dy,dx);if(td){inst.selection.select(td.firstChild||td);inst.selection.collapse(1);}};function makeTD(){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='
';}function getColRowSpan(td){var colspan=inst.dom.getAttrib(td,"colspan");var rowspan=inst.dom.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){var x,y;for(y=0;y1){for(var i=x;i1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i';if(tinymce.isIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=inst.dom.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i';}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/row.htm',width:400+parseInt(inst.getLang('table.rowprops_delta_width',0)),height:295+parseInt(inst.getLang('table.rowprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/cell.htm',width:400+parseInt(inst.getLang('table.cellprops_delta_width',0)),height:295+parseInt(inst.getLang('table.cellprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceInsertTable":if(user_interface){inst.windowManager.open({url:url+'/table.htm',width:400+parseInt(inst.getLang('table.table_delta_width',0)),height:320+parseInt(inst.getLang('table.table_delta_height',0)),inline:1},{plugin_url:url,action:value?value.action:0});}return true;case"mceTableDelete":var table=inst.dom.getParent(inst.selection.getNode(),"table");if(table){table.parentNode.removeChild(table);inst.execCommand('mceRepaint');}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='
';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);select(0,1);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='
';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR);}select(0,1);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);select(0,-1);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='
';newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}select();break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='
';newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}select(1);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}select(-1);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i';trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");break;case"mceTableMergeCells":var rows=[];var sel=inst.selection.getSel();var grid=getTableGrid(tableElm);if(tinymce.isIE||sel.rangeCount==1){if(user_interface){var sp=getColRowSpan(tdElm);inst.windowManager.open({url:url+'/merge_cells.htm',width:240+parseInt(inst.getLang('table.merge_cells_delta_width',0)),height:110+parseInt(inst.getLang('table.merge_cells_delta_height',0)),inline:1},{action:"update",numcols:sp.colspan,numrows:sp.rowspan,plugin_url:url});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y0)rows[rows.length]=rowCells;var td=getCell(grid,cpos.rowindex,cpos.cellindex);each(ed.dom.select('br',td),function(e,i){if(i>0&&ed.dom.getAttrib('mce_bogus'))ed.dom.remove(e);});}}}else{var cells=[];var sel=inst.selection.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i0)rows[rows.length]=rowCells;}var curRow=[];var lastTR=null;for(var y=0;ycolSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;xrowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}each(ed.dom.select('br',tdElm),function(e,i){if(i>0&&ed.dom.getAttrib(e,'mce_bogus'))ed.dom.remove(e);});break;}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");inst.addVisual(tableElm);inst.nodeChanged();}return true;}return false;}});tinymce.PluginManager.add('table',tinymce.plugins.TablePlugin);})(); \ No newline at end of file +(function(){var b=tinymce.each;function a(d,e){var f=e.ownerDocument,c=f.createRange(),g;c.setStartBefore(e);c.setEnd(d.endContainer,d.endOffset);g=f.createElement("body");g.appendChild(c.cloneContents());return g.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}tinymce.create("tinymce.plugins.TablePlugin",{init:function(c,d){var e=this;e.editor=c;e.url=d;b([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(f){c.addButton(f[0],{title:f[1],cmd:f[2],ui:f[3]})});if(c.getParam("inline_styles")){c.onPreProcess.add(function(f,h){var g=f.dom;b(g.select("table",h.node),function(j){var i;if(i=g.getAttrib(j,"width")){g.setStyle(j,"width",i);g.setAttrib(j,"width")}if(i=g.getAttrib(j,"height")){g.setStyle(j,"height",i);g.setAttrib(j,"height")}})})}c.onInit.add(function(){if(!tinymce.isIE&&c.getParam("forced_root_block")){function f(){var g=c.getBody().lastChild;if(g&&g.nodeName=="TABLE"){c.dom.add(c.getBody(),"p",null,'
')}}if(tinymce.isGecko){c.onKeyDown.add(function(h,j){var g,i,k=h.dom;if(j.keyCode==37||j.keyCode==38){g=h.selection.getRng();i=k.getParent(g.startContainer,"table");if(i&&h.getBody().firstChild==i){if(a(g,i)){g=k.createRng();g.setStartBefore(i);g.setEndBefore(i);h.selection.setRng(g);j.preventDefault()}}}})}c.onKeyUp.add(f);c.onSetContent.add(f);c.onVisualAid.add(f);c.onPreProcess.add(function(g,i){var h=i.node.lastChild;if(h&&h.childNodes.length==1&&h.firstChild.nodeName=="BR"){g.dom.remove(h)}});f()}if(c&&c.plugins.contextmenu){c.plugins.contextmenu.onContextMenu.add(function(i,g,k){var l,j=c.selection,h=j.getNode()||c.getBody();if(c.dom.getParent(k,"td")||c.dom.getParent(k,"th")){g.removeAll();if(h.nodeName=="A"&&!c.dom.getAttrib(h,"name")){g.add({title:"advanced.link_desc",icon:"link",cmd:c.plugins.advlink?"mceAdvLink":"mceLink",ui:true});g.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});g.addSeparator()}if(h.nodeName=="IMG"&&h.className.indexOf("mceItem")==-1){g.add({title:"advanced.image_desc",icon:"image",cmd:c.plugins.advimage?"mceAdvImage":"mceImage",ui:true});g.addSeparator()}g.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",ui:true,value:{action:"insert"}});g.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable",ui:true});g.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete",ui:true});g.addSeparator();l=g.addMenu({title:"table.cell"});l.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps",ui:true});l.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells",ui:true});l.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells",ui:true});l=g.addMenu({title:"table.row"});l.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps",ui:true});l.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});l.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});l.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});l.addSeparator();l.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});l.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});l.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"});l.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"});l=g.addMenu({title:"table.col"});l.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});l.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});l.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{g.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",ui:true})}})}});c.onKeyDown.add(function(f,g){if(g.keyCode==9&&f.dom.getParent(f.selection.getNode(),"TABLE")){if(!tinymce.isGecko&&!tinymce.isOpera){tinyMCE.execInstanceCommand(f.editorId,"mceTableMoveToNextRow",true);return tinymce.dom.Event.cancel(g)}f.undoManager.add()}});if(!tinymce.isIE){if(c.getParam("table_selection",true)){c.onClick.add(function(f,g){g=g.target;if(g.nodeName==="TABLE"){f.selection.select(g)}})}}c.onNodeChange.add(function(g,f,i){var h=g.dom.getParent(i,"td,th,caption");f.setActive("table",i.nodeName==="TABLE"||!!h);if(h&&h.nodeName==="CAPTION"){h=null}f.setDisabled("delete_table",!h);f.setDisabled("delete_col",!h);f.setDisabled("delete_table",!h);f.setDisabled("delete_row",!h);f.setDisabled("col_after",!h);f.setDisabled("col_before",!h);f.setDisabled("row_after",!h);f.setDisabled("row_before",!h);f.setDisabled("row_props",!h);f.setDisabled("cell_props",!h);f.setDisabled("split_cells",!h||(parseInt(g.dom.getAttrib(h,"colspan","1"))<2&&parseInt(g.dom.getAttrib(h,"rowspan","1"))<2));f.setDisabled("merge_cells",!h)});if(!tinymce.isIE){c.onBeforeSetContent.add(function(f,g){if(g.initial){g.content=g.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g,tinymce.isOpera?"<$1$2> ":'<$1$2>
')}})}},execCommand:function(f,e,g){var d=this.editor,c;switch(f){case"mceTableMoveToNextRow":case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":d.execCommand("mceBeginUndoLevel");this._doExecCommand(f,e,g);d.execCommand("mceEndUndoLevel");return true}return false},getInfo:function(){return{longname:"Tables",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_doExecCommand:function(s,aa,af){var W=this.editor,av=W,h=this.url;var o=W.selection.getNode();var X=W.dom.getParent(o,"tr");var ar=W.dom.getParent(o,"td,th");var G=W.dom.getParent(o,"table");var l=W.contentWindow.document;var aw=G?G.getAttribute("border"):"";if(X&&ar==null){ar=X.cells[0]}function aq(y,x){for(var ay=0;ay0&&aq(y[ay],x)){return true}if(y[ay]==x){return true}}return false}function ak(x,i){var y;ae=f(G);x=x||0;i=i||0;x=Math.max(p.cellindex+x,0);i=Math.max(p.rowindex+i,0);W.execCommand("mceRepaint");y=e(ae,i,x);if(y){W.selection.select(y.firstChild||y);W.selection.collapse(1)}}function ai(){var i=l.createElement("td");if(!tinymce.isIE){i.innerHTML='
'}}function k(y){var x=W.dom.getAttrib(y,"colspan");var i=W.dom.getAttrib(y,"rowspan");x=x==""?1:parseInt(x);i=i==""?1:parseInt(i);return{colspan:x,rowspan:i}}function am(ay,aA){var i,az;for(az=0;az1){for(var aA=aF;aA1){az.rowSpan=aC.rowspan+1}aD=az}C(G)}}function P(x,i){while((x=x.previousSibling)!=null){if(x.nodeName==i){return x}}return null}function ag(ay,az){var x=az.split(",");while((ay=ay.nextSibling)!=null){for(var y=0;y1){do{var i=ag(az,"TD,TH");if(az._delete){az.parentNode.removeChild(az)}}while((az=i)!=null)}}while((y=x)!=null)}function q(ay,aB,aA){ay.rowSpan=1;var x=ag(aB,"TR");for(var az=1;az'}if(tinymce.isIE){x.insertBefore(y,x.cells(ay.cellIndex))}else{x.insertBefore(y,x.cells[ay.cellIndex])}x=ag(x,"TR")}}function T(aG,aI,aC){var y=f(aI);var ay=aC.cloneNode(false);var aH=am(y,aC.cells[0]);var aD=null;var aB=W.dom.getAttrib(aI,"border");var aA=null;for(var aF=0;aA=e(y,aH.rowindex,aF);aF++){var aE=null;if(aD!=aA){for(var az=0;az'}}aE.colSpan=1;aE.rowSpan=1;ay.appendChild(aE);aD=aA}return ay}switch(s){case"mceTableMoveToNextRow":var M=B(G,ar);if(!M){W.execCommand("mceTableInsertRowAfter",ar);M=B(G,ar)}W.selection.select(M);W.selection.collapse(true);return true;case"mceTableRowProps":if(X==null){return true}if(aa){W.windowManager.open({url:h+"/row.htm",width:400+parseInt(W.getLang("table.rowprops_delta_width",0)),height:295+parseInt(W.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})}return true;case"mceTableCellProps":if(ar==null){return true}if(aa){W.windowManager.open({url:h+"/cell.htm",width:400+parseInt(W.getLang("table.cellprops_delta_width",0)),height:295+parseInt(W.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}return true;case"mceInsertTable":if(aa){W.windowManager.open({url:h+"/table.htm",width:400+parseInt(W.getLang("table.table_delta_width",0)),height:320+parseInt(W.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:af?af.action:0})}return true;case"mceTableDelete":var H=W.dom.getParent(W.selection.getNode(),"table");if(H){H.parentNode.removeChild(H);W.execCommand("mceRepaint")}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!G){return true}if(X&&G!=X.parentNode){G=X.parentNode}if(G&&X){switch(s){case"mceTableCutRow":if(!X||!ar){return true}W.tableRowClipboard=T(l,G,X);W.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!X||!ar){return true}W.tableRowClipboard=T(l,G,X);break;case"mceTablePasteRowBefore":if(!X||!ar){return true}var w=W.tableRowClipboard.cloneNode(true);var j=P(X,"TR");if(j!=null){n(G,j,j.cells[0],w)}X.parentNode.insertBefore(w,X);break;case"mceTablePasteRowAfter":if(!X||!ar){return true}var Y=ag(X,"TR");var w=W.tableRowClipboard.cloneNode(true);n(G,X,ar,w);if(Y==null){X.parentNode.appendChild(w)}else{Y.parentNode.insertBefore(w,Y)}break;case"mceTableInsertRowBefore":if(!X||!ar){return true}var ae=f(G);var p=am(ae,ar);var w=l.createElement("tr");var v=null;p.rowindex--;if(p.rowindex<0){p.rowindex=0}for(var ad=0;ar=e(ae,p.rowindex,ad);ad++){if(ar!=v){var F=k(ar);if(F.rowspan==1){var K=l.createElement("td");if(!tinymce.isIE){K.innerHTML='
'}K.colSpan=ar.colSpan;w.appendChild(K)}else{ar.rowSpan=F.rowspan+1}v=ar}}X.parentNode.insertBefore(w,X);ak(0,1);break;case"mceTableInsertRowAfter":if(!X||!ar){return true}var ae=f(G);var p=am(ae,ar);var w=l.createElement("tr");var v=null;for(var ad=0;ar=e(ae,p.rowindex,ad);ad++){if(ar!=v){var F=k(ar);if(F.rowspan==1){var K=l.createElement("td");if(!tinymce.isIE){K.innerHTML='
'}K.colSpan=ar.colSpan;w.appendChild(K)}else{ar.rowSpan=F.rowspan+1}v=ar}}if(w.hasChildNodes()){var Y=ag(X,"TR");if(Y){Y.parentNode.insertBefore(w,Y)}else{G.appendChild(w)}}ak(0,1);break;case"mceTableDeleteRow":if(!X||!ar){return true}var ae=f(G);var p=am(ae,ar);if(ae.length==1&&G.nodeName=="TBODY"){W.dom.remove(W.dom.getParent(G,"table"));return true}var E=X.cells;var Y=ag(X,"TR");for(var ad=0;ad1){var K=E[ad].cloneNode(true);var F=k(E[ad]);K.rowSpan=F.rowspan-1;var al=Y.cells[ad];if(al==null){Y.appendChild(K)}else{Y.insertBefore(K,al)}}}var v=null;for(var ad=0;ar=e(ae,p.rowindex,ad);ad++){if(ar!=v){var F=k(ar);if(F.rowspan>1){ar.rowSpan=F.rowspan-1}else{X=ar.parentNode;if(X.parentNode){X._delete=true}}v=ar}}C(G);ak(0,-1);break;case"mceTableInsertColBefore":if(!X||!ar){return true}var ae=f(W.dom.getParent(G,"table"));var p=am(ae,ar);var v=null;for(var ab=0;ar=e(ae,ab,p.cellindex);ab++){if(ar!=v){var F=k(ar);if(F.colspan==1){var K=l.createElement(ar.nodeName);if(!tinymce.isIE){K.innerHTML='
'}K.rowSpan=ar.rowSpan;ar.parentNode.insertBefore(K,ar)}else{ar.colSpan++}v=ar}}ak();break;case"mceTableInsertColAfter":if(!X||!ar){return true}var ae=f(W.dom.getParent(G,"table"));var p=am(ae,ar);var v=null;for(var ab=0;ar=e(ae,ab,p.cellindex);ab++){if(ar!=v){var F=k(ar);if(F.colspan==1){var K=l.createElement(ar.nodeName);if(!tinymce.isIE){K.innerHTML='
'}K.rowSpan=ar.rowSpan;var al=ag(ar,"TD,TH");if(al==null){ar.parentNode.appendChild(K)}else{al.parentNode.insertBefore(K,al)}}else{ar.colSpan++}v=ar}}ak(1);break;case"mceTableDeleteCol":if(!X||!ar){return true}var ae=f(G);var p=am(ae,ar);var v=null;if((ae.length>1&&ae[0].length<=1)&&G.nodeName=="TBODY"){W.dom.remove(W.dom.getParent(G,"table"));return true}for(var ab=0;ar=e(ae,ab,p.cellindex);ab++){if(ar!=v){var F=k(ar);if(F.colspan>1){ar.colSpan=F.colspan-1}else{if(ar.parentNode){ar.parentNode.removeChild(ar)}}v=ar}}ak(-1);break;case"mceTableSplitCells":if(!X||!ar){return true}var m=k(ar);var D=m.colspan;var I=m.rowspan;if(D>1||I>1){ar.colSpan=1;for(var an=1;an'}X.insertBefore(K,ag(ar,"TD,TH"));if(I>1){q(K,X,I)}}q(ar,X,I)}G=W.dom.getParent(W.selection.getNode(),"table");break;case"mceTableMergeCells":var ap=[];var S=W.selection.getSel();var ae=f(G);if(tinymce.isIE||S.rangeCount==1){if(aa){var u=k(ar);W.windowManager.open({url:h+"/merge_cells.htm",width:240+parseInt(W.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(W.getLang("table.merge_cells_delta_height",0)),inline:1},{action:"update",numcols:u.colspan,numrows:u.rowspan,plugin_url:h});return true}else{var V=parseInt(af.numrows);var d=parseInt(af.numcols);var p=am(ae,ar);if((""+V)=="NaN"){V=1}if((""+d)=="NaN"){d=1}var c=G.rows;for(var ab=p.rowindex;ab0){ap[ap.length]=ah}var g=e(ae,p.rowindex,p.cellindex);b(av.dom.select("br",g),function(y,x){if(x>0&&av.dom.getAttrib("mce_bogus")){av.dom.remove(y)}})}}}else{var E=[];var S=W.selection.getSel();var Z=null;var ao=null;var A=-1,ax=-1,z,au;if(S.rangeCount<2){return true}for(var an=0;an0){ap[ap.length]=ah}}var ao=[];var Z=null;for(var ab=0;abr){r=J}U=-1}var R=-1;for(var ad=0;adt){t=N}R=-1}ar=ap[0][0];ar.rowSpan=t;ar.colSpan=r;for(var ab=0;ab0)){ar.innerHTML+=Q}if(ap[ab][ad]!=ar&&!ap[ab][ad]._deleted){var p=am(ae,ap[ab][ad]);var at=ap[ab][ad].parentNode;at.removeChild(ap[ab][ad]);ap[ab][ad]._deleted=true;if(!at.hasChildNodes()){at.parentNode.removeChild(at);var ac=null;for(var ad=0;cellElm=e(ae,p.rowindex,ad);ad++){if(cellElm!=ac&&cellElm.rowSpan>1){cellElm.rowSpan--}ac=cellElm}if(ar.rowSpan>1){ar.rowSpan--}}}}}b(av.dom.select("br",ar),function(y,x){if(x>0&&av.dom.getAttrib(y,"mce_bogus")){av.dom.remove(y)}});break}G=W.dom.getParent(W.selection.getNode(),"table");W.addVisual(G);W.nodeChanged()}return true}return false}});tinymce.PluginManager.add("table",tinymce.plugins.TablePlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js index fbc7a8a26..87b10556f 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js @@ -1,5 +1,5 @@ /** - * $Id: editor_plugin_src.js 691 2008-03-09 19:58:20Z spocke $ + * $Id: editor_plugin_src.js 1209 2009-08-20 12:35:10Z spocke $ * * @author Moxiecode * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. @@ -8,6 +8,20 @@ (function() { var each = tinymce.each; + // Checks if the selection/caret is at the start of the specified block element + function isAtStart(rng, par) { + var doc = par.ownerDocument, rng2 = doc.createRange(), elm; + + rng2.setStartBefore(par); + rng2.setEnd(rng.endContainer, rng.endOffset); + + elm = doc.createElement('body'); + elm.appendChild(rng2.cloneContents()); + + // Check for text characters of other elements that should be treated as content + return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0; + }; + tinymce.create('tinymce.plugins.TablePlugin', { init : function(ed, url) { var t = this; @@ -33,13 +47,98 @@ ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); }); + if (ed.getParam('inline_styles')) { + // Force move of attribs to styles in strict mode + ed.onPreProcess.add(function(ed, o) { + var dom = ed.dom; + + each(dom.select('table', o.node), function(n) { + var v; + + if (v = dom.getAttrib(n, 'width')) { + dom.setStyle(n, 'width', v); + dom.setAttrib(n, 'width'); + } + + if (v = dom.getAttrib(n, 'height')) { + dom.setStyle(n, 'height', v); + dom.setAttrib(n, 'height'); + } + }); + }); + } + ed.onInit.add(function() { + // Fixes an issue on Gecko where it's impossible to place the caret behind a table + // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled + if (!tinymce.isIE && ed.getParam('forced_root_block')) { + function fixTableCaretPos() { + var last = ed.getBody().lastChild; + + if (last && last.nodeName == 'TABLE') + ed.dom.add(ed.getBody(), 'p', null, '
'); + }; + + // Fixes an bug where it's impossible to place the caret before a table in Gecko + // this fix solves it by detecting when the caret is at the beginning of such a table + // and then manually moves the caret infront of the table + if (tinymce.isGecko) { + ed.onKeyDown.add(function(ed, e) { + var rng, table, dom = ed.dom; + + // On gecko it's not possible to place the caret before a table + if (e.keyCode == 37 || e.keyCode == 38) { + rng = ed.selection.getRng(); + table = dom.getParent(rng.startContainer, 'table'); + + if (table && ed.getBody().firstChild == table) { + if (isAtStart(rng, table)) { + rng = dom.createRng(); + + rng.setStartBefore(table); + rng.setEndBefore(table); + + ed.selection.setRng(rng); + + e.preventDefault(); + } + } + } + }); + } + + ed.onKeyUp.add(fixTableCaretPos); + ed.onSetContent.add(fixTableCaretPos); + ed.onVisualAid.add(fixTableCaretPos); + + ed.onPreProcess.add(function(ed, o) { + var last = o.node.lastChild; + + if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') + ed.dom.remove(last); + }); + + fixTableCaretPos(); + } + if (ed && ed.plugins.contextmenu) { ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { - var sm; + var sm, se = ed.selection, el = se.getNode() || ed.getBody(); if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th')) { m.removeAll(); + + if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { + m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); + m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); + m.addSeparator(); + } + + if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { + m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); + m.addSeparator(); + } + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true, value : {action : 'insert'}}); m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable', ui : true}); m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete', ui : true}); @@ -74,30 +173,34 @@ } }); - // Block delete on gecko inside TD:s. Gecko is removing table elements and then produces incorrect tables - // The backspace key also removed TD:s but this one can not be blocked - if (tinymce.isGecko) { - ed.onKeyPress.add(function(ed, e) { - var n; - - if (e.keyCode == 46) { - n = ed.dom.getParent(ed.selection.getNode(), 'TD,TH'); - if (n && (!n.hasChildNodes() || (n.childNodes.length == 1 && n.firstChild.nodeName == 'BR'))) - tinymce.dom.Event.cancel(e); - } - }); - } - // Add undo level when new rows are created using the tab key ed.onKeyDown.add(function(ed, e) { - if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE')) + if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE')) { + if (!tinymce.isGecko && !tinymce.isOpera) { + tinyMCE.execInstanceCommand(ed.editorId, "mceTableMoveToNextRow", true); + return tinymce.dom.Event.cancel(e); + } + ed.undoManager.add(); + } }); + // Select whole table is a table border is clicked + if (!tinymce.isIE) { + if (ed.getParam('table_selection', true)) { + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'TABLE') + ed.selection.select(e); + }); + } + } + ed.onNodeChange.add(function(ed, cm, n) { var p = ed.dom.getParent(n, 'td,th,caption'); - cm.setActive('table', !!p); + cm.setActive('table', n.nodeName === 'TABLE' || !!p); if (p && p.nodeName === 'CAPTION') p = null; @@ -114,6 +217,14 @@ cm.setDisabled('split_cells', !p || (parseInt(ed.dom.getAttrib(p, 'colspan', '1')) < 2 && parseInt(ed.dom.getAttrib(p, 'rowspan', '1')) < 2)); cm.setDisabled('merge_cells', !p); }); + + // Padd empty table cells + if (!tinymce.isIE) { + ed.onBeforeSetContent.add(function(ed, o) { + if (o.initial) + o.content = o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g, tinymce.isOpera ? '<$1$2> ' : '<$1$2>
'); + }); + } }, execCommand : function(cmd, ui, val) { @@ -121,6 +232,7 @@ // Is table command switch (cmd) { + case "mceTableMoveToNextRow": case "mceInsertTable": case "mceTableRowProps": case "mceTableCellProps": @@ -246,6 +358,19 @@ return null; } + function getNextCell(table, cell) { + var cells = [], x = 0, i, j, cell, nextCell; + + for (i = 0; i < table.rows.length; i++) + for (j = 0; j < table.rows[i].cells.length; j++, x++) + cells[x] = table.rows[i].cells[j]; + + for (i = 0; i < cells.length; i++) + if (cells[i] == cell) + if (nextCell = cells[i+1]) + return nextCell; + } + function getTableGrid(table) { var grid = [], rows = table.rows, x, y, td, sd, xstart, x2, y2; @@ -413,6 +538,19 @@ // Handle commands switch (command) { + case "mceTableMoveToNextRow": + var nextCell = getNextCell(tableElm, tdElm); + + if (!nextCell) { + inst.execCommand("mceTableInsertRowAfter", tdElm); + nextCell = getNextCell(tableElm, tdElm); + } + + inst.selection.select(nextCell); + inst.selection.collapse(true); + + return true; + case "mceTableRowProps": if (trElm == null) return true; @@ -625,7 +763,7 @@ var cpos = getCellPos(grid, tdElm); // Only one row, remove whole table - if (grid.length == 1) { + if (grid.length == 1 && tableElm.nodeName == 'TBODY') { inst.dom.remove(inst.dom.getParent(tableElm, "table")); return true; } @@ -677,7 +815,7 @@ if (!trElm || !tdElm) return true; - var grid = getTableGrid(tableElm); + var grid = getTableGrid(inst.dom.getParent(tableElm, "table")); var cpos = getCellPos(grid, tdElm); var lastTDElm = null; @@ -708,7 +846,7 @@ if (!trElm || !tdElm) return true; - var grid = getTableGrid(tableElm); + var grid = getTableGrid(inst.dom.getParent(tableElm, "table")); var cpos = getCellPos(grid, tdElm); var lastTDElm = null; @@ -748,7 +886,7 @@ var lastTDElm = null; // Only one col, remove whole table - if (grid.length > 1 && grid[0].length <= 1) { + if ((grid.length > 1 && grid[0].length <= 1) && tableElm.nodeName == 'TBODY') { inst.dom.remove(inst.dom.getParent(tableElm, "table")); return true; } @@ -886,7 +1024,7 @@ if (!tdElm) break; - if (tdElm.nodeName == "TD") + if (tdElm.nodeName == "TD" || tdElm.nodeName == "TH") cells[cells.length] = tdElm; } diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js index 69be316c5..f23b06751 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js @@ -32,6 +32,8 @@ function init() { // Setup form addClassesToList('class', 'table_cell_styles'); + TinyMCE_EditableSelects.init(); + formObj.bordercolor.value = bordercolor; formObj.bgcolor.value = bgcolor; formObj.backgroundimage.value = backgroundimage; @@ -42,7 +44,7 @@ function init() { formObj.style.value = ed.dom.serializeStyle(st); selectByValue(formObj, 'align', align); selectByValue(formObj, 'valign', valign); - selectByValue(formObj, 'class', className); + selectByValue(formObj, 'class', className, true, true); selectByValue(formObj, 'celltype', celltype); selectByValue(formObj, 'dir', dir); selectByValue(formObj, 'scope', scope); @@ -56,12 +58,13 @@ function init() { } function updateAction() { - var el = ed.selection.getNode(); - var inst = ed; - var tdElm = ed.dom.getParent(el, "td,th"); - var trElm = ed.dom.getParent(el, "tr"); - var tableElm = ed.dom.getParent(el, "table"); - var formObj = document.forms[0]; + var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0]; + + tinyMCEPopup.restoreSelection(); + el = ed.selection.getNode(); + tdElm = ed.dom.getParent(el, "td,th"); + trElm = ed.dom.getParent(el, "tr"); + tableElm = ed.dom.getParent(el, "table"); ed.execCommand('mceBeginUndoLevel'); @@ -70,14 +73,24 @@ function updateAction() { var celltype = getSelectValue(formObj, 'celltype'); var scope = getSelectValue(formObj, 'scope'); - if (ed.getParam("accessibility_warnings")) { - if (celltype == "th" && scope == "") - var answer = confirm(ed.getLang('table_dlg.missing_scope', '', true)); - else - var answer = true; + function doUpdate(s) { + if (s) { + updateCell(tdElm); - if (!answer) - return; + ed.addVisual(); + ed.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + } + }; + + if (ed.getParam("accessibility_warnings", 1)) { + if (celltype == "th" && scope == "") + tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate); + else + doUpdate(1); + + return; } updateCell(tdElm); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js index 018adf996..31d6df0ab 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js @@ -6,14 +6,16 @@ function init() { tinyMCEPopup.resizeToInnerSize(); f.numcols.value = tinyMCEPopup.getWindowArg('numcols', 1); - f.numrows.value = tinyMCEPopup.getWindowArg('numcols', 1); + f.numrows.value = tinyMCEPopup.getWindowArg('numrows', 1); } function mergeCells() { var args = [], f = document.forms[0]; + tinyMCEPopup.restoreSelection(); + if (!AutoValidator.validate(f)) { - alert(tinyMCEPopup.getLang('invalid_data')); + tinyMCEPopup.alert(tinyMCEPopup.getLang('invalid_data')); return false; } diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/row.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/row.js index 9b5d41ae1..d25f635f6 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/row.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/row.js @@ -26,6 +26,8 @@ function init() { // Setup form addClassesToList('class', 'table_row_styles'); + TinyMCE_EditableSelects.init(); + formObj.bgcolor.value = bgcolor; formObj.backgroundimage.value = backgroundimage; formObj.height.value = height; @@ -34,7 +36,7 @@ function init() { formObj.style.value = dom.serializeStyle(st); selectByValue(formObj, 'align', align); selectByValue(formObj, 'valign', valign); - selectByValue(formObj, 'class', className); + selectByValue(formObj, 'class', className, true, true); selectByValue(formObj, 'rowtype', rowtype); selectByValue(formObj, 'dir', dir); @@ -46,13 +48,13 @@ function init() { } function updateAction() { - var inst = tinyMCEPopup.editor; - var dom = inst.dom; - var trElm = dom.getParent(inst.selection.getNode(), "tr"); - var tableElm = dom.getParent(inst.selection.getNode(), "table"); - var formObj = document.forms[0]; + var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0]; var action = getSelectValue(formObj, 'action'); + tinyMCEPopup.restoreSelection(); + trElm = dom.getParent(inst.selection.getNode(), "tr"); + tableElm = dom.getParent(inst.selection.getNode(), "table"); + inst.execCommand('mceBeginUndoLevel'); switch (action) { diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/table.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/table.js index bc1303124..182589d69 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/table.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/js/table.js @@ -9,8 +9,10 @@ function insertTable() { var html = '', capEl, elm; var cellLimit, rowLimit, colLimit; + tinyMCEPopup.restoreSelection(); + if (!AutoValidator.validate(formObj)) { - alert(inst.getLang('invalid_data')); + tinyMCEPopup.alert(inst.getLang('invalid_data')); return false; } @@ -22,14 +24,14 @@ function insertTable() { border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0; cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : ""; cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : ""; - align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value; - frame = formObj.elements['frame'].options[formObj.elements['frame'].selectedIndex].value; - rules = formObj.elements['rules'].options[formObj.elements['rules'].selectedIndex].value; + align = getSelectValue(formObj, "align"); + frame = getSelectValue(formObj, "tframe"); + rules = getSelectValue(formObj, "rules"); width = formObj.elements['width'].value; height = formObj.elements['height'].value; bordercolor = formObj.elements['bordercolor'].value; bgcolor = formObj.elements['bgcolor'].value; - className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value; + className = getSelectValue(formObj, "class"); id = formObj.elements['id'].value; summary = formObj.elements['summary'].value; style = formObj.elements['style'].value; @@ -44,13 +46,13 @@ function insertTable() { // Validate table size if (colLimit && cols > colLimit) { - alert(inst.getLang('table_col_limit', '', true, {cols : colLimit})); + tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit)); return false; } else if (rowLimit && rows > rowLimit) { - alert(inst.getLang('table_row_limit', '', true, {rows : rowLimit})); + tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit)); return false; } else if (cellLimit && cols * rows > cellLimit) { - alert(inst.getLang('table_cell_limit', '', true, {cells : cellLimit})); + tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit)); return false; } @@ -85,7 +87,7 @@ function insertTable() { elm.insertBefore(capEl, elm.firstChild); } - if (width && /(pt|em|cm)$/.test(width)) { + if (width && inst.settings.inline_styles) { dom.setStyle(elm, 'width', width); dom.setAttrib(elm, 'width', ''); } else { @@ -98,10 +100,13 @@ function insertTable() { dom.setAttrib(elm, 'bgColor', ''); dom.setAttrib(elm, 'background', ''); - if (height) { + if (height && inst.settings.inline_styles) { dom.setStyle(elm, 'height', height); dom.setAttrib(elm, 'height', ''); - } + } else { + dom.setAttrib(elm, 'height', height, true); + dom.setStyle(elm, 'height', ''); + } if (background != '') elm.style.backgroundImage = "url('" + background + "')"; @@ -147,10 +152,14 @@ function insertTable() { html += makeAttrib('cellpadding', cellpadding); html += makeAttrib('cellspacing', cellspacing); - if (width && /(pt|em|cm)$/.test(width)) { + if (width && inst.settings.inline_styles) { if (style) style += '; '; + // Force px + if (/^[0-9\.]+$/.test(width)) + width += 'px'; + style += 'width: ' + width; } else html += makeAttrib('width', width); @@ -198,7 +207,30 @@ function insertTable() { html += "
   @@ -84,19 +83,19 @@ - + - - + - - + @@ -109,27 +108,27 @@
  
  +   x px
  +   / (c /c = center)
- + - + - + - + - + - + - + - +
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js new file mode 100644 index 000000000..220b84ac4 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this;if(a.getParam("fullscreen_is_enabled")){return}function b(){var h=a.getDoc(),e=h.body,j=h.documentElement,g=tinymce.DOM,i=d.autoresize_min_height,f;f=tinymce.isIE?e.scrollHeight:j.offsetHeight;if(f>d.autoresize_min_height){i=f}g.setStyle(g.get(a.id+"_ifr"),"height",i+"px");if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=a.getElement().offsetHeight;a.onInit.add(function(f,e){f.setProgressState(true);d.throbbing=true;f.getBody().style.overflowY="hidden"});a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);a.onLoadContent.add(function(f,e){b();setTimeout(function(){b();f.setProgressState(false);d.throbbing=false},1250)});a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js new file mode 100644 index 000000000..8b2f374e1 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js @@ -0,0 +1,114 @@ +/** + * $Id: editor_plugin_src.js 539 2008-01-14 19:08:58Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. + */ + +(function() { + /** + * Auto Resize + * + * This plugin automatically resizes the content area to fit its content height. + * It will retain a minimum height, which is the height of the content area when + * it's initialized. + */ + tinymce.create('tinymce.plugins.AutoResizePlugin', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function(ed, url) { + var t = this; + + if (ed.getParam('fullscreen_is_enabled')) + return; + + /** + * This method gets executed each time the editor needs to resize. + */ + function resize() { + var d = ed.getDoc(), b = d.body, de = d.documentElement, DOM = tinymce.DOM, resizeHeight = t.autoresize_min_height, myHeight; + + // Get height differently depending on the browser used + myHeight = tinymce.isIE ? b.scrollHeight : de.offsetHeight; + + // Don't make it smaller than the minimum height + if (myHeight > t.autoresize_min_height) + resizeHeight = myHeight; + + // Resize content element + DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px'); + + // if we're throbbing, we'll re-throb to match the new size + if (t.throbbing) { + ed.setProgressState(false); + ed.setProgressState(true); + } + }; + + t.editor = ed; + + // Define minimum height + t.autoresize_min_height = ed.getElement().offsetHeight; + + // Things to do when the editor is ready + ed.onInit.add(function(ed, l) { + // Show throbber until content area is resized properly + ed.setProgressState(true); + t.throbbing = true; + + // Hide scrollbars + ed.getBody().style.overflowY = "hidden"; + }); + + // Add appropriate listeners for resizing content area + ed.onChange.add(resize); + ed.onSetContent.add(resize); + ed.onPaste.add(resize); + ed.onKeyUp.add(resize); + ed.onPostRender.add(resize); + + ed.onLoadContent.add(function(ed, l) { + resize(); + + // Because the content area resizes when its content CSS loads, + // and we can't easily add a listener to its onload event, + // we'll just trigger a resize after a short loading period + setTimeout(function() { + resize(); + + // Disable throbber + ed.setProgressState(false); + t.throbbing = false; + }, 1250); + }); + + // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); + ed.addCommand('mceAutoResize', resize); + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'Auto Resize', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('autoresize', tinymce.plugins.AutoResizePlugin); +})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js index 01a994ee5..091a063a9 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.AutoSavePlugin',{init:function(ed,url){var t=this;t.editor=ed;window.onbeforeunload=tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;},getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinymce.majorVersion+"."+tinymce.minorVersion};},'static':{_beforeUnloadHandler:function(){var msg;tinymce.each(tinyMCE.editors,function(ed){if(ed.getParam("fullscreen_is_enabled"))return;if(ed.isDirty()){msg=ed.getLang("autosave.unload_msg");return false;}});return msg;}}});tinymce.PluginManager.add('autosave',tinymce.plugins.AutoSavePlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.AutoSavePlugin",{init:function(a,b){var c=this;c.editor=a;window.onbeforeunload=tinymce.plugins.AutoSavePlugin._beforeUnloadHandler},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:tinymce.majorVersion+"."+tinymce.minorVersion}},"static":{_beforeUnloadHandler:function(){var a;tinymce.each(tinyMCE.editors,function(b){if(b.getParam("fullscreen_is_enabled")){return}if(b.isDirty()){a=b.getLang("autosave.unload_msg");return false}});return a}}});tinymce.PluginManager.add("autosave",tinymce.plugins.AutoSavePlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js index c56cdfdd6..930fdff0a 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.BBCodePlugin',{init:function(ed,url){var t=this,dialect=ed.getParam('bbcode_dialect','punbb').toLowerCase();ed.onBeforeSetContent.add(function(ed,o){o.content=t['_'+dialect+'_bbcode2html'](o.content);});ed.onPostProcess.add(function(ed,o){if(o.set)o.content=t['_'+dialect+'_bbcode2html'](o.content);if(o.get)o.content=t['_'+dialect+'_html2bbcode'](o.content);});},getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_punbb_html2bbcode:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]");rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]");rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]");rep(/(.*?)<\/font>/gi,"$1");rep(//gi,"[img]$1[/img]");rep(/(.*?)<\/span>/gi,"[code]$1[/code]");rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(/(.*?)<\/span>/gi,"[u]$1[/u]");rep(//gi,"[u]");rep(/
/gi,"\n");rep(//gi,"\n");rep(/
/gi,"\n");rep(/

/gi,"");rep(/<\/p>/gi,"\n");rep(/ /gi," ");rep(/"/gi,"\"");rep(/</gi,"<");rep(/>/gi,">");rep(/&/gi,"&");return s;},_punbb_bbcode2html:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/\n/gi,"
");rep(/\[b\]/gi,"");rep(/\[\/b\]/gi,"");rep(/\[i\]/gi,"");rep(/\[\/i\]/gi,"");rep(/\[u\]/gi,"");rep(/\[\/u\]/gi,"");rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2");rep(/\[url\](.*?)\[\/url\]/gi,"$1");rep(/\[img\](.*?)\[\/img\]/gi,"");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2");rep(/\[code\](.*?)\[\/code\]/gi,"$1 ");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 ");return s;}});tinymce.PluginManager.add('bbcode',tinymce.plugins.BBCodePlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a,b){var d=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.onBeforeSetContent.add(function(e,f){f.content=d["_"+c+"_bbcode2html"](f.content)});a.onPostProcess.add(function(e,f){if(f.set){f.content=d["_"+c+"_bbcode2html"](f.content)}if(f.get){f.content=d["_"+c+"_html2bbcode"](f.content)}})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_punbb_html2bbcode:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/(.*?)<\/font>/gi,"$1");b(//gi,"[img]$1[/img]");b(/(.*?)<\/span>/gi,"[code]$1[/code]");b(/(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/(.*?)<\/span>/gi,"[u]$1[/u]");b(//gi,"[u]");b(/]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/
/gi,"\n");b(//gi,"\n");b(/
/gi,"\n");b(/

/gi,"");b(/<\/p>/gi,"\n");b(/ /gi," ");b(/"/gi,'"');b(/</gi,"<");b(/>/gi,">");b(/&/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"
");b(/\[b\]/gi,"");b(/\[\/b\]/gi,"");b(/\[i\]/gi,"");b(/\[\/i\]/gi,"");b(/\[u\]/gi,"");b(/\[\/u\]/gi,"");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2');b(/\[url\](.*?)\[\/url\]/gi,'$1');b(/\[img\](.*?)\[\/img\]/gi,'');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2');b(/\[code\](.*?)\[\/code\]/gi,'$1 ');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 ');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js index c7fd2625c..1d7493e26 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -69,6 +69,8 @@ rep(/<\/u>/gi,"[/u]"); rep(/(.*?)<\/span>/gi,"[u]$1[/u]"); rep(//gi,"[u]"); + rep(/]*>/gi,"[quote]"); + rep(/<\/blockquote>/gi,"[/quote]"); rep(/
/gi,"\n"); rep(//gi,"\n"); rep(/
/gi,"\n"); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js index 92f09a647..24ee2eb4a 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js @@ -1 +1 @@ -(function(){var Event=tinymce.dom.Event,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.ContextMenu',{init:function(ed){var t=this;t.editor=ed;t.onContextMenu=new tinymce.util.Dispatcher(this);ed.onContextMenu.add(function(ed,e){if(!e.ctrlKey){t._getMenu(ed).showMenu(e.clientX,e.clientY);Event.cancel(e);}});function hide(){if(t._menu){t._menu.removeAll();t._menu.destroy();}};ed.onMouseDown.add(hide);ed.onKeyDown.add(hide);Event.add(document,'click',hide);},_getMenu:function(ed){var t=this,m=t._menu,se=ed.selection,col=se.isCollapsed(),el=se.getNode()||ed.getBody(),am,p1,p2;if(m){m.removeAll();m.destroy();}p1=DOM.getPos(ed.getContentAreaContainer());p2=DOM.getPos(ed.getContainer());m=ed.controlManager.createDropMenu('contextmenu',{offset_x:p1.x,offset_y:p1.y,constrain:1});t._menu=m;m.add({title:'advanced.cut_desc',icon:'cut',cmd:'Cut'}).setDisabled(col);m.add({title:'advanced.copy_desc',icon:'copy',cmd:'Copy'}).setDisabled(col);m.add({title:'advanced.paste_desc',icon:'paste',cmd:'Paste'});if((el.nodeName=='A'&&!ed.dom.getAttrib(el,'name'))||!col){m.addSeparator();m.add({title:'advanced.link_desc',icon:'link',cmd:ed.plugins.advlink?'mceAdvLink':'mceLink',ui:true});m.add({title:'advanced.unlink_desc',icon:'unlink',cmd:'UnLink'});}m.addSeparator();m.add({title:'advanced.image_desc',icon:'image',cmd:ed.plugins.advimage?'mceAdvImage':'mceImage',ui:true});m.addSeparator();am=m.addMenu({title:'contextmenu.align'});am.add({title:'contextmenu.left',icon:'justifyleft',cmd:'JustifyLeft'});am.add({title:'contextmenu.center',icon:'justifycenter',cmd:'JustifyCenter'});am.add({title:'contextmenu.right',icon:'justifyright',cmd:'JustifyRight'});am.add({title:'contextmenu.full',icon:'justifyfull',cmd:'JustifyFull'});t.onContextMenu.dispatch(t,m,el,col);return m;}});tinymce.PluginManager.add('contextmenu',tinymce.plugins.ContextMenu);})(); \ No newline at end of file +(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(d){var f=this;f.editor=d;f.onContextMenu=new tinymce.util.Dispatcher(this);d.onContextMenu.add(function(g,h){if(!h.ctrlKey){f._getMenu(g).showMenu(h.clientX,h.clientY);a.add(g.getDoc(),"click",e);a.cancel(h)}});function e(){if(f._menu){f._menu.removeAll();f._menu.destroy();a.remove(d.getDoc(),"click",e)}}d.onMouseDown.add(e);d.onKeyDown.add(e)},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js index 0b283ecad..a2c1866ba 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js @@ -1,5 +1,5 @@ /** - * $Id: editor_plugin_src.js 665 2008-03-04 13:26:59Z spocke $ + * $Id: editor_plugin_src.js 848 2008-05-15 11:54:40Z spocke $ * * @author Moxiecode * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. @@ -18,6 +18,7 @@ ed.onContextMenu.add(function(ed, e) { if (!e.ctrlKey) { t._getMenu(ed).showMenu(e.clientX, e.clientY); + Event.add(ed.getDoc(), 'click', hide); Event.cancel(e); } }); @@ -26,12 +27,22 @@ if (t._menu) { t._menu.removeAll(); t._menu.destroy(); + Event.remove(ed.getDoc(), 'click', hide); } }; ed.onMouseDown.add(hide); ed.onKeyDown.add(hide); - Event.add(document, 'click', hide); + }, + + getInfo : function() { + return { + longname : 'Contextmenu', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; }, _getMenu : function(ed) { @@ -46,10 +57,8 @@ p2 = DOM.getPos(ed.getContainer()); m = ed.controlManager.createDropMenu('contextmenu', { - offset_x : p1.x, - offset_y : p1.y, -/* vp_offset_x : p2.x, - vp_offset_y : p2.y,*/ + offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0), + offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0), constrain : 1 }); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js index 6966d80af..bce8e7399 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.Directionality',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceDirectionLTR',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="ltr")ed.dom.setAttrib(e,"dir","ltr");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addCommand('mceDirectionRTL',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="rtl")ed.dom.setAttrib(e,"dir","rtl");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addButton('ltr',{title:'directionality.ltr_desc',cmd:'mceDirectionLTR'});ed.addButton('rtl',{title:'directionality.rtl_desc',cmd:'mceDirectionRTL'});ed.onNodeChange.add(t._nodeChange,t);},getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var dom=ed.dom,dir;n=dom.getParent(n,dom.isBlock);if(!n){cm.setDisabled('ltr',1);cm.setDisabled('rtl',1);return;}dir=dom.getAttrib(n,'dir');cm.setActive('ltr',dir=="ltr");cm.setDisabled('ltr',0);cm.setActive('rtl',dir=="rtl");cm.setDisabled('rtl',0);}});tinymce.PluginManager.add('directionality',tinymce.plugins.Directionality);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js index 87fac106d..4783bc371 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.EmotionsPlugin',{init:function(ed,url){ed.addCommand('mceEmotion',function(){ed.windowManager.open({file:url+'/emotions.htm',width:250+parseInt(ed.getLang('emotions.delta_width',0)),height:160+parseInt(ed.getLang('emotions.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('emotions',{title:'emotions.emotions_desc',cmd:'mceEmotion'});},getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('emotions',tinymce.plugins.EmotionsPlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.EmotionsPlugin",{init:function(a,b){a.addCommand("mceEmotion",function(){a.windowManager.open({file:b+"/emotions.htm",width:250+parseInt(a.getLang("emotions.delta_width",0)),height:160+parseInt(a.getLang("emotions.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("emotions",tinymce.plugins.EmotionsPlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm index 8110ee029..55a1d72fa 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm @@ -1,10 +1,9 @@ - + {#emotions_dlg.title} -

diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js index cb7010d18..ec1f81ea4 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.PluginManager.requireLangPack('example');tinymce.create('tinymce.plugins.ExamplePlugin',{init:function(ed,url){ed.addCommand('mceExample',function(){ed.windowManager.open({file:url+'/dialog.htm',width:320+parseInt(ed.getLang('example.delta_width',0)),height:120+parseInt(ed.getLang('example.delta_height',0)),inline:1},{plugin_url:url,some_custom_arg:'custom arg'});});ed.addButton('example',{title:'example.desc',cmd:'mceExample',image:url+'/img/example.gif'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('example',n.nodeName=='IMG');});},createControl:function(n,cm){return null;},getInfo:function(){return{longname:'Example plugin',author:'Some author',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',version:"1.0"};}});tinymce.PluginManager.add('example',tinymce.plugins.ExamplePlugin);})(); \ No newline at end of file +(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css index c39c35972..7a3334f08 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css @@ -53,6 +53,10 @@ height: 20px; } +#doctypes { + width: 200px; +} + .addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover { border: 1px solid #0A246A; background-color: #B6BDD2; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js index fe133a51f..8e11bfc47 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.FullPagePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceFullPageProperties',function(){ed.windowManager.open({file:url+'/fullpage.htm',width:430+parseInt(ed.getLang('fullpage.delta_width',0)),height:495+parseInt(ed.getLang('fullpage.delta_height',0)),inline:1},{plugin_url:url,head_html:t.head});});ed.addButton('fullpage',{title:'fullpage.desc',cmd:'mceFullPageProperties'});ed.onBeforeSetContent.add(t._setContent,t);ed.onSetContent.add(t._setBodyAttribs,t);ed.onGetContent.add(t._getContent,t);},getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_setBodyAttribs:function(ed,o){var bdattr,i,len,kv,k,v,t,attr=this.head.match(/body(.*?)>/i);if(attr&&attr[1]){bdattr=attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);for(i=0,len=bdattr.length;i',sp);t.head=c.substring(0,sp+1);ep=c.indexOf('';t.head+='\n\n\nUntitled document\n\n\n';t.foot='\n\n';}},_getContent:function(ed,o){var t=this;o.content=tinymce.trim(t.head)+'\n'+tinymce.trim(o.content)+'\n'+tinymce.trim(t.foot);}});tinymce.PluginManager.add('fullpage',tinymce.plugins.FullPagePlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceFullPageProperties",function(){a.windowManager.open({file:b+"/fullpage.htm",width:430+parseInt(a.getLang("fullpage.delta_width",0)),height:495+parseInt(a.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:b,head_html:c.head})});a.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});a.onBeforeSetContent.add(c._setContent,c);a.onSetContent.add(c._setBodyAttribs,c);a.onGetContent.add(c._getContent,c)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_setBodyAttribs:function(d,a){var l,c,e,g,b,h,j,f=this.head.match(/body(.*?)>/i);if(f&&f[1]){l=f[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(l){for(c=0,e=l.length;c",a);h.head=f.substring(0,a+1);j=f.indexOf("\n'}h.head+=d.getParam("fullpage_default_doctype",'');h.head+="\n\n\n"+d.getParam("fullpage_default_title","Untitled document")+"\n";if(g=d.getParam("fullpage_default_encoding")){h.head+='\n'}if(g=d.getParam("fullpage_default_font_family")){i+="font-family: "+g+";"}if(g=d.getParam("fullpage_default_font_size")){i+="font-size: "+g+";"}if(g=d.getParam("fullpage_default_text_color")){i+="color: "+g+";"}h.head+="\n\n";h.foot="\n\n"}},_getContent:function(a,c){var b=this;if(!c.source_view||!a.getParam("fullpage_hide_in_source_view")){c.content=tinymce.trim(b.head)+"\n"+tinymce.trim(c.content)+"\n"+tinymce.trim(b.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js index fb3b2296d..c7d5aca36 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js @@ -1,5 +1,5 @@ /** - * $Id: editor_plugin_src.js 593 2008-02-13 13:00:12Z spocke $ + * $Id: editor_plugin_src.js 1029 2009-02-24 22:32:21Z spocke $ * * @author Moxiecode * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. @@ -51,21 +51,23 @@ if (attr && attr[1]) { bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g); - for(i = 0, len = bdattr.length; i < len; i++) { - kv = bdattr[i].split('='); - k = kv[0].replace(/\s/,''); - v = kv[1]; + if (bdattr) { + for(i = 0, len = bdattr.length; i < len; i++) { + kv = bdattr[i].split('='); + k = kv[0].replace(/\s/,''); + v = kv[1]; - if (v) { - v = v.replace(/^\s+/,'').replace(/\s+$/,''); - t = v.match(/^["'](.*)["']$/); + if (v) { + v = v.replace(/^\s+/,'').replace(/\s+$/,''); + t = v.match(/^["'](.*)["']$/); - if (t) - v = t[1]; - } else - v = k; + if (t) + v = t[1]; + } else + v = k; - ed.dom.setAttrib(ed.getBody(), 'style', v); + ed.dom.setAttrib(ed.getBody(), 'style', v); + } } } }, @@ -78,7 +80,10 @@ }, _setContent : function(ed, o) { - var t = this, sp, ep, c = o.content; + var t = this, sp, ep, c = o.content, v, st = ''; + + if (o.source_view && ed.getParam('fullpage_hide_in_source_view')) + return; // Parse out head, body and footer c = c.replace(/<(\/?)BODY/gi, '<$1body'); @@ -104,8 +109,26 @@ t.head = low(t.head); t.foot = low(t.foot); } else { - t.head = ''; - t.head += '\n\n\nUntitled document\n\n\n'; + t.head = ''; + if (ed.getParam('fullpage_default_xml_pi')) + t.head += '\n'; + + t.head += ed.getParam('fullpage_default_doctype', ''); + t.head += '\n\n\n' + ed.getParam('fullpage_default_title', 'Untitled document') + '\n'; + + if (v = ed.getParam('fullpage_default_encoding')) + t.head += '\n'; + + if (v = ed.getParam('fullpage_default_font_family')) + st += 'font-family: ' + v + ';'; + + if (v = ed.getParam('fullpage_default_font_size')) + st += 'font-size: ' + v + ';'; + + if (v = ed.getParam('fullpage_default_text_color')) + st += 'color: ' + v + ';'; + + t.head += '\n\n'; t.foot = '\n\n'; } }, @@ -113,7 +136,8 @@ _getContent : function(ed, o) { var t = this; - o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot); + if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view')) + o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot); } }); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm index d74da0d76..3ea40810a 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm @@ -7,7 +7,6 @@ - @@ -26,27 +25,27 @@ - + - + - + - + - + - + - + - + @@ -95,7 +94,7 @@ - +
  
  
  
  
  
  
  
  
  
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js index b22d28800..dd3a29cfb 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js @@ -123,7 +123,7 @@ function init() { // Parse xml and doctype xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, h, 1); xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, h, 1); - docType = getReItem(/<\!DOCTYPE.*?>/gi, h, 0); + docType = getReItem(/<\!DOCTYPE.*?>/gi, h.replace(/\n/g, ''), 0).replace(/ +/g, ' '); f.langcode.value = getReItem(/lang="(.*?)"/gi, h, 1); // Parse title @@ -143,7 +143,7 @@ function init() { switch (eq.toLowerCase()) { case "content-type": - tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, value, 1); + tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, va, 1); // Override XML encoding if (tmp != "") @@ -374,7 +374,6 @@ function updateAction() { } function changedStyleField(field) { - //alert(field.id); } function setMeta(he, k, v) { diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js index 6a21ea7d7..dfb3f16cc 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js @@ -1 +1 @@ -(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.plugins.FullScreenPlugin',{init:function(ed,url){var t=this,s={},vp;t.editor=ed;ed.addCommand('mceFullScreen',function(){var win,de=document.documentElement;if(ed.getParam('fullscreen_is_enabled')){if(ed.getParam('fullscreen_new_window'))closeFullscreen();else{window.setTimeout(function(){tinymce.dom.Event.remove(window,'resize',t.resizeFunc);tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format:'raw'}),{format:'raw'});tinyMCE.remove(ed);DOM.remove('mce_fullscreen_container');de.style.overflow=ed.getParam('fullscreen_html_overflow');DOM.setStyle(document.body,'overflow',ed.getParam('fullscreen_overflow'));window.scrollTo(ed.getParam('fullscreen_scrollx'),ed.getParam('fullscreen_scrolly'));tinyMCE.settings=tinyMCE.oldSettings;},10);}return;}if(ed.getParam('fullscreen_new_window')){win=window.open(url+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{win.resizeTo(screen.availWidth,screen.availHeight);}catch(e){}}else{tinyMCE.oldSettings=tinyMCE.settings;s.fullscreen_overflow=DOM.getStyle(document.body,'overflow',1)||'auto';s.fullscreen_html_overflow=DOM.getStyle(de,'overflow',1);vp=DOM.getViewPort();s.fullscreen_scrollx=vp.x;s.fullscreen_scrolly=vp.y;if(tinymce.isOpera&&s.fullscreen_overflow=='visible')s.fullscreen_overflow='auto';if(tinymce.isIE&&s.fullscreen_overflow=='scroll')s.fullscreen_overflow='auto';if(s.fullscreen_overflow=='0px')s.fullscreen_overflow='';DOM.setStyle(document.body,'overflow','hidden');de.style.overflow='hidden';vp=DOM.getViewPort();window.scrollTo(0,0);if(tinymce.isIE)vp.h-=1;n=DOM.add(document.body,'div',{id:'mce_fullscreen_container',style:'position:absolute;top:0;left:0;width:'+vp.w+'px;height:'+vp.h+'px;z-index:150;'});DOM.add(n,'div',{id:'mce_fullscreen'});tinymce.each(ed.settings,function(v,n){s[n]=v;});s.id='mce_fullscreen';s.width=n.clientWidth;s.height=n.clientHeight-15;s.fullscreen_is_enabled=true;s.fullscreen_editor_id=ed.id;s.theme_advanced_resizing=false;s.save_onsavecallback=function(){ed.setContent(tinyMCE.get(s.id).getContent({format:'raw'}),{format:'raw'});ed.execCommand('mceSave');};tinymce.each(ed.getParam('fullscreen_settings'),function(v,k){s[k]=v;});if(s.theme_advanced_toolbar_location==='external')s.theme_advanced_toolbar_location='top';t.fullscreenEditor=new tinymce.Editor('mce_fullscreen',s);t.fullscreenEditor.onInit.add(function(){t.fullscreenEditor.setContent(ed.getContent());});t.fullscreenEditor.render();tinyMCE.add(t.fullscreenEditor);t.fullscreenElement=new tinymce.dom.Element('mce_fullscreen_container');t.fullscreenElement.update();t.resizeFunc=tinymce.dom.Event.add(window,'resize',function(){var vp=tinymce.DOM.getViewPort();t.fullscreenEditor.theme.resizeTo(vp.w,vp.h);});}});ed.addButton('fullscreen',{title:'fullscreen.desc',cmd:'mceFullScreen'});ed.onNodeChange.add(function(ed,cm){cm.setActive('fullscreen',ed.getParam('fullscreen_is_enabled'));});},getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('fullscreen',tinymce.plugins.FullScreenPlugin);})(); \ No newline at end of file +(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();tinyMCE.add(e.fullscreenEditor);e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var j=tinymce.DOM.getViewPort();e.fullscreenEditor.theme.resizeTo(j.w,j.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js index 0df431918..77a8c3b9a 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js @@ -1,5 +1,5 @@ /** - * $Id: editor_plugin_src.js 689 2008-03-09 18:47:19Z spocke $ + * $Id: editor_plugin_src.js 923 2008-09-09 16:45:29Z spocke $ * * @author Moxiecode * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. @@ -16,20 +16,20 @@ // Register commands ed.addCommand('mceFullScreen', function() { - var win, de = document.documentElement; + var win, de = DOM.doc.documentElement; if (ed.getParam('fullscreen_is_enabled')) { if (ed.getParam('fullscreen_new_window')) closeFullscreen(); // Call to close in new window else { - window.setTimeout(function() { - tinymce.dom.Event.remove(window, 'resize', t.resizeFunc); + DOM.win.setTimeout(function() { + tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc); tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'}); tinyMCE.remove(ed); DOM.remove('mce_fullscreen_container'); de.style.overflow = ed.getParam('fullscreen_html_overflow'); - DOM.setStyle(document.body, 'overflow', ed.getParam('fullscreen_overflow')); - window.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly')); + DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow')); + DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly')); tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings }, 10); } @@ -38,7 +38,7 @@ } if (ed.getParam('fullscreen_new_window')) { - win = window.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight); + win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight); try { win.resizeTo(screen.availWidth, screen.availHeight); } catch (e) { @@ -46,7 +46,7 @@ } } else { tinyMCE.oldSettings = tinyMCE.settings; // Store old settings - s.fullscreen_overflow = DOM.getStyle(document.body, 'overflow', 1) || 'auto'; + s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto'; s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1); vp = DOM.getViewPort(); s.fullscreen_scrollx = vp.x; @@ -60,18 +60,22 @@ if (tinymce.isIE && s.fullscreen_overflow == 'scroll') s.fullscreen_overflow = 'auto'; + // Fixes an IE bug where the scrollbars doesn't reappear + if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll')) + s.fullscreen_html_overflow = 'auto'; + if (s.fullscreen_overflow == '0px') s.fullscreen_overflow = ''; - DOM.setStyle(document.body, 'overflow', 'hidden'); + DOM.setStyle(DOM.doc.body, 'overflow', 'hidden'); de.style.overflow = 'hidden'; //Fix for IE6/7 vp = DOM.getViewPort(); - window.scrollTo(0, 0); + DOM.win.scrollTo(0, 0); if (tinymce.isIE) vp.h -= 1; - n = DOM.add(document.body, 'div', {id : 'mce_fullscreen_container', style : 'position:absolute;top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:150;'}); + n = DOM.add(DOM.doc.body, 'div', {id : 'mce_fullscreen_container', style : 'position:' + (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel) ? 'absolute' : 'fixed') + ';top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'}); DOM.add(n, 'div', {id : 'mce_fullscreen'}); tinymce.each(ed.settings, function(v, n) { @@ -99,6 +103,7 @@ t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s); t.fullscreenEditor.onInit.add(function() { t.fullscreenEditor.setContent(ed.getContent()); + t.fullscreenEditor.focus(); }); t.fullscreenEditor.render(); @@ -108,7 +113,7 @@ t.fullscreenElement.update(); //document.body.overflow = 'hidden'; - t.resizeFunc = tinymce.dom.Event.add(window, 'resize', function() { + t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() { var vp = tinymce.DOM.getViewPort(); t.fullscreenEditor.theme.resizeTo(vp.w, vp.h); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm index 5582e9cdd..6ec4f26f1 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm @@ -10,7 +10,7 @@ settings[key] = "window.opener." + settings[key]; } - var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings; + var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id; // Clone array for (var n in paSe) @@ -41,13 +41,13 @@ settings['ask'] = false; settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI(); settings['fullscreen_is_enabled'] = true; - settings['fullscreen_editor_id'] = window.opener.tinyMCE.activeEditor.id; + settings['fullscreen_editor_id'] = oeID; settings['theme_advanced_resizing'] = false; settings['strict_loading_mode'] = true; settings.save_onsavecallback = function() { - window.opener.tinyMCE.activeEditor.setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'}); - window.opener.tinyMCE.activeEditor.execCommand('mceSave'); + window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'}); + window.opener.tinyMCE.get(oeID).execCommand('mceSave'); window.close(); }; @@ -56,7 +56,7 @@ } function moveContent() { - window.opener.tinyMCE.activeEditor.setContent(tinyMCE.activeEditor.getContent()); + window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent()); } function closeFullscreen() { @@ -78,7 +78,7 @@ function render() { var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM; - e.value = window.opener.tinyMCE.activeEditor.getContent(); + e.value = window.opener.tinyMCE.get(oeID).getContent(); vp = dom.getViewPort(); settings.width = vp.w; @@ -96,7 +96,6 @@ // Add onunload tinymce.dom.Event.add(window, "beforeunload", unloadHandler); - diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js index 06dae75df..e9cba106c 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.IESpell',{init:function(ed,url){var t=this,sp;if(!tinymce.isIE)return;t.editor=ed;ed.addCommand('mceIESpell',function(){try{sp=new ActiveXObject("ieSpell.ieSpellExtension");sp.CheckDocumentNode(ed.getDoc().documentElement);}catch(e){if(e.number==-2146827859){ed.windowManager.confirm(ed.getLang("iespell.download"),function(s){if(s)window.open('http://www.iespell.com/download.php','ieSpellDownload','');});}else ed.windowManager.alert("Error Loading ieSpell: Exception "+e.number);}});ed.addButton('iespell',{title:'iespell.iespell_desc',cmd:'mceIESpell'});},getInfo:function(){return{longname:'IESpell (IE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('iespell',tinymce.plugins.IESpell);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js index 0649c1738..07ea477b7 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js @@ -1 +1 @@ -(function(){var DOM=tinymce.DOM,Element=tinymce.dom.Element,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.InlinePopups',{init:function(ed,url){ed.onBeforeRenderUI.add(function(){ed.windowManager=new tinymce.InlineWindowManager(ed);DOM.loadCSS(url+'/skins/'+(ed.settings.inlinepopups_skin||'clearlooks2')+"/window.css");});},getInfo:function(){return{longname:'InlinePopups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager',{InlineWindowManager:function(ed){var t=this;t.parent(ed);t.zIndex=1000;t.count=0;},open:function(f,p){var t=this,id,opt='',ed=t.editor,dw=0,dh=0,vp,po,mdf,clf,we,w,u;f=f||{};p=p||{};if(!f.inline)return t.parent(f,p);t.bookmark=ed.selection.getBookmark('simple');id=DOM.uniqueId();vp=DOM.getViewPort();f.width=parseInt(f.width||320);f.height=parseInt(f.height||240)+(tinymce.isIE?8:0);f.min_width=parseInt(f.min_width||150);f.min_height=parseInt(f.min_height||100);f.max_width=parseInt(f.max_width||2000);f.max_height=parseInt(f.max_height||2000);f.left=f.left||Math.round(Math.max(vp.x,vp.x+(vp.w/ 2.0) - (f.width /2.0)));f.top=f.top||Math.round(Math.max(vp.y,vp.y+(vp.h/ 2.0) - (f.height /2.0)));f.movable=f.resizable=true;p.mce_width=f.width;p.mce_height=f.height;p.mce_inline=true;p.mce_window_id=id;p.mce_auto_focus=f.auto_focus;t.features=f;t.params=p;t.onOpen.dispatch(t,f,p);if(f.type){opt+=' mceModal';if(f.type)opt+=' mce'+f.type.substring(0,1).toUpperCase()+f.type.substring(1);f.resizable=false;}if(f.statusbar)opt+=' mceStatusbar';if(f.resizable)opt+=' mceResizable';if(f.minimizable)opt+=' mceMinimizable';if(f.maximizable)opt+=' mceMaximizable';if(f.movable)opt+=' mceMovable';t._addAll(document.body,['div',{id:id,'class':ed.settings.inlinepopups_skin||'clearlooks2',dir:'ltr',style:'width:100px;height:100px'},['div',{id:id+'_wrapper','class':'mceWrapper'+opt},['div',{id:id+'_top','class':'mceTop'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_title'},f.title||'']],['div',{id:id+'_middle','class':'mceMiddle'},['div',{id:id+'_left','class':'mceLeft'}],['span',{id:id+'_content'}],['div',{id:id+'_right','class':'mceRight'}]],['div',{id:id+'_bottom','class':'mceBottom'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_status'},'Content']],['a',{'class':'mceMove',tabindex:'-1',href:'javascript:;'}],['a',{'class':'mceMin',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMax',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMed',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceClose',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{id:id+'_resize_n','class':'mceResize mceResizeN',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_s','class':'mceResize mceResizeS',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_w','class':'mceResize mceResizeW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_e','class':'mceResize mceResizeE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_nw','class':'mceResize mceResizeNW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_ne','class':'mceResize mceResizeNE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_sw','class':'mceResize mceResizeSW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_se','class':'mceResize mceResizeSE',tabindex:'-1',href:'javascript:;'}]]]);DOM.setStyles(id,{top:-10000,left:-10000});if(tinymce.isGecko)DOM.setStyle(id,'overflow','auto');if(!f.type){dw+=DOM.get(id+'_left').clientWidth;dw+=DOM.get(id+'_right').clientWidth;dh+=DOM.get(id+'_top').clientHeight;dh+=DOM.get(id+'_bottom').clientHeight;}DOM.setStyles(id,{top:f.top,left:f.left,width:f.width+dw,height:f.height+dh});u=f.url||f.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;if(!f.type){DOM.add(id+'_content','iframe',{id:id+'_ifr',src:'javascript:""',frameBorder:0,style:'border:0;width:10px;height:10px'});DOM.setStyles(id+'_ifr',{width:f.width,height:f.height});DOM.setAttrib(id+'_ifr','src',u);}else{DOM.add(id+'_wrapper','a',{id:id+'_ok','class':'mceButton mceOk',href:'javascript:;',onmousedown:'return false;'},'Ok');if(f.type=='confirm')DOM.add(id+'_wrapper','a',{'class':'mceButton mceCancel',href:'javascript:;',onmousedown:'return false;'},'Cancel');DOM.add(id+'_middle','div',{'class':'mceIcon'});DOM.setHTML(id+'_content',f.content.replace('\n','
'));}mdf=Event.add(id,'mousedown',function(e){var n=e.target,w,vp;w=t.windows[id];t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){if(n.className=='mceMax'){w.oldPos=w.element.getXY();w.oldSize=w.element.getSize();vp=DOM.getViewPort();vp.w-=2;vp.h-=2;w.element.moveTo(vp.x,vp.y);w.element.resizeTo(vp.w,vp.h);DOM.setStyles(id+'_ifr',{width:vp.w-w.deltaWidth,height:vp.h-w.deltaHeight});DOM.addClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMed'){w.element.moveTo(w.oldPos.x,w.oldPos.y);w.element.resizeTo(w.oldSize.w,w.oldSize.h);w.iframeElement.resizeTo(w.oldSize.w-w.deltaWidth,w.oldSize.h-w.deltaHeight);DOM.removeClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMove')return t._startDrag(id,e,n.className);else if(DOM.hasClass(n,'mceResize'))return t._startDrag(id,e,n.className.substring(13));}});clf=Event.add(id,'click',function(e){var n=e.target;t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){switch(n.className){case'mceClose':t.close(null,id);return Event.cancel(e);case'mceButton mceOk':case'mceButton mceCancel':f.button_func(n.className=='mceButton mceOk');return Event.cancel(e);}}});t.windows=t.windows||{};w=t.windows[id]={id:id,mousedown_func:mdf,click_func:clf,element:new Element(id,{blocker:1,container:ed.getContainer()}),iframeElement:new Element(id+'_ifr'),features:f,deltaWidth:dw,deltaHeight:dh};w.iframeElement.on('focus',function(){t.focus(id);});if(t.count==0&&t.editor.getParam('dialog_type')=='modal'){DOM.add(DOM.doc.body,'div',{id:'mceModalBlocker','class':(t.editor.settings.inlinepopups_skin||'clearlooks2')+'_modalBlocker',style:{left:vp.x,top:vp.y,width:vp.w,height:vp.h,zIndex:t.zIndex-1}});DOM.show('mceModalBlocker');}else DOM.setStyle('mceModalBlocker','z-index',t.zIndex-1);t.focus(id);t._fixIELayout(id,1);if(DOM.get(id+'_ok'))DOM.get(id+'_ok').focus();t.count++;return w;},focus:function(id){var t=this,w=t.windows[id];w.zIndex=this.zIndex++;w.element.setStyle('zIndex',w.zIndex);w.element.update();id=id+'_wrapper';DOM.removeClass(t.lastId,'mceFocus');DOM.addClass(id,'mceFocus');t.lastId=id;},_addAll:function(te,ne){var i,n,t=this,dom=tinymce.DOM;if(is(ne,'string'))te.appendChild(dom.doc.createTextNode(ne));else if(ne.length){te=te.appendChild(dom.create(ne[0],ne[1]));for(i=2;iix){fw=w;ix=w.zIndex;}});if(fw)t.focus(fw.id);}},setTitle:function(ti,id){DOM.get(id+'_title').innerHTML=DOM.encode(ti);},alert:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'alert',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},confirm:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'confirm',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},_fixIELayout:function(id,s){var w,img;if(!tinymce.isIE6)return;each(['n','s','w','e','nw','ne','sw','se'],function(v){var e=DOM.get(id+'_resize_'+v);DOM.setStyles(e,{width:s?e.clientWidth:'',height:s?e.clientHeight:'',cursor:DOM.getStyle(e,'cursor',1)});DOM.setStyle(id+"_bottom",'bottom','-1px');e=0;});if(w=this.windows[id]){w.element.hide();w.element.show();each(DOM.select('div,a',id),function(e,i){if(e.currentStyle.backgroundImage!='none'){img=new Image();img.src=e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,'$1');}});DOM.get(id).style.filter='';}}});tinymce.PluginManager.add('inlinepopups',tinymce.plugins.InlinePopups);})(); \ No newline at end of file +(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(r,j){var y=this,i,k="",q=y.editor,g=0,s=0,h,m,n,o,l,v,x;r=r||{};j=j||{};if(!r.inline){return y.parent(r,j)}if(!r.type){y.bookmark=q.selection.getBookmark(1)}i=d.uniqueId();h=d.getViewPort();r.width=parseInt(r.width||320);r.height=parseInt(r.height||240)+(tinymce.isIE?8:0);r.min_width=parseInt(r.min_width||150);r.min_height=parseInt(r.min_height||100);r.max_width=parseInt(r.max_width||2000);r.max_height=parseInt(r.max_height||2000);r.left=r.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(r.width/2)));r.top=r.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(r.height/2)));r.movable=r.resizable=true;j.mce_width=r.width;j.mce_height=r.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=r.auto_focus;y.features=r;y.params=j;y.onOpen.dispatch(y,r,j);if(r.type){k+=" mceModal";if(r.type){k+=" mce"+r.type.substring(0,1).toUpperCase()+r.type.substring(1)}r.resizable=false}if(r.statusbar){k+=" mceStatusbar"}if(r.resizable){k+=" mceResizable"}if(r.minimizable){k+=" mceMinimizable"}if(r.maximizable){k+=" mceMaximizable"}if(r.movable){k+=" mceMovable"}y._addAll(d.doc.body,["div",{id:i,"class":q.settings.inlinepopups_skin||"clearlooks2",style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},r.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!r.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;s+=d.get(i+"_top").clientHeight;s+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:r.top,left:r.left,width:r.width+g,height:r.height+s});x=r.url||r.file;if(x){if(tinymce.relaxedDomain){x+=(x.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}x=tinymce._addVer(x)}if(!r.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:r.width,height:r.height});d.setAttrib(i+"_ifr","src",x)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(r.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",r.content.replace("\n","
"))}n=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=y.windows[i];y.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return y._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return y._startDrag(i,t,u.className.substring(13))}}}}}});o=a.add(i,"click",function(f){var p=f.target;y.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":y.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":r.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});v=y.windows[i]={id:i,mousedown_func:n,click_func:o,element:new b(i,{blocker:1,container:q.getContainer()}),iframeElement:new b(i+"_ifr"),features:r,deltaWidth:g,deltaHeight:s};v.iframeElement.on("focus",function(){y.focus(i)});if(y.count==0&&y.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(y.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:y.zIndex-1}});d.show("mceModalBlocker")}else{d.setStyle("mceModalBlocker","z-index",y.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}y.focus(i);y._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}y.count++;return v},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;gf){i=m;f=m.zIndex}});if(i){h.focus(i.id)}}},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js index 40bfc056f..fffca5abf 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js @@ -1,5 +1,5 @@ /** - * $Id: editor_plugin_src.js 697 2008-03-11 10:33:06Z spocke $ + * $Id: editor_plugin_src.js 1150 2009-06-01 11:50:46Z spocke $ * * @author Moxiecode * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. @@ -33,8 +33,9 @@ var t = this; t.parent(ed); - t.zIndex = 1000; + t.zIndex = 300000; t.count = 0; + t.windows = {}; }, open : function(f, p) { @@ -47,7 +48,10 @@ if (!f.inline) return t.parent(f, p); - t.bookmark = ed.selection.getBookmark('simple'); + // Only store selection if the type is a normal window + if (!f.type) + t.bookmark = ed.selection.getBookmark(1); + id = DOM.uniqueId(); vp = DOM.getViewPort(); f.width = parseInt(f.width || 320); @@ -99,8 +103,8 @@ opt += ' mceMovable'; // Create DOM objects - t._addAll(document.body, - ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', dir : 'ltr', style : 'width:100px;height:100px'}, + t._addAll(DOM.doc.body, + ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt}, ['div', {id : id + '_top', 'class' : 'mceTop'}, ['div', {'class' : 'mceLeft'}], @@ -157,8 +161,12 @@ DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh}); u = f.url || f.file; - if (tinymce.relaxedDomain) - u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain; + if (u) { + if (tinymce.relaxedDomain) + u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain; + + u = tinymce._addVer(u); + } if (!f.type) { DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'}); @@ -230,7 +238,6 @@ }); // Add window - t.windows = t.windows || {}; w = t.windows[id] = { id : id, mousedown_func : mdf, @@ -247,17 +254,20 @@ }); // Setup blocker - if (t.count == 0 && t.editor.getParam('dialog_type') == 'modal') { + if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') { DOM.add(DOM.doc.body, 'div', { id : 'mceModalBlocker', 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker', - style : {left : vp.x, top : vp.y, width : vp.w, height : vp.h, zIndex : t.zIndex - 1} + style : {zIndex : t.zIndex - 1} }); DOM.show('mceModalBlocker'); // Reduces flicker in IE } else DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1); + if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel)) + DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); + t.focus(id); t._fixIELayout(id, 1); @@ -271,16 +281,18 @@ }, focus : function(id) { - var t = this, w = t.windows[id]; + var t = this, w; - w.zIndex = this.zIndex++; - w.element.setStyle('zIndex', w.zIndex); - w.element.update(); + if (w = t.windows[id]) { + w.zIndex = this.zIndex++; + w.element.setStyle('zIndex', w.zIndex); + w.element.update(); - id = id + '_wrapper'; - DOM.removeClass(t.lastId, 'mceFocus'); - DOM.addClass(id, 'mceFocus'); - t.lastId = id; + id = id + '_wrapper'; + DOM.removeClass(t.lastId, 'mceFocus'); + DOM.addClass(id, 'mceFocus'); + t.lastId = id; + } }, _addAll : function(te, ne) { @@ -297,7 +309,7 @@ }, _startDrag : function(id, se, ac) { - var t = this, mu, mm, d = document, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh; + var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh; // Get positons and sizes // cp = DOM.getPos(t.editor.getContainer()); @@ -342,8 +354,12 @@ DOM.add(d.body, 'div', { id : 'mceEventBlocker', 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'), - style : {left : vp.x, top : vp.y, width : vp.w + 2, height : vp.h + 2, zIndex : 20001} + style : {zIndex : t.zIndex + 1} }); + + if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel)) + DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); + eb = new Element('mceEventBlocker'); eb.update(); @@ -459,23 +475,27 @@ }, close : function(win, id) { - var t = this, w, d = document, ix = 0, fw; + var t = this, w, d = DOM.doc, ix = 0, fw, id; + + id = t._findId(id || win); + + // Probably not inline + if (!t.windows[id]) { + t.parent(win); + return; + } t.count--; if (t.count == 0) DOM.remove('mceModalBlocker'); - // Probably not inline - if (!id && win) { - t.parent(win); - return; - } - if (w = t.windows[id]) { t.onClose.dispatch(t); Event.remove(d, 'mousedown', w.mousedownFunc); Event.remove(d, 'click', w.clickFunc); + Event.clear(id); + Event.clear(id + '_ifr'); DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak w.element.remove(); @@ -494,8 +514,13 @@ } }, - setTitle : function(ti, id) { - DOM.get(id + '_title').innerHTML = DOM.encode(ti); + setTitle : function(w, ti) { + var e; + + w = this._findId(w); + + if (e = DOM.get(w + '_title')) + e.innerHTML = DOM.encode(ti); }, alert : function(txt, cb, s) { @@ -538,6 +563,24 @@ // Internal functions + _findId : function(w) { + var t = this; + + if (typeof(w) == 'string') + return w; + + each(t.windows, function(wo) { + var ifr = DOM.get(wo.id + '_ifr'); + + if (ifr && w == ifr.contentWindow) { + w = wo.id; + return false; + } + }); + + return w; + }, + _fixIELayout : function(id, s) { var w, img; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css b/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css index abb2a4486..5e6fd7d3c 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css @@ -1,14 +1,14 @@ /* Clearlooks 2 */ /* Reset */ -.clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block} +.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block} /* General */ -.clearlooks2 {position:absolute} +.clearlooks2 {position:absolute; direction:ltr} .clearlooks2 .mceWrapper {position:static} -.mceEventBlocker {position:absolute; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%} -.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; filter:alpha(opacity=50)} -.clearlooks2_modalBlocker {position:absolute; left:0; top:0; background:#FFF; opacity:0.6; filter:alpha(opacity=60); display:none} +.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%} +.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)} +.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none} /* Top */ .clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px} diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js index 34d4ceca5..938ce6b17 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.InsertDateTime',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertDate',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_dateFormat",ed.getLang('insertdatetime.date_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addCommand('mceInsertTime',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_timeFormat",ed.getLang('insertdatetime.time_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addButton('insertdate',{title:'insertdatetime.insertdate_desc',cmd:'mceInsertDate'});ed.addButton('inserttime',{title:'insertdatetime.inserttime_desc',cmd:'mceInsertTime'});},getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_getDateTime:function(d,fmt){var ed=this.editor;function addZeros(value,len){value=""+value;if(value.length-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1;}}else{for(i=0;iz[ci]){fi=i;break;}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci];}else nl[ci].style.zIndex=z[ci]+1;}ed.execCommand('mceRepaint');},_getParentLayer:function(n){return this.editor.dom.getParent(n,function(n){return n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position);});},_insertLayer:function(){var ed=this.editor,p=ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(),'*'));ed.dom.add(ed.getBody(),'div',{style:{position:'absolute',left:p.x,top:(p.y>20?p.y:20),width:100,height:100},'class':'mceItemVisualAid'},ed.selection.getContent()||ed.getLang('layer.content'));},_toggleAbsolute:function(){var ed=this.editor,le=this._getParentLayer(ed.selection.getNode());if(!le)le=ed.dom.getParent(ed.selection.getNode(),'DIV,P,IMG');if(le){if(le.style.position.toLowerCase()=="absolute"){ed.dom.setStyles(le,{position:'',left:'',top:'',width:'',height:''});ed.dom.removeClass(le,'mceItemVisualAid');}else{if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';le.style.position="absolute";ed.addVisual(ed.getBody());}ed.execCommand('mceRepaint');ed.nodeChanged();}}});tinymce.PluginManager.add('layer',tinymce.plugins.Layer);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.Layer",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertLayer",c._insertLayer,c);a.addCommand("mceMoveForward",function(){c._move(1)});a.addCommand("mceMoveBackward",function(){c._move(-1)});a.addCommand("mceMakeAbsolute",function(){c._toggleAbsolute()});a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});a.onInit.add(function(){if(tinymce.isIE){a.getDoc().execCommand("2D-Position",false,true)}});a.onNodeChange.add(c._nodeChange,c);a.onVisualAid.add(c._visualAid,c)},getInfo:function(){return{longname:"Layer",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var c,d;c=this._getParentLayer(e);d=b.dom.getParent(e,"DIV,P,IMG");if(!d){a.setDisabled("absolute",1);a.setDisabled("moveforward",1);a.setDisabled("movebackward",1)}else{a.setDisabled("absolute",0);a.setDisabled("moveforward",!c);a.setDisabled("movebackward",!c);a.setActive("absolute",c&&c.style.position.toLowerCase()=="absolute")}},_visualAid:function(a,c,b){var d=a.dom;tinymce.each(d.select("div,p",c),function(f){if(/^(absolute|relative|static)$/i.test(f.style.position)){if(b){d.addClass(f,"mceItemVisualAid")}else{d.removeClass(f,"mceItemVisualAid")}}})},_move:function(h){var b=this.editor,f,g=[],e=this._getParentLayer(b.selection.getNode()),c=-1,j=-1,a;a=[];tinymce.walk(b.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){a.push(d)}},"childNodes");for(f=0;f-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{if(g[c]>0){a[c].style.zIndex=g[c]-1}}}else{for(f=0;fg[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{a[c].style.zIndex=g[c]+1}}b.execCommand("mceRepaint")},_getParentLayer:function(a){return this.editor.dom.getParent(a,function(b){return b.nodeType==1&&/^(absolute|relative|static)$/i.test(b.style.position)})},_insertLayer:function(){var a=this.editor,b=a.dom.getPos(a.dom.getParent(a.selection.getNode(),"*"));a.dom.add(a.getBody(),"div",{style:{position:"absolute",left:b.x,top:(b.y>20?b.y:20),width:100,height:100},"class":"mceItemVisualAid"},a.selection.getContent()||a.getLang("layer.content"))},_toggleAbsolute:function(){var a=this.editor,b=this._getParentLayer(a.selection.getNode());if(!b){b=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")}if(b){if(b.style.position.toLowerCase()=="absolute"){a.dom.setStyles(b,{position:"",left:"",top:"",width:"",height:""});a.dom.removeClass(b,"mceItemVisualAid")}else{if(b.style.left==""){b.style.left=20+"px"}if(b.style.top==""){b.style.top=20+"px"}if(b.style.width==""){b.style.width=b.width?(b.width+"px"):"100px"}if(b.style.height==""){b.style.height=b.height?(b.height+"px"):"100px"}b.style.position="absolute";a.addVisual(a.getBody())}a.execCommand("mceRepaint");a.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/media/css/media.css b/www/extras/tinymce/jscripts/tiny_mce/plugins/media/css/media.css index 89c6bd5a0..2d087944d 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/media/css/media.css +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/media/css/media.css @@ -1,68 +1,16 @@ -#id, #name, #hspace, #vspace, #class_name, #align { - width: 100px; -} - -#hspace, #vspace { - width: 50px; -} - -#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { - width: 100px; -} - -#flash_base, #flash_flashvars { - width: 240px; -} - -#width, #height { - width: 40px; -} - -#src, #media_type { - width: 250px; -} - -#class { - width: 120px; -} - -#prev { - margin: 0; - border: 1px solid black; - width: 99%; - height: 230px; - overflow: auto; -} - -.panel_wrapper div.current { - height: 390px; - overflow: auto; -} - -#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { - display: none; -} - -.mceAddSelectValue { - background-color: #DDDDDD; -} - -#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { - width: 70px; -} - -#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { - width: 70px; -} - -#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { - width: 70px; -} - -#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { - width: 90px; -} - -#qt_qtsrc { - width: 200px; -} +#id, #name, #hspace, #vspace, #class_name, #align { width: 100px } +#hspace, #vspace { width: 50px } +#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px } +#flash_base, #flash_flashvars { width: 240px } +#width, #height { width: 40px } +#src, #media_type { width: 250px } +#class { width: 120px } +#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto } +.panel_wrapper div.current { height: 390px; overflow: auto } +#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none } +.mceAddSelectValue { background-color: #DDDDDD } +#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px } +#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px } +#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px } +#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px } +#qt_qtsrc { width: 200px } diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js index 948db7c7d..2889be5ab 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js @@ -1 +1 @@ -(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.MediaPlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;function isMediaElm(n){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);};ed.addCommand('mceMedia',function(){ed.windowManager.open({file:url+'/media.htm',width:430+parseInt(ed.getLang('media.delta_width',0)),height:470+parseInt(ed.getLang('media.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('media',{title:'media.desc',cmd:'mceMedia'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('media',n.nodeName=='IMG'&&isMediaElm(n));});ed.onInit.add(function(){var lo={mceItemFlash:'flash',mceItemShockWave:'shockwave',mceItemWindowsMedia:'windowsmedia',mceItemQuickTime:'quicktime',mceItemRealMedia:'realmedia'};ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.name=='img'){each(lo,function(v,k){if(ed.dom.hasClass(o.node,k)){o.name=v;o.title=ed.dom.getAttrib(o.node,'title');return false;}});}});}if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){if(e.nodeName=='IMG'&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)){m.add({title:'media.edit',icon:'media',cmd:'mceMedia'});}});}});ed.onBeforeSetContent.add(function(ed,o){var h=o.content;h=h.replace(/]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(a,b,c){var o=t._parse(c);return''});h=h.replace(/]*)>/gi,'');h=h.replace(/]*)>/gi,'');h=h.replace(/<\/(object|embed)([^>]*)>/gi,'');h=h.replace(/]*)>/gi,function(a,b){return''});h=h.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam">');o.content=h;});ed.onSetContent.add(function(){t._spansToImgs(ed.getBody());});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;if(o.set){t._spansToImgs(o.node);each(dom.select('IMG',o.node),function(n){var p;if(isMediaElm(n)){p=t._parse(n.title);dom.setAttrib(n,'width',dom.getAttrib(n,'width',p.width||100));dom.setAttrib(n,'height',dom.getAttrib(n,'height',p.height||100));}});}if(o.get){each(dom.select('IMG',o.node),function(n){var ci,cb,mt;if(ed.getParam('media_use_script')){if(isMediaElm(n))n.className=n.className.replace(/mceItem/g,'mceTemp');return;}switch(n.className){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166b1bca-3f9c-11cf-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=ed.getParam('media_wmp6_compatible')?'05589fa1-c356-11ce-bf01-00aa0055595a':'6bf52a52-394a-11d3-b153-00c04f79faa6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02bf25d5-8c17-4b23-bc80-d3488abddc6b';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='cfcdaa03-8be4-11cf-b84b-0020afbbccfa';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break;}if(ci){dom.replace(t._buildObj({classid:ci,codebase:cb,type:mt},n),n);}});}});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/_value=/g,'value=');});if(ed.getParam('media_use_script')){function getAttr(s,n){n=new RegExp(n+'=\"([^\"]+)\"','g').exec(s);return n?ed.dom.decode(n[1]):'';};ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/]+>/g,function(im){var cl=getAttr(im,'class');if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)){at=t._parse(getAttr(im,'title'));at.width=getAttr(im,'width');at.height=getAttr(im,'height');im='';}return im;});});}},getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_buildObj:function(o,n){var ob,ed=this.editor,dom=ed.dom,p=this._parse(n.title);p.width=o.width=dom.getAttrib(n,'width')||100;p.height=o.height=dom.getAttrib(n,'height')||100;ob=dom.create('span',{mce_name:'object',classid:"clsid:"+o.classid,codebase:o.codebase,width:o.width,height:o.height});if(p.src)p.src=ed.convertURL(p.src,'src',n);each(p,function(v,k){if(!/^(width|height|codebase|classid)$/.test(k))dom.add(ob,'span',{mce_name:'param',name:k,'_value':v});});dom.add(ob,'span',tinymce.extend({mce_name:'embed',type:o.type},p));return ob;},_spansToImgs:function(p){var t=this,dom=t.editor.dom,im,ci;each(dom.select('span',p),function(n){if(dom.getAttrib(n,'class')=='mceItemObject'){ci=dom.getAttrib(n,"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':dom.replace(t._createImg('mceItemFlash',n),n);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}return;}if(dom.getAttrib(n,'class')=='mceItemEmbed'){switch(dom.getAttrib(n,'type')){case'application/x-shockwave-flash':dom.replace(t._createImg('mceItemFlash',n),n);break;case'application/x-director':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'application/x-mplayer2':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'video/quicktime':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'audio/x-pn-realaudio-plugin':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}}});},_createImg:function(cl,n){var im,dom=this.editor.dom,pa={},ti='';im=dom.create('img',{src:this.url+'/img/trans.gif',width:dom.getAttrib(n,'width')||100,height:dom.getAttrib(n,'height')||100,'class':cl});each(['id','name','width','height','bgcolor','align','flashvars','src','wmode'],function(na){var v=dom.getAttrib(n,na);if(v)pa[na]=v;});each(dom.select('span',n),function(n){if(dom.hasClass(n,'mceItemParam'))pa[dom.getAttrib(n,'name')]=dom.getAttrib(n,'_value');});if(pa.movie){pa.src=pa.movie;delete pa.movie;}delete pa.width;delete pa.height;im.title=this._serialize(pa);return im;},_parse:function(s){return tinymce.util.JSON.parse('{'+s+'}');},_serialize:function(o){return tinymce.util.JSON.serialize(o).replace(/[{}]/g,'');}});tinymce.PluginManager.add('media',tinymce.plugins.MediaPlugin);})(); \ No newline at end of file +(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.MediaPlugin",{init:function(b,c){var e=this;e.editor=b;e.url=c;function f(g){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(g.className)}b.onPreInit.add(function(){b.serializer.addRules("param[name|value|_mce_value]")});b.addCommand("mceMedia",function(){b.windowManager.open({file:c+"/media.htm",width:430+parseInt(b.getLang("media.delta_width",0)),height:470+parseInt(b.getLang("media.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("media",{title:"media.desc",cmd:"mceMedia"});b.onNodeChange.add(function(h,g,i){g.setActive("media",i.nodeName=="IMG"&&f(i))});b.onInit.add(function(){var g={mceItemFlash:"flash",mceItemShockWave:"shockwave",mceItemWindowsMedia:"windowsmedia",mceItemQuickTime:"quicktime",mceItemRealMedia:"realmedia"};b.selection.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.selection.onBeforeSetContent.add(e._objectsToSpans,e);if(b.settings.content_css!==false){b.dom.loadCSS(c+"/css/content.css")}if(b.theme&&b.theme.onResolveName){b.theme.onResolveName.add(function(h,i){if(i.name=="img"){a(g,function(l,j){if(b.dom.hasClass(i.node,j)){i.name=l;i.title=b.dom.getAttrib(i.node,"title");return false}})}})}if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(i,h,j){if(j.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(j.className)){h.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});b.onBeforeSetContent.add(e._objectsToSpans,e);b.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.onPreProcess.add(function(g,i){var h=g.dom;if(i.set){e._spansToImgs(i.node);a(h.select("IMG",i.node),function(k){var j;if(f(k)){j=e._parse(k.title);h.setAttrib(k,"width",h.getAttrib(k,"width",j.width||100));h.setAttrib(k,"height",h.getAttrib(k,"height",j.height||100))}})}if(i.get){a(h.select("IMG",i.node),function(m){var l,j,k;if(g.getParam("media_use_script")){if(f(m)){m.className=m.className.replace(/mceItem/g,"mceTemp")}return}switch(m.className){case"mceItemFlash":l="d27cdb6e-ae6d-11cf-96b8-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="application/x-shockwave-flash";break;case"mceItemShockWave":l="166b1bca-3f9c-11cf-8075-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0";k="application/x-director";break;case"mceItemWindowsMedia":l=g.getParam("media_wmp6_compatible")?"05589fa1-c356-11ce-bf01-00aa0055595a":"6bf52a52-394a-11d3-b153-00c04f79faa6";j="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";k="application/x-mplayer2";break;case"mceItemQuickTime":l="02bf25d5-8c17-4b23-bc80-d3488abddc6b";j="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0";k="video/quicktime";break;case"mceItemRealMedia":l="cfcdaa03-8be4-11cf-b84b-0020afbbccfa";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="audio/x-pn-realaudio-plugin";break}if(l){h.replace(e._buildObj({classid:l,codebase:j,type:k},m),m)}})}});b.onPostProcess.add(function(g,h){h.content=h.content.replace(/_mce_value=/g,"value=")});function d(g,h){h=new RegExp(h+'="([^"]+)"',"g").exec(g);return h?b.dom.decode(h[1]):""}b.onPostProcess.add(function(g,h){if(g.getParam("media_use_script")){h.content=h.content.replace(/]+>/g,function(j){var i=d(j,"class");if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(i)){at=e._parse(d(j,"title"));at.width=d(j,"width");at.height=d(j,"height");j=' - @@ -33,7 +32,7 @@ - + @@ -52,7 +51,7 @@
 
-
"; inst.execCommand('mceBeginUndoLevel'); - inst.execCommand('mceInsertContent', false, html); + + // Move table + if (inst.settings.fix_table_elements) { + var bm = inst.selection.getBookmark(), patt = ''; + + inst.execCommand('mceInsertContent', false, '
'); + + tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) { + if (patt) + patt += ','; + + patt += n + ' ._mce_marker'; + }); + + tinymce.each(inst.dom.select(patt), function(n) { + inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n); + }); + + dom.setOuterHTML(dom.select('._mce_marker')[0], html); + + inst.selection.moveToBookmark(bm); + } else + inst.execCommand('mceInsertContent', false, html); + inst.addVisual(); inst.execCommand('mceEndUndoLevel'); @@ -286,12 +318,13 @@ function init() { } addClassesToList('class', "table_styles"); + TinyMCE_EditableSelects.init(); // Update form selectByValue(formObj, 'align', align); - selectByValue(formObj, 'frame', frame); + selectByValue(formObj, 'tframe', frame); selectByValue(formObj, 'rules', rules); - selectByValue(formObj, 'class', className); + selectByValue(formObj, 'class', className, true, true); formObj.cols.value = cols; formObj.rows.value = rows; formObj.border.value = border; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm index 9d34a886b..25d42eb65 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm @@ -6,9 +6,8 @@ - - +
{#table_dlg.merge_cells_title} diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/row.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/row.htm index d59fbad07..07ca13c98 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/table/row.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/table/row.htm @@ -5,12 +5,12 @@ + - - +
-
- +
- -
- + @@ -135,6 +121,20 @@ + +
+
::
- +
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js index 6a3270d35..8c7f48e69 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create('tinymce.plugins.XHTMLXtrasPlugin',{init:function(ed,url){ed.addCommand('mceCite',function(){ed.windowManager.open({file:url+'/cite.htm',width:350+parseInt(ed.getLang('xhtmlxtras.cite_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.cite_delta_height',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAcronym',function(){ed.windowManager.open({file:url+'/acronym.htm',width:350+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAbbr',function(){ed.windowManager.open({file:url+'/abbr.htm',width:350+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceDel',function(){ed.windowManager.open({file:url+'/del.htm',width:340+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceIns',function(){ed.windowManager.open({file:url+'/ins.htm',width:340+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAttributes',function(){ed.windowManager.open({file:url+'/attributes.htm',width:380,height:370,inline:1},{plugin_url:url});});ed.addButton('cite',{title:'xhtmlxtras.cite_desc',cmd:'mceCite'});ed.addButton('acronym',{title:'xhtmlxtras.acronym_desc',cmd:'mceAcronym'});ed.addButton('abbr',{title:'xhtmlxtras.abbr_desc',cmd:'mceAbbr'});ed.addButton('del',{title:'xhtmlxtras.del_desc',cmd:'mceDel'});ed.addButton('ins',{title:'xhtmlxtras.ins_desc',cmd:'mceIns'});ed.addButton('attribs',{title:'xhtmlxtras.attribs_desc',cmd:'mceAttributes'});if(tinymce.isIE){function fix(ed,o){if(o.set){o.content=o.content.replace(/]+)>/gi,'');o.content=o.content.replace(/<\/abbr>/gi,'');}};ed.onBeforeSetContent.add(fix);ed.onPostProcess.add(fix);}ed.onNodeChange.add(function(ed,cm,n,co){n=ed.dom.getParent(n,'CITE,ACRONYM,ABBR,DEL,INS');cm.setDisabled('cite',co);cm.setDisabled('acronym',co);cm.setDisabled('abbr',co);cm.setDisabled('del',co);cm.setDisabled('ins',co);cm.setDisabled('attribs',n&&n.nodeName=='BODY');if(n){cm.setDisabled(n.nodeName.toLowerCase(),0);cm.setActive(n.nodeName.toLowerCase(),1);}else{cm.setActive('cite',0);cm.setActive('acronym',0);cm.setActive('abbr',0);cm.setActive('del',0);cm.setActive('ins',0);}});},getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('xhtmlxtras',tinymce.plugins.XHTMLXtrasPlugin);})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(b,c){b.addCommand("mceCite",function(){b.windowManager.open({file:c+"/cite.htm",width:350+parseInt(b.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:c})});b.addCommand("mceAcronym",function(){b.windowManager.open({file:c+"/acronym.htm",width:350+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAbbr",function(){b.windowManager.open({file:c+"/abbr.htm",width:350+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceDel",function(){b.windowManager.open({file:c+"/del.htm",width:340+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceIns",function(){b.windowManager.open({file:c+"/ins.htm",width:340+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAttributes",function(){b.windowManager.open({file:c+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:c})});b.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});b.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});b.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});b.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});b.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});b.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});if(tinymce.isIE){function a(d,e){if(e.set){e.content=e.content.replace(/]+)>/gi,"");e.content=e.content.replace(/<\/abbr>/gi,"")}}b.onBeforeSetContent.add(a);b.onPostProcess.add(a)}b.onNodeChange.add(function(e,d,g,f){g=e.dom.getParent(g,"CITE,ACRONYM,ABBR,DEL,INS");d.setDisabled("cite",f);d.setDisabled("acronym",f);d.setDisabled("abbr",f);d.setDisabled("del",f);d.setDisabled("ins",f);d.setDisabled("attribs",g&&g.nodeName=="BODY");d.setActive("cite",0);d.setActive("acronym",0);d.setActive("abbr",0);d.setActive("del",0);d.setActive("ins",0);if(g){do{d.setDisabled(g.nodeName.toLowerCase(),0);d.setActive(g.nodeName.toLowerCase(),1)}while(g=g.parentNode)}})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js index 143ed9216..bef06f2d2 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js @@ -104,16 +104,18 @@ cm.setDisabled('del', co); cm.setDisabled('ins', co); cm.setDisabled('attribs', n && n.nodeName == 'BODY'); + cm.setActive('cite', 0); + cm.setActive('acronym', 0); + cm.setActive('abbr', 0); + cm.setActive('del', 0); + cm.setActive('ins', 0); + // Activate all if (n) { - cm.setDisabled(n.nodeName.toLowerCase(), 0); - cm.setActive(n.nodeName.toLowerCase(), 1); - } else { - cm.setActive('cite', 0); - cm.setActive('acronym', 0); - cm.setActive('abbr', 0); - cm.setActive('del', 0); - cm.setActive('ins', 0); + do { + cm.setDisabled(n.nodeName.toLowerCase(), 0); + cm.setActive(n.nodeName.toLowerCase(), 1); + } while (n = n.parentNode); } }); }, diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm index c0f056ff3..9fa21c433 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm @@ -9,7 +9,6 @@ - @@ -31,7 +30,7 @@ - +
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js index 005a619c7..7049f2beb 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js @@ -27,7 +27,7 @@ function insertDel() { if (elm == null) { var s = SXE.inst.selection.getContent(); if(s.length > 0) { - tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); + insertInlineElement('del'); var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';}); for (var i=0; i' + s + ''; - - tinyMCEPopup.execCommand('mceInsertContent', false, h); - - var elementArray = tinymce.grep(SXE.inst.dom.select(element_name), function(n) {return n.id == '#sxe_temp_' + element_name + '#';}); + insertInlineElement(element_name); + var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); for (var i=0; i 0) { - tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); + insertInlineElement('INS'); var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';}); for (var i=0; i + {#advanced_dlg.about_title} @@ -21,7 +21,7 @@

Version: ()

TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

-

Copyright © 2003-2007, Moxiecode Systems AB, All rights reserved.

+

Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.

For more information about this software visit the TinyMCE website.

diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm index 9e4c0b91a..42095a1c0 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm @@ -4,7 +4,6 @@ {#advanced_dlg.anchor_title} - @@ -13,7 +12,7 @@ {#advanced_dlg.anchor_title} - {#advanced_dlg.anchor_name}: + {#advanced_dlg.anchor_name}: diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm index e4c734484..f11a38ad8 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm @@ -1,11 +1,10 @@ - + {#advanced_dlg.charmap_title} - diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm index a8f297c60..cbd6b88dc 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm @@ -5,7 +5,6 @@ - @@ -22,7 +21,7 @@
{#advanced_dlg.colorpicker_picker_title}
- +
diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js index 15388c727..628c793cc 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js @@ -1 +1 @@ -(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,each=tinymce.each,Cookie=tinymce.util.Cookie,lastExtID,explode=tinymce.explode;tinymce.ThemeManager.requireLangPack('advanced');tinymce.create('tinymce.themes.AdvancedTheme',{controls:{bold:['bold_desc','Bold'],italic:['italic_desc','Italic'],underline:['underline_desc','Underline'],strikethrough:['striketrough_desc','Strikethrough'],justifyleft:['justifyleft_desc','JustifyLeft'],justifycenter:['justifycenter_desc','JustifyCenter'],justifyright:['justifyright_desc','JustifyRight'],justifyfull:['justifyfull_desc','JustifyFull'],bullist:['bullist_desc','InsertUnorderedList'],numlist:['numlist_desc','InsertOrderedList'],outdent:['outdent_desc','Outdent'],indent:['indent_desc','Indent'],cut:['cut_desc','Cut'],copy:['copy_desc','Copy'],paste:['paste_desc','Paste'],undo:['undo_desc','Undo'],redo:['redo_desc','Redo'],link:['link_desc','mceLink'],unlink:['unlink_desc','unlink'],image:['image_desc','mceImage'],cleanup:['cleanup_desc','mceCleanup'],help:['help_desc','mceHelp'],code:['code_desc','mceCodeEditor'],hr:['hr_desc','InsertHorizontalRule'],removeformat:['removeformat_desc','RemoveFormat'],sub:['sub_desc','subscript'],sup:['sup_desc','superscript'],forecolor:['forecolor_desc','ForeColor'],forecolorpicker:['forecolor_desc','mceForeColor'],backcolor:['backcolor_desc','HiliteColor'],backcolorpicker:['backcolor_desc','mceBackColor'],charmap:['charmap_desc','mceCharMap'],visualaid:['visualaid_desc','mceToggleVisualAid'],anchor:['anchor_desc','mceInsertAnchor'],newdocument:['newdocument_desc','mceNewDocument'],blockquote:['blockquote_desc','mceBlockQuote']},stateControls:['bold','italic','underline','strikethrough','bullist','numlist','justifyleft','justifycenter','justifyright','justifyfull','sub','sup','blockquote'],init:function(ed,url){var t=this,s,v;t.editor=ed;t.url=url;t.onResolveName=new tinymce.util.Dispatcher(this);t.settings=s=extend({theme_advanced_path:true,theme_advanced_toolbar_location:'bottom',theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1},ed.settings);if((v=s.theme_advanced_path_location)&&v!='none')s.theme_advanced_statusbar_location=s.theme_advanced_path_location;if(s.theme_advanced_statusbar_location=='none')s.theme_advanced_statusbar_location=0;ed.onInit.add(function(){ed.onNodeChange.add(t._nodeChanged,t);ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/"+ed.settings.skin+"/content.css"));});ed.onSetProgressState.add(function(ed,b,ti){var co,id=ed.id,tb;if(b){t.progressTimer=setTimeout(function(){co=ed.getContainer();co=co.insertBefore(DOM.create('DIV',{style:'position:relative'}),co.firstChild);tb=DOM.get(ed.id+'_tbl');DOM.add(co,'div',{id:id+'_blocker','class':'mceBlocker',style:{width:tb.clientWidth+2,height:tb.clientHeight+2}});DOM.add(co,'div',{id:id+'_progress','class':'mceProgress',style:{left:tb.clientWidth/ 2, top : tb.clientHeight /2}});},ti||0);}else{DOM.remove(id+'_blocker');DOM.remove(id+'_progress');clearTimeout(t.progressTimer);}});DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css||"themes/advanced/skins/"+ed.settings.skin+"/ui.css"));if(s.skin_variant)DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css||"themes/advanced/skins/"+ed.settings.skin+"/ui_"+s.skin_variant+".css"));},createControl:function(n,cf){var cd,c;if(c=cf.createControl(n))return c;switch(n){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu();}if((cd=this.controls[n]))return cf.createButton(n,{title:"advanced."+cd[0],cmd:cd[1],ui:cd[2],value:cd[3]});},execCommand:function(cmd,ui,val){var f=this['_'+cmd];if(f){f.call(this,ui,val);return true;}return false;},_importClasses:function(){var ed=this.editor,c=ed.controlManager.get('styleselect');if(c.getLength()==0){each(ed.dom.getClasses(),function(o){c.add(o['class'],o['class']);});}},_createStyleSelect:function(n){var t=this,ed=t.editor,cf=ed.controlManager,c=cf.createListBox('styleselect',{title:'advanced.style_select',onselect:function(v){if(c.selectedValue===v){ed.execCommand('mceSetStyleInfo',0,{command:'removeformat'});c.select();return false;}else ed.execCommand('mceSetCSSClass',0,v);}});each(ed.getParam('theme_advanced_styles','','hash'),function(v,k){if(v)c.add(t.editor.translate(k),v);});c.onPostRender.add(function(ed,n){Event.add(n,'focus',t._importClasses,t);Event.add(n,'mousedown',t._importClasses,t);});return c;},_createFontSelect:function(){var c,t=this,ed=t.editor;c=ed.controlManager.createListBox('fontselect',{title:'advanced.fontdefault',cmd:'FontName'});each(ed.getParam('theme_advanced_fonts',t.settings.theme_advanced_fonts,'hash'),function(v,k){c.add(ed.translate(k),v,{style:v.indexOf('dings')==-1?'font-family:'+v:''});});return c;},_createFontSizeSelect:function(){var c,t=this,lo=["1 (8 pt)","2 (10 pt)","3 (12 pt)","4 (14 pt)","5 (18 pt)","6 (24 pt)","7 (36 pt)"],fz=[8,10,12,14,18,24,36];c=t.editor.controlManager.createListBox('fontsizeselect',{title:'advanced.font_size',cmd:'FontSize'});each(explode(t.settings.theme_advanced_font_sizes),function(v){c.add(lo[parseInt(v)-1],v,{'style':'font-size:'+fz[v-1]+'pt','class':'mceFontSize'+v});});return c;},_createBlockFormats:function(){var c,fmts={p:'advanced.paragraph',address:'advanced.address',pre:'advanced.pre',h1:'advanced.h1',h2:'advanced.h2',h3:'advanced.h3',h4:'advanced.h4',h5:'advanced.h5',h6:'advanced.h6',div:'advanced.div',blockquote:'advanced.blockquote',code:'advanced.code',dt:'advanced.dt',dd:'advanced.dd',samp:'advanced.samp'},t=this;c=t.editor.controlManager.createListBox('formatselect',{title:'advanced.block',cmd:'FormatBlock'});each(explode(t.settings.theme_advanced_blockformats),function(v){c.add(t.editor.translate(fmts[v]),v,{'class':'mce_formatPreview mce_'+v});});return c;},_createForeColorMenu:function(){var c,t=this,s=t.settings,o={},v;if(s.theme_advanced_more_colors){o.more_colors_func=function(){t._mceColorPicker(0,{color:c.value,func:function(co){c.setColor(co);}});};}if(v=s.theme_advanced_text_colors)o.colors=v;o.title='advanced.forecolor_desc';o.cmd='ForeColor';o.scope=this;c=t.editor.controlManager.createColorSplitButton('forecolor',o);return c;},_createBackColorMenu:function(){var c,t=this,s=t.settings,o={},v;if(s.theme_advanced_more_colors){o.more_colors_func=function(){t._mceColorPicker(0,{color:c.value,func:function(co){c.setColor(co);}});};}if(v=s.theme_advanced_background_colors)o.colors=v;o.title='advanced.backcolor_desc';o.cmd='HiliteColor';o.scope=this;c=t.editor.controlManager.createColorSplitButton('backcolor',o);return c;},renderUI:function(o){var n,ic,tb,t=this,ed=t.editor,s=t.settings,sc,p,nl;n=p=DOM.create('span',{id:ed.id+'_parent','class':'mceEditor '+ed.settings.skin+'Skin'+(s.skin_variant?' '+ed.settings.skin+'Skin'+t._ufirst(s.skin_variant):'')});if(!DOM.boxModel)n=DOM.add(n,'div',{'class':'mceOldBoxModel'});n=sc=DOM.add(n,'table',{id:ed.id+'_tbl',dir:'ltr','class':'mceLayout',cellSpacing:0,cellPadding:0});n=tb=DOM.add(n,'tbody');switch((s.theme_advanced_layout_manager||'').toLowerCase()){case"rowlayout":ic=t._rowLayout(s,tb,o);break;case"customlayout":ic=ed.execCallback("theme_advanced_custom_layout",s,tb,o,p);break;default:ic=t._simpleLayout(s,tb,o,p);}n=o.targetNode;nl=DOM.stdMode?sc.getElementsByTagName('tr'):sc.rows;DOM.addClass(nl[0],'mceFirst');DOM.addClass(nl[nl.length-1],'mceLast');each(DOM.select('tr',tb),function(n){DOM.addClass(n.firstChild,'mceFirst');DOM.addClass(n.childNodes[n.childNodes.length-1],'mceLast');});if(DOM.get(s.theme_advanced_toolbar_container))DOM.get(s.theme_advanced_toolbar_container).appendChild(p);else DOM.insertAfter(p,n);Event.add(ed.id+'_path_row','click',function(e){e=e.target;if(e.nodeName=='A'){t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/,'$1'));return Event.cancel(e);}});if(!ed.getParam('accessibility_focus')||ed.getParam('tab_focus'))Event.add(DOM.add(p,'a',{href:'#'},''),'focus',function(){tinyMCE.get(ed.id).focus();});if(s.theme_advanced_toolbar_location=='external')o.deltaHeight=0;t.deltaHeight=o.deltaHeight;o.targetNode=null;return{iframeContainer:ic,editorContainer:ed.id+'_parent',sizeContainer:sc,deltaHeight:o.deltaHeight};},getInfo:function(){return{longname:'Advanced theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}},resizeBy:function(dw,dh){var e=DOM.get(this.editor.id+'_tbl');this.resizeTo(e.clientWidth+dw,e.clientHeight+dh);},resizeTo:function(w,h){var ed=this.editor,s=ed.settings,e=DOM.get(ed.id+'_tbl'),ifr=DOM.get(ed.id+'_ifr'),dh;w=Math.max(s.theme_advanced_resizing_min_width||100,w);h=Math.max(s.theme_advanced_resizing_min_height||100,h);w=Math.min(s.theme_advanced_resizing_max_width||0xFFFF,w);h=Math.min(s.theme_advanced_resizing_max_height||0xFFFF,h);dh=e.clientHeight-ifr.clientHeight;DOM.setStyle(ifr,'height',h-dh);DOM.setStyles(e,{width:w,height:h});},_simpleLayout:function(s,tb,o,p){var t=this,ed=t.editor,lo=s.theme_advanced_toolbar_location,sl=s.theme_advanced_statusbar_location,n,ic,etb,c;if(lo=='top')t._addToolbars(tb,o);if(lo=='external'){n=c=DOM.create('div',{style:'position:relative'});n=DOM.add(n,'div',{id:ed.id+'_external','class':'mceExternalToolbar'});DOM.add(n,'a',{id:ed.id+'_external_close',href:'javascript:;','class':'mceExternalClose'});n=DOM.add(n,'table',{id:ed.id+'_tblext',cellSpacing:0,cellPadding:0});etb=DOM.add(n,'tbody');if(p.firstChild.className=='mceOldBoxModel')p.firstChild.appendChild(c);else p.insertBefore(c,p.firstChild);t._addToolbars(etb,o);ed.onMouseUp.add(function(){var e=DOM.get(ed.id+'_external');DOM.show(e);DOM.hide(lastExtID);var f=Event.add(ed.id+'_external_close','click',function(){DOM.hide(ed.id+'_external');Event.remove(ed.id+'_external_close','click',f);});DOM.show(e);DOM.setStyle(e,'top',0-DOM.getRect(ed.id+'_tblext').h-1);DOM.hide(e);DOM.show(e);e.style.filter='';lastExtID=ed.id+'_external';e=null;});}if(sl=='top')t._addStatusBar(tb,o);if(!s.theme_advanced_toolbar_container){n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});}if(lo=='bottom')t._addToolbars(tb,o);if(sl=='bottom')t._addStatusBar(tb,o);return ic;},_rowLayout:function(s,tb,o){var t=this,ed=t.editor,dc,da,cf=ed.controlManager,n,ic,to,a;dc=s.theme_advanced_containers_default_class||'';da=s.theme_advanced_containers_default_align||'center';each(explode(s.theme_advanced_containers||''),function(c,i){var v=s['theme_advanced_container_'+c]||'';switch(c.toLowerCase()){case'mceeditor':n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});break;case'mceelementpath':t._addStatusBar(tb,o);break;default:a=s['theme_advanced_container_'+c+'_align'].toLowerCase();a='mce'+t._ufirst(a);n=DOM.add(DOM.add(tb,'tr'),'td',{'class':'mceToolbar '+(s['theme_advanced_container_'+c+'_class']||dc)+' '+a||da});to=cf.createToolbar("toolbar"+i);t._addControls(v,to);DOM.setHTML(n,to.renderHTML());o.deltaHeight-=s.theme_advanced_row_height;}});return ic;},_addControls:function(v,tb){var t=this,s=t.settings,di,cf=t.editor.controlManager;if(s.theme_advanced_disable&&!t._disabled){di={};each(explode(s.theme_advanced_disable),function(v){di[v]=1;});t._disabled=di;}else di=t._disabled;each(explode(v),function(n){var c;if(di&&di[n])return;if(n=='tablecontrols'){each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(n){n=t.createControl(n,cf);if(n)tb.add(n);});return;}c=t.createControl(n,cf);if(c)tb.add(c);});},_addToolbars:function(c,o){var t=this,i,tb,ed=t.editor,s=t.settings,v,cf=ed.controlManager,di,n,h=[],a;a=s.theme_advanced_toolbar_align.toLowerCase();a='mce'+t._ufirst(a);n=DOM.add(DOM.add(c,'tr'),'td',{'class':'mceToolbar '+a});if(!ed.getParam('accessibility_focus')||ed.getParam('tab_focus'))h.push(DOM.createHTML('a',{href:'#',onfocus:'tinyMCE.get(\''+ed.id+'\').focus();'},''));h.push(DOM.createHTML('a',{href:'#',accesskey:'q',title:ed.getLang("advanced.toolbar_focus")},''));for(i=1;(v=s['theme_advanced_buttons'+i]);i++){tb=cf.createToolbar("toolbar"+i,{'class':'mceToolbarRow'+i});if(s['theme_advanced_buttons'+i+'_add'])v+=','+s['theme_advanced_buttons'+i+'_add'];if(s['theme_advanced_buttons'+i+'_add_before'])v=s['theme_advanced_buttons'+i+'_add_before']+','+v;t._addControls(v,tb);h.push(tb.renderHTML());o.deltaHeight-=s.theme_advanced_row_height;}h.push(DOM.createHTML('a',{href:'#',accesskey:'z',title:ed.getLang("advanced.toolbar_focus"),onfocus:'tinyMCE.getInstanceById(\''+ed.id+'\').focus();'},''));DOM.setHTML(n,h.join(''));},_addStatusBar:function(tb,o){var n,t=this,ed=t.editor,s=t.settings,r,mf,me,td;n=DOM.add(tb,'tr');n=td=DOM.add(n,'td',{'class':'mceStatusbar'});n=DOM.add(n,'div',{id:ed.id+'_path_row'},s.theme_advanced_path?ed.translate('advanced.path')+': ':' ');DOM.add(n,'a',{href:'#',accesskey:'x'});if(s.theme_advanced_resizing&&!tinymce.isOldWebKit){DOM.add(td,'a',{id:ed.id+'_resize',href:'javascript:;',onclick:"return false;",'class':'mceResize'});if(s.theme_advanced_resizing_use_cookie){ed.onPostRender.add(function(){var o=Cookie.getHash("TinyMCE_"+ed.id+"_size"),c=DOM.get(ed.id+'_tbl');if(!o)return;if(s.theme_advanced_resize_horizontal)c.style.width=o.cw+'px';c.style.height=o.ch+'px';DOM.get(ed.id+'_ifr').style.height=(parseInt(o.ch)+t.deltaHeight)+'px';});}ed.onPostRender.add(function(){Event.add(ed.id+'_resize','mousedown',function(e){var c,p,w,h,n,pa;c=DOM.get(ed.id+'_tbl');w=c.clientWidth;h=c.clientHeight;miw=s.theme_advanced_resizing_min_width||100;mih=s.theme_advanced_resizing_min_height||100;maw=s.theme_advanced_resizing_max_width||0xFFFF;mah=s.theme_advanced_resizing_max_height||0xFFFF;p=DOM.add(DOM.get(ed.id+'_parent'),'div',{'class':'mcePlaceHolder'});DOM.setStyles(p,{width:w,height:h});DOM.hide(c);DOM.show(p);r={x:e.screenX,y:e.screenY,w:w,h:h,dx:null,dy:null};mf=Event.add(document,'mousemove',function(e){var w,h;r.dx=e.screenX-r.x;r.dy=e.screenY-r.y;w=Math.max(miw,r.w+r.dx);h=Math.max(mih,r.h+r.dy);w=Math.min(maw,w);h=Math.min(mah,h);if(s.theme_advanced_resize_horizontal)p.style.width=w+'px';p.style.height=h+'px';return Event.cancel(e);});me=Event.add(document,'mouseup',function(e){var ifr;Event.remove(document,'mousemove',mf);Event.remove(document,'mouseup',me);c.style.display='';DOM.remove(p);if(r.dx===null)return;ifr=DOM.get(ed.id+'_ifr');if(s.theme_advanced_resize_horizontal)c.style.width=(r.w+r.dx)+'px';c.style.height=(r.h+r.dy)+'px';ifr.style.height=(ifr.clientHeight+r.dy)+'px';if(s.theme_advanced_resizing_use_cookie){Cookie.setHash("TinyMCE_"+ed.id+"_size",{cw:r.w+r.dx,ch:r.h+r.dy});}});return Event.cancel(e);});});}o.deltaHeight-=21;n=tb=null;},_nodeChanged:function(ed,cm,n,co){var t=this,p,de=0,v,c,s=t.settings;tinymce.each(t.stateControls,function(c){cm.setActive(c,ed.queryCommandState(t.controls[c][1]));});cm.setActive('visualaid',ed.hasVisual);cm.setDisabled('undo',!ed.undoManager.hasUndo()&&!ed.typing);cm.setDisabled('redo',!ed.undoManager.hasRedo());cm.setDisabled('outdent',!ed.queryCommandState('Outdent'));p=DOM.getParent(n,'A');if(c=cm.get('link')){if(!p||!p.name){c.setDisabled(!p&&co);c.setActive(!!p);}}if(c=cm.get('unlink')){c.setDisabled(!p&&co);c.setActive(!!p&&!p.name);}if(c=cm.get('anchor')){c.setActive(!!p&&p.name);if(tinymce.isWebKit){p=DOM.getParent(n,'IMG');c.setActive(!!p&&DOM.getAttrib(p,'mce_name')=='a');}}p=DOM.getParent(n,'IMG');if(c=cm.get('image'))c.setActive(!!p&&n.className.indexOf('mceItem')==-1);if(c=cm.get('styleselect')){if(n.className){t._importClasses();c.select(n.className);}else c.select();}if(c=cm.get('formatselect')){p=DOM.getParent(n,DOM.isBlock);if(p)c.select(p.nodeName.toLowerCase());}if(c=cm.get('fontselect'))c.select(ed.queryCommandValue('FontName'));if(c=cm.get('fontsizeselect'))c.select(ed.queryCommandValue('FontSize'));if(s.theme_advanced_path&&s.theme_advanced_statusbar_location){p=DOM.get(ed.id+'_path')||DOM.add(ed.id+'_path_row','span',{id:ed.id+'_path'});DOM.setHTML(p,'');ed.dom.getParent(n,function(n){var na=n.nodeName.toLowerCase(),u,pi,ti='';if(n.nodeType!=1||(DOM.hasClass(n,'mceItemHidden')||DOM.hasClass(n,'mceItemRemoved')))return;if(v=DOM.getAttrib(n,'mce_name'))na=v;if(tinymce.isIE&&n.scopeName!=='HTML')na=n.scopeName+':'+na;na=na.replace(/mce\:/g,'');switch(na){case'b':na='strong';break;case'i':na='em';break;case'img':if(v=DOM.getAttrib(n,'src'))ti+='src: '+v+' ';break;case'a':if(v=DOM.getAttrib(n,'name')){ti+='name: '+v+' ';na+='#'+v;}if(v=DOM.getAttrib(n,'href'))ti+='href: '+v+' ';break;case'font':if(s.convert_fonts_to_spans)na='span';if(v=DOM.getAttrib(n,'face'))ti+='font: '+v+' ';if(v=DOM.getAttrib(n,'size'))ti+='size: '+v+' ';if(v=DOM.getAttrib(n,'color'))ti+='color: '+v+' ';break;case'span':if(v=DOM.getAttrib(n,'style'))ti+='style: '+v+' ';break;}if(v=DOM.getAttrib(n,'id'))ti+='id: '+v+' ';if(v=n.className){v=v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,'');if(v&&v.indexOf('mceItem')==-1){ti+='class: '+v+' ';if(DOM.isBlock(n)||na=='img'||na=='span')na+='.'+v;}}na=na.replace(/(html:)/g,'');na={name:na,node:n,title:ti};t.onResolveName.dispatch(t,na);ti=na.title;na=na.name;pi=DOM.create('a',{'href':"javascript:;",onmousedown:"return false;",title:ti,'class':'mcePath_'+(de++)},na);if(p.hasChildNodes()){p.insertBefore(document.createTextNode(' \u00bb '),p.firstChild);p.insertBefore(pi,p.firstChild);}else p.appendChild(pi);},ed.getBody());}},_sel:function(v){this.editor.execCommand('mceSelectNodeDepth',false,v);},_mceInsertAnchor:function(ui,v){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/anchor.htm',width:320+parseInt(ed.getLang('advanced.anchor_delta_width',0)),height:90+parseInt(ed.getLang('advanced.anchor_delta_height',0)),inline:true},{theme_url:this.url});},_mceCharMap:function(){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/charmap.htm',width:550+parseInt(ed.getLang('advanced.charmap_delta_width',0)),height:250+parseInt(ed.getLang('advanced.charmap_delta_height',0)),inline:true},{theme_url:this.url});},_mceHelp:function(){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/about.htm',width:480,height:380,inline:true},{theme_url:this.url});},_mceColorPicker:function(u,v){var ed=this.editor;v=v||{};ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/color_picker.htm',width:375+parseInt(ed.getLang('advanced.colorpicker_delta_width',0)),height:250+parseInt(ed.getLang('advanced.colorpicker_delta_height',0)),close_previous:false,inline:true},{input_color:v.color,func:v.func,theme_url:this.url});},_mceCodeEditor:function(ui,val){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/source_editor.htm',width:parseInt(ed.getParam("theme_advanced_source_editor_width",720)),height:parseInt(ed.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url});},_mceImage:function(ui,val){var ed=this.editor;if(ed.dom.getAttrib(ed.selection.getNode(),'class').indexOf('mceItem')!=-1)return;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/image.htm',width:355+parseInt(ed.getLang('advanced.image_delta_width',0)),height:275+parseInt(ed.getLang('advanced.image_delta_height',0)),inline:true},{theme_url:this.url});},_mceLink:function(ui,val){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/link.htm',width:310+parseInt(ed.getLang('advanced.link_delta_width',0)),height:200+parseInt(ed.getLang('advanced.link_delta_height',0)),inline:true},{theme_url:this.url});},_mceNewDocument:function(){var ed=this.editor;ed.windowManager.confirm('advanced.newdocument',function(s){if(s)ed.execCommand('mceSetContent',false,'');});},_mceForeColor:function(){var t=this;this._mceColorPicker(0,{func:function(co){t.editor.execCommand('ForeColor',false,co);}});},_mceBackColor:function(){var t=this;this._mceColorPicker(0,{func:function(co){t.editor.execCommand('HiliteColor',false,co);}});},_ufirst:function(s){return s.substring(0,1).toUpperCase()+s.substring(1);}});tinymce.ThemeManager.add('advanced',tinymce.themes.AdvancedTheme);}()); \ No newline at end of file +(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";if(j.settings.convert_fonts_to_spans){o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){j.onNodeChange.add(l._nodeChanged,l);if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute("themes/advanced/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(j){var i=this.editor,k=i.controlManager.get("styleselect");if(k.getLength()==0){f(i.dom.getClasses(),function(l){k.add(l["class"],l["class"])})}},_createStyleSelect:function(m){var j=this,i=j.editor,k=i.controlManager,l=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(n){if(l.selectedValue===n){i.execCommand("mceSetStyleInfo",0,{command:"removeformat"});l.select();return false}else{i.execCommand("mceSetCSSClass",0,n)}}});if(l){f(i.getParam("theme_advanced_styles","","hash"),function(o,n){if(o){l.add(j.editor.translate(n),o)}});l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",j._importClasses,j);b.add(p.id+"_text","mousedown",j._importClasses,j);b.add(p.id+"_open","focus",j._importClasses,j);b.add(p.id+"_open","mousedown",j._importClasses,j)}else{b.add(p.id,"focus",j._importClasses,j)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",cmd:"FontName"});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){if(i.fontSize){k.execCommand("FontSize",false,i.fontSize)}else{f(m.settings.theme_advanced_font_sizes,function(p,o){if(p["class"]){j.push(p["class"])}});k.editorCommands._applyInlineStyle("span",{"class":i["class"]},{check_classes:j})}}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;m=j=d.create("span",{id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},""),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,l){var j=this.editor,k=j.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr"),m;i=Math.max(k.theme_advanced_resizing_min_width||100,i);l=Math.max(k.theme_advanced_resizing_min_height||100,l);i=Math.min(k.theme_advanced_resizing_max_width||65535,i);l=Math.min(k.theme_advanced_resizing_max_height||65535,l);m=n.clientHeight-o.clientHeight;d.setStyle(o,"height",l-m);d.setStyles(n,{width:i,height:l})},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(n.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(w,k){var z=this,p,m,r=z.editor,A=z.settings,y,j=r.controlManager,u,l,q=[],x;x=A.theme_advanced_toolbar_align.toLowerCase();x="mce"+z._ufirst(x);l=d.add(d.add(w,"tr"),"td",{"class":"mceToolbar "+x});if(!r.getParam("accessibility_focus")){q.push(d.createHTML("a",{href:"#",onfocus:"tinyMCE.get('"+r.id+"').focus();"},""))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},""));for(p=1;(y=A["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(A["theme_advanced_buttons"+p+"_add"]){y+=","+A["theme_advanced_buttons"+p+"_add"]}if(A["theme_advanced_buttons"+p+"_add_before"]){y=A["theme_advanced_buttons"+p+"_add_before"]+","+y}z._addControls(y,m);q.push(m.renderHTML());k.deltaHeight-=A.theme_advanced_row_height}q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},""));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row"},w.theme_advanced_path?p.translate("advanced.path")+": ":" ");d.add(k,"a",{href:"#",accesskey:"x"});if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}if(w.theme_advanced_resize_horizontal){r.style.width=Math.max(10,n.cw)+"px"}r.style.height=Math.max(10,n.ch)+"px";d.get(p.id+"_ifr").style.height=Math.max(10,parseInt(n.ch)+v.deltaHeight)+"px"})}p.onPostRender.add(function(){b.add(p.id+"_resize","mousedown",function(x){var z,t,o,s,y,r;z=d.get(p.id+"_tbl");o=z.clientWidth;s=z.clientHeight;miw=w.theme_advanced_resizing_min_width||100;mih=w.theme_advanced_resizing_min_height||100;maw=w.theme_advanced_resizing_max_width||65535;mah=w.theme_advanced_resizing_max_height||65535;t=d.add(d.get(p.id+"_parent"),"div",{"class":"mcePlaceHolder"});d.setStyles(t,{width:o,height:s});d.hide(z);d.show(t);i={x:x.screenX,y:x.screenY,w:o,h:s,dx:null,dy:null};q=b.add(d.doc,"mousemove",function(B){var n,A;i.dx=B.screenX-i.x;i.dy=B.screenY-i.y;n=Math.max(miw,i.w+i.dx);A=Math.max(mih,i.h+i.dy);n=Math.min(maw,n);A=Math.min(mah,A);if(w.theme_advanced_resize_horizontal){t.style.width=n+"px"}t.style.height=A+"px";return b.cancel(B)});u=b.add(d.doc,"mouseup",function(n){var A;b.remove(d.doc,"mousemove",q);b.remove(d.doc,"mouseup",u);z.style.display="";d.remove(t);if(i.dx===null){return}A=d.get(p.id+"_ifr");if(w.theme_advanced_resize_horizontal){z.style.width=Math.max(10,i.w+i.dx)+"px"}z.style.height=Math.max(10,i.h+i.dy)+"px";A.style.height=Math.max(10,A.clientHeight+i.dy)+"px";if(w.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+p.id+"_size",{cw:i.w+i.dx,ch:i.h+i.dy})}});return b.cancel(x)})})}j.deltaHeight-=21;k=m=null},_nodeChanged:function(l,u,k,q){var y=this,i,r=0,x,m,z=y.settings,w,j,o;if(z.readonly){return}e.each(y.stateControls,function(n){u.setActive(n,l.queryCommandState(y.controls[n][1]))});u.setActive("visualaid",l.hasVisual);u.setDisabled("undo",!l.undoManager.hasUndo()&&!l.typing);u.setDisabled("redo",!l.undoManager.hasRedo());u.setDisabled("outdent",!l.queryCommandState("Outdent"));i=d.getParent(k,"A");if(m=u.get("link")){if(!i||!i.name){m.setDisabled(!i&&q);m.setActive(!!i)}}if(m=u.get("unlink")){m.setDisabled(!i&&q);m.setActive(!!i&&!i.name)}if(m=u.get("anchor")){m.setActive(!!i&&i.name);if(e.isWebKit){i=d.getParent(k,"IMG");m.setActive(!!i&&d.getAttrib(i,"mce_name")=="a")}}i=d.getParent(k,"IMG");if(m=u.get("image")){m.setActive(!!i&&k.className.indexOf("mceItem")==-1)}if(m=u.get("styleselect")){if(k.className){y._importClasses();m.select(k.className)}else{m.select()}}if(m=u.get("formatselect")){i=d.getParent(k,d.isBlock);if(i){m.select(i.nodeName.toLowerCase())}}if(l.settings.convert_fonts_to_spans){l.dom.getParent(k,function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}if(!j&&p.style.fontSize){j=p.style.fontSize}if(!o&&p.style.fontFamily){o=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}}return false});if(m=u.get("fontselect")){m.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==o})}if(m=u.get("fontsizeselect")){m.select(function(n){if(n.fontSize&&n.fontSize===j){return true}if(n["class"]&&n["class"]===w){return true}})}}else{if(m=u.get("fontselect")){m.select(l.queryCommandValue("FontName"))}if(m=u.get("fontsizeselect")){x=l.queryCommandValue("FontSize");m.select(function(n){return n.fontSize==x})}}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){i=d.get(l.id+"_path")||d.add(l.id+"_path_row","span",{id:l.id+"_path"});d.setHTML(i,"");l.dom.getParent(k,function(A){var p=A.nodeName.toLowerCase(),s,v,t="";if(A.nodeType!=1||A.nodeName==="BR"||(d.hasClass(A,"mceItemHidden")||d.hasClass(A,"mceItemRemoved"))){return}if(x=d.getAttrib(A,"mce_name")){p=x}if(e.isIE&&A.scopeName!=="HTML"){p=A.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(A,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(A,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(A,"href")){t+="href: "+x+" "}break;case"font":if(z.convert_fonts_to_spans){p="span"}if(x=d.getAttrib(A,"face")){t+="font: "+x+" "}if(x=d.getAttrib(A,"size")){t+="size: "+x+" "}if(x=d.getAttrib(A,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(A,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(A,"id")){t+="id: "+x+" "}if(x=A.className){x=x.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,"");if(x&&x.indexOf("mceItem")==-1){t+="class: "+x+" ";if(d.isBlock(A)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:A,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",onmousedown:"return false;",title:t,"class":"mcePath_"+(r++)},p);if(i.hasChildNodes()){i.insertBefore(d.doc.createTextNode(" \u00bb "),i.firstChild);i.insertBefore(v,i.firstChild)}else{i.appendChild(v)}},l.getBody())}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:e.baseURL+"/themes/advanced/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:e.baseURL+"/themes/advanced/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js index 288e3c387..21eb259a2 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js @@ -1,17 +1,19 @@ /** - * $Id: editor_template_src.js 710 2008-03-12 12:37:55Z spocke $ + * $Id: editor_template_src.js 1045 2009-03-04 20:03:18Z spocke $ * * @author Moxiecode * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. */ -(function() { +(function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode; // Tell it to load theme specific language pack(s) tinymce.ThemeManager.requireLangPack('advanced'); tinymce.create('tinymce.themes.AdvancedTheme', { + sizes : [8, 10, 12, 14, 18, 24, 36], + // Control name lookup, format: title, command controls : { bold : ['bold_desc', 'Bold'], @@ -55,7 +57,7 @@ stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'], init : function(ed, url) { - var t = this, s, v; + var t = this, s, v, o; t.editor = ed; t.url = url; @@ -71,13 +73,46 @@ theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6", theme_advanced_toolbar_align : "center", theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats", - theme_advanced_font_sizes : "1,2,3,4,5,6,7", theme_advanced_more_colors : 1, theme_advanced_row_height : 23, theme_advanced_resize_horizontal : 1, - theme_advanced_resizing_use_cookie : 1 + theme_advanced_resizing_use_cookie : 1, + theme_advanced_font_sizes : "1,2,3,4,5,6,7", + readonly : ed.settings.readonly }, ed.settings); + // Setup default font_size_style_values + if (!s.font_size_style_values) + s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt"; + + if (tinymce.is(s.theme_advanced_font_sizes, 'string')) { + s.font_size_style_values = tinymce.explode(s.font_size_style_values); + s.font_size_classes = tinymce.explode(s.font_size_classes || ''); + + // Parse string value + o = {}; + ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes; + each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) { + var cl; + + if (k == v && v >= 1 && v <= 7) { + k = v + ' (' + t.sizes[v - 1] + 'pt)'; + + if (ed.settings.convert_fonts_to_spans) { + cl = s.font_size_classes[v - 1]; + v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt'); + } + } + + if (/^\s*\./.test(v)) + cl = v.replace(/\./g, ''); + + o[k] = cl ? {'class' : cl} : {fontSize : v}; + }); + + s.theme_advanced_font_sizes = o; + } + if ((v = s.theme_advanced_path_location) && v != 'none') s.theme_advanced_statusbar_location = s.theme_advanced_path_location; @@ -87,7 +122,9 @@ // Init editor ed.onInit.add(function() { ed.onNodeChange.add(t._nodeChanged, t); - ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css")); + + if (ed.settings.content_css !== false) + ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css")); }); ed.onSetProgressState.add(function(ed, b, ti) { @@ -109,10 +146,10 @@ } }); - DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui.css")); + DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css"); if (s.skin_variant) - DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css")); + DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"); }, createControl : function(n, cf) { @@ -156,7 +193,7 @@ return false; }, - _importClasses : function() { + _importClasses : function(e) { var ed = this.editor, c = ed.controlManager.get('styleselect'); if (c.getLength() == 0) { @@ -179,15 +216,22 @@ } }); - each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) { - if (v) - c.add(t.editor.translate(k), v); - }); + if (c) { + each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) { + if (v) + c.add(t.editor.translate(k), v); + }); - c.onPostRender.add(function(ed, n) { - Event.add(n, 'focus', t._importClasses, t); - Event.add(n, 'mousedown', t._importClasses, t); - }); + c.onPostRender.add(function(ed, n) { + if (!c.NativeListBox) { + Event.add(n.id + '_text', 'focus', t._importClasses, t); + Event.add(n.id + '_text', 'mousedown', t._importClasses, t); + Event.add(n.id + '_open', 'focus', t._importClasses, t); + Event.add(n.id + '_open', 'mousedown', t._importClasses, t); + } else + Event.add(n.id, 'focus', t._importClasses, t); + }); + } return c; }, @@ -196,30 +240,41 @@ var c, t = this, ed = t.editor; c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'}); - - each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) { - c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''}); - }); + if (c) { + each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) { + c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''}); + }); + } return c; }, _createFontSizeSelect : function() { - var c, t = this, lo = [ - "1 (8 pt)", - "2 (10 pt)", - "3 (12 pt)", - "4 (14 pt)", - "5 (18 pt)", - "6 (24 pt)", - "7 (36 pt)" - ], fz = [8, 10, 12, 14, 18, 24, 36]; + var t = this, ed = t.editor, c, i = 0, cl = []; - c = t.editor.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', cmd : 'FontSize'}); + c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) { + if (v.fontSize) + ed.execCommand('FontSize', false, v.fontSize); + else { + each(t.settings.theme_advanced_font_sizes, function(v, k) { + if (v['class']) + cl.push(v['class']); + }); - each(explode(t.settings.theme_advanced_font_sizes), function(v) { - c.add(lo[parseInt(v) - 1], v, {'style' : 'font-size:' + fz[v - 1] + 'pt', 'class' : 'mceFontSize' + v}); - }); + ed.editorCommands._applyInlineStyle('span', {'class' : v['class']}, {check_classes : cl}); + } + }}); + + if (c) { + each(t.settings.theme_advanced_font_sizes, function(v, k) { + var fz = v.fontSize; + + if (fz >= 1 && fz <= 7) + fz = t.sizes[parseInt(fz) - 1] + 'pt'; + + c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))}); + }); + } return c; }, @@ -244,10 +299,11 @@ }, t = this; c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'}); - - each(explode(t.settings.theme_advanced_blockformats), function(v) { - c.add(t.editor.translate(fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); - }); + if (c) { + each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) { + c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); + }); + } return c; }, @@ -269,6 +325,9 @@ if (v = s.theme_advanced_text_colors) o.colors = v; + if (s.theme_advanced_default_foreground_color) + o.default_color = s.theme_advanced_default_foreground_color; + o.title = 'advanced.forecolor_desc'; o.cmd = 'ForeColor'; o.scope = this; @@ -295,6 +354,9 @@ if (v = s.theme_advanced_background_colors) o.colors = v; + if (s.theme_advanced_default_background_color) + o.default_color = s.theme_advanced_default_background_color; + o.title = 'advanced.backcolor_desc'; o.cmd = 'HiliteColor'; o.scope = this; @@ -312,7 +374,7 @@ if (!DOM.boxModel) n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'}); - n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', dir : 'ltr', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); + n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); n = tb = DOM.add(n, 'tbody'); switch ((s.theme_advanced_layout_manager || '').toLowerCase()) { @@ -378,7 +440,7 @@ } */ - if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus')) + if (!ed.getParam('accessibility_focus')) Event.add(DOM.add(p, 'a', {href : '#'}, ''), 'focus', function() {tinyMCE.get(ed.id).focus();}); if (s.theme_advanced_toolbar_location == 'external') @@ -427,11 +489,25 @@ DOM.setStyles(e, {width : w, height : h}); }, + destroy : function() { + var id = this.editor.id; + + Event.clear(id + '_resize'); + Event.clear(id + '_path_row'); + Event.clear(id + '_external_close'); + }, + // Internal functions _simpleLayout : function(s, tb, o, p) { var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c; + if (s.readonly) { + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + return ic; + } + // Create toolbar container at top if (lo == 'top') t._addToolbars(tb, o); @@ -504,7 +580,7 @@ each(explode(s.theme_advanced_containers || ''), function(c, i) { var v = s['theme_advanced_container_' + c] || ''; - switch (c.toLowerCase()) { + switch (v.toLowerCase()) { case 'mceeditor': n = DOM.add(tb, 'tr'); n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); @@ -515,7 +591,7 @@ break; default: - a = s['theme_advanced_container_' + c + '_align'].toLowerCase(); + a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase(); a = 'mce' + t._ufirst(a); n = DOM.add(DOM.add(tb, 'tr'), 'td', { @@ -579,7 +655,7 @@ n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a}); - if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus')) + if (!ed.getParam('accessibility_focus')) h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '')); h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '')); @@ -611,10 +687,10 @@ n = DOM.add(tb, 'tr'); n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); - n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' '); + n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' '); DOM.add(n, 'a', {href : '#', accesskey : 'x'}); - if (s.theme_advanced_resizing && !tinymce.isOldWebKit) { + if (s.theme_advanced_resizing) { DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'}); if (s.theme_advanced_resizing_use_cookie) { @@ -625,10 +701,10 @@ return; if (s.theme_advanced_resize_horizontal) - c.style.width = o.cw + 'px'; + c.style.width = Math.max(10, o.cw) + 'px'; - c.style.height = o.ch + 'px'; - DOM.get(ed.id + '_ifr').style.height = (parseInt(o.ch) + t.deltaHeight) + 'px'; + c.style.height = Math.max(10, o.ch) + 'px'; + DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px'; }); } @@ -665,7 +741,7 @@ }; // Start listening - mf = Event.add(document, 'mousemove', function(e) { + mf = Event.add(DOM.doc, 'mousemove', function(e) { var w, h; // Calc delta values @@ -687,12 +763,12 @@ return Event.cancel(e); }); - me = Event.add(document, 'mouseup', function(e) { + me = Event.add(DOM.doc, 'mouseup', function(e) { var ifr; // Stop listening - Event.remove(document, 'mousemove', mf); - Event.remove(document, 'mouseup', me); + Event.remove(DOM.doc, 'mousemove', mf); + Event.remove(DOM.doc, 'mouseup', me); c.style.display = ''; DOM.remove(p); @@ -703,10 +779,10 @@ ifr = DOM.get(ed.id + '_ifr'); if (s.theme_advanced_resize_horizontal) - c.style.width = (r.w + r.dx) + 'px'; + c.style.width = Math.max(10, r.w + r.dx) + 'px'; - c.style.height = (r.h + r.dy) + 'px'; - ifr.style.height = (ifr.clientHeight + r.dy) + 'px'; + c.style.height = Math.max(10, r.h + r.dy) + 'px'; + ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px'; if (s.theme_advanced_resizing_use_cookie) { Cookie.setHash("TinyMCE_" + ed.id + "_size", { @@ -726,7 +802,10 @@ }, _nodeChanged : function(ed, cm, n, co) { - var t = this, p, de = 0, v, c, s = t.settings; + var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn; + + if (s.readonly) + return; tinymce.each(t.stateControls, function(c) { cm.setActive(c, ed.queryCommandState(t.controls[c][1])); @@ -778,11 +857,48 @@ c.select(p.nodeName.toLowerCase()); } - if (c = cm.get('fontselect')) - c.select(ed.queryCommandValue('FontName')); + if (ed.settings.convert_fonts_to_spans) { + ed.dom.getParent(n, function(n) { + if (n.nodeName === 'SPAN') { + if (!cl && n.className) + cl = n.className; - if (c = cm.get('fontsizeselect')) - c.select(ed.queryCommandValue('FontSize')); + if (!fz && n.style.fontSize) + fz = n.style.fontSize; + + if (!fn && n.style.fontFamily) + fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase(); + } + + return false; + }); + + if (c = cm.get('fontselect')) { + c.select(function(v) { + return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn; + }); + } + + if (c = cm.get('fontsizeselect')) { + c.select(function(v) { + if (v.fontSize && v.fontSize === fz) + return true; + + if (v['class'] && v['class'] === cl) + return true; + }); + } + } else { + if (c = cm.get('fontselect')) + c.select(ed.queryCommandValue('FontName')); + + if (c = cm.get('fontsizeselect')) { + v = ed.queryCommandValue('FontSize'); + c.select(function(iv) { + return iv.fontSize == v; + }); + } + } if (s.theme_advanced_path && s.theme_advanced_statusbar_location) { p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'}); @@ -792,13 +908,13 @@ var na = n.nodeName.toLowerCase(), u, pi, ti = ''; // Ignore non element and hidden elements - if (n.nodeType != 1 || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))) + if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))) return; // Fake name if (v = DOM.getAttrib(n, 'mce_name')) na = v; - + // Handle prefix if (tinymce.isIE && n.scopeName !== 'HTML') na = n.scopeName + ':' + na; @@ -879,7 +995,7 @@ pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); if (p.hasChildNodes()) { - p.insertBefore(document.createTextNode(' \u00bb '), p.firstChild); + p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild); p.insertBefore(pi, p.firstChild); } else p.appendChild(pi); @@ -1008,7 +1124,9 @@ var t = this; this._mceColorPicker(0, { + color: t.fgColor, func : function(co) { + t.fgColor = co; t.editor.execCommand('ForeColor', false, co); } }); @@ -1018,7 +1136,9 @@ var t = this; this._mceColorPicker(0, { + color: t.bgColor, func : function(co) { + t.bgColor = co; t.editor.execCommand('HiliteColor', false, co); } }); @@ -1030,4 +1150,4 @@ }); tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme); -}()); \ No newline at end of file +}(tinymce)); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/image.htm b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/image.htm index 6c366469c..7ec1052ba 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/image.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/image.htm @@ -6,7 +6,6 @@ - @@ -20,7 +19,7 @@
- +
@@ -33,11 +32,11 @@ - + - + - + - + - + - +
x
diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif index 687082782a37bb539f33e4c16cd1b243939736cc..ccac36f54d983cc33a0a6e45134e3dabf1820367 100644 GIT binary patch delta 7514 zcmWOAi$BwgAII_UzPo)lvwdBT+|4DFFe-!?atUR0b16+!lCqSVOYOT$vs^NzLdxVe zA|vGz8kKvQbRnuKr=RZYa!R+e-}xIpkH`D-dOY)@KSjxe6gb)-MOsoyiCZ*Ny$DWQ zWPiGxV$V5z$<-%pineb`o@??6SO&yImsW2j#vC|N`Dblqt-f}r^3q|h-ijTT5B@RV zv9t!?tT81y29A?P0e8*WDh?~OqvR6vNv&0HC3QS9^+(w;Voe`gS`jY2kzM&k?Zy^J zrK@^tw-f7%qU#ECs?L_ym3G#Zb=G>(7fGk;E^*xJtD@^`GU}!7-1484tkU``KkH?N zms{K~w?<#So^iRo^m1qC<*p}}n}4G1;08Mtx+l6JNn2yEw4qsrNnth^aM#jM> z(1?{Rl#imx-JAqy$bPsJ{}^IA0|5*JhAztp9jyISFP&AY=i*QatAr%rAHfSkw$nyyJpcGfjYusT( zB>#lM#MgCbDE;Q^`<1wD3M{h_tdU@etTuLLTQq}Mt<-x)yz(OW%By-k0~+R!3t+^; zZInSG}fqO3#!4Ne>?iUnm1;tEvPunhQXbQ7C#XLIr$as|p!MUHMj$^NIoe1|fW zpzhEC<~xlUJNT-sKiN~`?G(J9M%pp$dcbpla-iRZiQdo9YH&i4Xr$CK9HydE@Vh)B zw26Oekgtw_1r43TPdml5nCay>fp~PdYg7P$ zRGP=ym|NrTI*D4cK05AE*4>}cGH4v-A;+hT;5`)ZjS$$6j-IeUEf)_5g?7z*+Q04M zpx)=f@zkNvS;jxfW8}1ZuZ_pPWWm2lWAC>1KnUQ^QuwQgi{&VYwI4*`4T16O9Lkry z_a-brL%I2{2T4pV)Apq>{gFL1*29i{w;ibqJvdK^++B zH6`Jk6%)=>g5}me?14VJ22S5NOB18&!#Lf=hTmFQMi(gK3GhSDEa&eu6v(1LbiA?r zI_N{L6vGKD)Ule5-sC$t1uB__7AnzL1twzajnvhT*{s1Y8F$#?tBx?pSi#@DtUn>S zpIO$gX7vmI^pms(QbPxjG8~!MpFRp`(zQ}AP44sbiy-e-E2h01p_E@a(j_vExG=Dva6A zMJ#r+aN!D^t`h7zs#OWQdoa+OG6~;V1bi=9fA6);Y7aOCeuQrZ+dQ$WRH&lNXJVf!Xq_@PkxG)PoJKi@+>j8)hQ%+tBfu&141#RKpYrWYn@!KBuh8*L%D zju`maDBz;ha8aN%#rQ{PE&Y8KpSn;RRb#mE**9g==2u`n_@;{-ouueN7rw~ud|~hP z0&E<%xd>bRJL`H8_G0yXMig6Uz)B8+cJP8(D!`CI;8PbxAV35{iC~PQ$7h|Rz}*Ub zz7j80j(^>2L6>LO<>8`E5^c7@c8&70;=XZMlhh!8^c~Y7(|pLnzLudoRJbtO6tNk* znbm8MT!Q`zsvf%S?O)tDP)l%S-pW4rK*%wF$ zOrGGVfSVnVtGW{x+CM;@OiYG_n*DLeq{i$(?l$<*he?Xo)O(AzB70ap-RJh_{&f7;68}U!sWwQT_t`M0*vp|vZp--$De*j&@$xprw!M3*b2b| zjG2rmrGt+#KK8q--v}{ z<#C$MULL6*4GxXHxccRr^|No7-tR6SzGLE=jkiP4HjJH*5))1cb%M-ga}+rlgwdP` z1a(DzBbJPzQBBW#gNGD=CP2YH>bB+;Ixz9l6#S8C&|ZmI&ww>Xfo?IX+)%Sy`HCD0 zvo4aiFfh+mnpsNJeg!ZshV^L^n;8=^$V4iDrZHhh7AgB4l?mWTmr%lg!QB0%Ahl|~ zfr>e`{x#;`2cXZt1SgOqV394A*7F>4j^xaD+LXKarj7e~YH1#tUw(^W78z#fob_NNzBcw_hX3SdXWy25ijIH6iQNi~Vn-L# zuab~OD2ic@i6!&PtI+K}M~|D=?|l_srM3=bO-M%itJjrVKjpN`-)yRnGC16kbZxd+ z%ThaU9kqX%RS^8ZVKT8d-ccM85L}U&Y8lxauVtR`jno(oB^xbeGy7C=w<-GO#}~_+ z5x)4^`kJx_?{And1`UXZYQlAi$5N?55gjcyVS570)@#PCynnJ=*p*ZicTg>{m3hrv z?ydORE8X8o`XA@X!#59vl@Zq<6{WX2^Sis;_ouO5+8gz=Jc}1|^Eo;;HK9X=@mW7U z&2C8^)md-ojo&u8S`t=1t<#GifFoo=7=p=easVxYc--Im5wqpkO_3@p{*2ojf;LQL z=GyQG)}UtFJgt|1SY~ePr7z=hR|X_f?NEcPaeoeWsT5eEWmQ}u&~}*w${b-yeZSGc zndZRyi_#`9Blf}_;z|qPlbK~f7IkRx`7G@qPQ2uLRzhc57k~Ygq2EZ z@S73*X&+N&AVQ)s2hQXt714Q`OtEumVuKs@qEI-wJdpT~t=>Bx`|o5TB}9L+a*;6y zW}oE8>bJ|a&0R8H&)>GIQID)DOm)tSR@-@6Juqu!a-Sqjy2g{{=OcW)X_=e*~bEV|xo zE(~z~0c2y77HlpA=$A6f4hTEUH5ojahlufwM%6Ugl@wPL9z73a8#-`zx>xmu>)hbC z8)0)k;`CEI6U1>ZQb)rg3o15T(p^mA7>fH#oPxs>bbj}|7&A&?IEY2d$XTbB?%qAj zGD0N{()7KuR24$|$hAi;y*Pp-34cTOlAYg#(M9)pdWl8U5zWrm))X&miC^|#U&>+! zmtR`2fZumK7Xjd#tJZ6yN~~rzzZ&^&Kl*Lwrk8&fjOq(B-Znel%=~jSEO6H7x%wmz z3AXp)YRn<{M=MUd+>ImWvL~poHr9HiI|lC7??r<&^$L`n3fRU48E|UaxXanSWtHQZp+>JL6n_}UHl8qISDL!XgT0h~f0G_kLcNl_vL@{jMA~;BH^m4FqxK*JS zPbb=vxq7X?Uvi*E_;#nueFtP#Liqe70P|qijrD7&pnb2Ojl~a0+j)+l{<+1T*$f%W z!5wS&1UMb`1?n;W=*wHHm*hGPb9D3l*B0(v%HM%Dk|sI(_EtMw({72)8%?m$5u*;j zstXE^DAAH7U@QvP{&|p>(B}zQk?DEyYL}|rdCFI4&Zue~3w&>zs~?@v!VA1+oS>cU z2D$F$4e&87=6S{8el7%;=EA$li5}4Ot5qisgI}o^iv>2)&5Ei#I!Vn!qHkCKb=>(u zMNoR5^SLQV`+@mBycXVXhT675S+V~J8f$u=#gAJ!Wu9#tg#UM(Ya-A-5EK{areAAf z;|6k4mq&5uYM84=v1bUSdxK0LaYx4LDslhJ_FHds^8C|4#?(gpZF&sfSV{Y6d+n;p z$N!>`=#NlVN>M4!->h6`T5#!+{22i^xZbV6XoiWkGmX=zDvHCo`^LFeA>8%1sb~Xa zuiw|<$Ep(rXx`#?Kkf&X|MQ8i-h7{mB5*~zW$-y$oTke$hKA?=S* z0Y1&ut0mQLs_4mM2-=J}fwr~<4sR5%Kiqfv-(Z$d_dbdNiiAJ|6@lbH>CQ=}?nYaI z9^vhb_S0U6&yaoI3z%}@ zgr0uy0LSeGd^PcoRy#8&)8Px*?RF5}LL~~!cw=8QgF_@4;+*IQmuUBbmlRaUs$>y1 zSAI7;&?8F*j291`QFr`(g7au^$W~|N&{|ZDe&{QAaOZ~8Ym}+yxu;Cn?1KO2rWv@Ro|PMe8#knX>MYJMT{A}FmeJKtE5l|Z#^Y~E z0}Om;k$~t6aO9|!?FC(@#5uD)=0%&GO~Rl%1w(xt zb=T13xhLPGJ>R{vNC{P>bQ|woJ>jE!N~8NDqQkxZN^S8yii<2?+WGPLnYF^5XmQ^& zBd5M|cg=Qvu)LHYf?+2rowOs5d3QZ)d0E)X|KXKsXYYp*9e=9}4*kqdOR`y`)4FO0 zl%7;eh-%ewLhq6Cb(y9iXeq&18uCTJ2|3?XJV__d(6<+#0D!6$x3KG`Av`;myl`%V zWlxDM`6czFL(q+aDF_-|x$S&i>@R%m1UYW6$Sje+Lnq&*z0740<;~bG59e``is4O66X2b=9;*?FQ+c z4RS#=Gus5{D0phHr2b7Mkq8)`|sN#(`*{ zE1%BWL-lMi9CToKE~Yy{6+{M0BxG4G52CR@3sT&(wUnGLjS!65!IJN!04>}EkBbTZ z3zqldF+tQSoy_hMH=lx_-iR2VndQ8YOI3O4pe3Mn<{kE|G2z^@o?WsNW2JrOF;z^5B=W%o=!pA@TM1B)0$)AxAFg1-{fIp*K%WNUMffpKqP__EPqAcqf|Kby zJI~S*R$a;DwFcESzFT%>B1m-Oa)yVvZ`)6*jiqHe62v-Dw1EypP2$tUeaHU$-qOBJ zkyw3&%fI??$_P(y@*XQw8_(6l4-viQ;mx!*`$^CX2E2-gY+fTcTkL5q99EQVq9A&7 zq0MC&{Cuwv05On&o`@kA1O3B*u?q0}Jq8?Ye2QSv{tQv2HphCl-Ia~rExQeEIz_lE zC3Y*;Z)BhrD|#~&7%T&Ip)r%CK(FlJ1f4bv;`y>WESQQ)h>Kr1zK;%&Cc{Zm?3PFY zOL>Q*^xO3nWXr&6J{JzYpI~*r*6+C9yjPIaJ(+eqX-4$!&GCI*7?VznnFwb_Y!WK@ zu~Rr#PU0<_M1V|3t5-x0@L6aQ%h9eKb#NY~C*~(e0;2&vngaNpfih441`B@~6cdnT zU4}3c0)yuB;NnP6!5U&>)F4OXDWuDw+`$tKgC+WC8#e(FF>wZvk*XY@p8~$E)q{=e z9+5^K=dJsknR`;!{Os~je$d^A$#=JKs)PT%y0`)&Mh52)+_W$Tk2cJ1Qc@pbX`3-o z!8I`X?G62c@VfV3puJ12!SP`IB_nMjjOoH7n}yA$vQ15`kCy++y%q_8?2-1O<-f0n zME8wUDnjlV$^Cwf{8#+IZ@jIdl*6p`J6}l81pVUyd?;6!nmw?F_}_Vj)tu3~y3u?I z29gNWLOKSNW9uc6xjP{zIX3@z`~E+hH{L++Q{W=ctUHrmZ1#0s0;K6J0bXqED`Da> zgA<1Hd|L@fRUvud?r%3D4n}{yZ#}Q4@}-f+RJvo3+nA01n3L6ISzov3JcxyHKN19N zC4WfzAM^rvC?-nD8LN`;do9*bR4Bct(AAX+^rjfmMu{ z>m|~MtJWaFd*9!~R~mu|uehu~n^W)1#>%W0_=0O&fko-U9|w8unA((K??(C6Guxtg zN5P{sbboTF2Q-_XPq{Q<-qDwbZZU;66DJ+u4&%>q&S zloujGWc3MElPFgyH?0vh_b`Vj!^Y5Gs4Zfu6sWd!F|Ls@*2z1~*gFR}r}$UsW-k|( zeQo~xvi$ED;op4b-+k48H^8sj7Qf10KnxcUY&11e(p@PR>=SWKAiQtaE{bZaxygOt z4}uH2Vx{@Np)_tlqJXl1Ozza3dMYw(!K5T0iIe=4nQej8i*;KO91D#}6u8+wqccVJ z$OOwY@$V;KmE>7gC};kiKhet8)3#l3pn*XS`dj^Z-5_qQ;CSoCkkz7Z4&{KP>tE*)VkF&rM<3;wNe~ZmfleZt80p(+%MW1Q=B&@jyck^1;A%|H z4=edKcf_2MIrRE_$(4JM3ajA~`TLo}%hb=$noay%JBxe8QNFKuKzyk;TGkU#XRVvmT_>@=`QYU6*^9}VZSTmniw6dCWwrGx z&5PLC`s+zTxz}s|oYLPcxG9)AKx{Jpd}R_!Re*J~)*JSx#=!hj*Y_oza{Jj{+= zHkNA78A$!+{8@hevuF>`Y!E|~AfXFf^~)-f)&eqdG4=7WeN_CxRpkfWT}!9xR|yw@ zr_zI7uBAx}$ijz%?lljBk3v4>CpHHi^56b-&CN}Y@!roYEy6KvgZDoXj_o|Zw9P4LTl6_;kp*c{U+lN;?|o+&|T)-dessuK(-sLGL4n!j7bEKXN$b$f`i#fVcK`w#SjCBbhgkWQ`p; z`uuxb6E{}${ip4bV`glgBb)Ed7KAOlQDKo7A@32&$#k2qsfeo zk!K4zNVYoTs&{58AhW~lFgt~vW&5jREVKK0W{>wFj#*~o$IM={ rtUkxz`+cZ@FooUan$@3@HNeRlEXW!v&l+yZ8o8M@ivNiKfXDvoai*&7VazGZwsOsqORMac)SNx18m>Kg zSsOmCy|So8)s|Cz+R@Gb871bKG{^7@U;~6Q7B26_haP!f`M0+6iq4WYYGpi6Yt>$} zCqGP>+11!a!ZT4CVuW}fSWj}h%wcV=?7Os*r^a7jWAf$FfpazHCRJqRNbu3$=d%x0 zcRSWrsMX$nSNYA6Eud*+Sg8x1*ZxE=5r$Nkgj}s2QrF}hyLz?lYW?%8*7&Oz@pZ=b zS1GesZzR=8&egTG)wQ>sa-nJqpVxJ-ukQ`1?@Ov5I9ET^R)7C_{lkTNnclTWA+W0$ zG1i7~rCfV{by=hA+DkoxzXCIHRV|o{u;ij|Jwr!wtx_wm&#k|%NP?XxC=WTfpNz=i zA{|-i16>@9wG3kc8(7FN)=~_v5Q54eHWigj#Z*%8+AwNKoq9LDQS*bilHBMfN=8uu z^hl%ehejmWgmP;#vu;}d8VLcFkQB5y27iN_9rT-70QR(!jw84=n8Io$t57Ctgb!a) z1oCwf4-93s(2`s5ZiE%G7C&DCE}TOQj3Pd!kUrAU!J%lHxE0$4V(mi=)Nmv*Iz`?@ zf&q0Yc!q^rkixZGSIvOyGh7wRg6okitB*-HE99bl1uD%6ROhO3KVS~a(7OPw4Rata()J$s@6R10MH5=B`7@<)&|zww&Fl3oL>{Okve{0>9p!?M8^M7^>=)tI)ZFDLf&v>z0emZg$tz6ZzvUY1|p=Aj)cUpRslLolohRj z;z9v*p%|ZoJ=ES8H3#b{5T6x&dO&g~z28U#>d}cPdVeQ;2Vqa(8VodxE)id2dRRA8 z_YDY@i*QOba*Z6L*`=p01$tNmkyQ9j*`PA959efA?re!J9K6H1J&1Bs!Psb@%7OQ@ za6bpt&)vIKPH4OIN3GLDt+gIz=3oe>4HJJZY`KE$QTNMoWRsh zU;rl|rr;W;P)ztBUZ`kv6K~i@g_0HS%S)hGI4PaUjfO^gsfoLdy@<-mqw zWC~T1BIY1TUsby$qqQr6N3Q^ zPs~V{%ik{72Y`9Ios)De(G5pD+EPsA;B*)gd*>bo85wAcJjLx<9|k)UdtD7kPpN?C zW_TtH_Nnj1c|tBFzyZU%7ROZ8$-plz5GMtB*6=h1k8{Il%MUh0J&1}145gTr49JBJ zY+>~cC65d9u;+8d(YaW^KL``RYvn+H!ukH>u>Q0~)s*&Uf_6AFWq@-cY%o$TIzBf* zlmQwh78kGGES>8y6OHZ_jiwes!d(*>mM_vCbN$+=kUW8|K*t<2Ii4Pj4Zs|A*GACm zoEq<0zPTs0x!*gdhNqG;&}xr&y=eGgq@_TW=|h&vqnLv*I))0`!7sG!@fFR;)uJ0` zSgL1O@SLnE>h=u|@(U(D6}Fb%4=O+!7ql&2YeR|=*l=)?F5gbhbHbkus=-fg2AqW_Mv<25%PAl{V|`JfWk4ch13dC**~u=%MhrPnR`t6+ZyR(H2B0g z8s}m_8iBiwqf`A02orSD4rPIgQvo4XfvUL%hceJMbKP1yVTZ6DJ$Tdsz?|i%VAe&$ zj~T=b^`j$FJe`Zu|EIcfatn>9=D$dM`Ac;(@k2QiCIN(Bim}gmKvd52)nu%uLjMC2 ze^M0EEW=~L+n-Ese^LWe;qg>}Fw-`k_hNjIF@7TkK*(AUVkj=UKQV=P=0!iI@!4?$ z%!O-k5%D>?@l)krxcUXhF01T0Vg!g3-K>y3?@&Ca8ca}~C!jxr7gIhiJpAmsNbKAK z<0&Ta69s8SC@U1M58LJnc22x_@yhV!)UKCCZnzr^LQ)58r218oEB-8dkqJWwWl#VW zOe;V_jF(!<5yXrw{54h85g=SMay?|7xz`eYN5P+D!9yt=L~WF|_p4V|ogQGmpeS<8 zf=E@Bsxr+0FN+}60{N{Dd6XFQl0j{3H&Om*HP z;$?s0r4m~i!cUGugWW_KL03^XA|s@`bfW@h-m}nN3eqbn)<}*aiAgvfNK?k3eLB!v zY_b0zEX)@~zw|v3fni9=dgAw-6~JsC7ghBT@6MX7Eq@(h3;(_dn*p%kVV?X)tbpo; zR@z3e8@gN##i+^KRSjJmg2gI^dOfmzR`d`Rx8QjkPCK8dey#WMBWjk*O5zXR5A*-J zy*uLKXMbGZA&7A^Gxxpa5a3(I#&j?i-n?~HZHrS=h$_bI5rJ1;e&>vi?$8mpm7h#q zAI>ks>RRaX){gg)|L=jD6ioJomMf38lUG!|jcGjZe7*=|0B^~qm~zXlCWRV@GY z^G6Oe(tI$T;NdtI(1ld5@XAkCen|;TA>T$ka4aj`XyChv;HDIz{5uUZZfArVxrR4C2lRl%SQdiWOPcJ?I zQPB&z%1LGN%4}iL6>Goqr4CEIPyYM&A@+`D;EN23b30r<6J22s1u#hN zRNyriNu+RvWS!Ci6U~3i12UFqy9b=OQceaz#0|D-DZ^BBgp;H19md4!x4lUR^>u>x z39?=;;S$XYw~F}qz9nvaT_4NvbdvNpf_Jk#_vnySL&}E}SmPF6)}DI08NyHruDp-! zv-x&^RcrAnAL~YQUq8DKRRmBq#rKVW!fY)Fs+3=y?nV&Q}-MG|>)X zF*@>|yv7@%h@7xf5ANcvEem@{2V;}m)ODrw?K?Ly!JgXU=k}NrftBH2P>hJm_sS1k zrRJFKoLEhvId78h%HTe}gbp=e40Qawg%;(G_x>y0UoLI6kMogZ z%9A^JJu1gHM_<{kmm{}dZYm01aUt2L;@v?FrO|HFmR3%P-|r8NM-P9x zHB(*3`P4S2^R>5yGxksKlsA+A0kNoq3!Hbzz;4Gu|AB|rP{S@d6Tn`1RBzv_$b{3~$F#EtKBt)OQ5 z?F=fWEJjlG4)$4k6>c$qa?d@s9bE7*ZG!9{aBj*vBKu-cHQ{}Xc|}*2-VKJ=eDS>E zDo=%PSgrAP+p_d6gb-FBf8E-d>N4l~Qm%?&_V<~=pToj8In=ieu1gWH+-*!pz4^W; ze=SO81{yHHvzIX_D@EGe)T2Ld-nssWKtO;_AV#meix5xAFbp9J%(A;wYQ7F!-Kt44m=Pe) z%y?ZBu)wg7WJ1P#rhdH0CVbn}vQRF#^ge`KJ0l_-E%4B0h|(`7Mua%jjI}oX;K#hE z!oLd4l?+_Yb0vfD^?;|rD(=Ei4x6tH(*P5=mL}I3(K1ZLTdLTXb}ddp*Wg}hU?3&; zwFrlw*oeaXYWMRbBQ|w;SOortj2)(N+P8yk8I6#E6tUmfx^Ek#D7nt0mUhqWw~v3e zIzDmB{<*K&q-bjW*s5=59iz?-r}dd2m77UBYParRYbGCpJWWe9u5#Xz;(xBB8E|!; zf2WP=e0hj1bu0hY`#eaiqGwd*Wso%*7iQd@?Q#Asq{;|gp3cA5-0qn=JHx+BTK`v6Y*MqDc}==p%Ty&(5`H97nm$Fw z;+?DhsL?==XX3TLqr=`^r^rmy=XtN5@zW8qN5Cv&9Dpu+TN~som3wT70F|+(UPW`{1{k(ezw77^k7)+Gf zL>6#S)dg~Qo!}5`b$si!UC_bWxXi)rYg*3zHHnDT&lvusB@n-%9?AOys-#His*DO? z{I$Ecn@`{`>n>dZ4Z8(L)v++J1{ zTwCXDHe4Y*sBkyHQF?4OUgN@~-Ig> zM^#8QcJJ~dmvy!u_V9>M?t*-R&OI`Hd|7vg8b^0$X5{I;MpHU%vI>X6rqv}!9;{9y z1#$=74`52yMXy&&A3picB!1`=bgcT=g%i?g&UC%DQ0|McDbnp`Wgb#x3AE0`{(k1? z)DP5L+2H!le#OcvGTLNta@q6X$K*JZq64&9s|D2?uZPZ7zMb$19fCE3wvPT4a3hzE z9BSeSyOyCcxL0OPKV-mtW5bn~{kYxfPI6t-NQ%_R9lS;6x?ky`O+E+=Ed9nt#eFl$ z3DiESV&S}c>B3or`gX>)*p;Ae@P47nmKH!2A%Ag$c=<*Tv3k{Im+%HOXm5hrOJ8N!=IiNelrj>Sh*w^6u1A(xVGvEA29%3ej-Q}zADMc$JP8y}H<-iz=`z5ZJT>q2s* z4s2ff4<>Qn=1P2-xBI(77HMgOWc5-6+Hy(Z60iGply)iF>=hauE1E8WbsWuLvu5`P{*7IeQ}ZqL8)H~-**hoIaI zrDB4C$e6u4Jhx*A504hc&K4}wrj6TjQ;sGqV$&9|97GL$qJ`tNSI9@yXqmKUXd2{oXBey=CINbc4HrPwtl0fOCb|%G-R9BXVktTK~4~N)WRzNGb?nWEqOvGJ*x9 zf%PkxfVB`f@Z~x*-xl%xR@8TXlarGt3t=zCSV%K>b8j!(tGOefjVVD{WoK$gE_K|? zFdPR}0j;jbnHU9N@8E20NwKD2k1=?wliE3@W+a-{rUF642oNG}FQ)R9kuv9Y&hr5~ zV8hZGd(A`wJy`g7pD>-0u3D$ z@w;7s-1q3azgx-QvG?*hdxW9d&~Eb3Mas~}C`_&BS{X#HzwcA`UD!;^LC-riq~u+1 zCy3h#5EXBrlF<(1uKCmH+_O%-73-|cJm+XmOog(Q0UZri%RiQeHk`Y4C+t_&Hq1V0zk`i zOD1GV|FAhzLQDmmQn^6bcx$7Ch~6)sO>~# zB_V2`@EALLnTV^-x?nIM%pCxqt^@H*M7|>$RgjTN$F82kk}cEMgk@~wf{D!qDvdX7 znBedGH&?l-9d}b}lc(#4qd60NTR9Sxr=QzYq{8F|Ds;o?T=qDxjpa#eL1Am$^8o}3 z5>S~aj!G$4HUt^c3#IVxcQ}`G; zu!@?_3xn25|8H^l`jjjq2Dpxf$*e-hfJhQctX%+-3V6|lyfW#)gE|nDpiE%C9i1;j z4mQ%y6fS0+3WHRg>`zAwsL4u~1$df~0{}ct$=R|X$e5{m#UVa?-RnD*f|#Cm zy*qGXX_-sscSx?`_r_*y-|@|D3VhUtWlg1AvYJ{9sif8Ue9SKHVNJD0XTm4eoiiuS zo{c0e_*z7NEs$(oVpwr!w-99{d1@iqVZ_{i;|Y#7zw!Yk7fl9wJU4r#OZyg^`ctw8 ziaSWC)%U(bK0Q(nm%~@y`klo=v@RQIvCvtKp>%1`z@wB0jgp#Nhi9V^`eU1MK3u>@ z0eO;vFm_H!>ds6U8CLqND2SLG)9EC`#FUOr8-$2&b>%z># ziva=)=s1nWEhVg%+W373jOROx=R;LK%DOhJ8{O;me_?u5C*7ZpvZYh+E(QCJhYg$# z8@f#BAx-xF7bf+Z{9FebNKd+M;!}SEs*rc4RIsi9aqnnf&;USYp|!< z!#O;8PI-X%7?;O?@nYA?ZT<0ahzl(5Ou8n9##^h&XEioB?H4+0%7TUHH1q4!c|;Nw ziP(jp5W|tc-9vySfU=~F9^Z6k>*@~A z0c<{V8?DJQ`1H0+5o#kB;mrgAE`n1QljqOO*lBsfZ$1CQ=!tUDjfSH!VI#v{N2R$=R{yny=Iox2`Q`{33j80}aEq#>&ikw~E z#(b*6d&<7x+cvjDW$bB6$BwjJ(9(@m8hjs3J#{dcYC*l9c zYV6}lQDiLRBL#uWRoR)^nc0t&EuIm<2;t!GvOz9qVjl7B}9o+I%~r4_(d-&tcc@WQ@{_DtFBjVcE=WraDsK6Fx6N{;AO(AGXfV1%= z7fPsZt*%Sy{->BSjBMyy`-!*lpGMAoLcg)CYyTAWFKcFOsBQdHeF|RcW;bPJ7d&ve zk%j*57yDylY#SHLNsFC7@S>Q-cddzymc%X|4tm#W`lso!21_s-lXs|eW~0s%&NyPt zUNi4qERMI=n=(;`UKP5DmT}BvRE9)R=Qr8OcDB)ZTl3x{9_Ee)>EE{`s&KMVTyAd2 zr^mZzr@}tMKVw?r##l#>j6Mu;&}wdEeX6e^G`yWfvr%{WQ^q%WWaF<_#}1qNMYSG) z=A&G1mV9}2-FNv#f>py&>x0ly8NW60%I<$hLpd zCd1#x``9{V*0OotW)XlN5Ev``p29p;`9}xi!*5Eyu3Hi3;Tk8W*;Vfos)|%RIp2$G zGgT=p+MemH+eS~i4NM2 zrf(;f-Ap|9DzW@?;zebmNHwX#IO)=gq)KeU&VmdMZJ}yUQgy;Yb?idr#iXkZNp*LU z>W7oAy-K?Nc_F4hQ9S&6`dd=disWY3KNb1&+}(e&y_0Wpk|p_nvb=#5;5QadyfvKM z@hZ7<$FI{C^Ch2?yNpx1S1cYfc48OwW82rJ^u?z1a~6H_*|%ep2O3iD-ATFcubY4K h&)wmaVP%R;HFd-|_0fvd$F8YQ{8L9SE^q3?R!@G1ZR diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js index 9081e1ddc..5cee9ed86 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js @@ -7,7 +7,7 @@ function init() { ed = tinyMCEPopup.editor; // Give FF some time - window.setTimeout('insertHelpIFrame();', 10); + window.setTimeout(insertHelpIFrame, 10); tcont = document.getElementById('plugintablecontainer'); document.getElementById('plugins_tab').style.display = 'none'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js index f349b2219..b5efd1ec9 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js @@ -8,8 +8,10 @@ var AnchorDialog = { elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG'); v = ed.dom.getAttrib(elm, 'name'); - if (v) + if (v) { + this.action = 'update'; f.anchorName.value = v; + } f.insert.value = ed.getLang(elm ? 'update' : 'insert'); }, @@ -18,7 +20,9 @@ var AnchorDialog = { var ed = this.editor; tinyMCEPopup.restoreSelection(); - ed.selection.collapse(1); + + if (this.action != 'update') + ed.selection.collapse(1); // Webkit acts weird if empty inline element is inserted so we need to use a image instead if (tinymce.isWebKit) diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js index f6871437a..fd9700f22 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js @@ -2,7 +2,7 @@ tinyMCEPopup.requireLangPack(); var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false; -var colors = new Array( +var colors = [ "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", @@ -30,7 +30,7 @@ var colors = new Array( "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" -); +]; var named = { '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', @@ -230,7 +230,7 @@ function updateLight(r, g, b) { color = finalR + finalG + finalB; - document.getElementById('gs' + i).style.backgroundColor = '#'+color; + setCol('gs' + i, '#'+color); } } @@ -238,8 +238,16 @@ function changeFinalColor(color) { if (color.indexOf('#') == -1) color = convertRGBToHex(color); - document.getElementById('preview').style.backgroundColor = color; + setCol('preview', color); document.getElementById('color').value = color; } +function setCol(e, c) { + try { + document.getElementById(e).style.backgroundColor = c; + } catch (ex) { + // Ignore IE warning + } +} + tinyMCEPopup.onInit.add(init); diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js index 038ace79f..4982ce0c8 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js @@ -88,7 +88,7 @@ var ImageDialog = { if (el && el.nodeName == 'IMG') { ed.dom.setAttribs(el, args); } else { - ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); + ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); ed.dom.setAttribs('__mce_tmp', args); ed.dom.setAttrib('__mce_tmp', 'id', ''); ed.undoManager.add(); diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js index 3f684a1c7..f67a5bc82 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js @@ -34,10 +34,10 @@ var LinkDialog = { var f = document.forms[0], ed = tinyMCEPopup.editor, e, b; tinyMCEPopup.restoreSelection(); + e = ed.dom.getParent(ed.selection.getNode(), 'A'); // Remove element if there is no href if (!f.href.value) { - e = ed.dom.getParent(ed.selection.getNode(), 'A'); if (e) { tinyMCEPopup.execCommand("mceBeginUndoLevel"); b = ed.selection.getBookmark(); @@ -49,13 +49,43 @@ var LinkDialog = { } } - ed.execCommand('mceInsertLink', false, { - href : f.href.value, - title : f.linktitle.value, - target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null, - 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null - }); + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + // Create new anchor elements + if (e == null) { + ed.getDoc().execCommand("unlink", false, null); + tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1}); + + tinymce.each(ed.dom.select("a"), function(n) { + if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { + e = n; + + ed.dom.setAttribs(e, { + href : f.href.value, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + }); + } else { + ed.dom.setAttribs(e, { + href : f.href.value, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + + // Don't move caret if selection was image + if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') { + ed.focus(); + ed.selection.select(e); + ed.selection.collapse(0); + tinyMCEPopup.storeSelection(); + } + + tinyMCEPopup.execCommand("mceEndUndoLevel"); tinyMCEPopup.close(); }, @@ -63,7 +93,7 @@ var LinkDialog = { if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email'))) n.value = 'mailto:' + n.value; - if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) + if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) n.value = 'http://' + n.value; }, @@ -116,7 +146,7 @@ var LinkDialog = { if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) { tinymce.each(v.split(','), function(v) { v = v.split('='); - html += ''; + lst.options[lst.options.length] = new Option(v[0], v[1]); }); } } diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js index af2231cad..279328614 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js @@ -2,7 +2,7 @@ tinyMCEPopup.requireLangPack(); tinyMCEPopup.onInit.add(onLoadInit); function saveContent() { - tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value); + tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); tinyMCEPopup.close(); } @@ -13,7 +13,7 @@ function onLoadInit() { if (tinymce.isGecko) document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); - document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent(); + document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { setWrap('soft'); diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/link.htm b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/link.htm index 286cc9247..a78bd334d 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/link.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/link.htm @@ -7,7 +7,6 @@ - @@ -22,7 +21,7 @@ - + '; @@ -5434,6 +8036,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { } Event.add(t.id + '_open', 'click', t.showMenu, t); + Event.add(t.id + '_open', 'focus', function() {t._focused = 1;}); + Event.add(t.id + '_open', 'blur', function() {t._focused = 0;}); // Old IE doesn't have hover on all elements if (tinymce.isIE6 || !DOM.boxModel) { @@ -5447,14 +8051,17 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { DOM.removeClass(t.id, 'mceSplitButtonHover'); }); } + }, + + destroy : function() { + this.parent(); + + Event.clear(this.id + '_action'); + Event.clear(this.id + '_open'); } - - }); -})(); - -/* file:jscripts/tiny_mce/classes/ui/ColorSplitButton.js */ - -(function() { + }); +})(tinymce); +(function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each; tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', { @@ -5469,11 +8076,15 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { default_color : '#888888' }, t.settings); + t.onShowMenu = new tinymce.util.Dispatcher(t); + + t.onHideMenu = new tinymce.util.Dispatcher(t); + t.value = s.default_color; }, showMenu : function() { - var t = this, r, p, e; + var t = this, r, p, e, p2; if (t.isDisabled()) return; @@ -5483,6 +8094,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { t.isMenuRendered = true; } + if (t.isMenuVisible) + return t.hideMenu(); + e = DOM.get(t.id); DOM.show(t.id + '_menu'); DOM.addClass(e, 'mceSplitButtonSelected'); @@ -5490,27 +8104,48 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { DOM.setStyles(t.id + '_menu', { left : p2.x, top : p2.y + e.clientHeight, - zIndex : 150 + zIndex : 200000 }); e = 0; - Event.add(document, 'mousedown', t.hideMenu, t); + Event.add(DOM.doc, 'mousedown', t.hideMenu, t); + t.onShowMenu.dispatch(t); + + if (t._focused) { + t._keyHandler = Event.add(t.id + '_menu', 'keydown', function(e) { + if (e.keyCode == 27) + t.hideMenu(); + }); + + DOM.select('a', t.id + '_menu')[0].focus(); // Select first link + } + + t.isMenuVisible = 1; }, hideMenu : function(e) { var t = this; - if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceSplitButtonMenu');})) { + // Prevent double toogles by canceling the mouse click event to the button + if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';})) + return; + + if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) { DOM.removeClass(t.id, 'mceSplitButtonSelected'); - Event.remove(document, 'mousedown', t.hideMenu, t); + Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); + Event.remove(t.id + '_menu', 'keydown', t._keyHandler); DOM.hide(t.id + '_menu'); } + + t.onHideMenu.dispatch(t); + + t.isMenuVisible = 0; }, renderMenu : function() { var t = this, m, i = 0, s = t.settings, n, tb, tr, w; - w = DOM.add(s.menu_container, 'div', {id : t.id + '_menu', dir : 'ltr', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'}); + w = DOM.add(s.menu_container, 'div', {id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'}); m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'}); DOM.add(m, 'span', {'class' : 'mceMenuLine'}); @@ -5533,18 +8168,15 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { href : 'javascript:;', style : { backgroundColor : '#' + c - } - }); - - Event.add(n, 'mousedown', function() { - t.setColor('#' + c); + }, + mce_color : '#' + c }); }); if (s.more_colors_func) { n = DOM.add(tb, 'tr'); n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'}); - n = DOM.add(n, 'a', {href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title); + n = DOM.add(n, 'a', {id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title); Event.add(n, 'click', function(e) { s.more_colors_func.call(s.more_colors_scope || this); @@ -5554,34 +8186,47 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { DOM.addClass(m, 'mceColorSplitMenu'); + Event.add(t.id + '_menu', 'click', function(e) { + var c; + + e = e.target; + + if (e.nodeName == 'A' && (c = e.getAttribute('mce_color'))) + t.setColor(c); + + return Event.cancel(e); // Prevent IE auto save warning + }); + return w; }, setColor : function(c) { - var t = this, p, s = this.settings, co = s.menu_container, po, cp, id = t.id + '_preview'; + var t = this; - if (!(p = DOM.get(id))) { - DOM.setStyle(t.id + '_action', 'position', 'relative'); - p = DOM.add(t.id + '_action', 'div', {id : id, 'class' : 'mceColorPreview'}); - } - - p.style.backgroundColor = c; + DOM.setStyle(t.id + '_preview', 'backgroundColor', c); t.value = c; t.hideMenu(); - s.onselect(c); + t.settings.onselect(c); + }, + + postRender : function() { + var t = this, id = t.id; + + t.parent(); + DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'}); + DOM.setStyle(t.id + '_preview', 'backgroundColor', t.value); }, destroy : function() { this.parent(); + + Event.clear(this.id + '_menu'); + Event.clear(this.id + '_more'); DOM.remove(this.id + '_menu'); } - - }); -})(); - -/* file:jscripts/tiny_mce/classes/ui/Toolbar.js */ - + }); +})(tinymce); tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { renderHTML : function() { var t = this, h = '', c, co, dom = tinymce.DOM, s = t.settings, i, pr, nx, cl; @@ -5643,18 +8288,15 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || ''}, '' + h + ''); } - - }); - -/* file:jscripts/tiny_mce/classes/AddOnManager.js */ - -(function() { +}); +(function(tinymce) { var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each; tinymce.create('tinymce.AddOnManager', { items : [], urls : {}, lookup : {}, + onAdd : new Dispatcher(this), get : function(n) { @@ -5662,18 +8304,15 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, requireLangPack : function(n) { - var u, s; + var u, s = tinymce.EditorManager.settings; - if (tinymce.EditorManager.settings) { - u = this.urls[n] + '/langs/' + tinymce.EditorManager.settings.language + '.js'; - s = tinymce.EditorManager.settings; + if (s && s.language) { + u = this.urls[n] + '/langs/' + s.language + '.js'; - if (s) { - if (!tinymce.dom.Event.domLoaded && !s.strict_mode) - tinymce.ScriptLoader.load(u); - else - tinymce.ScriptLoader.add(u); - } + if (!tinymce.dom.Event.domLoaded && !s.strict_mode) + tinymce.ScriptLoader.load(u); + else + tinymce.ScriptLoader.add(u); } }, @@ -5686,32 +8325,59 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, load : function(n, u, cb, s) { + var t = this; + + if (t.urls[n]) + return; + if (u.indexOf('/') != 0 && u.indexOf('://') == -1) u = tinymce.baseURL + '/' + u; - this.urls[n] = u.substring(0, u.lastIndexOf('/')); + t.urls[n] = u.substring(0, u.lastIndexOf('/')); tinymce.ScriptLoader.add(u, cb, s); } - - }); + }); // Create plugin and theme managers tinymce.PluginManager = new tinymce.AddOnManager(); tinymce.ThemeManager = new tinymce.AddOnManager(); -}()); -/* file:jscripts/tiny_mce/classes/EditorManager.js */ +}(tinymce)); -(function() { +(function(tinymce) { // Shorten names var each = tinymce.each, extend = tinymce.extend, DOM = tinymce.DOM, Event = tinymce.dom.Event, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, explode = tinymce.explode; tinymce.create('static tinymce.EditorManager', { editors : {}, + i18n : {}, + activeEditor : null, + preInit : function() { + var t = this, lo = window.location; + + // Setup some URLs where the editor API is located and where the document is + tinymce.documentBaseURL = lo.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); + if (!/[\/\\]$/.test(tinymce.documentBaseURL)) + tinymce.documentBaseURL += '/'; + + tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL); + tinymce.EditorManager.baseURI = new tinymce.util.URI(tinymce.baseURL); + + // Add before unload listener + // This was required since IE was leaking memory if you added and removed beforeunload listeners + // with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event + t.onBeforeUnload = new tinymce.util.Dispatcher(t); + + // Must be on window or IE will leak if the editor is placed in frame or iframe + Event.add(window, 'beforeunload', function(e) { + t.onBeforeUnload.dispatch(t, e); + }); + }, + init : function(s) { - var t = this, pl, sl = tinymce.ScriptLoader, c; + var t = this, pl, sl = tinymce.ScriptLoader, c, e, el = [], ed; function execCallback(se, n, s) { var f = se[n]; @@ -5750,10 +8416,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (s.plugins) { pl = explode(s.plugins); - // Load compat2x first - if (tinymce.inArray(pl, 'compat2x') != -1) - PluginManager.load('compat2x', 'plugins/compat2x/editor_plugin' + tinymce.suffix + '.js'); - // Load rest if plugins each(pl, function(v) { if (v && v.charAt(0) != '-' && !PluginManager.urls[v]) { @@ -5817,9 +8479,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if(l.length > 0) { each(explode(l), function(v) { - if (DOM.get(v)) - new tinymce.Editor(v, s).render(1); - else { + if (DOM.get(v)) { + ed = new tinymce.Editor(v, s); + el.push(ed); + ed.render(1); + } else { c = 0; each(document.forms, function(f) { @@ -5827,7 +8491,10 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (e.name === v) { v = 'mce_editor_' + c; DOM.setAttrib(e, 'id', v); - new tinymce.Editor(v, s).render(1); + + ed = new tinymce.Editor(v, s); + el.push(ed); + ed.render(1); } }); }); @@ -5839,15 +8506,27 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { case "textareas": case "specific_textareas": function hasClass(n, c) { - return new RegExp('\\b' + c + '\\b', 'g').test(n.className); + return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c); }; each(DOM.select('textarea'), function(v) { if (s.editor_deselector && hasClass(v, s.editor_deselector)) return; - if (!s.editor_selector || hasClass(v, s.editor_selector)) - new tinymce.Editor(v.id = (v.id || v.name || (v.id = DOM.uniqueId())), s).render(1); + if (!s.editor_selector || hasClass(v, s.editor_selector)) { + // Can we use the name + e = DOM.get(v.name); + if (!v.id && !e) + v.id = v.name; + + // Generate unique name if missing or already exists + if (!v.id || t.get(v.id)) + v.id = DOM.uniqueId(); + + ed = new tinymce.Editor(v.id, s); + el.push(ed); + ed.render(1); + } }); break; } @@ -5856,7 +8535,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (s.oninit) { l = co = 0; - each (t.editors, function(ed) { + each (el, function(ed) { co++; if (!ed.initialized) { @@ -5905,19 +8584,21 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Select another editor since the active one was removed if (t.activeEditor == e) { + t._setActive(null); + each(t.editors, function(e) { t._setActive(e); return false; // Break }); } - e._destroy(); + e.destroy(); return e; }, execCommand : function(c, u, v) { - var t = this, ed = t.get(v); + var t = this, ed = t.get(v), w; // Manager commands switch (c) { @@ -5927,16 +8608,44 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { case "mceAddEditor": case "mceAddControl": - new tinymce.Editor(v, t.settings).render(); + if (!t.get(v)) + new tinymce.Editor(v, t.settings).render(); + return true; case "mceAddFrameControl": - // TODO: Implement this + w = v.window; + + // Add tinyMCE global instance and tinymce namespace to specified window + w.tinyMCE = tinyMCE; + w.tinymce = tinymce; + + tinymce.DOM.doc = w.document; + tinymce.DOM.win = w; + + ed = new tinymce.Editor(v.element_id, v); + ed.render(); + + // Fix IE memory leaks + if (tinymce.isIE) { + function clr() { + ed.destroy(); + w.detachEvent('onunload', clr); + w = w.tinyMCE = w.tinymce = null; // IE leak + }; + + w.attachEvent('onunload', clr); + } + + v.page_window = null; + return true; case "mceRemoveEditor": case "mceRemoveControl": - ed.remove(); + if (ed) + ed.remove(); + return true; case 'mceToggleEditor': @@ -6001,27 +8710,13 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { _setActive : function(e) { this.selectedInstance = this.activeEditor = e; } + }); - }); + tinymce.EditorManager.preInit(); +})(tinymce); - // Setup some URLs where the editor API is located and where the document is - tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); - if (!/[\/\\]$/.test(tinymce.documentBaseURL)) - tinymce.documentBaseURL += '/'; - - tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL); - tinymce.EditorManager.baseURI = new tinymce.util.URI(tinymce.baseURL); - - if (tinymce.EditorManager.baseURI.host != window.location.hostname && window.location.hostname) - document.domain = tinymce.relaxedDomain = window.location.hostname.replace(/.*\.(.+\..+)$/, '$1'); -})(); - -// Short for editor manager window.tinyMCE is needed when TinyMCE gets loaded though a XHR call var tinyMCE = window.tinyMCE = tinymce.EditorManager; - -/* file:jscripts/tiny_mce/classes/Editor.js */ - -(function() { +(function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, Dispatcher = tinymce.util.Dispatcher; var each = tinymce.each, isGecko = tinymce.isGecko, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit; var is = tinymce.is, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, EditorManager = tinymce.EditorManager; @@ -6032,53 +8727,90 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; var t = this; t.id = t.editorId = id; + t.execCommands = {}; t.queryStateCommands = {}; t.queryValueCommands = {}; + + t.isNotDirty = false; + t.plugins = {}; // Add events to the editor each([ 'onPreInit', + 'onBeforeRenderUI', + 'onPostRender', + 'onInit', + 'onRemove', + 'onActivate', + 'onDeactivate', + 'onClick', + 'onEvent', + 'onMouseUp', + 'onMouseDown', + 'onDblClick', + 'onKeyDown', + 'onKeyUp', + 'onKeyPress', + 'onContextMenu', + 'onSubmit', + 'onReset', + 'onPaste', + 'onPreProcess', + 'onPostProcess', + 'onBeforeSetContent', + 'onBeforeGetContent', + 'onSetContent', + 'onGetContent', + 'onLoadContent', + 'onSaveContent', + 'onNodeChange', + 'onChange', + 'onBeforeExecCommand', + 'onExecCommand', + 'onUndo', + 'onRedo', + 'onVisualAid', + 'onSetProgressState' ], function(e) { t[e] = new Dispatcher(t); }); - // Default editor config t.settings = s = extend({ id : id, language : 'en', @@ -6113,19 +8845,22 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; apply_source_formatting : 1, directionality : 'ltr', forced_root_block : 'p', - valid_elements : '@[id|class|style|title|dir'; + t.iframeHTML = s.doctype + ''; + + // We only need to override paths if we have to + // IE has a bug where it remove site absolute urls to relative ones if this is specified + if (s.document_base_url != tinymce.documentBaseURL) + t.iframeHTML += ''; + t.iframeHTML += ''; if (tinymce.relaxedDomain) @@ -6404,7 +9135,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; // Domain relaxing enabled, then set document domain if (tinymce.relaxedDomain) { // We need to write the contents here in IE since multiple writes messes up refresh button and back button - if (isIE) + if (isIE || (tinymce.isOpera && parseFloat(opera.version()) >= 9.5)) u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'; else if (tinymce.isOpera) u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()'; @@ -6425,20 +9156,14 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; DOM.get(o.editorContainer).style.display = t.orgDisplay; DOM.get(t.id).style.display = 'none'; - // Safari 2.x requires us to wait for the load event and load a real HTML doc - if (tinymce.isOldWebKit) { - Event.add(n, 'load', t.setupIframe, t); - n.src = tinymce.baseURL + '/plugins/safari/blank.htm'; - } else { - if (!isIE || !tinymce.relaxedDomain) - t.setupIframe(); + if (!isIE || !tinymce.relaxedDomain) + t.setupIframe(); - e = n = o = null; // Cleanup - } + e = n = o = null; // Cleanup }, setupIframe : function() { - var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h; + var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b; // Setup iframe body if (!isIE || !tinymce.relaxedDomain) { @@ -6450,7 +9175,8 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; // Design mode needs to be added here Ctrl+A will fail otherwise if (!isIE) { try { - d.designMode = 'On'; + if (!s.readonly) + d.designMode = 'On'; } catch (ex) { // Will fail on Gecko if the editor is placed in an hidden container element // The design mode will be set ones the editor is focused @@ -6458,11 +9184,18 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; } // IE needs to use contentEditable or it will display non secure items for HTTPS - if (isIE) - t.getBody().contentEditable = true; + if (isIE) { + // It will not steal focus if we hide it while setting contentEditable + b = t.getBody(); + DOM.hide(b); - // Setup objects - t.dom = new tinymce.DOM.DOMUtils(t.getDoc(), { + if (!s.readonly) + b.contentEditable = true; + + DOM.show(b); + } + + t.dom = new tinymce.dom.DOMUtils(t.getDoc(), { keep_values : true, url_converter : t.convertURL, url_converter_scope : t, @@ -6472,25 +9205,13 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; fix_ie_paragraphs : 1 }); - t.serializer = new tinymce.dom.Serializer({ - entity_encoding : s.entity_encoding, - entities : s.entities, + t.serializer = new tinymce.dom.Serializer(extend(s, { valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements, - extended_valid_elements : s.extended_valid_elements, - valid_child_elements : s.valid_child_elements, - invalid_elements : s.invalid_elements, - fix_table_elements : s.fix_table_elements, - fix_list_elements : s.fix_list_elements, - fix_content_duplication : s.fix_content_duplication, - convert_fonts_to_spans : s.convert_fonts_to_spans, - font_size_classes : s.font_size_classes, - font_size_style_values : s.font_size_style_values, - apply_source_formatting : s.apply_source_formatting, - remove_linebreaks : s.remove_linebreaks, dom : t.dom - }); + })); t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer); + t.forceBlocks = new tinymce.ForceBlocks(t, { forced_root_block : s.forced_root_block }); @@ -6510,7 +9231,8 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (!s.gecko_spellcheck) t.getBody().spellcheck = 0; - t._addEvents(); + if (!s.readonly) + t._addEvents(); t.controlManager.onPostRender.dispatch(t, t.controlManager); t.onPostRender.dispatch(t); @@ -6521,9 +9243,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (s.nowrap) t.getBody().style.whiteSpace = "nowrap"; - if (s.auto_resize) - t.onNodeChange.add(t.resizeToContent, t); - if (s.custom_elements) { function handleCustom(ed, o) { each(explode(s.custom_elements), function(v) { @@ -6543,7 +9262,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; t.onBeforeSetContent.add(handleCustom); t.onPostProcess.add(function(ed, o) { if (o.set) - handleCustom(ed, o) + handleCustom(ed, o); }); } @@ -6660,30 +9379,47 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }); } + // Add visual aids when new contents is added t.onSetContent.add(function() { - // Safari needs some time, it will crash the browser when a link is created otherwise - // I think this crash issue is resolved in the latest 3.0.4 - //window.setTimeout(function() { - t.addVisual(t.getBody()); - //}, 1); + t.addVisual(t.getBody()); }); // Remove empty contents if (s.padd_empty_editor) { t.onPostProcess.add(function(ed, o) { - o.content = o.content.replace(/^

( |#160;|\s)<\/p>$/, ''); + o.content = o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
[\r\n]*)$/, ''); }); } if (isGecko) { - try { - // Design mode must be set here once again to fix a bug where - // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again - d.designMode = 'Off'; - d.designMode = 'On'; - } catch (ex) { - // Will fail on Gecko if the editor is placed in an hidden container element - // The design mode will be set ones the editor is focused + // Fix gecko link bug, when a link is placed at the end of block elements there is + // no way to move the caret behind the link. This fix adds a bogus br element after the link + function fixLinks(ed, o) { + each(ed.dom.select('a'), function(n) { + var pn = n.parentNode; + + if (ed.dom.isBlock(pn) && pn.lastChild === n) + ed.dom.add(pn, 'br', {'mce_bogus' : 1}); + }); + }; + + t.onExecCommand.add(function(ed, cmd) { + if (cmd === 'CreateLink') + fixLinks(ed); + }); + + t.onSetContent.add(t.selection.onSetContent.add(fixLinks)); + + if (!s.readonly) { + try { + // Design mode must be set here once again to fix a bug where + // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again + d.designMode = 'Off'; + d.designMode = 'On'; + } catch (ex) { + // Will fail on Gecko if the editor is placed in an hidden container element + // The design mode will be set ones the editor is focused + } } } @@ -6725,14 +9461,18 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; e = null; }, - + focus : function(sf) { - var oed, t = this; + var oed, t = this, ce = t.settings.content_editable; if (!sf) { - t.getWin().focus(); + // Is not content editable or the selection is outside the area in IE + // the IE statement is needed to avoid bluring if element selections inside layers since + // the layer is like it's own document in IE + if (!ce && (!isIE || t.selection.getNode().ownerDocument != t.getDoc())) + t.getWin().focus(); - } + } if (EditorManager.activeEditor != t) { if ((oed = EditorManager.activeEditor) != null) @@ -6768,7 +9508,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }, translate : function(s) { - var c = this.settings.language, i18n = EditorManager.i18n; + var c = this.settings.language || 'en', i18n = EditorManager.i18n; if (!s) return ''; @@ -6779,7 +9519,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }, getLang : function(n, dv) { - return EditorManager.i18n[this.settings.language + '.' + n] || (is(dv) ? dv : '{#' + n + '}'); + return EditorManager.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}'); }, getParam : function(n, dv, ty) { @@ -6789,7 +9529,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; o = {}; if (is(v, 'string')) { - each(v.split(/[;,]/), function(v) { + each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) { v = v.split('='); if (v.length > 1) @@ -6895,7 +9635,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }, execCommand : function(cmd, ui, val, a) { - var t = this, s = 0, o; + var t = this, s = 0, o, st; if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus)) t.focus(); @@ -6905,7 +9645,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (o.terminate) return false; - // Comamnd callback + // Command callback if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) { t.onExecCommand.dispatch(t, cmd, ui, val, a); return true; @@ -6913,9 +9653,13 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; // Registred commands if (o = t.execCommands[cmd]) { - s = o.func.call(o.scope, ui, val); - t.onExecCommand.dispatch(t, cmd, ui, val, a); - return s; + st = o.func.call(o.scope, ui, val); + + // Fall through on true + if (st !== true) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return st; + } } // Plugin commands @@ -6931,7 +9675,13 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; return true; // Theme commands - if (t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) { + if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } + + // Execute global commands + if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) { t.onExecCommand.dispatch(t, cmd, ui, val, a); return true; } @@ -6948,15 +9698,20 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }, queryCommandState : function(c) { - var t = this, o; + var t = this, o, s; // Is hidden then return undefined if (t._isHidden()) return; // Registred commands - if (o = t.queryStateCommands[c]) - return o.func.call(o.scope); + if (o = t.queryStateCommands[c]) { + s = o.func.call(o.scope); + + // Fall though on true + if (s !== true) + return s; + } // Registred commands o = t.editorCommands.queryCommandState(c); @@ -6972,15 +9727,20 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }, queryCommandValue : function(c) { - var t = this, o; + var t = this, o, s; // Is hidden then return undefined if (t._isHidden()) return; // Registred commands - if (o = t.queryValueCommands[c]) - return o.func.call(o.scope); + if (o = t.queryValueCommands[c]) { + s = o.func.call(o.scope); + + // Fall though on true + if (s !== true) + return s; + } // Registred commands o = t.editorCommands.queryCommandValue(c); @@ -7026,54 +9786,41 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; return b; }, - remove : function() { - var t = this; - - t.removed = 1; // Cancels post remove event execution - t.hide(); - DOM.remove(t.getContainer()); - - t.execCallback('remove_instance_callback', t); - t.onRemove.dispatch(t); - - // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command - t.onExecCommand.listeners = []; - - EditorManager.remove(t); - }, - - resizeToContent : function() { - var t = this; - - DOM.setStyle(t.id + "_ifr", 'height', t.getBody().scrollHeight); - }, - load : function(o) { var t = this, e = t.getElement(), h; - o = o || {}; - o.load = true; + if (e) { + o = o || {}; + o.load = true; - h = t.setContent(is(e.value) ? e.value : e.innerHTML, o); - o.element = e; + // Double encode existing entities in the value + h = t.setContent(is(e.value) ? e.value : e.innerHTML, o); + o.element = e; - if (!o.no_events) - t.onLoadContent.dispatch(t, o); + if (!o.no_events) + t.onLoadContent.dispatch(t, o); - o.element = e = null; + o.element = e = null; - return h; + return h; + } }, save : function(o) { var t = this, e = t.getElement(), h, f; - if (!t.initialized) + if (!e || !t.initialized) return; o = o || {}; o.save = true; + // Add undo level will trigger onchange event + if (!o.no_events) { + t.undoManager.typing = 0; + t.undoManager.add(); + } + o.element = e; h = o.content = t.getContent(o); @@ -7116,7 +9863,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content // It will also be impossible to place the caret in the editor unless there is a BR element present if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) { - o.content = t.dom.setHTML(t.getBody(), '
', 1); + o.content = t.dom.setHTML(t.getBody(), '
'); o.format = 'raw'; } @@ -7150,8 +9897,10 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; h = t.getBody().innerHTML; h = h.replace(/^\s*|\s*$/g, ''); - o = {content : h}; - t.onGetContent.dispatch(t, o); + o.content = h; + + if (!o.no_events) + t.onGetContent.dispatch(t, o); return o.content; }, @@ -7271,6 +10020,68 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; t.onVisualAid.dispatch(t, e, t.hasVisual); }, + remove : function() { + var t = this, e = t.getContainer(); + + t.removed = 1; // Cancels post remove event execution + t.hide(); + + t.execCallback('remove_instance_callback', t); + t.onRemove.dispatch(t); + + // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command + t.onExecCommand.listeners = []; + + EditorManager.remove(t); + DOM.remove(e); + }, + + destroy : function(s) { + var t = this; + + // One time is enough + if (t.destroyed) + return; + + if (!s) { + tinymce.removeUnload(t.destroy); + tinyMCE.onBeforeUnload.remove(t._beforeUnload); + + // Manual destroy + if (t.theme && t.theme.destroy) + t.theme.destroy(); + + // Destroy controls, selection and dom + t.controlManager.destroy(); + t.selection.destroy(); + t.dom.destroy(); + + // Remove all events + + // Don't clear the window or document if content editable + // is enabled since other instances might still be present + if (!t.settings.content_editable) { + Event.clear(t.getWin()); + Event.clear(t.getDoc()); + } + + Event.clear(t.getBody()); + Event.clear(t.formElement); + } + + if (t.formElement) { + t.formElement.submit = t.formElement._mceOldSubmit; + t.formElement._mceOldSubmit = null; + } + + t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null; + + if (t.selection) + t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null; + + t.destroyed = 1; + }, + // Internal functions _addEvents : function() { @@ -7309,55 +10120,37 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; case 'contextmenu': if (tinymce.isOpera) { // Fake contextmenu on Opera - Event.add(t.getDoc(), 'mousedown', function(e) { + t.dom.bind(t.getBody(), 'mousedown', function(e) { if (e.ctrlKey) { e.fakeType = 'contextmenu'; eventHandler(e); } }); } else - Event.add(t.getDoc(), k, eventHandler); + t.dom.bind(t.getBody(), k, eventHandler); break; case 'paste': - Event.add(t.getBody(), k, function(e) { - var tx, h, el, r; - - // Get plain text data - if (e.clipboardData) - tx = e.clipboardData.getData('text/plain'); - else if (tinymce.isIE) - tx = t.getWin().clipboardData.getData('Text'); - - // Get HTML data - /*if (tinymce.isIE) { - el = DOM.add(document.body, 'div', {style : 'visibility:hidden;overflow:hidden;position:absolute;width:1px;height:1px'}); - r = document.body.createTextRange(); - r.moveToElementText(el); - r.execCommand('Paste'); - h = el.innerHTML; - DOM.remove(el); - }*/ - - eventHandler(e, {text : tx, html : h}); + t.dom.bind(t.getBody(), k, function(e) { + eventHandler(e); }); break; case 'submit': case 'reset': - Event.add(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); + t.dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); break; default: - Event.add(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); + t.dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); } }); - Event.add(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { + t.dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { t.focus(true); }); - + // Fixes bug where a specified document_base_uri could result in broken images // This will also fix drag drop of images in Gecko if (tinymce.isGecko) { @@ -7371,7 +10164,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }) });*/ - Event.add(t.getDoc(), 'DOMNodeInserted', function(e) { + t.dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) { var v; e = e.target; @@ -7386,7 +10179,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; function setOpts() { var t = this, d = t.getDoc(), s = t.settings; - if (isGecko) { + if (isGecko && !s.readonly) { if (t._isHidden()) { try { if (!s.content_editable) @@ -7402,7 +10195,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; } catch (ex) { // Use old method if (!t._isHidden()) - d.execCommand("useCSS", 0, true); + try {d.execCommand("useCSS", 0, true);} catch (ex) {} } if (!s.table_inline_editing) @@ -7421,7 +10214,9 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; t.onMouseUp.add(t.nodeChanged); t.onClick.add(t.nodeChanged); t.onKeyUp.add(function(ed, e) { - if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.keyCode == 46 || e.keyCode == 8 || e.ctrlKey) + var c = e.keyCode; + + if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey) t.nodeChanged(); }); @@ -7430,84 +10225,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; t.setContent(t.startContent, {format : 'raw'}); }); - if (t.getParam('tab_focus')) { - function tabCancel(ed, e) { - if (e.keyCode === 9) - return Event.cancel(e); - }; - - function tabHandler(ed, e) { - var x, i, f, el, v; - - function find(d) { - f = DOM.getParent(ed.id, 'form'); - el = f.elements; - - if (f) { - each(el, function(e, i) { - if (e.id == ed.id) { - x = i; - return false; - } - }); - - if (d > 0) { - for (i = x + 1; i < el.length; i++) { - if (el[i].type != 'hidden') - return el[i]; - } - } else { - for (i = x - 1; i >= 0; i--) { - if (el[i].type != 'hidden') - return el[i]; - } - } - } - - return null; - }; - - if (e.keyCode === 9) { - v = explode(ed.getParam('tab_focus')); - - if (v.length == 1) { - v[1] = v[0]; - v[0] = ':prev'; - } - - // Find element to focus - if (e.shiftKey) { - if (v[0] == ':prev') - el = find(-1); - else - el = DOM.get(v[0]); - } else { - if (v[1] == ':next') - el = find(1); - else - el = DOM.get(v[1]); - } - - if (el) { - if (ed = EditorManager.get(el.id || el.name)) - ed.focus(); - else - window.setTimeout(function() {window.focus();el.focus();}, 10); - - return Event.cancel(e); - } - } - }; - - t.onKeyUp.add(tabCancel); - - if (isGecko) { - t.onKeyPress.add(tabHandler); - t.onKeyDown.add(tabCancel); - } else - t.onKeyDown.add(tabHandler); - } - // Add shortcuts if (s.custom_shortcuts) { if (s.custom_undo_redo_keyboard_shortcuts) { @@ -7537,7 +10254,9 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; return v; each(t.shortcuts, function(o) { - if (o.ctrl != e.ctrlKey && (!tinymce.isMac || o.ctrl == e.metaKey)) + if (tinymce.isMac && o.ctrl != e.metaKey) + return; + else if (!tinymce.isMac && o.ctrl != e.ctrlKey) return; if (o.alt != e.altKey) @@ -7582,17 +10301,21 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (tinymce.isIE) { // Fix so resize will only update the width and height attributes not the styles of an image // It will also block mceItemNoResize items - Event.add(t.getDoc(), 'controlselect', function(e) { + t.dom.bind(t.getDoc(), 'controlselect', function(e) { var re = t.resizeInfo, cb; e = e.target; + // Don't do this action for non image elements + if (e.nodeName !== 'IMG') + return; + if (re) - Event.remove(re.node, re.ev, re.cb); + t.dom.unbind(re.node, re.ev, re.cb); if (!t.dom.hasClass(e, 'mceItemNoResize')) { ev = 'resizeend'; - cb = Event.add(e, ev, function(e) { + cb = t.dom.bind(e, ev, function(e) { var v; e = e.target; @@ -7609,7 +10332,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }); } else { ev = 'resizestart'; - cb = Event.add(e, 'resizestart', Event.cancel, Event); + cb = t.dom.bind(e, 'resizestart', Event.cancel, Event); } re = t.resizeInfo = { @@ -7629,6 +10352,16 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; } } }); + + /*if (t.dom.boxModel) { + t.getBody().style.height = '100%'; + + Event.add(t.getWin(), 'resize', function(e) { + var docElm = t.getDoc().documentElement; + + docElm.style.height = (docElm.offsetHeight - 10) + 'px'; + }); + }*/ } if (tinymce.isOpera) { @@ -7646,7 +10379,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; // Add undo level on editor blur if (tinymce.isIE) { - Event.add(t.getWin(), 'blur', function(e) { + t.dom.bind(t.getWin(), 'blur', function(e) { var n; // Check added for fullscreen bug @@ -7659,7 +10392,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; } }); } else { - Event.add(t.getDoc(), 'blur', function() { + t.dom.bind(t.getDoc(), 'blur', function() { if (t.selection && !t.removed) addUndo(); }); @@ -7693,22 +10426,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; } }, - _destroy : function() { - var t = this; - - if (t.formElement) { - t.formElement.submit = t.formElement._mceOldSubmit; - t.formElement._mceOldSubmit = null; - } - - t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null; - - if (t.selection) - t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null; - - t.destroyed = 1; - }, - _convertInlineElements : function() { var t = this, s = t.settings, dom = t.dom, v, e, na, st, sp; @@ -7728,15 +10445,15 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; case 'U': case 'STRIKE': - sp = dom.create('span', {style : dom.getAttrib(n, 'style')}); - sp.style.textDecoration = n.nodeName == 'U' ? 'underline' : 'line-through'; - dom.setAttrib(sp, 'mce_style', ''); - dom.replace(sp, n, 1); + //sp = dom.create('span', {style : dom.getAttrib(n, 'style')}); + n.style.textDecoration = n.nodeName == 'U' ? 'underline' : 'line-through'; + dom.setAttrib(n, 'mce_style', ''); + dom.setAttrib(n, 'mce_name', 'span'); break; } }); } else if (o.set) { - each(t.dom.select('table,span', o.node), function(n) { + each(t.dom.select('table,span', o.node).reverse(), function(n) { if (n.nodeName == 'TABLE') { if (v = dom.getStyle(n, 'height')) dom.setAttrib(n, 'height', v.replace(/[^0-9%]+/g, '')); @@ -7767,14 +10484,15 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; t.onPreProcess.add(convert); if (!s.cleanup_on_startup) { - t.onInit.add(function() { - convert(t, {node : t.getBody(), set : 1}); + t.onSetContent.add(function(ed, o) { + if (o.initial) + convert(t, {node : t.getBody(), set : 1}); }); } }, _convertFonts : function() { - var t = this, s = t.settings, dom = t.dom, sl, cl, fz, fzn, v, i, st, x, nl, sp, f, n; + var t = this, s = t.settings, dom = t.dom, fz, fzn, sl, cl; // No need if (!s.inline_styles) @@ -7790,96 +10508,49 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (cl = s.font_size_classes) cl = explode(cl); - function convertToFonts(no) { - // Convert spans to fonts on non WebKit browsers - if (tinymce.isWebKit || !s.inline_styles) - return; + function process(no) { + var n, sp, nl, x; - nl = t.dom.select('span', no); - for (x = nl.length - 1; x >= 0; x--) { - n = nl[x]; - - f = dom.create('font', { - color : dom.toHex(dom.getStyle(n, 'color')), - face : dom.getStyle(n, 'fontFamily'), - style : dom.getAttrib(n, 'style') - }); - - // Clear color and font family - st = f.style; - if (st.color || st.fontFamily) { - st.color = st.fontFamily = ''; - dom.setAttrib(f, 'mce_style', ''); // Remove cached style data - } - - if (sl) { - i = inArray(sl, dom.getStyle(n, 'fontSize')); - - if (i != -1) { - dom.setAttrib(f, 'size', '' + (i + 1 || 1)); - f.style.fontSize = ''; - } - } else if (cl) { - i = inArray(cl, dom.getAttrib(n, 'class')); - v = dom.getStyle(n, 'fontSize'); - - if (i == -1 && v.indexOf('pt') > 0) - i = inArray(fz, parseInt(v)); - - if (i == -1) - i = inArray(fzn, v); - - if (i != -1) { - dom.setAttrib(f, 'size', '' + (i + 1 || 1)); - f.style.fontSize = ''; - } - } - - if (f.color || f.face || f.size) { - f.style.fontFamily = ''; - dom.setAttrib(f, 'mce_style', ''); - dom.replace(f, n, 1); - } - } - }; - - // Run on setup - t.onSetContent.add(function(ed, o) { - convertToFonts(ed.getBody()); - }); - - // Run on cleanup - t.onPreProcess.add(function(ed, o) { // Keep unit tests happy if (!s.inline_styles) return; - if (o.get) { - nl = t.dom.select('font', o.node); - for (x = nl.length - 1; x >= 0; x--) { - n = nl[x]; + nl = t.dom.select('font', no); + for (x = nl.length - 1; x >= 0; x--) { + n = nl[x]; - sp = dom.create('span', { - style : dom.getAttrib(n, 'style') - }); + sp = dom.create('span', { + style : dom.getAttrib(n, 'style'), + 'class' : dom.getAttrib(n, 'class') + }); - dom.setStyles(sp, { - fontFamily : dom.getAttrib(n, 'face'), - color : dom.getAttrib(n, 'color'), - backgroundColor : n.style.backgroundColor - }); + dom.setStyles(sp, { + fontFamily : dom.getAttrib(n, 'face'), + color : dom.getAttrib(n, 'color'), + backgroundColor : n.style.backgroundColor + }); - if (n.size) { - if (sl) - dom.setStyle(sp, 'fontSize', sl[parseInt(n.size) - 1]); - else - dom.setAttrib(sp, 'class', cl[parseInt(n.size) - 1]); - } - - dom.setAttrib(sp, 'mce_style', ''); - dom.replace(sp, n, 1); + if (n.size) { + if (sl) + dom.setStyle(sp, 'fontSize', sl[parseInt(n.size) - 1]); + else + dom.setAttrib(sp, 'class', cl[parseInt(n.size) - 1]); } + + dom.setAttrib(sp, 'mce_style', ''); + dom.replace(sp, n, 1); } + }; + + // Run on cleanup + t.onPreProcess.add(function(ed, o) { + if (o.get) + process(o.node); + }); + + t.onSetContent.add(function(ed, o) { + if (o.initial) + process(o.node); }); }, @@ -7944,13 +10615,9 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; return s; } - - }); -})(); - -/* file:jscripts/tiny_mce/classes/EditorCommands.js */ - -(function() { + }); +})(tinymce); +(function(tinymce) { var each = tinymce.each, isIE = tinymce.isIE, isGecko = tinymce.isGecko, isOpera = tinymce.isOpera, isWebKit = tinymce.isWebKit; tinymce.create('tinymce.EditorCommands', { @@ -7962,23 +10629,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; var t = this, ed = t.editor, f; switch (cmd) { - case 'Cut': - case 'Copy': - case 'Paste': - try { - ed.getDoc().execCommand(cmd, ui, val); - } catch (ex) { - if (isGecko) { - ed.windowManager.confirm(ed.getLang('clipboard_msg'), function(s) { - if (s) - window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', 'mceExternal'); - }); - } else - ed.windowManager.alert(ed.getLang('clipboard_no_support')); - } - - return true; - // Ignore these case 'mceResetDesignMode': case 'mceBeginUndoLevel': @@ -7997,11 +10647,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; t.mceJustify(cmd, cmd.substring(7).toLowerCase()); return true; - case 'mceEndUndoLevel': - case 'mceAddUndoLevel': - ed.undoManager.add(); - return true; - default: f = this[cmd]; @@ -8023,7 +10668,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; iv = parseInt(iv); if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) { - each(this._getSelectedBlocks(), function(e) { + each(s.getSelectedBlocks(), function(e) { d.setStyle(e, 'paddingLeft', (parseInt(e.style.paddingLeft || 0) + iv) + iu); }); @@ -8050,7 +10695,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; iv = parseInt(iv); if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) { - each(this._getSelectedBlocks(), function(e) { + each(s.getSelectedBlocks(), function(e) { v = Math.max(0, parseInt(e.style.paddingLeft || 0) - iv); d.setStyle(e, 'paddingLeft', v ? v + iu : ''); }); @@ -8061,13 +10706,14 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; ed.getDoc().execCommand('Outdent', false, null); }, +/* mceSetAttribute : function(u, v) { var ed = this.editor, d = ed.dom, e; if (e = d.getParent(ed.selection.getNode(), d.isBlock)) d.setAttrib(e, v.name, v.value); }, - +*/ mceSetContent : function(u, v) { this.editor.setContent(v); }, @@ -8086,7 +10732,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }, mceInsertLink : function(u, v) { - var ed = this.editor, e = ed.dom.getParent(ed.selection.getNode(), 'A'); + var ed = this.editor, s = ed.selection, e = ed.dom.getParent(s.getNode(), 'a'); if (tinymce.is(v, 'string')) v = {href : v}; @@ -8099,9 +10745,8 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (!e) { ed.execCommand('CreateLink', false, 'javascript:mctmp(0);'); - each(ed.dom.select('a'), function(e) { - if (e.href == 'javascript:mctmp(0);') - set(e); + each(ed.dom.select('a[href=javascript:mctmp(0);]'), function(e) { + set(e); }); } else { if (v.href) @@ -8127,10 +10772,32 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (!v) { if (s.isCollapsed()) s.select(s.getNode()); + } else { + if (ed.settings.convert_fonts_to_spans) + t._applyInlineStyle('span', {style : {fontFamily : v}}); + else + ed.getDoc().execCommand('FontName', false, v); + } + }, - t.RemoveFormat(); - } else - ed.getDoc().execCommand('FontName', false, v); + FontSize : function(u, v) { + var ed = this.editor, s = ed.settings, fc, fs; + + // Use style options instead + if (s.convert_fonts_to_spans && v >= 1 && v <= 7) { + fs = tinymce.explode(s.font_size_style_values); + fc = tinymce.explode(s.font_size_classes); + + if (fc) + v = fc[v - 1] || v; + else + v = fs[v - 1] || v; + } + + if (v >= 1 && v <= 7) + ed.getDoc().execCommand('FontSize', false, v); + else + this._applyInlineStyle('span', {style : {fontSize : v}}); }, queryCommandValue : function(c) { @@ -8161,27 +10828,49 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; return -1; }, + _queryState : function(c) { + try { + return this.editor.getDoc().queryCommandState(c); + } catch (ex) { + // Ignore exception + } + }, + + _queryVal : function(c) { + try { + return this.editor.getDoc().queryCommandValue(c); + } catch (ex) { + // Ignore exception + } + }, + queryValueFontSize : function() { var ed = this.editor, v = 0, p; - if (isOpera || isWebKit) { - if (p = ed.dom.getParent(ed.selection.getNode(), 'FONT')) + if (p = ed.dom.getParent(ed.selection.getNode(), 'span')) + v = p.style.fontSize; + + if (!v && (isOpera || isWebKit)) { + if (p = ed.dom.getParent(ed.selection.getNode(), 'font')) v = p.size; return v; } - return ed.getDoc().queryCommandValue('FontSize'); + return v || this._queryVal('FontSize'); }, queryValueFontName : function() { var ed = this.editor, v = 0, p; - if (p = ed.dom.getParent(ed.selection.getNode(), 'FONT')) + if (p = ed.dom.getParent(ed.selection.getNode(), 'font')) v = p.face; + if (p = ed.dom.getParent(ed.selection.getNode(), 'span')) + v = p.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); + if (!v) - v = ed.getDoc().queryCommandValue('FontName'); + v = this._queryVal('FontName'); return v; }, @@ -8200,7 +10889,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (rm) { if (v == 'center') - dom.setStyle(n.parentNode, 'textAlign', ''); + dom.setStyle(bl || n.parentNode, 'textAlign', ''); dom.setStyle(n, 'float', ''); this.mceRepaint(); @@ -8209,7 +10898,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (v == 'center') { // Do not change table elements - if (/^(TD|TH)$/.test(bl.nodeName)) + if (bl && /^(TD|TH)$/.test(bl.nodeName)) bl = 0; if (!bl || bl.childNodes.length > 1) { @@ -8230,7 +10919,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; dom.setStyle(n, 'float', ''); } else { dom.setStyle(n, 'float', v); - dom.setStyle(n.parentNode, 'textAlign', ''); + dom.setStyle(bl || n.parentNode, 'textAlign', ''); } this.mceRepaint(); @@ -8242,7 +10931,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (rm) v = ''; - each(this._getSelectedBlocks(dom.getParent(se.getStart(), dom.isBlock), dom.getParent(se.getEnd(), dom.isBlock)), function(e) { + each(se.getSelectedBlocks(dom.getParent(se.getStart(), dom.isBlock), dom.getParent(se.getEnd(), dom.isBlock)), function(e) { dom.setAttrib(e, 'align', ''); dom.setStyle(e, 'textAlign', v == 'full' ? 'justify' : v); }); @@ -8313,7 +11002,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; } } else { function getParent(n) { - return dom.getParent(n, function(n) {return n.nodeType == 1;}); + return dom.getParent(n, '*'); }; sc = r.startContainer; @@ -8371,27 +11060,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; return null; }, - InsertHorizontalRule : function() { - // Fix for Gecko


issue and IE bug rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); - if (isGecko || isIE) - this.editor.selection.setContent('
'); - else - this.editor.getDoc().execCommand('InsertHorizontalRule', false, ''); - }, - - RemoveFormat : function() { - var t = this, ed = t.editor, s = ed.selection, b; - - // Safari breaks tables - if (isWebKit) - s.setContent(s.getContent({format : 'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g, ''), {format : 'raw'}); - else - ed.getDoc().execCommand('RemoveFormat', false, null); - - t.mceSetStyleInfo(0, {command : 'removeformat'}); - ed.addVisual(); - }, - mceSetStyleInfo : function(u, v) { var t = this, ed = t.editor, d = ed.getDoc(), dom = ed.dom, e, b, s = ed.selection, nn = v.wrapper || 'span', b = s.getBookmark(), re; @@ -8416,12 +11084,12 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; re = new RegExp(re, 'i'); // Set style info on selected element - if (e = t.getSelectedElement()) + if ((e = t.getSelectedElement()) && !ed.settings.force_span_wrappers) set(e, 1); else { // Generate wrappers and set styles on them d.execCommand('FontName', false, '__'); - each(isWebKit ? dom.select('span') : dom.select('font'), function(n) { + each(dom.select('span,font'), function(n) { var sp, e; if (dom.getAttrib(n, 'face') == '__' || n.style.fontFamily === '__') { @@ -8442,14 +11110,10 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; each(dom.select(nn).reverse(), function(n) { var p = n.parentNode; - dom.setAttrib(n, 'mce_new', ''); - // Check if it's an old span in a new wrapper if (!dom.getAttrib(n, 'mce_new')) { // Find new wrapper - p = dom.getParent(n, function(n) { - return n.nodeType == 1 && dom.getAttrib(n, 'mce_new'); - }); + p = dom.getParent(n, '*[mce_new]'); if (p) dom.remove(n, 1); @@ -8460,7 +11124,10 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; each(dom.select(nn).reverse(), function(n) { var p = n.parentNode; - if (!p) + if (!p || !dom.getAttrib(n, 'mce_new')) + return; + + if (ed.settings.force_span_wrappers && p.nodeName != 'SPAN') return; // Has parent of the same type and only child @@ -8476,8 +11143,12 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; // Remove empty wrappers each(dom.select(nn).reverse(), function(n) { - if (!dom.getAttrib(n, 'class') && !dom.getAttrib(n, 'style')) - return dom.remove(n, 1); + if (dom.getAttrib(n, 'mce_new') || (dom.getAttribs(n).length <= 1 && n.className === '')) { + if (!dom.getAttrib(n, 'class') && !dom.getAttrib(n, 'style')) + return dom.remove(n, 1); + + dom.setAttrib(n, 'mce_new', ''); // Remove mce_new marker + } }); s.moveToBookmark(b); @@ -8503,12 +11174,27 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if (ed.settings.inline_styles) return (n && n.style.textAlign == v); - return ed.getDoc().queryCommandState(c); + return this._queryState(c); + }, + + ForeColor : function(ui, v) { + var ed = this.editor; + + if (ed.settings.convert_fonts_to_spans) { + this._applyInlineStyle('span', {style : {color : v}}); + return; + } else + ed.getDoc().execCommand('ForeColor', false, v); }, HiliteColor : function(ui, val) { var t = this, ed = t.editor, d = ed.getDoc(); + if (ed.settings.convert_fonts_to_spans) { + this._applyInlineStyle('span', {style : {backgroundColor : val}}); + return; + } + function set(s) { if (!isGecko) return; @@ -8530,34 +11216,38 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; d.execCommand('BackColor', false, val); }, - Undo : function() { - var ed = this.editor; - - if (ed.settings.custom_undo_redo) { - ed.undoManager.undo(); - ed.nodeChanged(); - } else - ed.getDoc().execCommand('Undo', false, null); - }, - - Redo : function() { - var ed = this.editor; - - if (ed.settings.custom_undo_redo) { - ed.undoManager.redo(); - ed.nodeChanged(); - } else - ed.getDoc().execCommand('Redo', false, null); - }, - FormatBlock : function(ui, val) { - var t = this, ed = t.editor; + var t = this, ed = t.editor, s = ed.selection, dom = ed.dom, bl, nb, b; + + function isBlock(n) { + return /^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName); + }; + + bl = dom.getParent(s.getNode(), function(n) { + return isBlock(n); + }); + + // IE has an issue where it removes the parent div if you change format on the paragrah in

Content

+ // FF and Opera doesn't change parent DIV elements if you switch format + if (bl) { + if ((isIE && isBlock(bl.parentNode)) || bl.nodeName == 'DIV') { + // Rename block element + nb = ed.dom.create(val); + + each(dom.getAttribs(bl), function(v) { + dom.setAttrib(nb, v.nodeName, dom.getAttrib(bl, v.nodeName)); + }); + + b = s.getBookmark(); + dom.replace(nb, bl, 1); + s.moveToBookmark(b); + ed.nodeChanged(); + return; + } + } val = ed.settings.forced_root_block ? (val || '

') : val; - if (/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(ed.selection.getNode().nodeName)) - t.mceRemoveNode(); - if (val.indexOf('<') == -1) val = '<' + val + '>'; @@ -8633,12 +11323,12 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; }, queryStateUnderline : function() { - var ed = this.editor, n; + var ed = this.editor, n = ed.selection.getNode(); if (n && n.nodeName == 'A') return false; - return ed.getDoc().queryCommandState('Underline'); + return this._queryState('Underline'); }, queryStateOutdent : function() { @@ -8650,10 +11340,9 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; if ((n = ed.dom.getParent(ed.selection.getEnd(), ed.dom.isBlock)) && parseInt(n.style.paddingLeft) > 0) return true; - } else - return !!ed.dom.getParent(ed.selection.getNode(), 'BLOCKQUOTE'); + } - return this.queryStateInsertUnorderedList() || this.queryStateInsertOrderedList(); + return this.queryStateInsertUnorderedList() || this.queryStateInsertOrderedList() || (!ed.settings.inline_styles && !!ed.dom.getParent(ed.selection.getNode(), 'BLOCKQUOTE')); }, queryStateInsertUnorderedList : function() { @@ -8668,345 +11357,321 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager; return !!this.editor.dom.getParent(this.editor.selection.getStart(), function(n) {return n.nodeName === 'BLOCKQUOTE';}); }, - mceBlockQuote : function() { - var t = this, ed = t.editor, s = ed.selection, dom = ed.dom, sb, eb, n, bm, bq, r, bq2, i, nl; + _applyInlineStyle : function(na, at, op) { + var t = this, ed = t.editor, dom = ed.dom, bm, lo = {}, kh, found; - function getBQ(e) { - return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';}); - }; + na = na.toUpperCase(); - // Get start/end block - sb = dom.getParent(s.getStart(), dom.isBlock); - eb = dom.getParent(s.getEnd(), dom.isBlock); + if (op && op.check_classes && at['class']) + op.check_classes.push(at['class']); - // Remove blockquote(s) - if (bq = getBQ(sb)) { - if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR')) - bm = s.getBookmark(); + function removeEmpty() { + each(dom.select(na).reverse(), function(n) { + var c = 0; - // Move all elements after the end block into new bq - if (getBQ(eb)) { - bq2 = bq.cloneNode(false); - - while (n = eb.nextSibling) - bq2.appendChild(n.parentNode.removeChild(n)); - } - - // Add new bq after - if (bq2) - dom.insertAfter(bq2, bq); - - // Move all selected blocks after the current bq - nl = t._getSelectedBlocks(sb, eb); - for (i = nl.length - 1; i >= 0; i--) { - dom.insertAfter(nl[i], bq); - } - - // Empty bq, then remove it - if (/^\s*$/.test(bq.innerHTML)) - dom.remove(bq, 1); // Keep children so boomark restoration works correctly - - // Empty bq, then remote it - if (bq2 && /^\s*$/.test(bq2.innerHTML)) - dom.remove(bq2, 1); // Keep children so boomark restoration works correctly - - if (!bm) { - // Move caret inside empty block element - if (!isIE) { - r = ed.getDoc().createRange(); - r.setStart(sb, 0); - r.setEnd(sb, 0); - s.setRng(r); - } else { - s.select(sb); - s.collapse(0); - - // IE misses the empty block some times element so we must move back the caret - if (dom.getParent(s.getStart(), dom.isBlock) != sb) { - r = s.getRng(); - r.move('character', -1); - r.select(); + // Check if there is any attributes + each(dom.getAttribs(n), function(an) { + if (an.nodeName.substring(0, 1) != '_' && dom.getAttrib(n, an.nodeName) != '') { + //console.log(dom.getOuterHTML(n), dom.getAttrib(n, an.nodeName)); + c++; } - } - } else - t.editor.selection.moveToBookmark(bm); + }); - return; - } - - // Since IE can start with a totally empty document we need to add the first bq and paragraph - if (isIE && !sb && !eb) { - t.editor.getDoc().execCommand('Indent'); - n = getBQ(s.getNode()); - n.style.margin = n.dir = ''; // IE adds margin and dir to bq - return; - } - - if (!sb || !eb) - return; - - // If empty paragraph node then do not use bookmark - if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR')) - bm = s.getBookmark(); - - // Move selected block elements into a bq - each(t._getSelectedBlocks(getBQ(s.getStart()), getBQ(s.getEnd())), function(e) { - // Found existing BQ add to this one - if (e.nodeName == 'BLOCKQUOTE' && !bq) { - bq = e; - return; - } - - // No BQ found, create one - if (!bq) { - bq = dom.create('blockquote'); - e.parentNode.insertBefore(bq, e); - } - - // Add children from existing BQ - if (e.nodeName == 'BLOCKQUOTE' && bq) { - n = e.firstChild; - - while (n) { - bq.appendChild(n.cloneNode(true)); - n = n.nextSibling; - } - - dom.remove(e); - return; - } - - // Add non BQ element to BQ - bq.appendChild(dom.remove(e)); - }); - - if (!bm) { - // Move caret inside empty block element - if (!isIE) { - r = ed.getDoc().createRange(); - r.setStart(sb, 0); - r.setEnd(sb, 0); - s.setRng(r); - } else { - s.select(sb); - s.collapse(1); - } - } else - s.moveToBookmark(bm); - }, -/* - _mceBlockQuote : function() { - var t = this, s = t.editor.selection, b = s.getBookmark(), bq, dom = t.editor.dom; - - function findBQ(e) { - return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';}); + // No attributes then remove the element and keep the children + if (c == 0) + dom.remove(n, 1); + }); }; - // Remove blockquote(s) - if (findBQ(s.getStart())) { - each(t._getSelectedBlocks(findBQ(s.getStart()), findBQ(s.getEnd())), function(e) { - // Found BQ lets remove it - if (e.nodeName == 'BLOCKQUOTE') - dom.remove(e, 1); + function replaceFonts() { + var bm; + + each(dom.select('span,font'), function(n) { + if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') { + if (!bm) + bm = ed.selection.getBookmark(); + + at._mce_new = '1'; + dom.replace(dom.create(na, at), n, 1); + } }); - t.editor.selection.moveToBookmark(b); - return; + // Remove redundant elements + each(dom.select(na + '[_mce_new]'), function(n) { + function removeStyle(n) { + if (n.nodeType == 1) { + each(at.style, function(v, k) { + dom.setStyle(n, k, ''); + }); + + // Remove spans with the same class or marked classes + if (at['class'] && n.className && op) { + each(op.check_classes, function(c) { + if (dom.hasClass(n, c)) + dom.removeClass(n, c); + }); + } + } + }; + + // Remove specified style information from child elements + each(dom.select(na, n), removeStyle); + + // Remove the specified style information on parent if current node is only child (IE) + if (n.parentNode && n.parentNode.nodeType == 1 && n.parentNode.childNodes.length == 1) + removeStyle(n.parentNode); + + // Remove the child elements style info if a parent already has it + dom.getParent(n.parentNode, function(pn) { + if (pn.nodeType == 1) { + if (at.style) { + each(at.style, function(v, k) { + var sv; + + if (!lo[k] && (sv = dom.getStyle(pn, k))) { + if (sv === v) + dom.setStyle(n, k, ''); + + lo[k] = 1; + } + }); + } + + // Remove spans with the same class or marked classes + if (at['class'] && pn.className && op) { + each(op.check_classes, function(c) { + if (dom.hasClass(pn, c)) + dom.removeClass(n, c); + }); + } + } + + return false; + }); + + n.removeAttribute('_mce_new'); + }); + + removeEmpty(); + ed.selection.moveToBookmark(bm); + + return !!bm; + }; + + // Create inline elements + ed.focus(); + ed.getDoc().execCommand('FontName', false, 'mceinline'); + replaceFonts(); + + if (kh = t._applyInlineStyle.keyhandler) { + ed.onKeyUp.remove(kh); + ed.onKeyPress.remove(kh); + ed.onKeyDown.remove(kh); + ed.onSetContent.remove(t._applyInlineStyle.chandler); } - each(t._getSelectedBlocks(findBQ(s.getStart()), findBQ(s.getEnd())), function(e) { - var n; + if (ed.selection.isCollapsed()) { + // IE will format the current word so this code can't be executed on that browser + if (!isIE) { + each(dom.getParents(ed.selection.getNode(), 'span'), function(n) { + each(at.style, function(v, k) { + var kv; - // Found existing BQ add to this one - if (e.nodeName == 'BLOCKQUOTE' && !bq) { - bq = e; - return; + if (kv = dom.getStyle(n, k)) { + if (kv == v) { + dom.setStyle(n, k, ''); + found = 2; + return false; + } + + found = 1; + return false; + } + }); + + if (found) + return false; + }); + + if (found == 2) { + bm = ed.selection.getBookmark(); + + removeEmpty(); + + ed.selection.moveToBookmark(bm); + + // Node change needs to be detached since the onselect event + // for the select box will run the onclick handler after onselect call. Todo: Add a nicer fix! + window.setTimeout(function() { + ed.nodeChanged(); + }, 1); + + return; + } } - // No BQ found, create one - if (!bq) { - bq = dom.create('blockquote'); - e.parentNode.insertBefore(bq, e); - } + // Start collecting styles + t._pendingStyles = tinymce.extend(t._pendingStyles || {}, at.style); - // Add children from existing BQ - if (e.nodeName == 'BLOCKQUOTE' && bq) { - n = e.firstChild; + t._applyInlineStyle.chandler = ed.onSetContent.add(function() { + delete t._pendingStyles; + }); - while (n) { - bq.appendChild(n.cloneNode(true)); - n = n.nextSibling; + t._applyInlineStyle.keyhandler = kh = function(e) { + // Use pending styles + if (t._pendingStyles) { + at.style = t._pendingStyles; + delete t._pendingStyles; } - dom.remove(e); + if (replaceFonts()) { + ed.onKeyDown.remove(t._applyInlineStyle.keyhandler); + ed.onKeyPress.remove(t._applyInlineStyle.keyhandler); + } - return; - } + if (e.type == 'keyup') + ed.onKeyUp.remove(t._applyInlineStyle.keyhandler); + }; - // Add non BQ element to BQ - bq.appendChild(dom.remove(e)); - }); + ed.onKeyDown.add(kh); + ed.onKeyPress.add(kh); + ed.onKeyUp.add(kh); + } else + t._pendingStyles = 0; + } + }); +})(tinymce);(function(tinymce) { + tinymce.create('tinymce.UndoManager', { + index : 0, + data : null, + typing : 0, - t.editor.selection.moveToBookmark(b); + UndoManager : function(ed) { + var t = this, Dispatcher = tinymce.util.Dispatcher; + + t.editor = ed; + t.data = []; + t.onAdd = new Dispatcher(this); + t.onUndo = new Dispatcher(this); + t.onRedo = new Dispatcher(this); }, -*/ - _getSelectedBlocks : function(st, en) { - var ed = this.editor, dom = ed.dom, s = ed.selection, sb, eb, n, bl = []; - sb = dom.getParent(st || s.getStart(), dom.isBlock); - eb = dom.getParent(en || s.getEnd(), dom.isBlock); + add : function(l) { + var t = this, i, ed = t.editor, b, s = ed.settings, la; - if (sb) - bl.push(sb); + l = l || {}; + l.content = l.content || ed.getContent({format : 'raw', no_events : 1}); - if (sb && eb && sb != eb) { - n = sb; + // Add undo level if needed + l.content = l.content.replace(/^\s*|\s*$/g, ''); + la = t.data[t.index > 0 && (t.index == 0 || t.index == t.data.length) ? t.index - 1 : t.index]; + if (!l.initial && la && l.content == la.content) + return null; - while ((n = n.nextSibling) && n != eb) { - if (dom.isBlock(n)) - bl.push(n); + // Time to compress + if (s.custom_undo_redo_levels) { + if (t.data.length > s.custom_undo_redo_levels) { + for (i = 0; i < t.data.length - 1; i++) + t.data[i] = t.data[i + 1]; + + t.data.length--; + t.index = t.data.length; } } - if (eb && sb != eb) - bl.push(eb); + if (s.custom_undo_redo_restore_selection && !l.initial) + l.bookmark = b = l.bookmark || ed.selection.getBookmark(); - return bl; - } - }); -})(); + if (t.index < t.data.length) + t.index++; + // Only initial marked undo levels should be allowed as first item + // This to workaround a bug with Firefox and the blur event + if (t.data.length === 0 && !l.initial) + return null; -/* file:jscripts/tiny_mce/classes/UndoManager.js */ + // Add level + t.data.length = t.index + 1; + t.data[t.index++] = l; -tinymce.create('tinymce.UndoManager', { - index : 0, - data : null, - typing : 0, + if (l.initial) + t.index = 0; - UndoManager : function(ed) { - var t = this, Dispatcher = tinymce.util.Dispatcher; + // Set initial bookmark use first real undo level + if (t.data.length == 2 && t.data[0].initial) + t.data[0].bookmark = b; - t.editor = ed; - t.data = []; - t.onAdd = new Dispatcher(this); - t.onUndo = new Dispatcher(this); - t.onRedo = new Dispatcher(this); - }, + t.onAdd.dispatch(t, l); + ed.isNotDirty = 0; - add : function(l) { - var t = this, i, ed = t.editor, b, s = ed.settings, la; + //console.dir(t.data); - l = l || {}; - l.content = l.content || ed.getContent({format : 'raw', no_events : 1}); + return l; + }, - // Add undo level if needed - l.content = l.content.replace(/^\s*|\s*$/g, ''); - la = t.data[t.index > 0 ? t.index - 1 : 0]; - if (!l.initial && la && l.content == la.content) - return null; + undo : function() { + var t = this, ed = t.editor, l = l, i; - // Time to compress - if (s.custom_undo_redo_levels) { - if (t.data.length > s.custom_undo_redo_levels) { - for (i = 0; i < t.data.length - 1; i++) - t.data[i] = t.data[i + 1]; - - t.data.length--; - t.index = t.data.length; - } - } - - if (s.custom_undo_redo_restore_selection && !l.initial) - l.bookmark = b = l.bookmark || ed.selection.getBookmark(); - - if (t.index < t.data.length && t.data[t.index].initial) - t.index++; - - // Add level - t.data.length = t.index + 1; - t.data[t.index++] = l; - - if (l.initial) - t.index = 0; - - // Set initial bookmark use first real undo level - if (t.data.length == 2 && t.data[0].initial) - t.data[0].bookmark = b; - - t.onAdd.dispatch(t, l); - ed.isNotDirty = 0; - - //console.dir(t.data); - - return l; - }, - - undo : function() { - var t = this, ed = t.editor, l = l, i; - - if (t.typing) { - t.add(); - t.typing = 0; - } - - if (t.index > 0) { - // If undo on last index then take snapshot - if (t.index == t.data.length && t.index > 1) { - i = t.index; + if (t.typing) { + t.add(); t.typing = 0; - - if (!t.add()) - t.index = i; - - --t.index; } - l = t.data[--t.index]; - ed.setContent(l.content, {format : 'raw'}); - ed.selection.moveToBookmark(l.bookmark); + if (t.index > 0) { + // If undo on last index then take snapshot + if (t.index == t.data.length && t.index > 1) { + i = t.index; + t.typing = 0; - t.onUndo.dispatch(t, l); + if (!t.add()) + t.index = i; + + --t.index; + } + + l = t.data[--t.index]; + ed.setContent(l.content, {format : 'raw'}); + ed.selection.moveToBookmark(l.bookmark); + + t.onUndo.dispatch(t, l); + } + + return l; + }, + + redo : function() { + var t = this, ed = t.editor, l = null; + + if (t.index < t.data.length - 1) { + l = t.data[++t.index]; + ed.setContent(l.content, {format : 'raw'}); + ed.selection.moveToBookmark(l.bookmark); + + t.onRedo.dispatch(t, l); + } + + return l; + }, + + clear : function() { + var t = this; + + t.data = []; + t.index = 0; + t.typing = 0; + t.add({initial : true}); + }, + + hasUndo : function() { + return this.index != 0 || this.typing; + }, + + hasRedo : function() { + return this.index < this.data.length - 1; } - - return l; - }, - - redo : function() { - var t = this, ed = t.editor, l = null; - - if (t.index < t.data.length - 1) { - l = t.data[++t.index]; - ed.setContent(l.content, {format : 'raw'}); - ed.selection.moveToBookmark(l.bookmark); - - t.onRedo.dispatch(t, l); - } - - return l; - }, - - clear : function() { - var t = this; - - t.data = []; - t.index = 0; - t.typing = 0; - t.add({initial : true}); - }, - - hasUndo : function() { - return this.index != 0 || this.typing; - }, - - hasRedo : function() { - return this.index < this.data.length - 1; - } - }); -/* file:jscripts/tiny_mce/classes/ForceBlocks.js */ - -(function() { +})(tinymce); +(function(tinymce) { // Shorten names var Event, isIE, isGecko, isOpera, each, extend; @@ -9017,6 +11682,26 @@ tinymce.create('tinymce.UndoManager', { each = tinymce.each; extend = tinymce.extend; + // Checks if the selection/caret is at the end of the specified block element + function isAtEnd(rng, par) { + var rng2 = par.ownerDocument.createRange(); + + rng2.setStart(rng.endContainer, rng.endOffset); + rng2.setEndAfter(par); + + // Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element + return rng2.cloneContents().textContent.length == 0; + }; + + function isEmpty(n) { + n = n.innerHTML; + + n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars + n = n.replace(/<[^>]+>/g, ''); // Remove all tags + + return n.replace(/[ \t\r\n]+/g, '') == ''; + }; + tinymce.create('tinymce.ForceBlocks', { ForceBlocks : function(ed) { var t = this, s = ed.settings, elm; @@ -9028,11 +11713,11 @@ tinymce.create('tinymce.UndoManager', { ed.onPreInit.add(t.setup, t); - t.reOpera = new RegExp('(\u00a0| | )<\/' + elm + '>', 'gi'); - t.rePadd = new RegExp(']+)><\/p>|]+)\/>|]+)>\s+<\/p>|

<\/p>||

\s+<\/p>'.replace(/p/g, elm), 'gi'); - t.reNbsp2BR = new RegExp(']+)>[\s\u00a0]+<\/p>|

[\s\u00a0]+<\/p>'.replace(/p/g, elm), 'gi'); - t.reBR2Nbsp = new RegExp(']+)>\s*
\s*<\/p>|

\s*
\s*<\/p>'.replace(/p/g, elm), 'gi'); - t.reTrailBr = new RegExp('\s*
\s*<\/p>'.replace(/p/g, elm), 'gi'); + t.reOpera = new RegExp('(\\u00a0| | )<\/' + elm + '>', 'gi'); + t.rePadd = new RegExp(']+)><\\\/p>|]+)\\\/>|]+)>\\s+<\\\/p>|

<\\\/p>||

\\s+<\\\/p>'.replace(/p/g, elm), 'gi'); + t.reNbsp2BR1 = new RegExp(']+)>[\\s\\u00a0]+<\\\/p>|

[\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi'); + t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>( | )<\\\/%p>|<%p>( | )<\\\/%p>'.replace(/%p/g, elm), 'gi'); + t.reBR2Nbsp = new RegExp(']+)>\\s*
\\s*<\\\/p>|

\\s*
\\s*<\\\/p>'.replace(/p/g, elm), 'gi'); function padd(ed, o) { if (isOpera) @@ -9040,13 +11725,12 @@ tinymce.create('tinymce.UndoManager', { o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0'); - if (!isIE && o.set) { + if (!isIE && !isOpera && o.set) { // Use   instead of BR in padded paragraphs - o.content = o.content.replace(t.reNbsp2BR, '<' + elm + '$1$2>
'); - } else { + o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2>
'); + o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2>
'); + } else o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0'); - o.content = o.content.replace(t.reTrailBr, ''); - } }; ed.onBeforeSetContent.add(padd); @@ -9132,29 +11816,47 @@ tinymce.create('tinymce.UndoManager', { return ne; }; - // Replaces IE:s auto generated paragraphs with the specified element name - if (isIE && s.element != 'P') { - ed.onKeyPress.add(function(ed, e) { - t.lastElm = ed.selection.getNode().nodeName; - }); - - ed.onKeyUp.add(function(ed, e) { - var bl, sel = ed.selection, n = sel.getNode(), b = ed.getBody(); - - if (b.childNodes.length === 1 && n.nodeName == 'P') { - n = ren(n, s.element); - sel.select(n); - sel.collapse(); - ed.nodeChanged(); - } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') { - bl = ed.dom.getParent(n, 'P'); - - if (bl) { - ren(bl, s.element); - ed.nodeChanged(); - } + // Padd empty inline elements within block elements + // For example:

becomes

 

+ ed.onPreProcess.add(function(ed, o) { + each(ed.dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) { + if (isEmpty(p)) { + each(ed.dom.select('span,em,strong,b,i', o.node), function(n) { + if (!n.hasChildNodes()) { + n.appendChild(ed.getDoc().createTextNode('\u00a0')); + return false; // Break the loop one padding is enough + } + }); } }); + }); + + // IE specific fixes + if (isIE) { + // Replaces IE:s auto generated paragraphs with the specified element name + if (s.element != 'P') { + ed.onKeyPress.add(function(ed, e) { + t.lastElm = ed.selection.getNode().nodeName; + }); + + ed.onKeyUp.add(function(ed, e) { + var bl, sel = ed.selection, n = sel.getNode(), b = ed.getBody(); + + if (b.childNodes.length === 1 && n.nodeName == 'P') { + n = ren(n, s.element); + sel.select(n); + sel.collapse(); + ed.nodeChanged(); + } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') { + bl = ed.dom.getParent(n, 'p'); + + if (bl) { + ren(bl, s.element); + ed.nodeChanged(); + } + } + }); + } } }, @@ -9178,28 +11880,38 @@ tinymce.create('tinymce.UndoManager', { forceRoots : function(ed, e) { var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF; - var nx, bl, bp, sp, le, nl = b.childNodes, i; + var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid; // Fix for bug #1863847 - if (e && e.keyCode == 13) - return true; + //if (e && e.keyCode == 13) + // return true; // Wrap non blocks into blocks for (i = nl.length - 1; i >= 0; i--) { nx = nl[i]; // Is text or non block element - if (nx.nodeType == 3 || !t.dom.isBlock(nx)) { + if (nx.nodeType === 3 || (!t.dom.isBlock(nx) && nx.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(nx.nodeName))) { if (!bl) { // Create new block but ignore whitespace if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) { // Store selection if (si == -2 && r) { if (!isIE) { - so = r.startOffset; - eo = r.endOffset; - si = t.find(b, 0, r.startContainer); - ei = t.find(b, 0, r.endContainer); + // If selection is element then mark it + if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) { + // Save the id of the selected element + eid = n.getAttribute("id"); + n.setAttribute("id", "__mce"); + } else { + // If element is inside body, might not be the case in contentEdiable mode + if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) { + so = r.startOffset; + eo = r.endOffset; + si = t.find(b, 0, r.startContainer); + ei = t.find(b, 0, r.endContainer); + } + } } else { tr = d.body.createTextRange(); tr.moveToElementText(b); @@ -9219,9 +11931,11 @@ tinymce.create('tinymce.UndoManager', { } } + // Uses replaceChild instead of cloneNode since it removes selected attribute from option elements on IE + // See: http://support.microsoft.com/kb/829907 bl = ed.dom.create(ed.settings.forced_root_block); - bl.appendChild(nx.cloneNode(1)); nx.parentNode.replaceChild(bl, nx); + bl.appendChild(nx); } } else { if (bl.hasChildNodes()) @@ -9236,7 +11950,7 @@ tinymce.create('tinymce.UndoManager', { // Restore selection if (si != -2) { if (!isIE) { - bl = d.getElementsByTagName(ed.settings.element)[0]; + bl = b.getElementsByTagName(ed.settings.element)[0]; r = d.createRange(); // Select last location or generated block @@ -9267,6 +11981,18 @@ tinymce.create('tinymce.UndoManager', { // Ignore } } + } else if (!isIE && (n = ed.dom.get('__mce'))) { + // Restore the id of the selected element + if (eid) + n.setAttribute('id', eid); + else + n.removeAttribute('id'); + + // Move caret before selected element + r = d.createRange(); + r.setStartBefore(n); + r.setEndBefore(n); + se.setRng(r); } }, @@ -9277,16 +12003,8 @@ tinymce.create('tinymce.UndoManager', { }, insertPara : function(e) { - var t = this, ed = t.editor, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body; - var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n; - - function isEmpty(n) { - n = n.innerHTML; - n = n.replace(/<(img|hr|table)/gi, '-'); // Keep these convert them to - chars - n = n.replace(/<[^>]+>/g, ''); // Remove all tags - - return n.replace(/[ \t\r\n]+/g, '') == ''; - }; + var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body; + var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car; // If root blocks are forced then use Operas default behavior since it's really good // Removed due to bug: #1853816 @@ -9314,6 +12032,31 @@ tinymce.create('tinymce.UndoManager', { en = dir ? s.focusNode : s.anchorNode; eo = dir ? s.focusOffset : s.anchorOffset; + // If selection is in empty table cell + if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) { + if (sn.firstChild.nodeName == 'BR') + dom.remove(sn.firstChild); // Remove BR + + // Create two new block elements + if (sn.childNodes.length == 0) { + ed.dom.add(sn, se.element, null, '
'); + aft = ed.dom.add(sn, se.element, null, '
'); + } else { + n = sn.innerHTML; + sn.innerHTML = ''; + ed.dom.add(sn, se.element, null, n); + aft = ed.dom.add(sn, se.element, null, '
'); + } + + // Move caret into the last one + r = d.createRange(); + r.selectNodeContents(aft); + r.collapse(1); + ed.selection.setRng(r); + + return false; + } + // If the caret is in an invalid location in FF we need to move it into the first block if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) { sn = en = sn.firstChild; @@ -9336,23 +12079,23 @@ tinymce.create('tinymce.UndoManager', { bn = sb ? sb.nodeName : se.element; // Get block name to create // Return inside list use default browser behavior - if (t.dom.getParent(sb, function(n) { return /OL|UL|PRE/.test(n.nodeName); })) + if (t.dom.getParent(sb, 'ol,ul,pre')) return true; // If caption or absolute layers then always generate new blocks within - if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(sb.style.position))) { + if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { bn = se.element; sb = null; } // If caption or absolute layers then always generate new blocks within - if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(eb.style.position))) { + if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { bn = se.element; eb = null; } // Use P instead - if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(sb.style.cssFloat))) { + if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) { bn = se.element; sb = eb = null; } @@ -9365,7 +12108,7 @@ tinymce.create('tinymce.UndoManager', { aft.removeAttribute('id'); // Is header and cursor is at the end, then force paragraph under - if (/^(H[1-6])$/.test(bn) && sn.nodeValue && so == sn.nodeValue.length) + if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb)) aft = ed.dom.create(se.element); // Find start chop node @@ -9424,6 +12167,9 @@ tinymce.create('tinymce.UndoManager', { // Delete and replace it with new block elements r.deleteContents(); + if (isOpera) + ed.getWin().scrollTo(0, vp.y); + // Never wrap blocks in blocks if (bef.firstChild && bef.firstChild.nodeName == bn) bef.innerHTML = bef.firstChild.innerHTML; @@ -9435,11 +12181,42 @@ tinymce.create('tinymce.UndoManager', { if (isEmpty(bef)) bef.innerHTML = '
'; - if (isEmpty(aft)) - aft.innerHTML = isOpera ? ' ' : '
'; // Extra space for Opera so that the caret can move there + function appendStyles(e, en) { + var nl = [], nn, n, i; - // Opera needs this one backwards - if (isOpera) { + e.innerHTML = ''; + + // Make clones of style elements + if (se.keep_styles) { + n = en; + do { + // We only want style specific elements + if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) { + nn = n.cloneNode(false); + dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique + nl.push(nn); + } + } while (n = n.parentNode); + } + + // Append style elements to aft + if (nl.length > 0) { + for (i = nl.length - 1, nn = e; i >= 0; i--) + nn = nn.appendChild(nl[i]); + + // Padd most inner style element + nl[0].innerHTML = isOpera ? ' ' : '
'; // Extra space for Opera so that the caret can move there + return nl[0]; // Move caret to most inner element + } else + e.innerHTML = isOpera ? ' ' : '
'; // Extra space for Opera so that the caret can move there + }; + + // Fill empty afterblook with current style + if (isEmpty(aft)) + car = appendStyles(aft, en); + + // Opera needs this one backwards for older versions + if (isOpera && parseFloat(opera.version()) < 9.5) { r.insertNode(bef); r.insertNode(aft); } else { @@ -9451,34 +12228,97 @@ tinymce.create('tinymce.UndoManager', { aft.normalize(); bef.normalize(); + function first(n) { + return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false).nextNode() || n; + }; + // Move cursor and scroll into view r = d.createRange(); - r.selectNodeContents(aft); + r.selectNodeContents(isGecko ? first(car || aft) : car || aft); r.collapse(1); s.removeAllRanges(); s.addRange(r); - // Safari bug fix, http://bugs.webkit.org/show_bug.cgi?id=16117 - if (tinymce.isWebKit) - ed.getWin().scrollTo(0, ed.dom.getPos(aft).y); - else - aft.scrollIntoView(0); + // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs + y = ed.dom.getPos(aft).y; + ch = aft.clientHeight; + + // Is element within viewport + if (y < vp.y || y + ch > vp.y + vp.h) { + ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks + //console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight)); + } return false; }, backspaceDelete : function(e, bs) { - var t = this, ed = t.editor, b = ed.getBody(), n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n; + var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn; + + /* + var par, rng, nextBlock; + + // Delete key will not merge paragraphs on Gecko so we need to do this manually + // Hitting the delete key at the following caret position doesn't merge the elements

A|

B

+ // This logic will merge them into this:

A|B

+ if (e.keyCode == 46) { + if (r.collapsed) { + par = dom.getParent(sc, 'p,h1,h2,h3,h4,h5,h6,div'); + + if (par) { + rng = dom.createRng(); + + rng.setStart(sc, r.startOffset); + rng.setEndAfter(par); + + // Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element + if (dom.getOuterHTML(rng.cloneContents()).replace(/<[^>]+>/g, '').length == 0) { + nextBlock = dom.getNext(par, 'p,h1,h2,h3,h4,h5,h6,div'); + + // Copy all children from next sibling block and remove it + if (nextBlock) { + each(nextBlock.childNodes, function(node) { + par.appendChild(node.cloneNode(true)); + }); + + dom.remove(nextBlock); + } + + // Block the default even since the Gecko team might eventually fix this + // We will remove this logic once they do we can't feature detect this one + e.preventDefault(); + return; + } + } + } + } + */ // The caret sometimes gets stuck in Gecko if you delete empty paragraphs // This workaround removes the element by hand and moves the caret to the previous element - if (sc && ed.dom.isBlock(sc) && bs) { - if (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR') { - n = sc.previousSibling; + if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) { + if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) { + // Find previous block element + n = sc; + while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ; + if (n) { - ed.dom.remove(sc); - se.select(n.firstChild); - se.collapse(0); + if (sc != b.firstChild) { + // Find last text node + w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); + while (tn = w.nextNode()) + n = tn; + + // Place caret at the end of last text node + r = ed.getDoc().createRange(); + r.setStart(n, n.nodeValue ? n.nodeValue.length : 0); + r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0); + se.setRng(r); + + // Remove the target container + ed.dom.remove(sc); + } + return Event.cancel(e); } } @@ -9486,12 +12326,24 @@ tinymce.create('tinymce.UndoManager', { // Gecko generates BR elements here and there, we don't like those so lets remove them function handler(e) { + var pr; + e = e.target; // A new BR was created in a block element, remove it - if (e && e.parentNode && e.nodeName == 'BR' && t.getParentBlock(e)) { - ed.dom.remove(e); + if (e && e.parentNode && e.nodeName == 'BR' && (n = t.getParentBlock(e))) { + pr = e.previousSibling; + Event.remove(b, 'DOMNodeInserted', handler); + + // Is there whitespace at the end of the node before then we might need the pesky BR + // to place the caret at a correct location see bug: #2013943 + if (pr && pr.nodeType == 3 && /\s+$/.test(pr.nodeValue)) + return; + + // Only remove BR elements that got inserted in the middle of the text + if (e.previousSibling || e.nextSibling) + ed.dom.remove(e); } }; @@ -9504,11 +12356,8 @@ tinymce.create('tinymce.UndoManager', { }, 1); } }); -})(); - -/* file:jscripts/tiny_mce/classes/ControlManager.js */ - -(function() { +})(tinymce); +(function(tinymce) { // Shorten names var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend; @@ -9522,6 +12371,7 @@ tinymce.create('tinymce.UndoManager', { t.onAdd = new tinymce.util.Dispatcher(t); t.onPostRender = new tinymce.util.Dispatcher(t); t.prefix = s.prefix || ed.id + '_'; + t._cls = {}; t.onPostRender.add(function() { each(t.controls, function(c) { @@ -9587,8 +12437,8 @@ tinymce.create('tinymce.UndoManager', { return t.add(c); }, - createDropMenu : function(id, s) { - var t = this, ed = t.editor, c, bm, v; + createDropMenu : function(id, s, cc) { + var t = this, ed = t.editor, c, bm, v, cls; s = extend({ 'class' : 'mceDropDown', @@ -9600,7 +12450,8 @@ tinymce.create('tinymce.UndoManager', { s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1); id = t.prefix + id; - c = t.controls[id] = new tinymce.ui.DropMenu(id, s); + cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu; + c = t.controls[id] = new cls(id, s); c.onAddItem.add(function(c, o) { var s = o.settings; @@ -9620,25 +12471,25 @@ tinymce.create('tinymce.UndoManager', { // Fix for bug #1897785, #1898007 if (tinymce.isIE) { c.onShowMenu.add(function() { - var s = ed.selection, n = s.getNode(); + // IE 8 needs focus in order to store away a range with the current collapsed caret location + ed.focus(); - if (n.nodeName == 'IMG') - bm = s.getBookmark(); - else - bm = 0; + bm = ed.selection.getBookmark(1); }); c.onHideMenu.add(function() { - if (bm) + if (bm) { ed.selection.moveToBookmark(bm); + bm = 0; + } }); } return t.add(c); }, - createListBox : function(id, s) { - var t = this, ed = t.editor, cmd, c; + createListBox : function(id, s, cc) { + var t = this, ed = t.editor, cmd, c, cls; if (t.get(id)) return null; @@ -9663,8 +12514,10 @@ tinymce.create('tinymce.UndoManager', { if (ed.settings.use_native_selects) c = new tinymce.ui.NativeListBox(id, s); - else - c = new tinymce.ui.ListBox(id, s); + else { + cls = cc || t._cls.listbox || tinymce.ui.ListBox; + c = new cls(id, s); + } t.controls[id] = c; @@ -9673,7 +12526,7 @@ tinymce.create('tinymce.UndoManager', { c.onPostRender.add(function(c, n) { // Store bookmark on mousedown Event.add(n, 'mousedown', function() { - ed.bookmark = ed.selection.getBookmark('simple'); + ed.bookmark = ed.selection.getBookmark(1); }); // Restore on focus, since it might be lost @@ -9690,13 +12543,14 @@ tinymce.create('tinymce.UndoManager', { return t.add(c); }, - createButton : function(id, s) { - var t = this, ed = t.editor, o, c; + createButton : function(id, s, cc) { + var t = this, ed = t.editor, o, c, cls; if (t.get(id)) return null; s.title = ed.translate(s.title); + s.label = ed.translate(s.label); s.scope = s.scope || ed; if (!s.onclick && !s.menu_button) { @@ -9716,23 +12570,26 @@ tinymce.create('tinymce.UndoManager', { id = t.prefix + id; if (s.menu_button) { - c = new tinymce.ui.MenuButton(id, s); + cls = cc || t._cls.menubutton || tinymce.ui.MenuButton; + c = new cls(id, s); ed.onMouseDown.add(c.hideMenu, c); - } else - c = new tinymce.ui.Button(id, s); + } else { + cls = t._cls.button || tinymce.ui.Button; + c = new cls(id, s); + } return t.add(c); }, - createMenuButton : function(id, s) { + createMenuButton : function(id, s, cc) { s = s || {}; s.menu_button = 1; - return this.createButton(id, s); + return this.createButton(id, s, cc); }, - createSplitButton : function(id, s) { - var t = this, ed = t.editor, cmd, c; + createSplitButton : function(id, s, cc) { + var t = this, ed = t.editor, cmd, c, cls; if (t.get(id)) return null; @@ -9760,14 +12617,15 @@ tinymce.create('tinymce.UndoManager', { }, s); id = t.prefix + id; - c = t.add(new tinymce.ui.SplitButton(id, s)); + cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton; + c = t.add(new cls(id, s)); ed.onMouseDown.add(c.hideMenu, c); return c; }, - createColorSplitButton : function(id, s) { - var t = this, ed = t.editor, cmd, c; + createColorSplitButton : function(id, s, cc) { + var t = this, ed = t.editor, cmd, c, cls, bm; if (t.get(id)) return null; @@ -9777,6 +12635,9 @@ tinymce.create('tinymce.UndoManager', { if (!s.onclick) { s.onclick = function(v) { + if (tinymce.isIE) + bm = ed.selection.getBookmark(1); + ed.execCommand(s.cmd, s.ui || false, v || s.value); }; } @@ -9796,7 +12657,8 @@ tinymce.create('tinymce.UndoManager', { }, s); id = t.prefix + id; - c = new tinymce.ui.ColorSplitButton(id, s); + cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton; + c = new cls(id, s); ed.onMouseDown.add(c.hideMenu, c); // Remove the menu element when the editor is removed @@ -9804,14 +12666,31 @@ tinymce.create('tinymce.UndoManager', { c.destroy(); }); + // Fix for bug #1897785, #1898007 + if (tinymce.isIE) { + c.onShowMenu.add(function() { + // IE 8 needs focus in order to store away a range with the current collapsed caret location + ed.focus(); + bm = ed.selection.getBookmark(1); + }); + + c.onHideMenu.add(function() { + if (bm) { + ed.selection.moveToBookmark(bm); + bm = 0; + } + }); + } + return t.add(c); }, - createToolbar : function(id, s) { - var c, t = this; + createToolbar : function(id, s, cc) { + var c, t = this, cls; id = t.prefix + id; - c = new tinymce.ui.Toolbar(id, s); + cls = cc || t._cls.toolbar || tinymce.ui.Toolbar; + c = new cls(id, s); if (t.get(id)) return null; @@ -9819,16 +12698,26 @@ tinymce.create('tinymce.UndoManager', { return t.add(c); }, - createSeparator : function() { - return new tinymce.ui.Separator(); + createSeparator : function(cc) { + var cls = cc || this._cls.separator || tinymce.ui.Separator; + + return new cls(); + }, + + setControlType : function(n, c) { + return this._cls[n.toLowerCase()] = c; + }, + + destroy : function() { + each(this.controls, function(c) { + c.destroy(); + }); + + this.controls = null; } - - }); -})(); - -/* file:jscripts/tiny_mce/classes/WindowManager.js */ - -(function() { + }); +})(tinymce); +(function(tinymce) { var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera; tinymce.create('tinymce.WindowManager', { @@ -9868,8 +12757,7 @@ tinymce.create('tinymce.UndoManager', { s.dialogWidth = s.width + 'px'; s.dialogHeight = s.height + 'px'; s.scroll = s.scrollbars || false; - } else - s.modal = s.alwaysRaised = s.dialog = s.centerscreen = s.dependent = true; + } } // Build features string @@ -9890,13 +12778,12 @@ tinymce.create('tinymce.UndoManager', { t.onOpen.dispatch(t, s, p); u = s.url || s.file; - if (tinymce.relaxedDomain) - u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain; + u = tinymce._addVer(u); try { if (isIE && mo) { w = 1; - window.showModalDialog(s.url || s.file, window, f); + window.showModalDialog(u, window, f); } else w = window.open(u, s.name, f); } catch (ex) { @@ -9918,15 +12805,20 @@ tinymce.create('tinymce.UndoManager', { return new f(a, b, c, d, e); }, - confirm : function(t, cb, s) { - cb.call(s || this, confirm(this._decode(this.editor.getLang(t, t)))); + confirm : function(t, cb, s, w) { + w = w || window; + + cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t)))); }, - alert : function(t, cb, s) { - alert(this._decode(t)); + alert : function(tx, cb, s, w) { + var t = this; + + w = w || window; + w.alert(t._decode(t.editor.getLang(tx, tx))); if (cb) - cb.call(s || this); + cb.call(s || t); }, // Internal functions @@ -9934,6 +12826,406 @@ tinymce.create('tinymce.UndoManager', { _decode : function(s) { return tinymce.DOM.decode(s).replace(/\\n/g, '\n'); } + }); +}(tinymce));(function(tinymce) { + tinymce.CommandManager = function() { + var execCommands = {}, queryStateCommands = {}, queryValueCommands = {}; + function add(collection, cmd, func, scope) { + if (typeof(cmd) == 'string') + cmd = [cmd]; + + tinymce.each(cmd, function(cmd) { + collection[cmd.toLowerCase()] = {func : func, scope : scope}; + }); + }; + + tinymce.extend(this, { + add : function(cmd, func, scope) { + add(execCommands, cmd, func, scope); + }, + + addQueryStateHandler : function(cmd, func, scope) { + add(queryStateCommands, cmd, func, scope); + }, + + addQueryValueHandler : function(cmd, func, scope) { + add(queryValueCommands, cmd, func, scope); + }, + + execCommand : function(scope, cmd, ui, value, args) { + if (cmd = execCommands[cmd.toLowerCase()]) { + if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false) + return true; + } + }, + + queryCommandValue : function() { + if (cmd = queryValueCommands[cmd.toLowerCase()]) + return cmd.func.call(scope || cmd.scope, ui, value, args); + }, + + queryCommandState : function() { + if (cmd = queryStateCommands[cmd.toLowerCase()]) + return cmd.func.call(scope || cmd.scope, ui, value, args); + } }); -}()); \ No newline at end of file + }; + + tinymce.GlobalCommands = new tinymce.CommandManager(); +})(tinymce);(function(tinymce) { + function processRange(dom, start, end, callback) { + var ancestor, n, startPoint, endPoint, sib; + + function findEndPoint(n, c) { + do { + if (n.parentNode == c) + return n; + + n = n.parentNode; + } while(n); + }; + + function process(n) { + callback(n); + tinymce.walk(n, callback, 'childNodes'); + }; + + // Find common ancestor and end points + ancestor = dom.findCommonAncestor(start, end); + startPoint = findEndPoint(start, ancestor) || start; + endPoint = findEndPoint(end, ancestor) || end; + + // Process left leaf + for (n = start; n && n != startPoint; n = n.parentNode) { + for (sib = n.nextSibling; sib; sib = sib.nextSibling) + process(sib); + } + + // Process middle from start to end point + if (startPoint != endPoint) { + for (n = startPoint.nextSibling; n && n != endPoint; n = n.nextSibling) + process(n); + } else + process(startPoint); + + // Process right leaf + for (n = end; n && n != endPoint; n = n.parentNode) { + for (sib = n.previousSibling; sib; sib = sib.previousSibling) + process(sib); + } + }; + + tinymce.GlobalCommands.add('RemoveFormat', function() { + var ed = this, dom = ed.dom, s = ed.selection, r = s.getRng(1), nodes = [], bm, start, end, sc, so, ec, eo, n; + + function findFormatRoot(n) { + var sp; + + dom.getParent(n, function(n) { + if (dom.is(n, ed.getParam('removeformat_selector'))) + sp = n; + + return dom.isBlock(n); + }, ed.getBody()); + + return sp; + }; + + function collect(n) { + if (dom.is(n, ed.getParam('removeformat_selector'))) + nodes.push(n); + }; + + function walk(n) { + collect(n); + tinymce.walk(n, collect, 'childNodes'); + }; + + bm = s.getBookmark(); + sc = r.startContainer; + ec = r.endContainer; + so = r.startOffset; + eo = r.endOffset; + sc = sc.nodeType == 1 ? sc.childNodes[Math.min(so, sc.childNodes.length - 1)] : sc; + ec = ec.nodeType == 1 ? ec.childNodes[Math.min(so == eo ? eo : eo - 1, ec.childNodes.length - 1)] : ec; + + // Same container + if (sc == ec) { // TEXT_NODE + start = findFormatRoot(sc); + + // Handle single text node + if (sc.nodeType == 3) { + if (start && start.nodeType == 1) { // ELEMENT + n = sc.splitText(so); + n.splitText(eo - so); + dom.split(start, n); + + s.moveToBookmark(bm); + } + + return; + } + + // Handle single element + walk(dom.split(start, sc) || sc); + } else { + // Find start/end format root + start = findFormatRoot(sc); + end = findFormatRoot(ec); + + // Split start text node + if (start) { + if (sc.nodeType == 3) { // TEXT + // Since IE doesn't support white space nodes in the DOM we need to + // add this invisible character so that the splitText function can split the contents + if (so == sc.nodeValue.length) + sc.nodeValue += '\uFEFF'; // Yet another pesky IE fix + + sc = sc.splitText(so); + } + } + + // Split end text node + if (end) { + if (ec.nodeType == 3) // TEXT + ec.splitText(eo); + } + + // If the start and end format root is the same then we need to wrap + // the end node in a span since the split calls might change the reference + // Example:

x[yz---12]3

+ if (start && start == end) + dom.replace(dom.create('span', {id : '__end'}, ec.cloneNode(true)), ec); + + // Split all start containers down to the format root + if (start) + start = dom.split(start, sc); + else + start = sc; + + // If there is a span wrapper use that one instead + if (n = dom.get('__end')) { + ec = n; + end = findFormatRoot(ec); + } + + // Split all end containers down to the format root + if (end) + end = dom.split(end, ec); + else + end = ec; + + // Collect nodes in between + processRange(dom, start, end, collect); + + // Remove invisible character for IE workaround if we find it + if (sc.nodeValue == '\uFEFF') + sc.nodeValue = ''; + + // Process start/end container elements + walk(ec); + walk(sc); + } + + // Remove all collected nodes + tinymce.each(nodes, function(n) { + dom.remove(n, 1); + }); + + // Remove leftover wrapper + dom.remove('__end', 1); + + s.moveToBookmark(bm); + }); +})(tinymce); +(function(tinymce) { + tinymce.GlobalCommands.add('mceBlockQuote', function() { + var ed = this, s = ed.selection, dom = ed.dom, sb, eb, n, bm, bq, r, bq2, i, nl; + + function getBQ(e) { + return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';}); + }; + + // Get start/end block + sb = dom.getParent(s.getStart(), dom.isBlock); + eb = dom.getParent(s.getEnd(), dom.isBlock); + + // Remove blockquote(s) + if (bq = getBQ(sb)) { + if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR')) + bm = s.getBookmark(); + + // Move all elements after the end block into new bq + if (getBQ(eb)) { + bq2 = bq.cloneNode(false); + + while (n = eb.nextSibling) + bq2.appendChild(n.parentNode.removeChild(n)); + } + + // Add new bq after + if (bq2) + dom.insertAfter(bq2, bq); + + // Move all selected blocks after the current bq + nl = s.getSelectedBlocks(sb, eb); + for (i = nl.length - 1; i >= 0; i--) { + dom.insertAfter(nl[i], bq); + } + + // Empty bq, then remove it + if (/^\s*$/.test(bq.innerHTML)) + dom.remove(bq, 1); // Keep children so boomark restoration works correctly + + // Empty bq, then remote it + if (bq2 && /^\s*$/.test(bq2.innerHTML)) + dom.remove(bq2, 1); // Keep children so boomark restoration works correctly + + if (!bm) { + // Move caret inside empty block element + if (!tinymce.isIE) { + r = ed.getDoc().createRange(); + r.setStart(sb, 0); + r.setEnd(sb, 0); + s.setRng(r); + } else { + s.select(sb); + s.collapse(0); + + // IE misses the empty block some times element so we must move back the caret + if (dom.getParent(s.getStart(), dom.isBlock) != sb) { + r = s.getRng(); + r.move('character', -1); + r.select(); + } + } + } else + ed.selection.moveToBookmark(bm); + + return; + } + + // Since IE can start with a totally empty document we need to add the first bq and paragraph + if (tinymce.isIE && !sb && !eb) { + ed.getDoc().execCommand('Indent'); + n = getBQ(s.getNode()); + n.style.margin = n.dir = ''; // IE adds margin and dir to bq + return; + } + + if (!sb || !eb) + return; + + // If empty paragraph node then do not use bookmark + if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR')) + bm = s.getBookmark(); + + // Move selected block elements into a bq + tinymce.each(s.getSelectedBlocks(getBQ(s.getStart()), getBQ(s.getEnd())), function(e) { + // Found existing BQ add to this one + if (e.nodeName == 'BLOCKQUOTE' && !bq) { + bq = e; + return; + } + + // No BQ found, create one + if (!bq) { + bq = dom.create('blockquote'); + e.parentNode.insertBefore(bq, e); + } + + // Add children from existing BQ + if (e.nodeName == 'BLOCKQUOTE' && bq) { + n = e.firstChild; + + while (n) { + bq.appendChild(n.cloneNode(true)); + n = n.nextSibling; + } + + dom.remove(e); + return; + } + + // Add non BQ element to BQ + bq.appendChild(dom.remove(e)); + }); + + if (!bm) { + // Move caret inside empty block element + if (!tinymce.isIE) { + r = ed.getDoc().createRange(); + r.setStart(sb, 0); + r.setEnd(sb, 0); + s.setRng(r); + } else { + s.select(sb); + s.collapse(1); + } + } else + s.moveToBookmark(bm); + }); +})(tinymce); +(function(tinymce) { + tinymce.each(['Cut', 'Copy', 'Paste'], function(cmd) { + tinymce.GlobalCommands.add(cmd, function() { + var ed = this, doc = ed.getDoc(); + + try { + doc.execCommand(cmd, false, null); + + // On WebKit the command will just be ignored if it's not enabled + if (!doc.queryCommandEnabled(cmd)) + throw 'Error'; + } catch (ex) { + if (tinymce.isGecko) { + ed.windowManager.confirm(ed.getLang('clipboard_msg'), function(s) { + if (s) + open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank'); + }); + } else + ed.windowManager.alert(ed.getLang('clipboard_no_support')); + } + }); + }); +})(tinymce); +(function(tinymce) { + tinymce.GlobalCommands.add('InsertHorizontalRule', function() { + if (tinymce.isOpera) + return this.getDoc().execCommand('InsertHorizontalRule', false, ''); + + this.selection.setContent('
'); + }); +})(tinymce); +(function() { + var cmds = tinymce.GlobalCommands; + + cmds.add(['mceEndUndoLevel', 'mceAddUndoLevel'], function() { + this.undoManager.add(); + }); + + cmds.add('Undo', function() { + var ed = this; + + if (ed.settings.custom_undo_redo) { + ed.undoManager.undo(); + ed.nodeChanged(); + return true; + } + + return false; // Run browser command + }); + + cmds.add('Redo', function() { + var ed = this; + + if (ed.settings.custom_undo_redo) { + ed.undoManager.redo(); + ed.nodeChanged(); + return true; + } + + return false; // Run browser command + }); +})(); diff --git a/www/extras/tinymce/jscripts/tiny_mce/utils/editable_selects.js b/www/extras/tinymce/jscripts/tiny_mce/utils/editable_selects.js index 9b40922c0..fff496392 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/utils/editable_selects.js +++ b/www/extras/tinymce/jscripts/tiny_mce/utils/editable_selects.js @@ -1,5 +1,5 @@ /** - * $Id: editable_selects.js 520 2008-01-07 16:30:32Z spocke $ + * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $ * * Makes select boxes editable. * @@ -39,6 +39,7 @@ var TinyMCE_EditableSelects = { se.style.display = 'none'; ne.focus(); ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput; + ne.onkeydown = TinyMCE_EditableSelects.onKeyDown; TinyMCE_EditableSelects.editSelectElm = se; } }, @@ -57,5 +58,12 @@ var TinyMCE_EditableSelects = { se.parentNode.removeChild(se.previousSibling); TinyMCE_EditableSelects.editSelectElm = null; } + }, + + onKeyDown : function(e) { + e = e || window.event; + + if (e.keyCode == 13) + TinyMCE_EditableSelects.onBlurEditableSelectInput(); } }; diff --git a/www/extras/tinymce/jscripts/tiny_mce/utils/form_utils.js b/www/extras/tinymce/jscripts/tiny_mce/utils/form_utils.js index c1f140904..9bc2bad4b 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/utils/form_utils.js +++ b/www/extras/tinymce/jscripts/tiny_mce/utils/form_utils.js @@ -1,5 +1,5 @@ /** - * $Id: form_utils.js 673 2008-03-06 13:26:20Z spocke $ + * $Id: form_utils.js 1184 2009-08-11 11:47:27Z spocke $ * * Various form utilitiy functions. * @@ -13,7 +13,7 @@ function getColorPickerHTML(id, target_form_element) { var h = ""; h += ''; - h += ''; + h += ' '; return h; } @@ -50,7 +50,7 @@ function getBrowserHTML(id, target_form_element, type, prefix) { html = ""; html += ''; - html += ''; + html += ' '; return html; } @@ -92,7 +92,7 @@ function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { function getSelectValue(form_obj, field_name) { var elm = form_obj.elements[field_name]; - if (elm == null || elm.options == null) + if (elm == null || elm.options == null || elm.selectedIndex === -1) return ""; return elm.options[elm.selectedIndex].value; diff --git a/www/extras/tinymce/jscripts/tiny_mce/utils/mctabs.js b/www/extras/tinymce/jscripts/tiny_mce/utils/mctabs.js index 1ece6d247..284501ee9 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/utils/mctabs.js +++ b/www/extras/tinymce/jscripts/tiny_mce/utils/mctabs.js @@ -1,5 +1,5 @@ /** - * $Id: mctabs.js 520 2008-01-07 16:30:32Z spocke $ + * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $ * * Moxiecode DHTML Tabs script. * @@ -8,7 +8,7 @@ */ function MCTabs() { - this.settings = new Array(); + this.settings = []; }; MCTabs.prototype.init = function(settings) { @@ -28,17 +28,19 @@ MCTabs.prototype.getParam = function(name, default_value) { }; MCTabs.prototype.displayTab = function(tab_id, panel_id) { - var panelElm = document.getElementById(panel_id); - var panelContainerElm = panelElm ? panelElm.parentNode : null; - var tabElm = document.getElementById(tab_id); - var tabContainerElm = tabElm ? tabElm.parentNode : null; - var selectionClass = this.getParam('selection_class', 'current'); + var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i; + + panelElm= document.getElementById(panel_id); + panelContainerElm = panelElm ? panelElm.parentNode : null; + tabElm = document.getElementById(tab_id); + tabContainerElm = tabElm ? tabElm.parentNode : null; + selectionClass = this.getParam('selection_class', 'current'); if (tabElm && tabContainerElm) { - var nodes = tabContainerElm.childNodes; + nodes = tabContainerElm.childNodes; // Hide all other tabs - for (var i=0; i Date: Fri, 16 Oct 2009 14:31:26 -0700 Subject: [PATCH 05/17] Fix a typo in Asset->checkView, which redirected assets in the clipboard to the trash instead. Fixes bug #11139. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset.pm | 2 +- t/Asset/Asset.t | 64 +++++++++++++++++++++++++++++++++------- 3 files changed, 56 insertions(+), 11 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index fa7ee03de..a7b86a878 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -21,6 +21,7 @@ - fixed #11128: Thing breaks w/ default value for date field - fixed #10888: Issues with adding points to Maps - fixed #10993: Editor drops last letter if s + - fixed #11139: referencing an item in the clipboard 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index e8e222ec0..9e992a8f0 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -326,7 +326,7 @@ sub checkView { return "chunked"; } elsif ($var->isAdminOn && $self->get("state") =~ /^clipboard/) { # show em clipboard - my $queryFrag = "func=manageTrash"; + my $queryFrag = "func=manageClipboard"; if ($self->session->form->process('revision')) { $queryFrag .= ";revision=".$self->session->form->process('revision'); } diff --git a/t/Asset/Asset.t b/t/Asset/Asset.t index aaca25101..248d3cac8 100644 --- a/t/Asset/Asset.t +++ b/t/Asset/Asset.t @@ -63,15 +63,14 @@ $testGroups{'canEdit asset'} = WebGUI::Group->new($session, 'new'); $testUsers{'canEdit group user'} = WebGUI::User->new($session, 'new'); $testUsers{'canEdit group user'}->addToGroups([$testGroups{'canEdit asset'}->getId]); $testUsers{'canEdit group user'}->username('Edit Group User'); -WebGUI::Test->groupsToDelete($testGroups{'canEdit asset'}); +addToCleanup($testGroups{'canEdit asset'}); ##A group and user for groupIdEdit $testGroups{'canAdd asset'} = WebGUI::Group->new($session, 'new'); $testUsers{'canAdd group user'} = WebGUI::User->new($session, 'new'); $testUsers{'canAdd group user'}->addToGroups([$testGroups{'canAdd asset'}->getId]); $testUsers{'canEdit group user'}->username('Can Add Group User'); -WebGUI::Test->groupsToDelete($testGroups{'canAdd asset'}); -WebGUI::Test->usersToDelete(values %testUsers); +addToCleanup($testGroups{'canAdd asset'}, values %testUsers); my $canAddMaker = WebGUI::Test::Maker::Permission->new(); $canAddMaker->prepare({ @@ -104,7 +103,7 @@ $properties = { }; my $versionTag2 = WebGUI::VersionTag->getWorking($session); -WebGUI::Test->tagsToRollback($versionTag2); +addToCleanup($versionTag2); my $canEditAsset = $rootAsset->addChild($properties, $properties->{id}); @@ -120,7 +119,7 @@ $canEditMaker->prepare({ }); my $versionTag3 = WebGUI::VersionTag->getWorking($session); -WebGUI::Test->tagsToRollback($versionTag3); +addToCleanup($versionTag3); $properties = { # '1234567890123456789012' id => 'canViewAsset0000000010', @@ -153,7 +152,7 @@ $canViewMaker->prepare( }, ); -plan tests => 116 +plan tests => 126 + scalar(@fixIdTests) + scalar(@fixTitleTests) + 2*scalar(@getTitleTests) #same tests used for getTitle and getMenuTitle @@ -303,7 +302,7 @@ $session->{_request} = $origRequest; ################################################################ my $versionTag = WebGUI::VersionTag->getWorking($session); -WebGUI::Test->tagsToRollback($versionTag); +addToCleanup($versionTag); $versionTag->set({name=>"Asset tests"}); $properties = { @@ -744,7 +743,7 @@ $product3->purge; ################################################################ my $versionTag4 = WebGUI::VersionTag->getWorking($session); -WebGUI::Test->tagsToRollback($versionTag4); +addToCleanup($versionTag4); $versionTag4->set( { name => 'inheritUrlFromParent tests' } ); $properties = { @@ -890,7 +889,6 @@ $session->log->warn('parent asset is now committed'); is( $testVersionTag->get('isCommitted'), 1, 'parent asset is now committed' ); $childVersionTag = WebGUI::VersionTag->new( $session, $childAsset->get('tagId') ); -$session->log->warn('child asset is now committed'); is( $childVersionTag->get('isCommitted'), 1, 'child asset is now committed' ); ################################################################ @@ -901,12 +899,58 @@ is( $childVersionTag->get('isCommitted'), 1, 'child asset is now committed' ); my $assetToCommit = $defaultAsset->addChild({ className => 'WebGUI::Asset::Snippet', title => 'Snippet to commit and clone from db', }); my $cloneTag = WebGUI::VersionTag->getWorking($session); -WebGUI::Test->tagsToRollback($cloneTag); +addToCleanup($cloneTag); $cloneTag->commit; is($assetToCommit->get('status'), 'pending', 'cloneFromDb: local asset is still pending'); $assetToCommit = $assetToCommit->cloneFromDb; is($assetToCommit->get('status'), 'approved', '... returns fresh, commited asset from the db'); +################################################################ +# +# checkView +# +################################################################ + +my $trashedAsset = $defaultAsset->addChild({ + className => 'WebGUI::Asset::Snippet', title => 'Trashy', +}); + +my $clippedAsset = $defaultAsset->addChild({ + className => 'WebGUI::Asset::Snippet', title => 'Clippy', +}); + +my $checkTag = WebGUI::VersionTag->getWorking($session); +$checkTag->commit; +addToCleanup($checkTag); +$trashedAsset = $trashedAsset->cloneFromDb; +$clippedAsset = $clippedAsset->cloneFromDb; +$trashedAsset->trash; +$clippedAsset->cut; +is $trashedAsset->get('state'), 'trash', 'checkView setup: trashed an asset'; +is $clippedAsset->get('state'), 'clipboard', '... clipped an asset'; + +$session->var->switchAdminOff; +$session->http->setRedirectLocation(''); +$session->http->setStatus(200, 'OK'); + +$trashedAsset->checkView(); +is $session->http->getStatus, 410, '... status set to 410 for trashed asset'; +is $session->http->getRedirectLocation, '', '... no redirect set'; + +$session->http->setStatus(200, 'OK'); +$clippedAsset->checkView(); +is $session->http->getStatus, 410, '... status set to 410 for cut asset'; +is $session->http->getRedirectLocation, '', '... no redirect set'; + +$session->var->switchAdminOn; +$session->http->setStatus(200, 'OK'); +is $trashedAsset->checkView(), 'chunked', '... returns "chunked" when admin is on for trashed asset'; +is $session->http->getRedirectLocation, $trashedAsset->getUrl('func=manageTrash'), '... trashed asset sets redirect to manageTrash'; + +$session->http->setRedirectLocation(''); +is $clippedAsset->checkView(), 'chunked', 'checkView: returns "chunked" when admin is on for cut asset'; +is $session->http->getRedirectLocation, $clippedAsset->getUrl('func=manageClipboard'), '... cut asset sets redirect to manageClipboard'; + ##Return an array of hashrefs. Each hashref describes a test ##for the fixId method. From 9d52245135f2ae587d5f2ac7fde1dfb6199ff56a Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 16 Oct 2009 16:19:34 -0700 Subject: [PATCH 06/17] Fix WikiMaster i18n for attachment help. --- lib/WebGUI/i18n/English/Asset_WikiMaster.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/WebGUI/i18n/English/Asset_WikiMaster.pm b/lib/WebGUI/i18n/English/Asset_WikiMaster.pm index 8fca0288b..7fb044c8a 100644 --- a/lib/WebGUI/i18n/English/Asset_WikiMaster.pm +++ b/lib/WebGUI/i18n/English/Asset_WikiMaster.pm @@ -9,8 +9,8 @@ our $I18N = { }, 'allow attachments help' => { lastUpdated => 0, - message => q|?|, - context => "The number of attachments that are allowed to be placed on each wiki page." + message => q|The number of attachments that are allowed to be placed on each wiki page.|, + context => "Hover help for edit form.", }, 'assetName' => { lastUpdated => 1160157064, message => 'Wiki' }, 'asset description' => { lastUpdated => 1160157064, message => q|A wiki is a collaborative content publishing mechanism. Traditionally wiki's use the wiki markup language, but that's generally not much easier to deal with than HTML, so WebGUI's wiki instead just uses a rich editor to help users publish rich great looking content.| }, From 846b957a789f605402adcfb1deff167d93429fd9 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 16 Oct 2009 16:53:53 -0700 Subject: [PATCH 07/17] Fix upgrade error that was hit on 7.7.21 to 7.7.22. Fixes bug #11146 --- docs/changelog/7.x.x.txt | 1 + docs/upgrades/upgrade_7.8.1-7.8.2.pl | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index a7b86a878..f1434f774 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -22,6 +22,7 @@ - fixed #10888: Issues with adding points to Maps - fixed #10993: Editor drops last letter if s - fixed #11139: referencing an item in the clipboard + - fixed #11146: Upgrade Error 7.7.21 to 7.7.22 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/docs/upgrades/upgrade_7.8.1-7.8.2.pl b/docs/upgrades/upgrade_7.8.1-7.8.2.pl index 348e20cee..ccb57d8c6 100644 --- a/docs/upgrades/upgrade_7.8.1-7.8.2.pl +++ b/docs/upgrades/upgrade_7.8.1-7.8.2.pl @@ -95,7 +95,8 @@ sub correctWikiAttachmentPermissions { PAGE: while (my $wikiPage = $pageIterator->()) { my $wiki = $wikiPage->getWiki; next PAGE unless $wiki && $wiki->get('allowAttachments') && $wikiPage->getChildCount; - foreach my $attachment (@{ $wikiPage->getLineage(['children'])}) { + ATTACHMENT: foreach my $attachment (@{ $wikiPage->getLineage(['children'], { returnObjects => 1, })}) { + next ATTACHMENT unless $attachment; $attachment->update({ groupIdEdit => $wiki->get('groupToEditPages') }); } } From f4f30cc4fe7ae02d3f1e3278ebcc3b3e4968bfd1 Mon Sep 17 00:00:00 2001 From: Patrick Donelan Date: Sat, 17 Oct 2009 13:37:49 +1100 Subject: [PATCH 08/17] Survey_tempReport table post-report clean-up --- lib/WebGUI/Asset/Wobject/Survey.pm | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm index fa0e90c40..9d0dd7b16 100644 --- a/lib/WebGUI/Asset/Wobject/Survey.pm +++ b/lib/WebGUI/Asset/Wobject/Survey.pm @@ -2300,6 +2300,9 @@ END_SQL } $var->{response_loop} = \@responseloop; $paginator->appendTemplateVars($var); + + # Clean up + $self->clearTempReportTable; my $out = $self->processTemplate( $var, $self->get('gradebookTemplateId') ); return $self->processStyle($out); @@ -2390,6 +2393,9 @@ sub www_viewStatisticalOverview { $var->{question_loop} = \@questionloop; $paginator->appendTemplateVars($var); + + # Clean up + $self->clearTempReportTable; my $out = $self->processTemplate( $var, $self->get('overviewTemplateId') ); return $self->processStyle($out); @@ -2445,6 +2451,9 @@ sub export { $content = $self->session->db->$method( $opts{sql}, $opts{sqlParams} ); } + # Clean up + $self->clearTempReportTable; + my $filename = $self->session->url->escape( $self->get("title") . "_$opts{name}.$format" ); $self->session->http->setFilename($filename,"text/$format"); return $content; @@ -2585,6 +2594,21 @@ END_HTML #------------------------------------------------------------------- +=head2 clearTempReportTable + +Clears the Survey_tempReport table + +Typically called after L has been used + +=cut + +sub clearTempReportTable { + my $self = shift; + $self->session->db->write( 'delete from Survey_tempReport where assetId = ?', [ $self->getId() ] ); +} + +#------------------------------------------------------------------- + =head2 loadTempReportTable Loads the responses from the survey into the Survey_tempReport table, so that other or custom reports can be ran against this data. @@ -2607,7 +2631,7 @@ sub loadTempReportTable { my %opts = validate(@_, { ignoreRevisionDate => 0 }); # Remove old temp report data - $self->session->db->write( 'delete from Survey_tempReport where assetId = ?', [ $self->getId() ] ); + $self->clearTempReportTable; # Build the sql that will select all responses my $sql = 'select * from Survey_response where assetId = ?'; From 3da08fcc4845a201f6f62b3d00ed5f9d95bf9781 Mon Sep 17 00:00:00 2001 From: Patrick Donelan Date: Sat, 17 Oct 2009 13:41:54 +1100 Subject: [PATCH 09/17] Moved Survey's "Max Resposes" option beck to Properties tab Content Managers shouldn't need Security tab acccess to set this property --- lib/WebGUI/Asset/Wobject/Survey.pm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm index 9d0dd7b16..825cd5115 100644 --- a/lib/WebGUI/Asset/Wobject/Survey.pm +++ b/lib/WebGUI/Asset/Wobject/Survey.pm @@ -60,6 +60,13 @@ sub definition { label => $i18n->get('Survey Exit URL'), hoverHelp => $i18n->get('Survey Exit URL help'), }, + maxResponsesPerUser => { + fieldType => 'integer', + tab => 'properties', + defaultValue => 1, + label => $i18n->get('Max user responses'), + hoverHelp => $i18n->get('Max user responses help'), + }, timeLimit => { fieldType => 'integer', defaultValue => 0, @@ -236,13 +243,6 @@ sub definition { label => $i18n->get('Group to view reports'), hoverHelp => $i18n->get('Group to view reports help'), }, - maxResponsesPerUser => { - fieldType => 'integer', - tab => 'security', - defaultValue => 1, - label => $i18n->get('Max user responses'), - hoverHelp => $i18n->get('Max user responses help'), - }, # Other surveyJSON => { From b8b7dc2875d9bb3279546a7026e702fe7300a04f Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 16 Oct 2009 22:43:12 -0700 Subject: [PATCH 10/17] Restore styling to the fail safe template by inlining it. Fixes bug #11147 --- docs/changelog/7.x.x.txt | 1 + docs/upgrades/packages-7.8.2/fail_safe.wgpkg | Bin 0 -> 1407 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/upgrades/packages-7.8.2/fail_safe.wgpkg diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index f1434f774..024d86bf1 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -23,6 +23,7 @@ - fixed #10993: Editor drops last letter if s - fixed #11139: referencing an item in the clipboard - fixed #11146: Upgrade Error 7.7.21 to 7.7.22 + - fixed #11147: fail safe template is missing embedded style 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/docs/upgrades/packages-7.8.2/fail_safe.wgpkg b/docs/upgrades/packages-7.8.2/fail_safe.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..47e952b108a064985cc863568baa11d3550da209 GIT binary patch literal 1407 zcmV-_1%Ub=iwFP!00000|Ls?8Z`(Ey&gcFLP6LLvXe7(8wc-uS>k=SM-NtFUPD?>c zw8cdxHIk0)7X9x#QnV>2PSIh_umRNvN!GnRygNQe`&$ox)oQg)r?s`EpY5i3hD~^) z)m7UH!+N`2Z#A3E_7)1mTBE*&z~tetsZ>}1w1nrBUEd#XDv6Nyi}m8*GK(|MF zL6R$u+nGKx-lSj1h4G+xo=Fs$kd5?-*h!iLyrhJq4*VduDZOR}fA`Za|MP&EHEr zA`U#2$23g|GxD(dy)U@pYEhI4sdyU;J}pkt!<4Ghs_x8|H8g_WcLy)`2fy|YQKlw2 z>R;@gp6sL8+YW-u#(oeS3=YuS6;Tk(W;1`*@VOWV zgV(`aI|{X-echJE%1>1qdq2gjXClofIg>wb@)35s-O|*mLv_F`Ry{>kPJX)TLx(+% zJ@YH}p6sA)bV-K4T%7cRQlnIcbicpB0%c(DD=4pyE!83?NT&>9D=1%(NNM84ETuQT z;>Aqh0y-9bjG3N01(#G&&LSiTv_8EdJ2CqNA(#*CKfSAlhmz-0rPZ`Oc#KfJRm|=0 zoQzb2!rJP?jHW7sFVEel5oc<9geNp#M1ViPA&MsW8N!0%-1;#(l71jyS~t#0Pzl(= zw%mpNwZt~$A|(R!ia7#oG)3Ph=CZCPSd1wwP@^=+?5*n%6*x^P8%M}3gRO|-_-PQcr)6vUI0bL}oWTmn zB^TG#6@K7+0_*c@HM^vgN+2r89%V4DZOI_$AxlvPfva(mj#3t@7nlaoof7E2(Jw=u zF5nrft6hy?4-1F^-3aZ15@0Lc#jb5^FWr*sPAMfy`_a4rdw0HgJj%&j3!jue18}Ni z-S%H8>dH+|6N>3@jnKC$1}Q`z3KVR5&)oN`Qx0Vx@bNe&JLm^Cl*JCZ!jG?h-hoZE z{C(_R&HAmrfmnsRdhZ1`V~|3i0s!H-hq8T`xCB|(-f5k)5dQ8ci_%&F_y^Ma>zM9VSYh4oge(|TU3SNT)3 zkO6%JT#e4xxY`o$8%oL<)N#(K)O3u8*0{RjYg(Lf1z{5)7=DN7b%P8(7geWhYKEJK z3mCXJ)uCvn&^ZuAISD$gw!>6l0dvg=?nzD*Y4*RHDk@L8o|feRUz?Xy9*_~9=63YB zXw}M^nB8ut+ii8~m0SpNLnY+kU^(VDm4KR2y=sF>gpAKl*bx_#G8>g?3Fq>1zAvY} zK~RazpiN|flQK_+2b|;O&~!%x?_VFCe`|2|41Im^$aG}l#-*jek^mj~-A{aL5=(iT z$*yPEVoiUY;vAkeaw}=g-VK%gBNDSPN-!mDS<-TqCoB<*Lg_=t?T&#%g+1L3uy~cQ zR`!nPe;&R%IpSwYXRzy>P Date: Mon, 19 Oct 2009 15:21:39 -0700 Subject: [PATCH 11/17] Make display of failed transactions more obvious in the Account/Shop plugin. --- ...collateral-items_my-purchases-default.wgpkg | Bin 0 -> 1641 bytes ...ral-items_my-purchases-detail-default.wgpkg | Bin 0 -> 2767 bytes lib/WebGUI/Shop/TransactionItem.pm | 7 ++++--- lib/WebGUI/i18n/English/Shop.pm | 17 +++++++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 docs/upgrades/packages-7.8.2/shopping-cart-collateral-items_my-purchases-default.wgpkg create mode 100644 docs/upgrades/packages-7.8.2/shopping-cart-collateral-items_my-purchases-detail-default.wgpkg diff --git a/docs/upgrades/packages-7.8.2/shopping-cart-collateral-items_my-purchases-default.wgpkg b/docs/upgrades/packages-7.8.2/shopping-cart-collateral-items_my-purchases-default.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..2e7f0681958bf70ad4052071f0ace631c6c92e6f GIT binary patch literal 1641 zcmV-v2A26BiwFP!00000|Ls^&Z`(Ey&U1f-;9^4y)Ujkcb}V}V(l%~_CRxxV>wtMJ zXo;4%N~A_ocHAKUeMd^NC|gc5Ai?$!35g8e>F)UP?mJSuJ5PVvw%zaV?d+&$udAO< z7oOJYvUeP(-Rn91zHK`@mgCrMc)%-9f2Beq4xxE0BJ|sKf2qJ+Y!|D^!KEjspZBQ# zpF}!pr~Kd9*T467{}PNoQlMb5m#=%x`a5>F*IrxyZl~SZu>j4dzn*IScb`7=$MA6b z0*bI9ahya*;;%?bnIGs=?3G1&3nE|qSh z)6nlLL4<@nx=9!Z>7jmyrctyKLlsJGzmcTVh=>sT<+~IwJ`?J*g*IxJ042v_2nqi!v}e_jxiJ0o1krWcaPzir0sJD{TdapaR!G+}n9%CnxK5lT}7 z?ovka55QASRFd55$6T(L zMy)8N2Ov|enPM9El#Zp-x)OrQCo{Jn?z*g``#om`RpWZ2t{&>!FC1>JSYBq8DQ+#c zidId@RpeU=ucBkFXIXxkN+o@u9@HqTaZ!#FS{5V{0?WJ@+kqU*zGwe^I6lAby#4Ss zouAKxQa9z1u1gWJBmv@XdWZwTu}C#rj-n=zKrCAEvYF(~M>KsrLun*SBSah%-^Wy2 za?J4y&LmU4OpA=ZsG3J|;ve}$YLP)2MXT52BcIGI4{}97H!M3K^g{)}DD13+x*@{& zmlFz+Q>1zxieAM_YZdvMOPJ;Bq4jeN;W9b2zMxl=#wRROPA$o-L(hYjCMS*8!%-{j zC>P3!L{sRxa2 z=P{33pr)d!eF4QP?gy#*u&!0b;*3)h$R+G~Qc+ch09rB&UIkT7Xv+L$J~!B_eT^7P zECVdDF>n81gshO`89+3W>YX{_)|}wQdn^%&u6c9-3tEaaF6SDSgHa2?pUluypn$cN zjSP?Nas|S#vtm0{=#@Yew#dvP;xhF-EW|90*4HVQ6!>WOI1+eWZw!;cexcUVdSq6( ztpZv=m!Z{?C8{l*hcG^BK~ccdC^Q;kP9y*}<}AKI9Ja^n6{q*F??Oa_+RZPaINv`v zY<1O~xJrMz7S2(emGx&l{cwHax`&E)T=y#9s+a1D>d%-@W+dO_I_#KWq=9duv5}Lw!r4P$5&^kn;;T#%G4<# zJGfMiCPd^Qtxw8ab1fST`h&qs zth|DgWqDL6e)Cf;i z?l2!kie=JZ>hWbFFKTjDq9ETLoqp)p-v^)4EW&wa^@AzuoP2jG6#`0PfDiL+5coZO`w?$dBJSyBBwl@zv$o#xnxX2s|V3-y`r3(KK7=02%-QT#z(= literal 0 HcmV?d00001 diff --git a/docs/upgrades/packages-7.8.2/shopping-cart-collateral-items_my-purchases-detail-default.wgpkg b/docs/upgrades/packages-7.8.2/shopping-cart-collateral-items_my-purchases-detail-default.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..e0261ffe51cdd44b16b3a6ffeec3958916ff1186 GIT binary patch literal 2767 zcmV;=3NZB_iwFP!00000|Lq$6Z`(FDKku&)QXH@Wb!^%Bs^bgLt<5!9+vS$_I$+rq zv_xCH%92i`l6XP?_j~V=6e&w~oGm@v0kzTEAs^rOC*{4JFaH`021iE+J3IJ!xKE$q zK70oCYp@fB!^0!^Hv)hl3PU^3ug^Fd^BenY1QZiC;d zlD*R;6e6BTwM==SmIeRo6-alh`jM1ZyQh0M^NXsC5+?cGXYY?-k7w~u zv)4kZyC~(X9H)GyP8uM|Xio{1^1E4{sh$+S^KrOe+@4H-O7~)>7}9;}v*WD?skmFPaxSv*0FGN!_#N~FjG(AJ6m^{C z89(v3Lzs2s5N(U|CubqPPYk_7qLJ}l!o@sMZ>hir@W_ck+yRI|}!R8Wh zm0c-6)!xAZEPcigY)Jh*R}}&P!(Dvo0uhj-=~X)1L~E-B9=uXl%1g^wH1uLCvUTau zn-LWgT|o4TuN_?JAnO&5rwHOp-cqx4F%Qklc9Ug?Ea)zZtxd|vI+>t6EG z6-+PtF>ON3)iDHV32$qZ71}Fn8s&;o??uqonyGafT{|u5q^@^e-P_FUO8u*u$1baF zk~T{XL$+CJmc(_8Bb1j+^zt}WROsE)$j*k4n=8!#kM zXKuPu4fg>z!Gn-+Y*D|;Tv^X=GG4xi3zl;|zIk(DRi;$VWs(;Kj8MIZmC%glDUPcp zOM5V0Eo6VO>=kCNlf9TLCQ|sAu_{%L43m;8Lt=jX;b3$TABEMc@1GU7?3d)j?BjC> zE96C)s~pFw)uB_!S0aviM(d$Ff-_)o9>0u*qAgDfJ73fK1QH(f5Wo%0rfwdE=@eBo zQ80>s6tf`9m54a4!K!~|0V4}c<8VL&U$fFePx=6;@$?NM{0s3WqnapzPx=Y1WCA$!UnT5Qpq6jQHtI}0I%#J-t2IZ;bt8i!F z?mV_&wc)qnjV<8fLe)oCgw?xS2`RDwV>Eyp9teN{u1g(5D_BK_&h-NUzTk01Gvii7 z6uae}io_70&8^VLL{Ksb7F;FyT0Sk_C^kL{XE7zjGC^62rF;>Brcr|wq z+Xm{vT$7gqZb~leJOc0OD)~kOIi@Fl@LoL&HBwc5tA@#{j#A1;envC*FfKANo>#Jy z72d$s4BF7wNzzM+=D>4($K#RzlZ;rq1zU4sPu#}}=|!^Uwrn(qrV39R;&H6dEVeTTm~s_M1iH|Qs(oVv0V<=ITkE6BO;@D3aBvf9Xq z*fbsb{!YFIW=|*6vfqLsF?=ZNDOc*(E`};y*Bv9NNu%uax4@kRF|Cq(l65JwkS%pM z#N=#keK`Q@VJ(d{Si}>S7PQ-?DH<+_J!_z495{KIuKF!v9+>svcgDl& z=Bh>v;?}O!&<|`l|LRl90KM77=6X_*CA<_0+~KUu7Zz^8wE ze?A^R$7XpverKKxIh632l$&Qky90c6JUw*K7;5~7gk|%tr#|TEZ}M2ogn4ii4i65V z9UX>8Uh{1F>VJT16YEC~J2kSj_+}Z{o=gTWXaESleW53S@7w|TNfd9Pv7U*Dx?VaP zx_u$Bea8&Ex6Kf1I z9>03`=5^aV0)iKxgXu?XjfZbS8if#EPio&tdT%%!9uJ1khMtfmzZMb(g%@B@1Jt$^ zj7^X&Yxi&}f__jxpR-Tv2!;1351PlD^Xx1y7j(P3>#>)CZ(@1VWU+VbzggDS*2Z>} zcovn*LS1w)0Z~kkIW;H5L8Dt~3}ZT+-5}P0ymtgM2~EsSAAj(wIr9gu|KgzK$<{qy zJ=$Qk7SZO;+85TY=80LKof#5VXo|wXewB3PlU+8V>@ZX=?H) z(}I~4CeUnbF&lJ%tj+`-Agx)T1IBh}erMhRW);#>9<<~g;Olz+4$uv~KDA=-A9eVq zyVr@>>+H1#{Z_Em%VVb)bal!PYTeDf98@R27pIQhW6IxqaCdI9JW7X6tR4__JKOAb zy~ew_Va-_|`V)1wR49qV=)7O0hmPwe}ESqv}NPbfAwcgFjdKMwNh z=R))lDaC}t@%w4{ZgvgZiS=pct0F^ zoe{K&(9j$9*xSWC8$|J;O5?>3;aTxv|HtWb$6non8UFB>U7x@C{20F?`-_aGd}!000F*V?+P| literal 0 HcmV?d00001 diff --git a/lib/WebGUI/Shop/TransactionItem.pm b/lib/WebGUI/Shop/TransactionItem.pm index da0a4b321..97aa66abc 100644 --- a/lib/WebGUI/Shop/TransactionItem.pm +++ b/lib/WebGUI/Shop/TransactionItem.pm @@ -265,7 +265,8 @@ The status of this item. The default is 'NotShipped'. Other statuses include: Ca sub update { my ($self, $newProperties) = @_; my $id = id $self; - my $session = $self->transaction->session; + my $transaction = $self->transaction; + my $session = $transaction->session; my $taxDriver = WebGUI::Shop::Tax->getDriver( $session ); if (exists $newProperties->{item}) { @@ -296,7 +297,7 @@ sub update { $newProperties->{ taxConfiguration } = to_json( $taxDriver->getTransactionTaxData( $sku, $address ) || '{}' ); - unless ($sku->isShippingRequired) { + if (!$sku->isShippingRequired && $transaction->get('isSuccessful')) { $newProperties->{orderStatus} = 'Shipped'; } } @@ -310,7 +311,7 @@ sub update { if (exists $newProperties->{options} && ref($newProperties->{options}) eq "HASH") { $properties{$id}{options} = JSON->new->encode($newProperties->{options}); } - $properties{$id}{lastUpdated} = WebGUI::DateTime->new($self->transaction->session,time())->toDatabase; + $properties{$id}{lastUpdated} = WebGUI::DateTime->new($session,time())->toDatabase; $self->transaction->session->db->setRow("transactionItem","itemId",$properties{$id}); } diff --git a/lib/WebGUI/i18n/English/Shop.pm b/lib/WebGUI/i18n/English/Shop.pm index 7b0f30d32..018dd39cc 100644 --- a/lib/WebGUI/i18n/English/Shop.pm +++ b/lib/WebGUI/i18n/English/Shop.pm @@ -621,6 +621,12 @@ our $I18N = { context => q|field label| }, + 'Status' => { + message => q|Status|, + lastUpdated => 0, + context => q|Whether a transaction was successful, or not.| + }, + 'payment method' => { message => q|Payment Method|, lastUpdated => 0, @@ -1695,6 +1701,17 @@ our $I18N = { context => q|commerce setting help| }, + 'Success' => { + message => q|Success|, + lastUpdated => 0, + context => q|commerce setting help| + }, + + 'Failed' => { + message => q|Failure|, + lastUpdated => 0, + context => q|commerce setting help| + }, }; From 7ff4c17f4561f86c04e899efb99344c77ffc0529 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 19 Oct 2009 15:23:03 -0700 Subject: [PATCH 12/17] Changelog notice for Shop/Transaction work --- docs/changelog/7.x.x.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 024d86bf1..ce6937f59 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -24,6 +24,7 @@ - fixed #11139: referencing an item in the clipboard - fixed #11146: Upgrade Error 7.7.21 to 7.7.22 - fixed #11147: fail safe template is missing embedded style + - fixed #11137: Customers see failed orders 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code From 68be37b780fd452fbaaa323d42b14282b46c3617 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 19 Oct 2009 15:23:36 -0700 Subject: [PATCH 13/17] Do manual uniqification of items in Syndicated Content. Fixes bug #11156 Do not use merge because it uses normalize, which uses uniq_item, which uses only links to determine uniqueness. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Wobject/SyndicatedContent.pm | 36 ++++++++++++------- t/Asset/Wobject/SyndicatedContent.t | 3 -- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index ce6937f59..a2d65c2fd 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -25,6 +25,7 @@ - fixed #11146: Upgrade Error 7.7.21 to 7.7.22 - fixed #11147: fail safe template is missing embedded style - fixed #11137: Customers see failed orders + - fixed #11156: Syndicated Content doesn't show all headlines in feed 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm b/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm index fc10a362f..c1da1d9e1 100644 --- a/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm +++ b/lib/WebGUI/Asset/Wobject/SyndicatedContent.pm @@ -133,7 +133,7 @@ sub generateFeed { my $limit = shift || $self->get('maxHeadlines'); my $feed = XML::FeedPP::Atom->new(); my $log = $self->session->log; - + # build one feed out of many my $newlyCached = 0; foreach my $url (split(/\s+/, $self->get('rssUrl'))) { @@ -154,35 +154,45 @@ sub generateFeed { utf8::downgrade($value, 1); eval { my $singleFeed = XML::FeedPP->new($value, utf8_flag => 1, -type => 'string'); - $feed->merge($singleFeed); + $feed->merge_channel($singleFeed); + $feed->merge_item($singleFeed); }; if ($@) { $log->error("Syndicated Content asset (".$self->getId.") has a bad feed URL (".$url."). Failed with ".$@); } } - + + # build a new feed that matches the term the user is interested in if ($self->get('hasTerms') ne '') { my @terms = split /,\s*/, $self->get('hasTerms'); # get the list of terms my $termRegex = join("|", map quotemeta($_), @terms); # turn the terms into a regex string my @items = $feed->match_item(title => qr/$termRegex/msi); push @items, $feed->match_item(description => qr/$termRegex/msi); - $feed->clear_item; - $feed->uniq_item; - foreach my $item (@items) { - $feed->add_item($item); - } + $feed->clear_item; + ITEM: foreach my $item (@items) { + $feed->add_item($item); + } } - + + my %seen = {}; + my @items = $feed->get_item; + $feed->clear_item; + ITEM: foreach my $item (@items) { + my $key = join "\n", $item->link, $item->pubDate, $item->description, $item->title; + next ITEM if $seen{$key}++; + $feed->add_item($item); + } + # sort them by date and remove any duplicate from the OR based term matching above - $feed->normalize(); - + $feed->sort_item(); + # limit the feed to the maximum number of headlines (or the feed generator limit). $feed->limit_item($limit); - + # mark this asset as updated $self->update({}) if ($newlyCached); - + return $feed; } diff --git a/t/Asset/Wobject/SyndicatedContent.t b/t/Asset/Wobject/SyndicatedContent.t index 270d59d30..7cce86dd8 100644 --- a/t/Asset/Wobject/SyndicatedContent.t +++ b/t/Asset/Wobject/SyndicatedContent.t @@ -162,9 +162,6 @@ $cache->set($rssContent, 60); my $filteredFeed = $syndicated_content->generateFeed(); -use Data::Dumper; -diag Dumper($filteredFeed->get_item()); - cmp_deeply( [ map { $_->title } $filteredFeed->get_item() ], [ From b027a8ab4d1cbc11fcea425810c9c950cbc28c3a Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 19 Oct 2009 16:44:11 -0700 Subject: [PATCH 14/17] Document odd rss feed with a test. --- t/Asset/Wobject/SyndicatedContent.t | 33 +++++++++- t/supporting_collateral/oncp.xml | 95 +++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 t/supporting_collateral/oncp.xml diff --git a/t/Asset/Wobject/SyndicatedContent.t b/t/Asset/Wobject/SyndicatedContent.t index 7cce86dd8..84fb34d2d 100644 --- a/t/Asset/Wobject/SyndicatedContent.t +++ b/t/Asset/Wobject/SyndicatedContent.t @@ -20,7 +20,7 @@ use Data::Dumper; use WebGUI::Test; use WebGUI::Session; -use Test::More tests => 21; # increment this value for each test you create +use Test::More tests => 22; # increment this value for each test you create use Test::Deep; use WebGUI::Asset::Wobject::SyndicatedContent; use XML::FeedPP; @@ -173,3 +173,34 @@ cmp_deeply( ); $cache->delete; + +#################################################################### +# +# Odd feeds +# +#################################################################### + + +##Feed with no links or pubDates. +my $oncpUrl = 'http://www.oncp.gob.ve/oncp.xml'; +$syndicated_content->update({ + rssUrl => $oncpUrl, + hasTerms => '', + maxHeadlines => 50, +}); + +my $cache = WebGUI::Cache->new($session, $oncpUrl, 'RSS'); +open my $rssFile, '<', WebGUI::Test->getTestCollateralPath('oncp.xml') + or die "Unable to get RSS file: oncp.xml"; +my $rssContent = do { local $/; <$rssFile>; }; +close $rssFile; +$cache->set($rssContent, 60); + +my $oddFeed1 = $syndicated_content->generateFeed(); + +my @oddItems = $oddFeed1->get_item(); +is (@oddItems, 13, 'feed has items even without pubDates or links'); + +$cache->delete; + + diff --git a/t/supporting_collateral/oncp.xml b/t/supporting_collateral/oncp.xml new file mode 100644 index 000000000..7e5abe22a --- /dev/null +++ b/t/supporting_collateral/oncp.xml @@ -0,0 +1,95 @@ + + + <![CDATA[Oficina Nacional de Crédito Público]]> + http://www.oncp.gob.ve + Información Financiera + es-ve + Oficina Nacional de Crédito Público - 2009 + + Oficina Nacional de Crédito Público + http://www.oncp.gob.ve/data/themes/digital//banner/oncp.png + http://www.oncp.gob.ve + + + + <![CDATA[Deuda Interna I Sem 09 / MM US$ 20.441]]> + http://www.oncp.gob.ve + + http://www.oncp.gob.ve + + + + <![CDATA[Deuda Externa I Sem 09 / MM US$ 29.894]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Tasa Pasiva / 14,52%]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Tasa Activa / 19,56%]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Variación PIB II Trimestre / -2,4%]]> + http://www.oncp.gob.ve + + + + + <![CDATA[PIB II Trimestre 2009 / M BsF 13.979.77]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Unidad Tributaria / BsF. 55,00]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Cesta Venezolana / US$ 65,32]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Cesta OPEP / US$ 67,92]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Variación Acumuladaa / 15,6%]]> + http://www.oncp.gob.ve + + + + + <![CDATA[IPC Variación Agosto 2009 / 2,2%]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Reservas Internacionales con BCV + FEM / MM US$ 33.213 (32.384 + 829)]]> + http://www.oncp.gob.ve + + + + + <![CDATA[Variación Acumulada / 15,6%]]> + http://www.oncp.gob.ve + + + + + + From da9f836232cf94e7ebf5c10237a2a9db7703f02f Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 19 Oct 2009 17:55:55 -0700 Subject: [PATCH 15/17] Autocommit version tags when using the RTE form control for folder/files. Fixes bug #11138 --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Form/HTMLArea.pm | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index a2d65c2fd..100d929dd 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -26,6 +26,7 @@ - fixed #11147: fail safe template is missing embedded style - fixed #11137: Customers see failed orders - fixed #11156: Syndicated Content doesn't show all headlines in feed + - fixed #11138: RichEdit, upload image does not commit a version tag 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/lib/WebGUI/Form/HTMLArea.pm b/lib/WebGUI/Form/HTMLArea.pm index 21505afa4..c830fd817 100644 --- a/lib/WebGUI/Form/HTMLArea.pm +++ b/lib/WebGUI/Form/HTMLArea.pm @@ -386,8 +386,8 @@ sub www_addFolderSave { title => $filename, menuTitle => $filename, url => $base->getUrl.'/'.$filename, - groupIdEdit => $session->form->process('groupIdEdit') || $base->get('groupIdEdit'), - groupIdView => $session->form->process('groupIdView') || $base->get('groupIdView'), + groupIdEdit => $base->get('groupIdEdit'), + groupIdView => $base->get('groupIdView'), ownerUserId => $session->user->userId, startDate => $base->get('startDate'), endDate => $base->get('endDate'), @@ -410,6 +410,7 @@ sub www_addFolderSave { className => 'WebGUI::Asset::Wobject::Folder', #filename => $filename, }); + WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { allowComments => 0 }); $session->http->setRedirect($base->getUrl('op=formHelper;class=HTMLArea;sub=imageTree')); return undef; } @@ -495,6 +496,7 @@ sub www_addImageSave { $child->update({url => $child->fixUrl}); $child->applyConstraints; } + WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { allowComments => 0 }); $session->http->setRedirect($base->getUrl('op=formHelper;class=HTMLArea;sub=imageTree')); return undef; } From c8542cc5d012e78095e4e0e05e0c8f8f8c69d880 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 19 Oct 2009 20:18:21 -0700 Subject: [PATCH 16/17] Add another operation to robots.txt. Fixes bug #2569. --- docs/changelog/7.x.x.txt | 1 + docs/upgrades/packages-7.8.2/robots.txt.wgpkg | Bin 808 -> 826 bytes 2 files changed, 1 insertion(+) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 100d929dd..67acc0692 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -4,6 +4,7 @@ - fixed #11060: Some tables have latin1 as the default character set - fixed #11089: No message body in Notification - fixed #2569: robots.txt issues + - refixed #2569: robots.txt issues - fixed #11104: Wrong name for request tracker post form template - fixed #11077: Untested result in WebGUI::Storage->getFiles - fixed #11080: Asset Manage Crumb Trail flyout menu diff --git a/docs/upgrades/packages-7.8.2/robots.txt.wgpkg b/docs/upgrades/packages-7.8.2/robots.txt.wgpkg index 3c420b59bc49de98b5e2ae4d27768bd779669557..a05051e2e5c9566794baf4f43dd9e9ccc9c58093 100644 GIT binary patch literal 826 zcmV-A1I7FwiwFP!00000|Ls*lZ`v>v=GpEViVX2hEuS`h96||5hm@HoImkHqF<#2vDwe;ci^OddtQ%IwB&2P(Z z&IKiJ3Q<+>l)CTJzoq2f(ZAL4{D!62Jp4M8{>{Tfe~S)(PSgtnbhggl+AUje&I1V&@?ym(SJA%CAz6}a!)nT;u5Yt!nqV=5 z$m9}O-eD5ar7r52fLIgC1g@8ZmE`COP&7fY7@=^X$|*q4TGAx}eyhfIpkr0A&(dp& zNC=Q+5}R^5rBV;b_Qy2{GoEPBdY5R*l{7Idu5c6q**z5&BTgliYgRB)IdIHr#s<+v zgr&}My-GPU1CHe_Prh=Rjt~b@Y^vld)j|-WFD8((WJ7sngVy2843T)Rh?qd>1KZpQ zj=mpSzJU@dwZ#yn1^zpjUfvFRy?)MHuQw)`F{tp6TjPdC_!llzvR%*bIF9SJJEmlc zQG)_QS|DK#>T4kS>*~6R!iFi1|)*jy*i@dG(_PHCd#QaD@L!Sd~Cu%LcV5lv_}nz;_^oM)<-vO zpUoDToU^;f;duCaK3JL}Sd7;~Lb@xLcEiR?cE!I~6!&h&92qz=aAe@fz`tYQFVUanZ~zbh E0H$!9Z~y=R literal 808 zcmV+@1K0c?iwFP!00000|Ls*>PunmQ?K8ik$|D+GoHQ-1G)*uVLt|Yf3QUYWxXC3o zO>ED0Xv@TZpW~#B`vFf>;-P+Ms$Ade<8#ivY1FpAT-R;4gIXM&)5~1WJYU)Ro75)8IuD@n;`)gbJH?|M`El&8ir<>4`iU}NpQ}5P)|M_5E zaltqUML_0n&9;1JC;%&nj%WE>$9K%;Jdj|iPN$p+9X&ERG)t02Sa+E+^&OrK6Cy_t zRk;)%y^M89$Fs zBce_?PCG7*kt8v)k2W+NDd(7$((X)gVEv32-A3@h=fAv1E-n^ zu9**hP(cZ`+Omh!0{;yR&#un9-J_hhZugQB&cWg#x5f_^k$Y08WAy$MHa##|kK(oQC#dFd! zV?qaWP4S~`UgMTa@>F1JdRAp3FIaBPqFa{CY3pE=?sVFnPSEx&tpq$0sR5tNb=<_8 zHj}phLbU4I`h!(8#=K2dZ72(!s_t>}W;xKMsOr{Z#^MCD_3!8jkvK`%q+8$r%=o8> zNG;9mg2jZc1yekRz93ZLVFGuSeC25dgniEbS_zz~(fZ3UWEoutgCFqpOm{0f?5*Xj zV6oAJI2^%1TaIN#5BV+EVjgHHW?c0*(5i4;jt2MI&C=fW!S}!C_fNn2Kc7x+Z_~IE zfXK_4RFJOnZe*RC!dbFQF+g+bOp+Bdb9c!LsHs1uUVyAk+{}a$UjNuQb1}5cA8VW} m{88e|r~dQa^ILpWb~Sbk>=@WFuw&reGw>gPj4I9m5C8xHo0<{; From e4b18757d81f61a9c6acbb99a606bcad66c349a4 Mon Sep 17 00:00:00 2001 From: Patrick Donelan Date: Tue, 20 Oct 2009 16:50:00 +1100 Subject: [PATCH 17/17] Fixes bug in ExpireIncompleteSurveyResponses Use a left outer join on userProfileData so that the workflow processes responses for users that have been deleted --- docs/changelog/7.x.x.txt | 1 + .../Workflow/Activity/ExpireIncompleteSurveyResponses.pm | 4 ++-- t/Workflow/Activity/ExpireIncompleteSurveyResponses.t | 9 ++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 67acc0692..aa9a5baae 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -28,6 +28,7 @@ - fixed #11137: Customers see failed orders - fixed #11156: Syndicated Content doesn't show all headlines in feed - fixed #11138: RichEdit, upload image does not commit a version tag + - fixed ExpireIncompleteSurveyResponses Workflow: process responses for deleted users 7.8.1 - mark $session->datetime->time as deprecated and remove its use from core code diff --git a/lib/WebGUI/Workflow/Activity/ExpireIncompleteSurveyResponses.pm b/lib/WebGUI/Workflow/Activity/ExpireIncompleteSurveyResponses.pm index 03b836d9d..73d2baf16 100644 --- a/lib/WebGUI/Workflow/Activity/ExpireIncompleteSurveyResponses.pm +++ b/lib/WebGUI/Workflow/Activity/ExpireIncompleteSurveyResponses.pm @@ -159,6 +159,7 @@ Factored out into a separate subroutine for the sake of testability. sub getSql { + # Use a left outer join on userProfileData so that we still get back responses for users that have been deleted return < 0 @@ -175,7 +176,6 @@ where and ad.assetId = s.assetId and ad.revisionDate = s.revisionDate and s.revisionDate = r.revisionDate - and upd.userId = r.userId END_SQL } diff --git a/t/Workflow/Activity/ExpireIncompleteSurveyResponses.t b/t/Workflow/Activity/ExpireIncompleteSurveyResponses.t index d80df1019..8dc6a208f 100644 --- a/t/Workflow/Activity/ExpireIncompleteSurveyResponses.t +++ b/t/Workflow/Activity/ExpireIncompleteSurveyResponses.t @@ -13,7 +13,7 @@ my $session = WebGUI::Test->session; #---------------------------------------------------------------------------- # Tests -plan tests => 25; +plan tests => 26; use_ok('WebGUI::Workflow::Activity::ExpireIncompleteSurveyResponses'); @@ -127,6 +127,13 @@ $session->db->write('update Survey_response set endDate = 0, isComplete = 0 wher # Make sure SQL only returns 1 incomplete response is( scalar $session->db->buildArray($SQL), 1, 'Make sure SQL only returns 1 incomplete response'); +## +# Make sure workflow handles responses for deleted users +# +$session->db->write('update Survey_response set userId = ? where Survey_responseId = ?', ['not-a-user-id', $responseId]); +is( scalar $session->db->buildArray($SQL), 1, 'Still returns 1 row, even though user does not exist (sql left outer join)'); +$session->db->write('update Survey_response set userId = ? where Survey_responseId = ?', [$user->getId, $responseId]); + ## # Delete Expired ##
@@ -39,7 +38,7 @@ - + diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css index 4bbbfdee7..19da1943b 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css @@ -11,6 +11,13 @@ h6 {font-size: .75em} a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;} img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;} img {border:0;} +table {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help} /* IE */ * html body { diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css index c944a60ba..873c67e3c 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css @@ -19,6 +19,7 @@ td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} textarea {resize:none;outline:none;} a:link, a:visited {color:black;} a:hover {color:#2B6FB6;} +.nowrap {white-space: nowrap} /* Forms */ fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} @@ -47,10 +48,11 @@ padding-bottom:2px; #cancel {background:url(img/buttons.png) 0 0;} /* Browse */ +a.pickcolor, a.browse {text-decoration:none} a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} .mceOldBoxModel a.browse span {width:22px; height:20px;} a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} -a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);} +a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} .mceOldBoxModel a.pickcolor span {width:21px; height:17px;} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css index f816f1f6f..230a2ee28 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css @@ -22,8 +22,9 @@ .defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;} .defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top} .defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC} -.defaultSkin .mceStatusbar {position:relative; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; padding:2px; color:#000; display:block} -.defaultSkin .mceStatusbar a.mceResize {display:block; position:absolute; top:0; right:0; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize} +.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px} +.defaultSkin .mceStatusbar div {float:left; margin:2px} +.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize} .defaultSkin .mceStatusbar a:hover {text-decoration:underline} .defaultSkin table.mceToolbar {margin-left:3px} .defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px} @@ -33,15 +34,20 @@ .defaultSkin td.mceRight table {margin:0 0 0 auto;} /* Button */ -.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px;} +.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px} .defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} .defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)} +.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.defaultSkin .mceButtonLabeled {width:auto} +.defaultSkin .mceButtonLabeled span.mceIcon {float:left} +.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} +.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888} /* Separator */ .defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px} /* ListBox */ +.defaultSkin .mceListBox {direction:ltr} .defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block} .defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} .defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;} @@ -54,16 +60,15 @@ .defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;} /* SplitButton */ -.defaultSkin .mceSplitButton {width:32px; height:20px} +.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr} .defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block} .defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;} .defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;} -.defaultSkin .mceSplitButton a.mceOpen {width:9px; border:1px solid #F0F0EE;} -.defaultSkin .mceSplitButton span.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0;} +.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;} +.defaultSkin .mceSplitButton span.mceOpen {display:none} .defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0} -.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {border:1px solid #0A246A;} -.defaultSkin table.mceSplitButtonEnabled:hover span.mceOpen, .defaultSkin .mceSplitButtonHover span.mceOpen, .defaultSkin .mceSplitButtonSelected span.mceOpen {background-color:#B2BBD0} -.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled span.mceOpen {opacity:0.3; filter:alpha(opacity=30)} +.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;} +.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} .defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0} .defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;} @@ -75,8 +80,8 @@ .defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} .defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} .defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A} -.defaultSkin .mceColorPreview {position:absolute; top:15px; left:2px; width:16px; height:4px; overflow:hidden} -.defaultSkin .mce_forecolor, .defaultSkin .mce_backcolor {position:relative} +.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a} +.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px} /* Menu */ .defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8} @@ -101,7 +106,7 @@ .defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;} /* Progress,Resize */ -.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF} +.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF} .defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} .defaultSkin .mcePlaceHolder {border:1px dotted gray} @@ -152,8 +157,8 @@ .defaultSkin span.mce_blockquote {background-position:-220px 0} .defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0} .defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0} -.defaultSkin .mce_forecolorpicker {background-position:-720px 0} -.defaultSkin .mce_backcolorpicker {background-position:-760px 0} +.defaultSkin span.mce_forecolorpicker {background-position:-720px 0} +.defaultSkin span.mce_backcolorpicker {background-position:-760px 0} /* Plugins */ .defaultSkin span.mce_advhr {background-position:-0px -20px} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css index 296dd69e9..b8431d169 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css @@ -11,6 +11,13 @@ h6 {font-size: .75em} a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;} img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;} img {border:0;} +table {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help} /* IE */ * html body { diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css index e36042e64..6c37d6fb8 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css @@ -19,6 +19,7 @@ td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} textarea {resize:none;outline:none;} a:link, a:visited {color:black;} a:hover {color:#2B6FB6;} +.nowrap {white-space: nowrap} /* Forms */ fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} @@ -47,10 +48,11 @@ padding-bottom:2px; #cancel {background:url(../default/img/buttons.png) 0 0;} /* Browse */ +a.pickcolor, a.browse {text-decoration:none} a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} .mceOldBoxModel a.browse span {width:22px; height:20px;} a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} -a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);} +a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} .mceOldBoxModel a.pickcolor span {width:21px; height:17px;} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css index 8bc936ebd..c10a3f016 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css @@ -19,8 +19,8 @@ .o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD} .o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0} .o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD} -.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px;} -.o2k7Skin .mceStatusbar div {float:left; padding:2px;} +.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} +.o2k7Skin .mceStatusbar div {float:left; padding:2px} .o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize} .o2k7Skin .mceStatusbar a:hover {text-decoration:underline} .o2k7Skin table.mceToolbar {margin-left:3px} @@ -40,7 +40,11 @@ .o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px} .o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} .o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px} -.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)} +.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.o2k7Skin .mceButtonLabeled {width:auto} +.o2k7Skin .mceButtonLabeled span.mceIcon {float:left} +.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} +.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888} /* Separator */ .o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} @@ -62,11 +66,11 @@ .o2k7Skin .mceSplitButton {background:url(img/button_bg.png)} .o2k7Skin .mceSplitButton a.mceAction {width:22px} .o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px} -.o2k7Skin .mceSplitButton a.mceOpen {width:10px} -.o2k7Skin .mceSplitButton span.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0} +.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0} +.o2k7Skin .mceSplitButton span.mceOpen {display:none} .o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px} -.o2k7Skin table.mceSplitButtonEnabled:hover span.mceOpen, .o2k7Skin .mceSplitButtonHover span.mceOpen, .o2k7Skin .mceSplitButtonSelected span.mceOpen {background-position:-44px -44px} -.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; filter:alpha(opacity=30)} +.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px} +.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} .o2k7Skin .mceSplitButtonActive {background-position:0 -44px} /* ColorSplitButton */ @@ -77,8 +81,8 @@ .o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} .o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} .o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A} -.o2k7Skin .mceColorPreview {position:absolute; top:15px; left:2px; width:16px; height:4px; overflow:hidden} -.o2k7Skin .mce_forecolor, .o2k7Skin .mce_backcolor {position:relative} +.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden} +.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden} /* Menu */ .o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD} @@ -103,7 +107,7 @@ .o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;} /* Progress,Resize */ -.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF} +.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} .o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} .o2k7Skin .mcePlaceHolder {border:1px dotted gray} @@ -154,8 +158,8 @@ .o2k7Skin span.mce_blockquote {background-position:-220px 0} .o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0} .o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0} -.o2k7Skin .mce_forecolorpicker {background-position:-720px 0} -.o2k7Skin .mce_backcolorpicker {background-position:-760px 0} +.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0} +.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0} /* Plugins */ .o2k7Skin span.mce_advhr {background-position:-0px -20px} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css index a42a727ab..153f0c38a 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css @@ -1,8 +1,8 @@ /* Black */ -.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton span.mceOpen, .o2k7SkinBlack .mceListBox .mceOpen {background-image:url(img/button_bg_black.png)} +.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} .o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} .o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} -.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} +.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} .o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} -.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} -.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file +.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} +.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css index 548b1b852..7fe3b45e1 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css @@ -1,5 +1,5 @@ /* Silver */ -.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton span.mceOpen, .o2k7SkinSilver .mceListBox .mceOpen {background-image:url(img/button_bg_silver.png)} +.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} .o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} .o2k7SkinSilver .mceListBox .mceText {background:#FFF} .o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm index 119a913c9..553e7bb2b 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm @@ -4,7 +4,6 @@ {#advanced_dlg.code_title} - diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js index 79d6d8e97..ed89abc06 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js @@ -1 +1 @@ -(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS(url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})(); \ No newline at end of file +(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})});c.dom.loadCSS(d+"/skins/"+f.skin+"/content.css")});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js index 17d7b8dad..fb0bd7893 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js @@ -1,5 +1,5 @@ /** - * $Id: editor_template_src.js 637 2008-02-25 14:59:07Z spocke $ + * $Id: editor_template_src.js 920 2008-09-09 14:05:33Z spocke $ * * This file is meant to showcase how to create a simple theme. The advanced * theme is more suitable for production use. @@ -30,7 +30,7 @@ ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css"); }); - DOM.loadCSS(url + "/skins/" + s.skin + "/ui.css"); + DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css"); }, renderUI : function(o) { diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css index 1cf64b8dc..076fe84e3 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css @@ -15,7 +15,7 @@ .defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px} .defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} .defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)} +.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} /* Separator */ .defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css index bfae96e2d..cf6c35d10 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css @@ -18,7 +18,7 @@ .o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px} .o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} .o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px} -.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)} +.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} /* Separator */ .o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} diff --git a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js index 8b298c521..babc91e6a 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js +++ b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js @@ -1 +1 @@ -var tinymce={majorVersion:'3',minorVersion:'0.5',releaseDate:'2008-03-12',_init:function(){var t=this,ua=navigator.userAgent,i,nl,n,base;t.isOpera=window.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!window.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(navigator.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;if(window.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;return;}t.suffix='';nl=document.getElementsByTagName('base');for(i=0;i=items.length){for(i=0;i=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0;i=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);t=w.setInterval(function(){if(x.readyState==4||c++>10000){w.clearInterval(t);if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}},10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,DOMUtils:function(d,s){var t=this;t.doc=d;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(function(){t.doc=t.root=null;});},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?window:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,w,h;e=t.get(e);p=t.getPos(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{x:p.x,y:p.y,w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));if(i)s.id=i;return l;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;if(a){for(k in a){if(a.hasOwnProperty(k)&&!is(a[k],'object'))t.setAttrib(e,k,''+a[k]);}if(a.style&&!is(a.style,'string')){each(a.style,function(v,n){t.setStyle(e,n,v);});}}if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(s.keep_values){if(v)e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e)return false;if(!is(dv))dv="";if(/^(src|href|style|coords)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}v=e.getAttribute(n,2);if(!v){switch(n){case'class':v=e.className;break;default:if(isIE&&n==='name'&&e.nodeName==='A'){v=e.name;break;}v=e.attributes[n];v=v&&is(v.nodeValue)?v.nodeValue:v;}}switch(n){case'style':v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values)e.setAttribute('mce_style',v);}break;}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0')v='';break;case'hspace':if(v===-1)v='';break;case'tabindex':if(v===32768)v='';break;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v&&v!='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=window.self!=window.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null))+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=this.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:u});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='
'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='
'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/

<\/p>|]+)><\/p>|/gi,' 

');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/]+)>|

/g,'');h=h.replace(/<\/p>/g,'');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x|]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|]+)>/gi,'<$1i$2>');}h=h.replace(/]+)\/>|/gi,'');if(s.keep_values){if(h.indexOf('/g,'';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='';if(tinymce.relaxedDomain){if(isIE)u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{d.designMode='On';}catch(ex){}}if(isIE)t.getBody().contentEditable=true;t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('','g'),'');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'
');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='

'+o.content+'
';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^

( |#160;|\s)<\/p>$/,'');});}if(isGecko){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this;if(!sf){t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language,i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[this.settings.language+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.split(/[;,]/),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){s=o.func.call(o.scope,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);return s;}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o;if(t._isHidden())return;if(o=t.queryStateCommands[c])return o.func.call(o.scope);o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o;if(t._isHidden())return;if(o=t.queryValueCommands[c])return o.func.call(o.scope);o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},remove:function(){var t=this;t.removed=1;t.hide();DOM.remove(t.getContainer());t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;},save:function(o){var t=this,e=t.getElement(),h,f;if(!t.initialized)return;o=o||{};o.save=true;o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'
',1);o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o={content:h};t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getDoc(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getDoc(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())d.execCommand("useCSS",0,true);}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.keyCode==46||e.keyCode==8||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'']);t.addShortcut('ctrl+7','',['FormatBlock',false,'

']);t.addShortcut('ctrl+8','',['FormatBlock',false,'

']);t.addShortcut('ctrl+9','',['FormatBlock',false,'
']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(o.ctrl!=e.ctrlKey&&(!tinymce.isMac||o.ctrl==e.metaKey))return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_destroy:function(){var t=this;if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':sp=dom.create('span',{style:dom.getAttrib(n,'style')});sp.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);break;}});}else if(o.set){each(t.dom.select('table,span',o.node),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onInit.add(function(){convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,sl,cl,fz,fzn,v,i,st,x,nl,sp,f,n;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function convertToFonts(no){if(tinymce.isWebKit||!s.inline_styles)return;nl=t.dom.select('span',no);for(x=nl.length-1;x>=0;x--){n=nl[x];f=dom.create('font',{color:dom.toHex(dom.getStyle(n,'color')),face:dom.getStyle(n,'fontFamily'),style:dom.getAttrib(n,'style')});st=f.style;if(st.color||st.fontFamily){st.color=st.fontFamily='';dom.setAttrib(f,'mce_style','');}if(sl){i=inArray(sl,dom.getStyle(n,'fontSize'));if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));f.style.fontSize='';}}else if(cl){i=inArray(cl,dom.getAttrib(n,'class'));v=dom.getStyle(n,'fontSize');if(i==-1&&v.indexOf('pt')>0)i=inArray(fz,parseInt(v));if(i==-1)i=inArray(fzn,v);if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));f.style.fontSize='';}}if(f.color||f.face||f.size){f.style.fontFamily='';dom.setAttrib(f,'mce_style','');dom.replace(f,n,1);}}};t.onSetContent.add(function(ed,o){convertToFonts(ed.getBody());});t.onPreProcess.add(function(ed,o){if(!s.inline_styles)return;if(o.get){nl=t.dom.select('font',o.node);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}}});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,e=ed.dom.getParent(ed.selection.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else ed.getDoc().execCommand('FontName',false,v);},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(isOpera||isWebKit){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return ed.getDoc().queryCommandValue('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(!v)v=ed.getDoc().queryCommandValue('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('
');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(e=t.getSelectedElement())set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;dom.setAttrib(n,'mce_new','');if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p)return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return ed.getDoc().queryCommandState(c);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor;val=ed.settings.forced_root_block?(val||'

'):val;if(/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(ed.selection.getNode().nodeName))t.mceRemoveNode();if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n;if(n&&n.nodeName=='A')return false;return ed.getDoc().queryCommandState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}else return!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE');return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList();},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),dom.isBlock);eb=dom.getParent(s.getEnd(),dom.isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),dom.isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),dom.isBlock);eb=dom.getParent(en||s.getEnd(),dom.isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(dom.isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0?t.index-1:0];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index','gi');t.rePadd=new RegExp(']+)><\/p>|]+)\/>|]+)>\s+<\/p>|

<\/p>||

\s+<\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR=new RegExp(']+)>[\s\u00a0]+<\/p>|

[\s\u00a0]+<\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp(']+)>\s*
\s*<\/p>|

\s*
\s*<\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\s*
\s*<\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0');if(!isIE&&o.set){o.content=o.content.replace(t.reNbsp2BR,'<'+elm+'$1$2>
');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0');o.content=o.content.replace(t.reTrailBr,'');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('
',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i;if(e&&e.keyCode==13)return true;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||!t.dom.isBlock(nx)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=d.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='
';if(isEmpty(aft))aft.innerHTML=isOpera?' ':'
';if(isOpera){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();r=d.createRange();r.selectNodeContents(aft);r.collapse(1);s.removeAllRanges();s.addRange(r);if(tinymce.isWebKit)ed.getWin().scrollTo(0,ed.dom.getPos(aft).y);else aft.scrollIntoView(0);return false;},backspaceDelete:function(e,bs){var t=this,ed=t.editor,b=ed.getBody(),n,se=ed.selection,r=se.getRng(),sc=r.startContainer,n;if(sc&&ed.dom.isBlock(sc)&&bs){if(sc.childNodes.length==1&&sc.firstChild.nodeName=='BR'){n=sc.previousSibling;if(n){ed.dom.remove(sc);se.select(n.firstChild);se.collapse(0);return Event.cancel(e);}}}function handler(e){e=e.target;if(e&&e.parentNode&&e.nodeName=='BR'&&t.getParentBlock(e)){ed.dom.remove(e);Event.remove(b,'DOMNodeInserted',handler);}};Event._add(b,'DOMNodeInserted',handler);window.setTimeout(function(){Event._remove(b,'DOMNodeInserted',handler);},1);}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,extend=tinymce.extend;tinymce.create('tinymce.ControlManager',{ControlManager:function(ed,s){var t=this,i;s=s||{};t.editor=ed;t.controls={};t.onAdd=new tinymce.util.Dispatcher(t);t.onPostRender=new tinymce.util.Dispatcher(t);t.prefix=s.prefix||ed.id+'_';t.onPostRender.add(function(){each(t.controls,function(c){c.postRender();});});},get:function(id){return this.controls[this.prefix+id]||this.controls[id];},setActive:function(id,s){var c=null;if(c=this.get(id))c.setActive(s);return c;},setDisabled:function(id,s){var c=null;if(c=this.get(id))c.setDisabled(s);return c;},add:function(c){var t=this;if(c){t.controls[c.id]=c;t.onAdd.dispatch(c,t);}return c;},createControl:function(n){var c,t=this,ed=t.editor;each(ed.plugins,function(p){if(p.createControl){c=p.createControl(n,t);if(c)return false;}});switch(n){case"|":case"separator":return t.createSeparator();}if(!c&&ed.buttons&&(c=ed.buttons[n]))return t.createButton(n,c);return t.add(c);},createDropMenu:function(id,s){var t=this,ed=t.editor,c,bm,v;s=extend({'class':'mceDropDown',constrain:ed.settings.constrain_menus},s);s['class']=s['class']+' '+ed.getParam('skin')+'Skin';if(v=ed.getParam('skin_variant'))s['class']+=' '+ed.getParam('skin')+'Skin'+v.substring(0,1).toUpperCase()+v.substring(1);id=t.prefix+id;c=t.controls[id]=new tinymce.ui.DropMenu(id,s);c.onAddItem.add(function(c,o){var s=o.settings;s.title=ed.getLang(s.title,s.title);if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,s.value);};}});ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){var s=ed.selection,n=s.getNode();if(n.nodeName=='IMG')bm=s.getBookmark();else bm=0;});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createListBox:function(id,s){var t=this,ed=t.editor,cmd,c;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;if(ed.settings.use_native_selects)c=new tinymce.ui.NativeListBox(id,s);else c=new tinymce.ui.ListBox(id,s);t.controls[id]=c;if(tinymce.isWebKit){c.onPostRender.add(function(c,n){Event.add(n,'mousedown',function(){ed.bookmark=ed.selection.getBookmark('simple');});Event.add(n,'focus',function(){ed.selection.moveToBookmark(ed.bookmark);ed.bookmark=null;});});}if(c.hideMenu)ed.onMouseDown.add(c.hideMenu,c);return t.add(c);},createButton:function(id,s){var t=this,ed=t.editor,o,c;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick&&!s.menu_button){s.onclick=function(){ed.execCommand(s.cmd,s.ui||false,s.value);};}s=extend({title:s.title,'class':'mce_'+id,unavailable_prefix:ed.getLang('unavailable',''),scope:s.scope,control_manager:t},s);id=t.prefix+id;if(s.menu_button){c=new tinymce.ui.MenuButton(id,s);ed.onMouseDown.add(c.hideMenu,c);}else c=new tinymce.ui.Button(id,s);return t.add(c);},createMenuButton:function(id,s){s=s||{};s.menu_button=1;return this.createButton(id,s);},createSplitButton:function(id,s){var t=this,ed=t.editor,cmd,c;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;c=t.add(new tinymce.ui.SplitButton(id,s));ed.onMouseDown.add(c.hideMenu,c);return c;},createColorSplitButton:function(id,s){var t=this,ed=t.editor,cmd,c;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,'menu_class':ed.getParam('skin')+'Skin',scope:s.scope,more_colors_title:ed.getLang('more_colors')},s);id=t.prefix+id;c=new tinymce.ui.ColorSplitButton(id,s);ed.onMouseDown.add(c.hideMenu,c);ed.onRemove.add(function(){c.destroy();});return t.add(c);},createToolbar:function(id,s){var c,t=this;id=t.prefix+id;c=new tinymce.ui.Toolbar(id,s);if(t.get(id))return null;return t.add(c);},createSeparator:function(){return new tinymce.ui.Separator();}});})();(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each,isIE=tinymce.isIE,isOpera=tinymce.isOpera;tinymce.create('tinymce.WindowManager',{WindowManager:function(ed){var t=this;t.editor=ed;t.onOpen=new Dispatcher(t);t.onClose=new Dispatcher(t);t.params={};t.features={};},open:function(s,p){var t=this,f='',x,y,mo=t.editor.settings.dialog_type=='modal',w,sw,sh,vp=tinymce.DOM.getViewPort(),u;s=s||{};p=p||{};sw=isOpera?vp.w:screen.width;sh=isOpera?vp.h:screen.height;s.name=s.name||'mc_'+new Date().getTime();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240);s.resizable=true;s.left=s.left||parseInt(sw/ 2.0) - (s.width /2.0);s.top=s.top||parseInt(sh/ 2.0) - (s.height /2.0);p.inline=false;p.mce_width=s.width;p.mce_height=s.height;p.mce_auto_focus=s.auto_focus;if(mo){if(isIE){s.center=true;s.help=false;s.dialogWidth=s.width+'px';s.dialogHeight=s.height+'px';s.scroll=s.scrollbars||false;}else s.modal=s.alwaysRaised=s.dialog=s.centerscreen=s.dependent=true;}each(s,function(v,k){if(tinymce.is(v,'boolean'))v=v?'yes':'no';if(!/^(name|url)$/.test(k)){if(isIE&&mo)f+=(f?';':'')+k+':'+v;else f+=(f?',':'')+k+'='+v;}});t.features=s;t.params=p;t.onOpen.dispatch(t,s,p);u=s.url||s.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;try{if(isIE&&mo){w=1;window.showModalDialog(s.url||s.file,window,f);}else w=window.open(u,s.name,f);}catch(ex){}if(!w)alert(t.editor.getLang('popup_blocked'));},close:function(w){w.close();this.onClose.dispatch(this);},createInstance:function(cl,a,b,c,d,e){var f=tinymce.resolve(cl);return new f(a,b,c,d,e);},confirm:function(t,cb,s){cb.call(s||this,confirm(this._decode(this.editor.getLang(t,t))));},alert:function(t,cb,s){alert(this._decode(t));if(cb)cb.call(s||this);},_decode:function(s){return tinymce.DOM.decode(s).replace(/\\n/g,'\n');}});}()); \ No newline at end of file +var tinymce={majorVersion:"3",minorVersion:"2.7",releaseDate:"2009-09-22",_init:function(){var o=this,k=document,l=window,j=navigator,b=j.userAgent,h,a,g,f,e,m;o.isOpera=l.opera&&opera.buildNumber;o.isWebKit=/WebKit/.test(b);o.isIE=!o.isWebKit&&!o.isOpera&&(/MSIE/gi).test(b)&&(/Explorer/gi).test(j.appName);o.isIE6=o.isIE&&/MSIE [56]/.test(b);o.isGecko=!o.isWebKit&&/Gecko/.test(b);o.isMac=b.indexOf("Mac")!=-1;o.isAir=/adobeair/i.test(b);if(l.tinyMCEPreInit){o.suffix=tinyMCEPreInit.suffix;o.baseURL=tinyMCEPreInit.base;o.query=tinyMCEPreInit.query;return}o.suffix="";a=k.getElementsByTagName("base");for(h=0;h=c.length){for(e=0,b=g.length;e=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(c){var e=c.each,b=c.is;var d=c.isWebKit,a=c.isIE;c.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(i,g){var f=this;f.doc=i;f.win=window;f.files={};f.cssFlicker=false;f.counter=0;f.boxModel=!c.isIE||i.compatMode=="CSS1Compat";f.stdMode=i.documentMode===8;f.settings=g=c.extend({keep_values:false,hex_colors:1,process_html:1},g);if(c.isIE6){try{i.execCommand("BackgroundImageCache",false,true)}catch(h){f.cssFlicker=true}}c.addUnload(f.destroy,f)},getRoot:function(){var f=this,g=f.settings;return(g&&f.get(g.root_element))||f.doc.body},getViewPort:function(g){var h,f;g=!g?this.win:g;h=g.document;f=this.boxModel?h.documentElement:h.body;return{x:g.pageXOffset||f.scrollLeft,y:g.pageYOffset||f.scrollTop,w:g.innerWidth||f.clientWidth,h:g.innerHeight||f.clientHeight}},getRect:function(i){var h,f=this,g;i=f.get(i);h=f.getPos(i);g=f.getSize(i);return{x:h.x,y:h.y,w:g.w,h:g.h}},getSize:function(j){var g=this,f,i;j=g.get(j);f=g.getStyle(j,"width");i=g.getStyle(j,"height");if(f.indexOf("px")===-1){f=0}if(i.indexOf("px")===-1){i=0}return{w:parseInt(f)||j.offsetWidth||j.clientWidth,h:parseInt(i)||j.offsetHeight||j.clientHeight}},getParent:function(i,h,g){return this.getParents(i,h,g,false)},getParents:function(p,k,i,m){var h=this,g,j=h.settings,l=[];p=h.get(p);m=m===undefined;if(j.strict_root){i=i||h.getRoot()}if(b(k,"string")){g=k;if(k==="*"){k=function(f){return f.nodeType==1}}else{k=function(f){return h.is(f,g)}}}while(p){if(p==i||!p.nodeType||p.nodeType===9){break}if(!k||k(p)){if(m){l.push(p)}else{return p}}p=p.parentNode}return m?l:null},get:function(f){var g;if(f&&this.doc&&typeof(f)=="string"){g=f;f=this.doc.getElementById(f);if(f&&f.id!==g){return this.doc.getElementsByName(g)[1]}}return f},getNext:function(g,f){return this._findSib(g,f,"nextSibling")},getPrev:function(g,f){return this._findSib(g,f,"previousSibling")},select:function(h,g){var f=this;return c.dom.Sizzle(h,f.get(g)||f.get(f.settings.root_element)||f.doc,[])},is:function(g,f){return c.dom.Sizzle.matches(f,g.nodeType?[g]:g).length>0},add:function(j,l,f,i,k){var g=this;return this.run(j,function(n){var m,h;m=b(l,"string")?g.doc.createElement(l):l;g.setAttribs(m,f);if(i){if(i.nodeType){m.appendChild(i)}else{g.setHTML(m,i)}}return !k?n.appendChild(m):m})},create:function(i,f,g){return this.add(this.doc.createElement(i),i,f,g,1)},createHTML:function(m,f,j){var l="",i=this,g;l+="<"+m;for(g in f){if(f.hasOwnProperty(g)){l+=" "+g+'="'+i.encode(f[g])+'"'}}if(c.is(j)){return l+">"+j+""}return l+" />"},remove:function(h,f){var g=this;return this.run(h,function(m){var l,k,j;l=m.parentNode;if(!l){return null}if(f){for(j=m.childNodes.length-1;j>=0;j--){g.insertAfter(m.childNodes[j],m)}}if(g.fixPsuedoLeaks){l=m.cloneNode(true);f="IELeakGarbageBin";k=g.get(f)||g.add(g.doc.body,"div",{id:f,style:"display:none"});k.appendChild(m);k.innerHTML="";return l}return l.removeChild(m)})},setStyle:function(i,f,g){var h=this;return h.run(i,function(l){var k,j;k=l.style;f=f.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(h.pixelStyles.test(f)&&(c.is(g,"number")||/^[\-0-9\.]+$/.test(g))){g+="px"}switch(f){case"opacity":if(a){k.filter=g===""?"":"alpha(opacity="+(g*100)+")";if(!i.currentStyle||!i.currentStyle.hasLayout){k.display="inline-block"}}k[f]=k["-moz-opacity"]=k["-khtml-opacity"]=g||"";break;case"float":a?k.styleFloat=g:k.cssFloat=g;break;default:k[f]=g||""}if(h.settings.update_styles){h.setAttrib(l,"mce_style")}})},getStyle:function(i,f,h){i=this.get(i);if(!i){return false}if(this.doc.defaultView&&h){f=f.replace(/[A-Z]/g,function(j){return"-"+j});try{return this.doc.defaultView.getComputedStyle(i,null).getPropertyValue(f)}catch(g){return null}}f=f.replace(/-(\D)/g,function(k,j){return j.toUpperCase()});if(f=="float"){f=a?"styleFloat":"cssFloat"}if(i.currentStyle&&h){return i.currentStyle[f]}return i.style[f]},setStyles:function(i,j){var g=this,h=g.settings,f;f=h.update_styles;h.update_styles=0;e(j,function(k,l){g.setStyle(i,l,k)});h.update_styles=f;if(h.update_styles){g.setAttrib(i,h.cssText)}},setAttrib:function(h,i,f){var g=this;if(!h||!i){return}if(g.settings.strict){i=i.toLowerCase()}return this.run(h,function(k){var j=g.settings;switch(i){case"style":if(!b(f,"string")){e(f,function(l,m){g.setStyle(k,m,l)});return}if(j.keep_values){if(f&&!g._isRes(f)){k.setAttribute("mce_style",f,2)}else{k.removeAttribute("mce_style",2)}}k.style.cssText=f;break;case"class":k.className=f||"";break;case"src":case"href":if(j.keep_values){if(j.url_converter){f=j.url_converter.call(j.url_converter_scope||g,f,i,k)}g.setAttrib(k,"mce_"+i,f,2)}break;case"shape":k.setAttribute("mce_style",f);break}if(b(f)&&f!==null&&f.length!==0){k.setAttribute(i,""+f,2)}else{k.removeAttribute(i,2)}})},setAttribs:function(g,h){var f=this;return this.run(g,function(i){e(h,function(j,k){f.setAttrib(i,k,j)})})},getAttrib:function(i,j,h){var f,g=this;i=g.get(i);if(!i||i.nodeType!==1){return false}if(!b(h)){h=""}if(/^(src|href|style|coords|shape)$/.test(j)){f=i.getAttribute("mce_"+j);if(f){return f}}if(a&&g.props[j]){f=i[g.props[j]];f=f&&f.nodeValue?f.nodeValue:f}if(!f){f=i.getAttribute(j,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(j)){if(i[g.props[j]]===true&&f===""){return j}return f?j:""}if(i.nodeName==="FORM"&&i.getAttributeNode(j)){return i.getAttributeNode(j).nodeValue}if(j==="style"){f=f||i.style.cssText;if(f){f=g.serializeStyle(g.parseStyle(f));if(g.settings.keep_values&&!g._isRes(f)){i.setAttribute("mce_style",f)}}}if(d&&j==="class"&&f){f=f.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(a){switch(j){case"rowspan":case"colspan":if(f===1){f=""}break;case"size":if(f==="+0"||f===20||f===0){f=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(f===0){f=""}break;case"hspace":if(f===-1){f=""}break;case"maxlength":case"tabindex":if(f===32768||f===2147483647||f==="32768"){f=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(f===65535){return j}return h;case"shape":f=f.toLowerCase();break;default:if(j.indexOf("on")===0&&f){f=(""+f).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}return(f!==undefined&&f!==null&&f!=="")?""+f:h},getPos:function(m,i){var g=this,f=0,l=0,j,k=g.doc,h;m=g.get(m);i=i||k.body;if(m){if(a&&!g.stdMode){m=m.getBoundingClientRect();j=g.boxModel?k.documentElement:k.body;f=g.getStyle(g.select("html")[0],"borderWidth");f=(f=="medium"||g.boxModel&&!g.isIE6)&&2||f;m.top+=g.win.self!=g.win.top?2:0;return{x:m.left+j.scrollLeft-f,y:m.top+j.scrollTop-f}}h=m;while(h&&h!=i&&h.nodeType){f+=h.offsetLeft||0;l+=h.offsetTop||0;h=h.offsetParent}h=m.parentNode;while(h&&h!=i&&h.nodeType){f-=h.scrollLeft||0;l-=h.scrollTop||0;h=h.parentNode}}return{x:f,y:l}},parseStyle:function(h){var i=this,j=i.settings,k={};if(!h){return k}function f(w,q,v){var o,u,m,n;o=k[w+"-top"+q];if(!o){return}u=k[w+"-right"+q];if(o!=u){return}m=k[w+"-bottom"+q];if(u!=m){return}n=k[w+"-left"+q];if(m!=n){return}k[v]=n;delete k[w+"-top"+q];delete k[w+"-right"+q];delete k[w+"-bottom"+q];delete k[w+"-left"+q]}function g(n,m,l,p){var o;o=k[m];if(!o){return}o=k[l];if(!o){return}o=k[p];if(!o){return}k[n]=k[m]+" "+k[l]+" "+k[p];delete k[m];delete k[l];delete k[p]}h=h.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");e(h.split(";"),function(m){var l,n=[];if(m){m=m.replace(/_MCE_SEMI_/g,";");m=m.replace(/url\([^\)]+\)/g,function(o){n.push(o);return"url("+n.length+")"});m=m.split(":");l=c.trim(m[1]);l=l.replace(/url\(([^\)]+)\)/g,function(p,o){return n[parseInt(o)-1]});l=l.replace(/rgb\([^\)]+\)/g,function(o){return i.toHex(o)});if(j.url_converter){l=l.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(o,p){return"url("+j.url_converter.call(j.url_converter_scope||i,i.decode(p),"style",null)+")"})}k[c.trim(m[0]).toLowerCase()]=l}});f("border","","border");f("border","-width","border-width");f("border","-color","border-color");f("border","-style","border-style");f("padding","","padding");f("margin","","margin");g("border","border-width","border-style","border-color");if(a){if(k.border=="medium none"){k.border=""}}return k},serializeStyle:function(g){var f="";e(g,function(i,h){if(h&&i){if(c.isGecko&&h.indexOf("-moz-")===0){return}switch(h){case"color":case"background-color":i=i.toLowerCase();break}f+=(f?" ":"")+h+": "+i+";"}});return f},loadCSS:function(f){var h=this,i=h.doc,g;if(!f){f=""}g=h.select("head")[0];e(f.split(","),function(j){var k;if(h.files[j]){return}h.files[j]=true;k=h.create("link",{rel:"stylesheet",href:c._addVer(j)});if(a&&i.documentMode){k.onload=function(){i.recalc();k.onload=null}}g.appendChild(k)})},addClass:function(f,g){return this.run(f,function(h){var i;if(!g){return 0}if(this.hasClass(h,g)){return h.className}i=this.removeClass(h,g);return h.className=(i!=""?(i+" "):"")+g})},removeClass:function(h,i){var f=this,g;return f.run(h,function(k){var j;if(f.hasClass(k,i)){if(!g){g=new RegExp("(^|\\s+)"+i+"(\\s+|$)","g")}j=k.className.replace(g," ");return k.className=c.trim(j!=" "?j:"")}return k.className})},hasClass:function(g,f){g=this.get(g);if(!g||!f){return false}return(" "+g.className+" ").indexOf(" "+f+" ")!==-1},show:function(f){return this.setStyle(f,"display","block")},hide:function(f){return this.setStyle(f,"display","none")},isHidden:function(f){f=this.get(f);return !f||f.style.display=="none"||this.getStyle(f,"display")=="none"},uniqueId:function(f){return(!f?"mce_":f)+(this.counter++)},setHTML:function(i,g){var f=this;return this.run(i,function(m){var h,k,j,q,l,h;g=f.processHTML(g);if(a){function o(){try{m.innerHTML="
"+g;m.removeChild(m.firstChild)}catch(n){while(m.firstChild){m.firstChild.removeNode()}h=f.create("div");h.innerHTML="
"+g;e(h.childNodes,function(r,p){if(p){m.appendChild(r)}})}}if(f.settings.fix_ie_paragraphs){g=g.replace(/

<\/p>|]+)><\/p>|/gi,' 

')}o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("p");for(k=j.length-1,h=0;k>=0;k--){q=j[k];if(!q.hasChildNodes()){if(!q.mce_keep){h=1;break}q.removeAttribute("mce_keep")}}}if(h){g=g.replace(/

]+)>|

/ig,'

');g=g.replace(/<\/p>/g,"
");o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("DIV");for(k=j.length-1;k>=0;k--){q=j[k];if(q.mce_tmp){l=f.doc.createElement("p");q.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(p,n){var r;if(n!=="mce_tmp"){r=q.getAttribute(n);if(!r&&n==="class"){r=q.className}l.setAttribute(n,r)}});for(h=0;h|]+)>/gi,"<$1b$2>");j=j.replace(/<(\/?)em>|]+)>/gi,"<$1i$2>")}else{if(a){j=j.replace(/'/g,"'");j=j.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,"")}}j=j.replace(/]+)\/>|/gi,"");if(i.keep_values){if(/)/g,"\n");h=h.replace(/^[\r\n]*|[\r\n]*$/g,"");h=h.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,"");return h}j=j.replace(/]+|)>([\s\S]*?)<\/script>/gi,function(h,m,l){if(!m){m=' type="text/javascript"'}m=m.replace(/src=\"([^\"]+)\"?/i,function(n,o){if(i.url_converter){o=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(o),"src","script"))}return'mce_src="'+o+'"'});if(c.trim(l)){k.push(f(l));l=""}return""+l+""});j=j.replace(/]+|)>([\s\S]*?)<\/style>/gi,function(h,m,l){if(l){k.push(f(l));l=""}return""+l+""});j=j.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(h,m,l){return""})}j=j.replace(//g,"");j=j.replace(/<([\w:]+) [^>]*(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)[^>]*>/gi,function(l){function h(o,m,n){if(n==="false"||n==="0"){return""}return" "+m+'="'+m+'"'}l=l.replace(/ (checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)=[\"]([^\"]+)[\"]/gi,h);l=l.replace(/ (checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)=[\']([^\']+)[\']/gi,h);l=l.replace(/ (checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)=([^\s\"\'>]+)/gi,h);l=l.replace(/ (checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)([\s>])/gi,' $1="$1"$2');return l});j=j.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(h,m){function l(o,n,q){var p=q;if(h.indexOf("mce_"+n)!=-1){return o}if(n=="style"){if(g._isRes(q)){return o}p=g.encode(g.serializeStyle(g.parseStyle(p)))}else{if(n!="coords"&&n!="shape"){if(i.url_converter){p=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(q),n,m))}}}return" "+n+'="'+q+'" mce_'+n+'="'+p+'"'}h=h.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,l);h=h.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,l);return h.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,l)});j=j.replace(/MCE_SCRIPT:([0-9]+)/g,function(l,h){return k[h]})}return j},getOuterHTML:function(f){var g;f=this.get(f);if(!f){return null}if(f.outerHTML!==undefined){return f.outerHTML}g=(f.ownerDocument||this.doc).createElement("body");g.appendChild(f.cloneNode(true));return g.innerHTML},setOuterHTML:function(j,g,k){var f=this;function i(m,l,p){var q,o;o=p.createElement("body");o.innerHTML=l;q=o.lastChild;while(q){f.insertAfter(q.cloneNode(true),m);q=q.previousSibling}f.remove(m)}return this.run(j,function(l){l=f.get(l);if(l.nodeType==1){k=k||l.ownerDocument||f.doc;if(a){try{if(a&&l.nodeType==1){l.outerHTML=g}else{i(l,g,k)}}catch(h){i(l,g,k)}}else{i(l,g,k)}}})},decode:function(g){var h,i,f;if(/&[^;]+;/.test(g)){h=this.doc.createElement("div");h.innerHTML=g;i=h.firstChild;f="";if(i){do{f+=i.nodeValue}while(i.nextSibling)}return f||g}return g},encode:function(f){return f?(""+f).replace(/[<>&\"]/g,function(h,g){switch(h){case"&":return"&";case'"':return""";case"<":return"<";case">":return">"}return h}):f},insertAfter:function(h,g){var f=this;g=f.get(g);return this.run(h,function(k){var j,i;j=g.parentNode;i=g.nextSibling;if(i){j.insertBefore(k,i)}else{j.appendChild(k)}return k})},isBlock:function(f){if(f.nodeType&&f.nodeType!==1){return false}f=f.nodeName||f;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TH|TBODY|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(f)},replace:function(i,h,f){var g=this;if(b(h,"array")){i=i.cloneNode(true)}return g.run(h,function(j){if(f){e(j.childNodes,function(k){i.appendChild(k.cloneNode(true))})}if(g.fixPsuedoLeaks&&j.nodeType===1){j.parentNode.insertBefore(i,j);g.remove(j);return i}return j.parentNode.replaceChild(i,j)})},findCommonAncestor:function(h,f){var i=h,g;while(i){g=f;while(g&&i!=g){g=g.parentNode}if(i==g){break}i=i.parentNode}if(!i&&h.ownerDocument){return h.ownerDocument.documentElement}return i},toHex:function(f){var h=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(f);function g(i){i=parseInt(i).toString(16);return i.length>1?i:"0"+i}if(h){f="#"+g(h[1])+g(h[2])+g(h[3]);return f}return f},getClasses:function(){var l=this,g=[],k,m={},n=l.settings.class_filter,j;if(l.classes){return l.classes}function o(f){e(f.imports,function(i){o(i)});e(f.cssRules||f.rules,function(i){switch(i.type||1){case 1:if(i.selectorText){e(i.selectorText.split(","),function(p){p=p.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(p)||!/\.[\w\-]+$/.test(p)){return}j=p;p=p.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(n&&!(p=n(p,j))){return}if(!m[p]){g.push({"class":p});m[p]=1}})}break;case 3:o(i.styleSheet);break}})}try{e(l.doc.styleSheets,o)}catch(h){}if(g.length>0){l.classes=g}return g},run:function(j,i,h){var g=this,k;if(g.doc&&typeof(j)==="string"){j=g.get(j)}if(!j){return false}h=h||this;if(!j.nodeType&&(j.length||j.length===0)){k=[];e(j,function(l,f){if(l){if(typeof(l)=="string"){l=g.doc.getElementById(l)}k.push(i.call(h,l,f))}});return k}return i.call(h,j)},getAttribs:function(g){var f;g=this.get(g);if(!g){return[]}if(a){f=[];if(g.nodeName=="OBJECT"){return g.attributes}if(g.nodeName==="OPTION"&&this.getAttrib(g,"selected")){f.push({specified:1,nodeName:"selected"})}g.cloneNode(false).outerHTML.replace(/<\/?[\w:]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=\w+|>/gi,"").replace(/[\w:]+/gi,function(h){f.push({specified:1,nodeName:h})});return f}return g.attributes},destroy:function(g){var f=this;if(f.events){f.events.destroy()}f.win=f.doc=f.root=f.events=null;if(!g){c.removeUnload(f.destroy)}},createRng:function(){var f=this.doc;return f.createRange?f.createRange():new c.dom.Range(this)},split:function(l,k,o){var p=this,f=p.createRng(),m,j,n;function g(r,q){r=r[q];if(r&&r[q]&&r[q].nodeType==1&&i(r[q])){p.remove(r[q])}}function i(q){q=p.getOuterHTML(q);q=q.replace(/<(img|hr|table)/gi,"-");q=q.replace(/<[^>]+>/g,"");return q.replace(/[ \t\r\n]+| | /g,"")==""}function h(r){var q=0;while(r.previousSibling){q++;r=r.previousSibling}return q}if(l&&k){f.setStart(l.parentNode,h(l));f.setEnd(k.parentNode,h(k));m=f.extractContents();f=p.createRng();f.setStart(k.parentNode,h(k)+1);f.setEnd(l.parentNode,h(l)+1);j=f.extractContents();n=l.parentNode;g(m,"lastChild");if(!i(m)){n.insertBefore(m,l)}if(o){n.replaceChild(o,k)}else{n.insertBefore(k,l)}g(j,"firstChild");if(!i(j)){n.insertBefore(j,l)}p.remove(l);return o||k}},bind:function(j,f,i,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.add(j,f,i,h||this)},unbind:function(i,f,h){var g=this;if(!g.events){g.events=new c.dom.EventUtils()}return g.events.remove(i,f,h)},_findSib:function(j,g,h){var i=this,k=g;if(j){if(b(k,"string")){k=function(f){return i.is(f,g)}}for(j=j[h];j;j=j[h]){if(k(j)){return j}}}return null},_isRes:function(f){return/^(top|left|bottom|right|width|height)/i.test(f)||/;\s*(top|left|bottom|right|width|height)/i.test(f)}});c.DOM=new c.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(f){var h=0,c=1,e=2,d=tinymce.extend;function g(m,k){var j,l;if(m.parentNode!=k){return -1}for(l=k.firstChild,j=0;l!=m;l=l.nextSibling){j++}return j}function b(k){var j=0;while(k.previousSibling){j++;k=k.previousSibling}return j}function i(j,k){var l;if(j.nodeType==3){return j}if(k<0){return j}l=j.firstChild;while(l!=null&&k>0){--k;l=l.nextSibling}if(l!=null){return l}return j}function a(k){var j=k.doc;d(this,{dom:k,startContainer:j,startOffset:0,endContainer:j,endOffset:0,collapsed:true,commonAncestorContainer:j,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3})}d(a.prototype,{setStart:function(k,j){this._setEndPoint(true,k,j)},setEnd:function(k,j){this._setEndPoint(false,k,j)},setStartBefore:function(j){this.setStart(j.parentNode,b(j))},setStartAfter:function(j){this.setStart(j.parentNode,b(j)+1)},setEndBefore:function(j){this.setEnd(j.parentNode,b(j))},setEndAfter:function(j){this.setEnd(j.parentNode,b(j)+1)},collapse:function(k){var j=this;if(k){j.endContainer=j.startContainer;j.endOffset=j.startOffset}else{j.startContainer=j.endContainer;j.startOffset=j.endOffset}j.collapsed=true},selectNode:function(j){this.setStartBefore(j);this.setEndAfter(j)},selectNodeContents:function(j){this.setStart(j,0);this.setEnd(j,j.nodeType===1?j.childNodes.length:j.nodeValue.length)},compareBoundaryPoints:function(m,n){var l=this,p=l.startContainer,o=l.startOffset,k=l.endContainer,j=l.endOffset;if(m===0){return l._compareBoundaryPoints(p,o,p,o)}if(m===1){return l._compareBoundaryPoints(p,o,k,j)}if(m===2){return l._compareBoundaryPoints(k,j,k,j)}if(m===3){return l._compareBoundaryPoints(k,j,p,o)}},deleteContents:function(){this._traverse(e)},extractContents:function(){return this._traverse(h)},cloneContents:function(){return this._traverse(c)},insertNode:function(m){var j=this,l,k;if(m.nodeType===3||m.nodeType===4){l=j.startContainer.splitText(j.startOffset);j.startContainer.parentNode.insertBefore(m,l)}else{if(j.startContainer.childNodes.length>0){k=j.startContainer.childNodes[j.startOffset]}j.startContainer.insertBefore(m,k)}},surroundContents:function(l){var j=this,k=j.extractContents();j.insertNode(l);l.appendChild(k);j.selectNode(l)},cloneRange:function(){var j=this;return d(new a(j.dom),{startContainer:j.startContainer,startOffset:j.startOffset,endContainer:j.endContainer,endOffset:j.endOffset,collapsed:j.collapsed,commonAncestorContainer:j.commonAncestorContainer})},_isCollapsed:function(){return(this.startContainer==this.endContainer&&this.startOffset==this.endOffset)},_compareBoundaryPoints:function(m,p,k,o){var q,l,j,r,t,s;if(m==k){if(p==o){return 0}else{if(p0){l.collapse(k)}}l.collapsed=l._isCollapsed();l.commonAncestorContainer=l.dom.findCommonAncestor(l.startContainer,l.endContainer)},_traverse:function(r){var s=this,q,m=0,v=0,k,o,l,n,j,u;if(s.startContainer==s.endContainer){return s._traverseSameContainer(r)}for(q=s.endContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.startContainer){return s._traverseCommonStartContainer(q,r)}++m}for(q=s.startContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.endContainer){return s._traverseCommonEndContainer(q,r)}++v}o=v-m;l=s.startContainer;while(o>0){l=l.parentNode;o--}n=s.endContainer;while(o<0){n=n.parentNode;o++}for(j=l.parentNode,u=n.parentNode;j!=u;j=j.parentNode,u=u.parentNode){l=j;n=u}return s._traverseCommonAncestors(l,n,r)},_traverseSameContainer:function(o){var r=this,q,u,j,k,l,p,m;if(o!=e){q=r.dom.doc.createDocumentFragment()}if(r.startOffset==r.endOffset){return q}if(r.startContainer.nodeType==3){u=r.startContainer.nodeValue;j=u.substring(r.startOffset,r.endOffset);if(o!=c){r.startContainer.deleteData(r.startOffset,r.endOffset-r.startOffset);r.collapse(true)}if(o==e){return null}q.appendChild(r.dom.doc.createTextNode(j));return q}k=i(r.startContainer,r.startOffset);l=r.endOffset-r.startOffset;while(l>0){p=k.nextSibling;m=r._traverseFullySelected(k,o);if(q){q.appendChild(m)}--l;k=p}if(o!=c){r.collapse(true)}return q},_traverseCommonStartContainer:function(j,p){var s=this,r,k,l,m,q,o;if(p!=e){r=s.dom.doc.createDocumentFragment()}k=s._traverseRightBoundary(j,p);if(r){r.appendChild(k)}l=g(j,s.startContainer);m=l-s.startOffset;if(m<=0){if(p!=c){s.setEndBefore(j);s.collapse(false)}return r}k=j.previousSibling;while(m>0){q=k.previousSibling;o=s._traverseFullySelected(k,p);if(r){r.insertBefore(o,r.firstChild)}--m;k=q}if(p!=c){s.setEndBefore(j);s.collapse(false)}return r},_traverseCommonEndContainer:function(m,p){var s=this,r,o,j,k,q,l;if(p!=e){r=s.dom.doc.createDocumentFragment()}j=s._traverseLeftBoundary(m,p);if(r){r.appendChild(j)}o=g(m,s.endContainer);++o;k=s.endOffset-o;j=m.nextSibling;while(k>0){q=j.nextSibling;l=s._traverseFullySelected(j,p);if(r){r.appendChild(l)}--k;j=q}if(p!=c){s.setStartAfter(m);s.collapse(true)}return r},_traverseCommonAncestors:function(p,j,s){var w=this,l,v,o,q,r,k,u,m;if(s!=e){v=w.dom.doc.createDocumentFragment()}l=w._traverseLeftBoundary(p,s);if(v){v.appendChild(l)}o=p.parentNode;q=g(p,o);r=g(j,o);++q;k=r-q;u=p.nextSibling;while(k>0){m=u.nextSibling;l=w._traverseFullySelected(u,s);if(v){v.appendChild(l)}u=m;--k}l=w._traverseRightBoundary(j,s);if(v){v.appendChild(l)}if(s!=c){w.setStartAfter(p);w.collapse(true)}return v},_traverseRightBoundary:function(p,q){var s=this,l=i(s.endContainer,s.endOffset-1),r,o,n,j,k;var m=l!=s.endContainer;if(l==p){return s._traverseNode(l,m,false,q)}r=l.parentNode;o=s._traverseNode(r,false,false,q);while(r!=null){while(l!=null){n=l.previousSibling;j=s._traverseNode(l,m,false,q);if(q!=e){o.insertBefore(j,o.firstChild)}m=true;l=n}if(r==p){return o}l=r.previousSibling;r=r.parentNode;k=s._traverseNode(r,false,false,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseLeftBoundary:function(p,q){var s=this,m=i(s.startContainer,s.startOffset);var n=m!=s.startContainer,r,o,l,j,k;if(m==p){return s._traverseNode(m,n,true,q)}r=m.parentNode;o=s._traverseNode(r,false,true,q);while(r!=null){while(m!=null){l=m.nextSibling;j=s._traverseNode(m,n,true,q);if(q!=e){o.appendChild(j)}n=true;m=l}if(r==p){return o}m=r.nextSibling;r=r.parentNode;k=s._traverseNode(r,false,true,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseNode:function(j,o,r,s){var u=this,m,l,p,k,q;if(o){return u._traverseFullySelected(j,s)}if(j.nodeType==3){m=j.nodeValue;if(r){k=u.startOffset;l=m.substring(k);p=m.substring(0,k)}else{k=u.endOffset;l=m.substring(0,k);p=m.substring(k)}if(s!=c){j.nodeValue=p}if(s==e){return null}q=j.cloneNode(false);q.nodeValue=l;return q}if(s==e){return null}return j.cloneNode(false)},_traverseFullySelected:function(l,k){var j=this;if(k!=e){return k==c?l.cloneNode(true):l}l.parentNode.removeChild(l);return null}});f.Range=a})(tinymce.dom);(function(){function a(e){var d=this,h="\uFEFF",b,g;function c(j,i){if(j&&i){if(j.item&&i.item&&j.item(0)===i.item(0)){return 1}if(j.isEqual&&i.isEqual&&i.isEqual(j)){return 1}}return 0}function f(){var m=e.dom,j=e.getRng(),s=m.createRng(),p,k,n,q,o,l;function i(v){var t=v.parentNode.childNodes,u;for(u=t.length-1;u>=0;u--){if(t[u]==v){return u}}return -1}function r(v){var t=j.duplicate(),B,y,u,w,x=0,z=0,A,C;t.collapse(v);B=t.parentElement();t.pasteHTML(h);u=B.childNodes;for(y=0;y0&&(w.nodeType!==3||u[y-1].nodeType!==3)){z++}if(w.nodeType===3){A=w.nodeValue.indexOf(h);if(A!==-1){x+=A;break}x+=w.nodeValue.length}else{x=0}}t.moveStart("character",-1);t.text="";return{index:z,offset:x,parent:B}}n=j.item?j.item(0):j.parentElement();if(n.ownerDocument!=m.doc){return s}if(j.item||!n.hasChildNodes()){s.setStart(n.parentNode,i(n));s.setEnd(s.startContainer,s.startOffset+1);return s}l=e.isCollapsed();p=r(true);k=r(false);p.parent.normalize();k.parent.normalize();q=p.parent.childNodes[Math.min(p.index,p.parent.childNodes.length-1)];if(q.nodeType!=3){s.setStart(p.parent,p.index)}else{s.setStart(p.parent.childNodes[p.index],p.offset)}o=k.parent.childNodes[Math.min(k.index,k.parent.childNodes.length-1)];if(o.nodeType!=3){if(!l){k.index++}s.setEnd(k.parent,k.index)}else{s.setEnd(k.parent.childNodes[k.index],k.offset)}if(!l){q=s.startContainer;if(q.nodeType==1){s.setStart(q,Math.min(s.startOffset,q.childNodes.length))}o=s.endContainer;if(o.nodeType==1){s.setEnd(o,Math.min(s.endOffset,o.childNodes.length))}}d.addRange(s);return s}this.addRange=function(j){var o,m=e.dom.doc.body,p,k,q,l,n,i;q=j.startContainer;l=j.startOffset;n=j.endContainer;i=j.endOffset;o=m.createTextRange();q=q.nodeType==1?q.childNodes[Math.min(l,q.childNodes.length-1)]:q;n=n.nodeType==1?n.childNodes[Math.min(l==i?i:i-1,n.childNodes.length-1)]:n;if(q==n&&q.nodeType==1){if(/^(IMG|TABLE)$/.test(q.nodeName)&&l!=i){o=m.createControlRange();o.addElement(q)}else{o=m.createTextRange();if(!q.hasChildNodes()&&q.canHaveHTML){q.innerHTML=h}o.moveToElementText(q);if(q.innerHTML==h){o.collapse(true);q.removeChild(q.firstChild)}}if(l==i){o.collapse(i<=j.endContainer.childNodes.length-1)}o.select();return}function r(t,v){var u,s,w;if(t.nodeType!=3){return -1}u=t.nodeValue;s=m.createTextRange();t.nodeValue=u.substring(0,v)+h+u.substring(v);s.moveToElementText(t.parentNode);s.findText(h);w=Math.abs(s.moveStart("character",-1048575));t.nodeValue=u;return w}if(j.collapsed){pos=r(q,l);o=m.createTextRange();o.move("character",pos);o.select();return}else{if(q==n&&q.nodeType==3){p=r(q,l);o=m.createTextRange();o.move("character",p);o.moveEnd("character",i-l);o.select();return}p=r(q,l);k=r(n,i);o=m.createTextRange();if(p==-1){o.moveToElementText(q);p=0}else{o.move("character",p)}tmpRng=m.createTextRange();if(k==-1){tmpRng.moveToElementText(n)}else{tmpRng.move("character",k)}o.setEndPoint("EndToEnd",tmpRng);o.select();return}};this.getRangeAt=function(){if(!b||!c(g,e.getRng())){b=f();g=e.getRng()}return b};this.destroy=function(){g=b=null}}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,i=0,d=Object.prototype.toString,n=false;var b=function(D,t,A,v){A=A||[];var e=t=t||document;if(t.nodeType!==1&&t.nodeType!==9){return[]}if(!D||typeof D!=="string"){return A}var B=[],C,y,G,F,z,s,r=true,w=o(t);p.lastIndex=0;while((C=p.exec(D))!==null){B.push(C[1]);if(C[2]){s=RegExp.rightContext;break}}if(B.length>1&&j.exec(D)){if(B.length===2&&f.relative[B[0]]){y=g(B[0]+B[1],t)}else{y=f.relative[B[0]]?[t]:b(B.shift(),t);while(B.length){D=B.shift();if(f.relative[D]){D+=B.shift()}y=g(D,y)}}}else{if(!v&&B.length>1&&t.nodeType===9&&!w&&f.match.ID.test(B[0])&&!f.match.ID.test(B[B.length-1])){var H=b.find(B.shift(),t,w);t=H.expr?b.filter(H.expr,H.set)[0]:H.set[0]}if(t){var H=v?{expr:B.pop(),set:a(v)}:b.find(B.pop(),B.length===1&&(B[0]==="~"||B[0]==="+")&&t.parentNode?t.parentNode:t,w);y=H.expr?b.filter(H.expr,H.set):H.set;if(B.length>0){G=a(y)}else{r=false}while(B.length){var u=B.pop(),x=u;if(!f.relative[u]){u=""}else{x=B.pop()}if(x==null){x=t}f.relative[u](G,x,w)}}else{G=B=[]}}if(!G){G=y}if(!G){throw"Syntax error, unrecognized expression: "+(u||D)}if(d.call(G)==="[object Array]"){if(!r){A.push.apply(A,G)}else{if(t&&t.nodeType===1){for(var E=0;G[E]!=null;E++){if(G[E]&&(G[E]===true||G[E].nodeType===1&&h(t,G[E]))){A.push(y[E])}}}else{for(var E=0;G[E]!=null;E++){if(G[E]&&G[E].nodeType===1){A.push(y[E])}}}}}else{a(G,A)}if(s){b(s,e,A,v);b.uniqueSort(A)}return A};b.uniqueSort=function(r){if(c){n=false;r.sort(c);if(n){for(var e=1;e":function(w,r,x){var u=typeof r==="string";if(u&&!/\W/.test(r)){r=x?r:r.toUpperCase();for(var s=0,e=w.length;s=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){for(var s=0;e[s]===false;s++){}return e[s]&&o(e[s])?r[1]:r[1].toUpperCase()},CHILD:function(e){if(e[1]=="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=="even"&&"2n"||e[2]=="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=i++;return e},ATTR:function(u,r,s,e,v,w){var t=u[1].replace(/\\/g,"");if(!w&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if(u[3].match(p).length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toUpperCase()==="BUTTON"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return re[3]-0},nth:function(s,r,e){return e[3]-0==r},eq:function(s,r,e){return e[3]-0==r}},filter:{PSEUDO:function(w,s,t,x){var r=s[1],u=f.filters[r];if(u){return u(w,t,s,x)}else{if(r==="contains"){return(w.textContent||w.innerText||"").indexOf(s[3])>=0}else{if(r==="not"){var v=s[3];for(var t=0,e=v.length;t=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),w=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?w===r:u==="*="?w.indexOf(r)>=0:u==="~="?(" "+w+" ").indexOf(r)>=0:!r?w&&e!==false:u==="!="?w!=r:u==="^="?w.indexOf(r)===0:u==="$="?w.substr(w.length-r.length)===r:u==="|="?w===r||w.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var j=f.match.POS;for(var l in f.match){f.match[l]=new RegExp(f.match[l].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var a=function(r,e){r=Array.prototype.slice.call(r);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(k){a=function(u,t){var r=t||[];if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var s=0,e=u.length;s";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(!!document.getElementById(s)){f.find.ID=function(u,v,w){if(typeof v.getElementById!=="undefined"&&!w){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r)})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="

";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(w,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!o(v)){try{return a(v.querySelectorAll(w),t)}catch(x){}}return e(w,v,t,u)};for(var r in e){b[r]=e[r]}})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var e=document.createElement("div");e.innerHTML="
";if(e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}}})()}function m(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t0){u=e;break}}}e=e[r]}A[t]=u}}}var h=document.compareDocumentPosition?function(r,e){return r.compareDocumentPosition(e)&16}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};var o=function(e){return e.nodeType===9&&e.documentElement.nodeName!=="HTML"||!!e.ownerDocument&&e.ownerDocument.documentElement.nodeName!=="HTML"};var g=function(e,x){var t=[],u="",v,s=x.nodeType?[x]:x;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var w=0,r=s.length;w=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){var b=a.each;a.create("tinymce.dom.Element",{Element:function(g,e){var c=this,f,d;e=e||{};c.id=g;c.dom=f=e.dom||a.DOM;c.settings=e;if(!a.isIE){d=c.dom.get(c.id)}b(["getPos","getRect","getParent","add","setStyle","getStyle","setStyles","setAttrib","setAttribs","getAttrib","addClass","removeClass","hasClass","getOuterHTML","setOuterHTML","remove","show","hide","isHidden","setHTML","get"],function(h){c[h]=function(){var j=[g],k;for(k=0;k_';j.deleteContents();j.insertNode(f.getRng().createContextualFragment(i));l=f.dom.get("__caret");j=k.createRange();j.setStartBefore(l);j.setEndAfter(l);f.setRng(j);f.dom.remove("__caret")}else{if(j.item){k.execCommand("Delete",false,null);j=f.getRng()}j.pasteHTML(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(1);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.firstChild}return h}else{h=g.startContainer;if(h.nodeName=="BODY"){return h.firstChild}return f.dom.getParent(h,"*")}},getEnd:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.lastChild}return h}else{h=g.endContainer;if(h.nodeName=="BODY"){return h.lastChild}return f.dom.getParent(h,"*")}},getBookmark:function(x){var j=this,m=j.getRng(),f,n,l,u=j.dom.getViewPort(j.win),v,p,z,o,w=-16777215,k,h=j.dom.getRoot(),g=0,i=0,y;n=u.x;l=u.y;if(x){return{rng:m,scrollX:n,scrollY:l}}if(a){if(m.item){v=m.item(0);d(j.dom.select(v.nodeName),function(s,r){if(v==s){p=r;return false}});return{tag:v.nodeName,index:p,scrollX:n,scrollY:l}}f=j.dom.doc.body.createTextRange();f.moveToElementText(h);f.collapse(true);z=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(true);p=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(false);o=Math.abs(f.move("character",w))-p;return{start:p-z,length:o,scrollX:n,scrollY:l}}v=j.getNode();k=j.getSel();if(!k){return null}if(v&&v.nodeName=="IMG"){return{scrollX:n,scrollY:l}}function q(A,D,t){var s=j.dom.doc.createTreeWalker(A,NodeFilter.SHOW_TEXT,null,false),E,B=0,C={};while((E=s.nextNode())!=null){if(E==D){C.start=B}if(E==t){C.end=B;return C}B+=e(E.nodeValue||"").length}return null}if(k.anchorNode==k.focusNode&&k.anchorOffset==k.focusOffset){v=q(h,k.anchorNode,k.focusNode);if(!v){return{scrollX:n,scrollY:l}}e(k.anchorNode.nodeValue||"").replace(/^\s+/,function(r){g=r.length});return{start:Math.max(v.start+k.anchorOffset-g,0),end:Math.max(v.end+k.focusOffset-g,0),scrollX:n,scrollY:l,beg:k.anchorOffset-g==0}}else{v=q(h,m.startContainer,m.endContainer);if(!v){return{scrollX:n,scrollY:l}}return{start:Math.max(v.start+m.startOffset-g,0),end:Math.max(v.end+m.endOffset-i,0),scrollX:n,scrollY:l,beg:m.startOffset-g==0}}},moveToBookmark:function(n){var o=this,g=o.getRng(),p=o.getSel(),j=o.dom.getRoot(),m,h,k;function i(q,t,D){var B=o.dom.doc.createTreeWalker(q,NodeFilter.SHOW_TEXT,null,false),x,s=0,A={},u,C,z,y;while((x=B.nextNode())!=null){z=y=0;k=x.nodeValue||"";h=e(k).length;s+=h;if(s>=t&&!A.startNode){u=t-(s-h);if(n.beg&&u>=h){continue}A.startNode=x;A.startOffset=u+y}if(s>=D){A.endNode=x;A.endOffset=D-(s-h)+y;return A}}return null}if(!n){return false}o.win.scrollTo(n.scrollX,n.scrollY);if(a){o.tridentSel.destroy();if(g=n.rng){try{g.select()}catch(l){}return true}o.win.focus();if(n.tag){g=j.createControlRange();d(o.dom.select(n.tag),function(r,q){if(q==n.index){g.addElement(r)}})}else{try{if(n.start<0){return true}g=p.createRange();g.moveToElementText(j);g.collapse(true);g.moveStart("character",n.start);g.moveEnd("character",n.length)}catch(f){return true}}try{g.select()}catch(l){}return true}if(!p){return false}if(n.rng){p.removeAllRanges();p.addRange(n.rng)}else{if(b(n.start)&&b(n.end)){try{m=i(j,n.start,n.end);if(m){g=o.dom.doc.createRange();g.setStart(m.startNode,m.startOffset);g.setEnd(m.endNode,m.endOffset);p.removeAllRanges();p.addRange(g)}if(!c.isOpera){o.win.focus()}}catch(l){}}}},select:function(g,l){var p=this,f=p.getRng(),q=p.getSel(),o,m,k,j=p.win.document;function h(u,t){var s,r;if(u){s=j.createTreeWalker(u,NodeFilter.SHOW_TEXT,null,false);while(u=s.nextNode()){r=u;if(c.trim(u.nodeValue).length!=0){if(t){return u}else{r=u}}}}return r}if(a){try{o=j.body;if(/^(IMG|TABLE)$/.test(g.nodeName)){f=o.createControlRange();f.addElement(g)}else{f=o.createTextRange();f.moveToElementText(g)}f.select()}catch(i){}}else{if(l){m=h(g,1)||p.dom.select("br:first",g)[0];k=h(g,0)||p.dom.select("br:last",g)[0];if(m&&k){f=j.createRange();if(m.nodeName=="BR"){f.setStartBefore(m)}else{f.setStart(m,0)}if(k.nodeName=="BR"){f.setEndBefore(k)}else{f.setEnd(k,k.nodeValue.length)}}else{f.selectNode(g)}}else{f.selectNode(g)}p.setRng(f)}return g},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}return !g||h.boundingWidth==0||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(j){var g=this,h,i;if(j&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}}catch(f){}if(!i){i=a?g.win.document.body.createTextRange():g.win.document.createRange()}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){h.removeAllRanges();h.addRange(i)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var f=this,h=f.getRng(),g=f.getSel(),i;if(!a){if(!h){return f.dom.getRoot()}i=h.commonAncestorContainer;if(!h.collapsed){if(c.isWebKit&&g.anchorNode&&g.anchorNode.nodeType==1){return g.anchorNode.childNodes[g.anchorOffset]}if(h.startContainer==h.endContainer){if(h.startOffset-h.endOffset<2){if(h.startContainer.hasChildNodes()){i=h.startContainer.childNodes[h.startOffset]}}}}return f.dom.getParent(i,"*")}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>||<\/html>||]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,">")}return b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){this.settings=a.extend({indent_char:" ",indentation:0},b);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(b){this._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(d,b){var c=this;c.writeRaw(" "+c.encode(d)+'="'+c.encode(b)+'"')},writeEndElement:function(){var b;if(this.tags.length>0){b=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._writeAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:function(b){this._writeAttributesEnd();this.writeRaw("");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("");this.count++},writeRaw:function(b){this.str+=b},encode:function(b){return b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"<";case">":return">";case"&":return"&";case'"':return"""}return c})},getContent:function(){return this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.inAttr=false;if(b&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_|sizset|sizcache)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",valid_elements:"*[*]",extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(
\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^
\s*<\//.test(n)){return""}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,y,w=["ol","ul"],u,t,q,k=/^(OL|UL)$/,z;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p=1767){f(i.dom.select("p table",l.node).reverse(),function(p){var o=i.dom.getParent(p.parentNode,"table,p");if(o.nodeName!="TABLE"){try{i.dom.split(o,p)}catch(m){}}})}})}},setEntities:function(p){var n=this,j,m,h={},o="",k;if(n.entityLookup){return}j=p.split(",");for(m=0;m1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t=1767)){p=j.createHTMLDocument("");f(r.nodeName=="BODY"?r.childNodes:[r],function(h){p.body.appendChild(p.importNode(h,true))});if(r.nodeName!="BODY"){r=p.body.firstChild}else{r=p.body}i=k.dom.doc;k.dom.doc=p}k.key=""+(parseInt(k.key)+1);if(!q.no_events){q.node=r;k.onPreProcess.dispatch(k,q)}k.writer.reset();k._serializeNode(r,q.getInner);q.content=k.writer.getContent();if(i){k.dom.doc=i}if(!q.no_events){k.onPostProcess.dispatch(k,q)}k._postProcess(q);q.node=null;return e.trim(q.content)},_postProcess:function(n){var i=this,k=i.settings,j=n.content,m=[],l;if(n.format=="html"){l=i._protect({content:j,patterns:[{pattern:/(]*>)(.*?)(<\/script>)/g},{pattern:/(]*>)(.*?)(<\/noscript>)/g},{pattern:/(]*>)(.*?)(<\/style>)/g},{pattern:/(]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/()/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/

\s+<\/p>|]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?" 

":" 

");if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=j.replace(/(<[^>]+>)\s+/g,"$1 ");j=j.replace(/\s+(<\/[^>]+>)/g," $1");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"")}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");j=j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");j=j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(//g,"");if(k.entity_encoding=="raw"){j=j.replace(/

 <\/p>|]+)> <\/p>/g,"\u00a0

")}j=j.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(h,p,o){return""+i.dom.decode(o.replace(//g,""))+""})}n.content=j},_serializeNode:function(D,o){var z=this,A=z.settings,x=z.writer,q,j,u,F,E,G,B,h,y,k,r,C,p,m;if(!A.node_filter||A.node_filter(D)){switch(D.nodeType){case 1:if(D.hasAttribute?D.hasAttribute("mce_bogus"):D.getAttribute("mce_bogus")){return}p=false;q=D.hasChildNodes();k=D.getAttribute("mce_name")||D.nodeName.toLowerCase();if(d){if(D.scopeName!=="HTML"&&D.scopeName!=="html"){k=D.scopeName+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!z.validElementsRE||!z.validElementsRE.test(k)||(z.invalidElementsRE&&z.invalidElementsRE.test(k))||o){p=true;break}if(d){if(A.fix_content_duplication){if(D.mce_serialized==z.key){return}D.mce_serialized=z.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(D.nodeName==="BR"&&D.getAttribute("type")=="_moz"){return}}}if(z.childRules){if(z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(k)){p=true;break}}z.elementName=k}r=z.findRule(k);k=r.name||k;m=A.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=true;break}if(r.requiredAttribs){G=r.requiredAttribs;for(F=G.length-1;F>=0;F--){if(this.dom.getAttrib(D,G[F])!==""){break}}if(F==-1){p=true;break}}x.writeStartElement(k);if(r.attribs){for(F=0,B=r.attribs,E=B.length;F-1;F--){h=B[F];if(h.specified){G=h.nodeName.toLowerCase();if(A.invalid_attrs.test(G)||!r.validAttribsRE.test(G)){continue}C=z.findAttribRule(r,G);y=z._getAttrib(D,C,G);if(y!==null){x.writeAttribute(G,y)}}}}if(k==="script"&&e.trim(D.innerHTML)){x.writeText("// ");x.writeCDATA(D.innerHTML.replace(/|<\[CDATA\[|\]\]>/g,""));q=false;break}if(r.padd){if(q&&(u=D.firstChild)&&u.nodeType===1&&D.childNodes.length===1){if(u.hasAttribute?u.hasAttribute("mce_bogus"):u.getAttribute("mce_bogus")){x.writeText("\u00a0")}}else{if(!q){x.writeText("\u00a0")}}}break;case 3:if(z.childRules&&z.parentElementsRE.test(z.elementName)){if(!z.childRules[z.elementName].test(D.nodeName)){return}}return x.writeText(D.nodeValue);case 4:return x.writeCDATA(D.nodeValue);case 8:return x.writeComment(D.nodeValue)}}else{if(D.nodeType==1){q=D.hasChildNodes()}}if(q&&!m){u=D.firstChild;while(u){z._serializeNode(u);z.elementName=k;u=u.nextSibling}}if(!p){if(!m){x.writeFullEndElement()}else{x.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+""+p}))});return j},_unprotect:function(i,j){i=i.replace(/\"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,""))}}if(b.stdMode){e+='
"}else{e+=""}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,""))}}}g="mceToolbarEnd";if(j.Button){g+=" mceToolbarEndButton"}else{if(j.SplitButton){g+=" mceToolbarEndSplitButton"}else{if(j.ListBox){g+=" mceToolbarEndListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,""));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},""+e+"")}});(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new a(this),get:function(d){return this.lookup[d]},requireLangPack:function(f){var d,e=b.EditorManager.settings;if(e&&e.language){d=this.urls[f]+"/langs/"+e.language+".js";if(!b.dom.Event.domLoaded&&!e.strict_mode){b.ScriptLoader.load(d)}else{b.ScriptLoader.add(d)}}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));b.ScriptLoader.add(e,d,g)}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(f){var g=f.each,h=f.extend,e=f.DOM,a=f.dom.Event,c=f.ThemeManager,b=f.PluginManager,d=f.explode;f.create("static tinymce.EditorManager",{editors:{},i18n:{},activeEditor:null,preInit:function(){var i=this,j=window.location;f.documentBaseURL=j.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(f.documentBaseURL)){f.documentBaseURL+="/"}f.baseURL=new f.util.URI(f.documentBaseURL).toAbsolute(f.baseURL);f.EditorManager.baseURI=new f.util.URI(f.baseURL);i.onBeforeUnload=new f.util.Dispatcher(i);a.add(window,"beforeunload",function(k){i.onBeforeUnload.dispatch(i,k)})},init:function(q){var p=this,l,k=f.ScriptLoader,o,n,i=[],m;function j(u,v,r){var t=u[v];if(!t){return}if(f.is(t,"string")){r=t.replace(/\.\w+$/,"");r=r?f.resolve(r):0;t=f.resolve(t)}return t.apply(r||this,Array.prototype.slice.call(arguments,2))}q=h({theme:"simple",language:"en",strict_loading_mode:document.contentType=="application/xhtml+xml"},q);p.settings=q;if(!a.domLoaded&&!q.strict_loading_mode){if(q.language){k.add(f.baseURL+"/langs/"+q.language+".js")}if(q.theme&&q.theme.charAt(0)!="-"&&!c.urls[q.theme]){c.load(q.theme,"themes/"+q.theme+"/editor_template"+f.suffix+".js")}if(q.plugins){l=d(q.plugins);g(l,function(r){if(r&&r.charAt(0)!="-"&&!b.urls[r]){if(!f.isWebKit&&r=="safari"){return}b.load(r,"plugins/"+r+"/editor_plugin"+f.suffix+".js")}})}k.loadQueue()}a.add(document,"init",function(){var r,t;j(q,"onpageload");if(q.browsers){r=false;g(d(q.browsers),function(u){switch(u){case"ie":case"msie":if(f.isIE){r=true}break;case"gecko":if(f.isGecko){r=true}break;case"safari":case"webkit":if(f.isWebKit){r=true}break;case"opera":if(f.isOpera){r=true}break}});if(!r){return}}switch(q.mode){case"exact":r=q.elements||"";if(r.length>0){g(d(r),function(u){if(e.get(u)){m=new f.Editor(u,q);i.push(m);m.render(1)}else{o=0;g(document.forms,function(v){g(v.elements,function(w){if(w.name===u){u="mce_editor_"+o;e.setAttrib(w,"id",u);m=new f.Editor(u,q);i.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function s(v,u){return u.constructor===RegExp?u.test(v.className):e.hasClass(v,u)}g(e.select("textarea"),function(u){if(q.editor_deselector&&s(u,q.editor_deselector)){return}if(!q.editor_selector||s(u,q.editor_selector)){n=e.get(u.name);if(!u.id&&!n){u.id=u.name}if(!u.id||p.get(u.id)){u.id=e.uniqueId()}m=new f.Editor(u.id,q);i.push(m);m.render(1)}});break}if(q.oninit){r=t=0;g(i,function(u){t++;if(!u.initialized){u.onInit.add(function(){r++;if(r==t){j(q,"oninit")}})}else{r++}if(r==t){j(q,"oninit")}})}})},get:function(i){return this.editors[i]},getInstanceById:function(i){return this.get(i)},add:function(i){this.editors[i.id]=i;this._setActive(i);return i},remove:function(j){var i=this;if(!i.editors[j.id]){return null}delete i.editors[j.id];if(i.activeEditor==j){i._setActive(null);g(i.editors,function(k){i._setActive(k);return false})}j.destroy();return j},execCommand:function(o,m,l){var n=this,k=n.get(l),i;switch(o){case"mceFocus":k.focus();return true;case"mceAddEditor":case"mceAddControl":if(!n.get(l)){new f.Editor(l,n.settings).render()}return true;case"mceAddFrameControl":i=l.window;i.tinyMCE=tinyMCE;i.tinymce=f;f.DOM.doc=i.document;f.DOM.win=i;k=new f.Editor(l.element_id,l);k.render();if(f.isIE){function j(){k.destroy();i.detachEvent("onunload",j);i=i.tinyMCE=i.tinymce=null}i.attachEvent("onunload",j)}l.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(k){k.remove()}return true;case"mceToggleEditor":if(!k){n.execCommand("mceAddControl",0,l);return true}if(k.isHidden()){k.show()}else{k.hide()}return true}if(n.activeEditor){return n.activeEditor.execCommand(o,m,l)}return false},execInstanceCommand:function(m,l,k,j){var i=this.get(m);if(i){return i.execCommand(l,k,j)}return false},triggerSave:function(){g(this.editors,function(i){i.save()})},addI18n:function(k,l){var i,j=this.i18n;if(!f.is(k,"string")){g(k,function(n,m){g(n,function(q,p){g(q,function(s,r){if(p==="common"){j[m+"."+r]=s}else{j[m+"."+p+"."+r]=s}})})})}else{g(l,function(n,m){j[k+"."+m]=n})}},_setActive:function(i){this.selectedInstance=this.activeEditor=i}});f.EditorManager.preInit()})(tinymce);var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher;var j=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit;var d=n.is,h=n.ThemeManager,c=n.PluginManager,i=n.EditorManager;var p=n.inArray,m=n.grep,g=n.explode;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.isNotDirty=false;q.plugins={};j(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'',visual_table_class:"mceItemTable",visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|title|dir';if(G.document_base_url!=n.documentBaseURL){F.iframeHTML+=''}F.iframeHTML+='';if(n.relaxedDomain){F.iframeHTML+=''); - tinymce.ScriptLoader.markDone(u); - } - } - }, - - pickColor : function(e, element_id) { - this.execCommand('mceColorPicker', true, { - color : document.getElementById(element_id).value, - func : function(c) { - document.getElementById(element_id).value = c; - - try { - document.getElementById(element_id).onchange(); - } catch (ex) { - // Try fire event, ignore errors - } - } - }); - }, - - openBrowser : function(element_id, type, option) { - tinyMCEPopup.restoreSelection(); - this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window); - }, - - close : function() { - var t = this; - - // To avoid domain relaxing issue in Opera - function close() { - t.editor.windowManager.close(window, t.id); - tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup - }; - - if (tinymce.isOpera) - t.getWin().setTimeout(close, 0); - else - close(); - }, - - // Internal functions - - _restoreSelection : function() { - var e = window.event.srcElement; - - if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button')) - tinyMCEPopup.restoreSelection(); - }, - -/* _restoreSelection : function() { - var e = window.event.srcElement; - - // If user focus a non text input or textarea - if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text') - tinyMCEPopup.restoreSelection(); - },*/ - - _onDOMLoaded : function() { - var t = this, ti = document.title, bm, h; - - // Translate page - h = document.body.innerHTML; - - // Replace a=x with a="x" in IE - if (tinymce.isIE) - h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"') - - document.body.innerHTML = t.editor.translate(h); - document.title = ti = t.editor.translate(ti); - document.body.style.display = ''; - - // Restore selection in IE when focus is placed on a non textarea or input element of the type text - if (tinymce.isIE) - document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection); - - t.restoreSelection(); - t.resizeToInnerSize(); - - // Set inline title - if (!t.isWindow) - t.editor.windowManager.setTitle(ti, t.id); - else - window.focus(); - - if (!tinymce.isIE && !t.isWindow) { - tinymce.dom.Event._add(document, 'focus', function() { - t.editor.windowManager.focus(t.id) - }); - } - - // Patch for accessibility - tinymce.each(t.dom.select('select'), function(e) { - e.onkeydown = tinyMCEPopup._accessHandler; - }); - - // Call onInit - // Init must be called before focus so the selection won't get lost by the focus call - tinymce.each(t.listeners, function(o) { - o.func.call(o.scope, t.editor); - }); - - // Move focus to window - if (t.getWindowArg('mce_auto_focus', true)) { - window.focus(); - - // Focus element with mceFocus class - tinymce.each(document.forms, function(f) { - tinymce.each(f.elements, function(e) { - if (t.dom.hasClass(e, 'mceFocus')) { - e.focus(); - return false; // Break loop - } - }); - }); - } - - document.onkeydown = tinyMCEPopup._closeWinKeyHandler; - }, - - _accessHandler : function(e) { - e = e || window.event; - - if (e.keyCode == 13 || e.keyCode == 32) { - e = e.target || e.srcElement; - - if (e.onchange) - e.onchange(); - - return tinymce.dom.Event.cancel(e); - } - }, - - _closeWinKeyHandler : function(e) { - e = e || window.event; - - if (e.keyCode == 27) - tinyMCEPopup.close(); - }, - - _wait : function() { - var t = this, ti; - - if (tinymce.isIE && document.location.protocol != 'https:') { - // Fake DOMContentLoaded on IE - document.write(''); + document.write(''); }; if (!tinymce.is(u, 'string')) { @@ -4360,6 +6785,12 @@ tinymce.create('static tinymce.util.XHR', { o.state = 1; // Is loading + tinymce.dom.ScriptLoader.loadScript(o.url, function() { + done(o); + allDone(); + }); + + /* tinymce.util.XHR.send({ url : o.url, error : t.settings.error, @@ -4369,6 +6800,7 @@ tinymce.create('static tinymce.util.XHR', { allDone(); } }); + */ }; each(sc, function(o) { @@ -4385,7 +6817,7 @@ tinymce.create('static tinymce.util.XHR', { if (o.state > 0) return; - if (!tinymce.dom.Event.domLoaded && !t.settings.strict_mode) { + if (!Event.domLoaded && !t.settings.strict_mode) { var ix, ol = ''; // Add onload events @@ -4405,7 +6837,7 @@ tinymce.create('static tinymce.util.XHR', { ol += 'tinymce.dom.ScriptLoader._onLoad(this,\'' + u + '\',' + ix + ');"'; } - document.write(''); + document.write(''); if (!o.func) done(o); @@ -4430,18 +6862,50 @@ tinymce.create('static tinymce.util.XHR', { _onLoad : function(e, u, ix) { if (!tinymce.isIE || e.readyState == 'complete') this._funcs[ix].call(this); + }, + + loadScript : function(u, cb) { + var id = tinymce.DOM.uniqueId(), e; + + function done() { + Event.clear(id); + tinymce.DOM.remove(id); + + if (cb) { + cb.call(document, u); + cb = 0; + } + }; + + if (tinymce.isIE) { +/* Event.add(e, 'readystatechange', function(e) { + if (e.target && e.target.readyState == 'complete') + done(); + });*/ + + tinymce.util.XHR.send({ + url : tinymce._addVer(u), + async : false, + success : function(co) { + window.execScript(co); + done(); + } + }); + } else { + e = tinymce.DOM.create('script', {id : id, type : 'text/javascript', src : tinymce._addVer(u)}); + Event.add(e, 'load', done); + + // Check for head or body + (document.getElementsByTagName('head')[0] || document.body).appendChild(e); + } } } - - }); + }); // Global script loader tinymce.ScriptLoader = new tinymce.dom.ScriptLoader(); -})(); - -/* file:jscripts/tiny_mce/classes/ui/Control.js */ - -(function() { +})(tinymce); +(function(tinymce) { // Shorten class names var DOM = tinymce.DOM, is = tinymce.is; @@ -4532,18 +6996,21 @@ tinymce.create('static tinymce.util.XHR', { } }, - destroy : function() { + remove : function() { DOM.remove(this.id); + this.destroy(); + }, + + destroy : function() { + tinymce.dom.Event.clear(this.id); } - - }); -})(); -/* file:jscripts/tiny_mce/classes/ui/Container.js */ - -tinymce.create('tinymce.ui.Container:tinymce.ui.Control', { + }); +})(tinymce);tinymce.create('tinymce.ui.Container:tinymce.ui.Control', { Container : function(id, s) { this.parent(id, s); + this.controls = []; + this.lookup = {}; }, @@ -4557,22 +7024,19 @@ tinymce.create('tinymce.ui.Container:tinymce.ui.Control', { get : function(n) { return this.lookup[n]; } - - }); - - -/* file:jscripts/tiny_mce/classes/ui/Separator.js */ +}); tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { + Separator : function(id, s) { + this.parent(id, s); + this.classPrefix = 'mceSeparator'; + }, + renderHTML : function() { - return tinymce.DOM.createHTML('span', {'class' : 'mceSeparator'}); + return tinymce.DOM.createHTML('span', {'class' : this.classPrefix}); } - - }); - -/* file:jscripts/tiny_mce/classes/ui/MenuItem.js */ - -(function() { +}); +(function(tinymce) { var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk; tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', { @@ -4599,13 +7063,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { if (is(t.selected)) t.setSelected(t.selected); } - - }); -})(); - -/* file:jscripts/tiny_mce/classes/ui/Menu.js */ - -(function() { + }); +})(tinymce); +(function(tinymce) { var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk; tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', { @@ -4685,6 +7145,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { walk(t, function(o) { if (o.removeAll) o.removeAll(); + else + o.remove(); o.destroy(); }, 'items', t); @@ -4699,18 +7161,14 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { return m; } - - }); -})(); -/* file:jscripts/tiny_mce/classes/ui/DropMenu.js */ - -(function() { + }); +})(tinymce);(function(tinymce) { var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element; tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', { DropMenu : function(id, s) { s = s || {}; - s.container = s.container || document.body; + s.container = s.container || DOM.doc.body; s.offset_x = s.offset_x || 0; s.offset_y = s.offset_y || 0; s.vp_offset_x = s.vp_offset_x || 0; @@ -4723,9 +7181,6 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { this.onShowMenu = new tinymce.util.Dispatcher(this); this.onHideMenu = new tinymce.util.Dispatcher(this); this.classPrefix = 'mceMenu'; - - // Fix for odd IE bug: #1903622 - this.fixIE = tinymce.isIE && window.top != window; }, createMenu : function(s) { @@ -4767,7 +7222,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { }, showMenu : function(x, y, px) { - var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb; + var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb, cp = t.classPrefix; t.collapse(1); @@ -4815,12 +7270,12 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { t.element.update(); t.isMenuVisible = 1; - t.mouseClickFunc = Event.add(co, t.fixIE ? 'mousedown' : 'click', function(e) { + t.mouseClickFunc = Event.add(co, 'click', function(e) { var m; e = e.target; - if (e && (e = DOM.getParent(e, 'TR')) && !DOM.hasClass(e, 'mceMenuItemSub')) { + if (e && (e = DOM.getParent(e, 'tr')) && !DOM.hasClass(e, cp + 'ItemSub')) { m = t.items[e.id]; if (m.isDisabled()) @@ -4847,7 +7302,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { var m, r, mi; e = e.target; - if (e && (e = DOM.getParent(e, 'TR'))) { + if (e && (e = DOM.getParent(e, 'tr'))) { m = t.items[e.id]; if (t.lastMenu) @@ -4856,18 +7311,24 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { if (m.isDisabled()) return; - if (e && DOM.hasClass(e, 'mceMenuItemSub')) { + if (e && DOM.hasClass(e, cp + 'ItemSub')) { //p = DOM.getPos(s.container); r = DOM.getRect(e); m.showMenu((r.x + r.w - ot), r.y - ot, r.x); t.lastMenu = m; - DOM.addClass(DOM.get(m.id).firstChild, 'mceMenuItemActive'); + DOM.addClass(DOM.get(m.id).firstChild, cp + 'ItemActive'); } } }); } t.onShowMenu.dispatch(t); + + if (s.keyboard_focus) { + Event.add(co, 'keydown', t._keyHandler, t); + DOM.select('a', 'menu_' + t.id)[0].focus(); // Select first link + t._focusIdx = 0; + } }, hideMenu : function(c) { @@ -4877,7 +7338,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { return; Event.remove(co, 'mouseover', t.mouseOverFunc); - Event.remove(co, t.fixIE ? 'mousedown' : 'click', t.mouseClickFunc); + Event.remove(co, 'click', t.mouseClickFunc); + Event.remove(co, 'keydown', t._keyHandler); DOM.hide(co); t.isMenuVisible = 0; @@ -4888,7 +7350,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { t.element.hide(); if (e = DOM.get(t.id)) - DOM.removeClass(e.firstChild, 'mceMenuItemActive'); + DOM.removeClass(e.firstChild, t.classPrefix + 'ItemActive'); t.onHideMenu.dispatch(t); }, @@ -4911,6 +7373,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { remove : function(o) { DOM.remove(o.id); + this.destroy(); return this.parent(o); }, @@ -4930,12 +7393,12 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { renderNode : function() { var t = this, s = t.settings, n, tb, co, w; - w = DOM.create('div', {id : 'menu_' + t.id, dir : 'ltr', 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:150'}); - co = DOM.add(w, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenu' + (s['class'] ? ' ' + s['class'] : '')}); + w = DOM.create('div', {id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000'}); + co = DOM.add(w, 'div', {id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')}); t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container}); if (s.menu_line) - DOM.add(co, 'span', {'class' : 'mceMenuLine'}); + DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'}); // n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'}); n = DOM.add(co, 'table', {id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0}); @@ -4952,12 +7415,41 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { // Internal functions + _keyHandler : function(e) { + var t = this, kc = e.keyCode; + + function focus(d) { + var i = t._focusIdx + d, e = DOM.select('a', 'menu_' + t.id)[i]; + + if (e) { + t._focusIdx = i; + e.focus(); + } + }; + + switch (kc) { + case 38: + focus(-1); // Select first link + return; + + case 40: + focus(1); + return; + + case 13: + return; + + case 27: + return this.hideMenu(); + } + }, + _add : function(tb, o) { - var n, s = o.settings, a, ro, it; + var n, s = o.settings, a, ro, it, cp = this.classPrefix, ic; if (s.separator) { - ro = DOM.add(tb, 'tr', {id : o.id, 'class' : 'mceMenuItemSeparator'}); - DOM.add(ro, 'td', {'class' : 'mceMenuItemSeparator'}); + ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'}); + DOM.add(ro, 'td', {'class' : cp + 'ItemSeparator'}); if (n = ro.previousSibling) DOM.addClass(n, 'mceLast'); @@ -4965,13 +7457,18 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { return; } - n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : 'mceMenuItem mceMenuItemEnabled'}); + n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'}); n = it = DOM.add(n, 'td'); n = a = DOM.add(n, 'a', {href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'}); DOM.addClass(it, s['class']); // n = DOM.add(n, 'span', {'class' : 'item'}); - DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')}); + + ic = DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')}); + + if (s.icon_src) + DOM.add(ic, 'img', {src : s.icon_src}); + n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title); if (o.settings.style) @@ -4980,23 +7477,19 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { if (tb.childNodes.length == 1) DOM.addClass(ro, 'mceFirst'); - if ((n = ro.previousSibling) && DOM.hasClass(n, 'mceMenuItemSeparator')) + if ((n = ro.previousSibling) && DOM.hasClass(n, cp + 'ItemSeparator')) DOM.addClass(ro, 'mceFirst'); if (o.collapse) - DOM.addClass(ro, 'mceMenuItemSub'); + DOM.addClass(ro, cp + 'ItemSub'); if (n = ro.previousSibling) DOM.removeClass(n, 'mceLast'); DOM.addClass(ro, 'mceLast'); } - - }); -})(); -/* file:jscripts/tiny_mce/classes/ui/Button.js */ - -(function() { + }); +})(tinymce);(function(tinymce) { var DOM = tinymce.DOM; tinymce.create('tinymce.ui.Button:tinymce.ui.Control', { @@ -5006,12 +7499,15 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { }, renderHTML : function() { - var s = this.settings, h = ''; + var cp = this.classPrefix, s = this.settings, h, l; + + l = DOM.encode(s.label || ''); + h = ''; if (s.image) - h += ''; + h += '' + l + ''; else - h += ''; + h += '' + (l ? '' + l + '' : '') + ''; return h; }, @@ -5024,13 +7520,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { return s.onclick.call(s.scope, e); }); } - - }); -})(); - -/* file:jscripts/tiny_mce/classes/ui/ListBox.js */ - -(function() { + }); +})(tinymce); +(function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher; tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', { @@ -5038,42 +7530,71 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { var t = this; t.parent(id, s); + t.items = []; + t.onChange = new Dispatcher(t); + t.onPostRender = new Dispatcher(t); + t.onAdd = new Dispatcher(t); + t.onRenderMenu = new tinymce.util.Dispatcher(this); + t.classPrefix = 'mceListBox'; }, - select : function(v) { - var t = this, e, fv; + select : function(va) { + var t = this, fv, f; + + if (va == undefined) + return t.selectByIndex(-1); + + // Is string or number make function selector + if (va && va.call) + f = va; + else { + f = function(v) { + return v == va; + }; + } // Do we need to do something? - if (v != t.selectedValue) { - e = DOM.get(t.id + '_text'); - t.selectedValue = v; - + if (va != t.selectedValue) { // Find item - each(t.items, function(o) { - if (o.value == v) { - DOM.setHTML(e, DOM.encode(o.title)); + each(t.items, function(o, i) { + if (f(o.value)) { fv = 1; + t.selectByIndex(i); return false; } }); - // If no item was found then present title - if (!fv) { + if (!fv) + t.selectByIndex(-1); + } + }, + + selectByIndex : function(idx) { + var t = this, e, o; + + if (idx != t.selectedIndex) { + e = DOM.get(t.id + '_text'); + o = t.items[idx]; + + if (o) { + t.selectedValue = o.value; + t.selectedIndex = idx; + DOM.setHTML(e, DOM.encode(o.title)); + DOM.removeClass(e, 'mceTitle'); + } else { DOM.setHTML(e, DOM.encode(t.settings.title)); DOM.addClass(e, 'mceTitle'); - e = 0; - return; - } else - DOM.removeClass(e, 'mceTitle'); - } + t.selectedValue = t.selectedIndex = null; + } - e = 0; + e = 0; + } }, add : function(n, v, o) { @@ -5094,11 +7615,11 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { }, renderHTML : function() { - var h = '', t = this, s = t.settings; + var h = '', t = this, s = t.settings, cp = t.classPrefix; - h = '
'+j.renderHTML()+""+j.renderHTML()+"
'; + h = '
'; h += ''; - h += ''; + h += ''; h += '
' + DOM.createHTML('a', {id : t.id + '_text', href : 'javascript:;', 'class' : 'mceText', onclick : "return false;", onmousedown : 'return false;'}, DOM.encode(t.settings.title)) + '' + DOM.createHTML('a', {id : t.id + '_open', href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '') + '' + DOM.createHTML('a', {id : t.id + '_open', tabindex : -1, href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '') + '
'; return h; @@ -5110,6 +7631,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { if (t.isDisabled() || t.items.length == 0) return; + if (t.menu && t.menu.isMenuVisible) + return t.hideMenu(); + if (!t.isMenuRendered) { t.renderMenu(); t.isMenuRendered = true; @@ -5121,6 +7645,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { m = t.menu; m.settings.offset_x = p2.x; m.settings.offset_y = p2.y; + m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus // Select in menu if (t.oldID) @@ -5135,16 +7660,22 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { m.showMenu(0, e.clientHeight); - Event.add(document, 'mousedown', t.hideMenu, t); - DOM.addClass(t.id, 'mceListBoxSelected'); + Event.add(DOM.doc, 'mousedown', t.hideMenu, t); + DOM.addClass(t.id, t.classPrefix + 'Selected'); + + //DOM.get(t.id + '_text').focus(); }, hideMenu : function(e) { var t = this; - if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceMenu');})) { - DOM.removeClass(t.id, 'mceListBoxSelected'); - Event.remove(document, 'mousedown', t.hideMenu, t); + // Prevent double toogles by canceling the mouse click event to the button + if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open')) + return; + + if (!e || !DOM.getParent(e.target, '.mceMenu')) { + DOM.removeClass(t.id, t.classPrefix + 'Selected'); + Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); if (t.menu) t.menu.hideMenu(); @@ -5156,7 +7687,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { m = t.settings.control_manager.createDropMenu(t.id + '_menu', { menu_line : 1, - 'class' : 'mceListBoxMenu mceNoIcons', + 'class' : t.classPrefix + 'Menu mceNoIcons', max_width : 150, max_height : 150 }); @@ -5165,8 +7696,12 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { m.add({ title : t.settings.title, - 'class' : 'mceMenuItemTitle' - }).setDisabled(1); + 'class' : 'mceMenuItemTitle', + onclick : function() { + if (t.settings.onselect('') !== false) + t.select(''); // Must be runned after + } + }); each(t.items, function(o) { o.id = DOM.uniqueId(); @@ -5183,31 +7718,68 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { }, postRender : function() { - var t = this; + var t = this, cp = t.classPrefix; Event.add(t.id, 'click', t.showMenu, t); + Event.add(t.id + '_text', 'focus', function(e) { + if (!t._focused) { + t.keyDownHandler = Event.add(t.id + '_text', 'keydown', function(e) { + var idx = -1, v, kc = e.keyCode; + + // Find current index + each(t.items, function(v, i) { + if (t.selectedValue == v.value) + idx = i; + }); + + // Move up/down + if (kc == 38) + v = t.items[idx - 1]; + else if (kc == 40) + v = t.items[idx + 1]; + else if (kc == 13) { + // Fake select on enter + v = t.selectedValue; + t.selectedValue = null; // Needs to be null to fake change + t.settings.onselect(v); + return Event.cancel(e); + } + + if (v) { + t.hideMenu(); + t.select(v.value); + } + }); + } + + t._focused = 1; + }); + Event.add(t.id + '_text', 'blur', function() {Event.remove(t.id + '_text', 'keydown', t.keyDownHandler); t._focused = 0;}); // Old IE doesn't have hover on all elements if (tinymce.isIE6 || !DOM.boxModel) { Event.add(t.id, 'mouseover', function() { - if (!DOM.hasClass(t.id, 'mceListBoxDisabled')) - DOM.addClass(t.id, 'mceListBoxHover'); + if (!DOM.hasClass(t.id, cp + 'Disabled')) + DOM.addClass(t.id, cp + 'Hover'); }); Event.add(t.id, 'mouseout', function() { - if (!DOM.hasClass(t.id, 'mceListBoxDisabled')) - DOM.removeClass(t.id, 'mceListBoxHover'); + if (!DOM.hasClass(t.id, cp + 'Disabled')) + DOM.removeClass(t.id, cp + 'Hover'); }); } t.onPostRender.dispatch(t, DOM.get(t.id)); + }, + + destroy : function() { + this.parent(); + + Event.clear(this.id + '_text'); + Event.clear(this.id + '_open'); } - - }); -})(); -/* file:jscripts/tiny_mce/classes/ui/NativeListBox.js */ - -(function() { + }); +})(tinymce);(function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher; tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', { @@ -5224,18 +7796,40 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { return DOM.get(this.id).disabled; }, - select : function(v) { - var e = DOM.get(this.id), ol = e.options; + select : function(va) { + var t = this, fv, f; - v = '' + (v || ''); + if (va == undefined) + return t.selectByIndex(-1); - e.selectedIndex = 0; - each(ol, function(o, i) { - if (o.value == v) { - e.selectedIndex = i; - return false; - } - }); + // Is string or number make function selector + if (va && va.call) + f = va; + else { + f = function(v) { + return v == va; + }; + } + + // Do we need to do something? + if (va != t.selectedValue) { + // Find item + each(t.items, function(o, i) { + if (f(o.value)) { + fv = 1; + t.selectByIndex(i); + return false; + } + }); + + if (!fv) + t.selectByIndex(-1); + } + }, + + selectByIndex : function(idx) { + DOM.get(this.id).selectedIndex = idx + 1; + this.selectedValue = this.items[idx] ? this.items[idx].value : null; }, add : function(n, v, a) { @@ -5281,12 +7875,14 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { t.rendered = true; function onChange(e) { - var v = e.target.options[e.target.selectedIndex].value; + var v = t.items[e.target.selectedIndex - 1]; - t.onChange.dispatch(t, v); + if (v && (v = v.value)) { + t.onChange.dispatch(t, v); - if (t.settings.onselect) - t.settings.onselect(v); + if (t.settings.onselect) + t.settings.onselect(v); + } }; Event.add(t.id, 'change', onChange); @@ -5310,19 +7906,17 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { t.onPostRender.dispatch(t, DOM.get(t.id)); } - - }); -})(); -/* file:jscripts/tiny_mce/classes/ui/MenuButton.js */ - -(function() { + }); +})(tinymce);(function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each; tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', { MenuButton : function(id, s) { this.parent(id, s); + this.onRenderMenu = new tinymce.util.Dispatcher(this); - s.menu_container = s.menu_container || document.body; + + s.menu_container = s.menu_container || DOM.doc.body; }, showMenu : function() { @@ -5336,6 +7930,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { t.isMenuRendered = true; } + if (t.isMenuVisible) + return t.hideMenu(); + p1 = DOM.getPos(t.settings.menu_container); p2 = DOM.getPos(e); @@ -5344,10 +7941,13 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { m.settings.offset_y = p2.y; m.settings.vp_offset_x = p2.x; m.settings.vp_offset_y = p2.y; + m.settings.keyboard_focus = t._focused; m.showMenu(0, e.clientHeight); - Event.add(document, 'mousedown', t.hideMenu, t); + Event.add(DOM.doc, 'mousedown', t.hideMenu, t); t.setState('Selected', 1); + + t.isMenuVisible = 1; }, renderMenu : function() { @@ -5368,12 +7968,18 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { hideMenu : function(e) { var t = this; - if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceMenu');})) { + // Prevent double toogles by canceling the mouse click event to the button + if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';})) + return; + + if (!e || !DOM.getParent(e.target, '.mceMenu')) { t.setState('Selected', 0); - Event.remove(document, 'mousedown', t.hideMenu, t); + Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); if (t.menu) t.menu.hideMenu(); } + + t.isMenuVisible = 0; }, postRender : function() { @@ -5388,13 +7994,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { } }); } - - }); -})(); - -/* file:jscripts/tiny_mce/classes/ui/SplitButton.js */ - -(function() { + }); +})(tinymce); +(function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each; tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', { @@ -5411,7 +8013,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { if (s.image) h1 = DOM.createHTML('img ', {src : s.image, 'class' : 'mceAction ' + s['class']}); else - h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}); + h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, ''); h += '
' + DOM.createHTML('a', {id : t.id + '_action', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '