You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
(83) |
Apr
(159) |
May
(106) |
Jun
(86) |
Jul
(36) |
Aug
(19) |
Sep
(52) |
Oct
(37) |
Nov
(36) |
Dec
(99) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(87) |
Feb
(150) |
Mar
(82) |
Apr
(78) |
May
(71) |
Jun
(62) |
Jul
(42) |
Aug
(165) |
Sep
(110) |
Oct
(165) |
Nov
(107) |
Dec
(57) |
2009 |
Jan
(94) |
Feb
(46) |
Mar
(19) |
Apr
(119) |
May
(33) |
Jun
(31) |
Jul
(131) |
Aug
(174) |
Sep
(123) |
Oct
(47) |
Nov
(99) |
Dec
(40) |
2010 |
Jan
(94) |
Feb
(73) |
Mar
(37) |
Apr
(15) |
May
|
Jun
|
Jul
(51) |
Aug
(136) |
Sep
(68) |
Oct
(13) |
Nov
(29) |
Dec
(78) |
2011 |
Jan
(46) |
Feb
(54) |
Mar
(29) |
Apr
(33) |
May
(29) |
Jun
(21) |
Jul
(19) |
Aug
(15) |
Sep
(92) |
Oct
(53) |
Nov
(36) |
Dec
(53) |
2012 |
Jan
(19) |
Feb
(38) |
Mar
(54) |
Apr
(39) |
May
(13) |
Jun
(89) |
Jul
(32) |
Aug
(107) |
Sep
(45) |
Oct
(13) |
Nov
(22) |
Dec
(17) |
2013 |
Jan
(70) |
Feb
(33) |
Mar
(21) |
Apr
(21) |
May
(34) |
Jun
(19) |
Jul
(28) |
Aug
(38) |
Sep
(47) |
Oct
(32) |
Nov
(95) |
Dec
(23) |
2014 |
Jan
(41) |
Feb
(33) |
Mar
(46) |
Apr
(24) |
May
(19) |
Jun
(34) |
Jul
(47) |
Aug
(94) |
Sep
(88) |
Oct
(74) |
Nov
(79) |
Dec
(15) |
2015 |
Jan
(31) |
Feb
(36) |
Mar
(33) |
Apr
(67) |
May
(50) |
Jun
(54) |
Jul
(49) |
Aug
(59) |
Sep
(77) |
Oct
(58) |
Nov
(74) |
Dec
(41) |
2016 |
Jan
(23) |
Feb
(37) |
Mar
(26) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@cy...> - 2016-03-12 23:15:51
|
Author: comsultia Date: 2016-03-13 00:15:44 +0100 (Sun, 13 Mar 2016) New Revision: 8652 Log: Modified: trunk/frame/_config/job.conf Modified: trunk/frame/_config/job.conf =================================================================== --- trunk/frame/_config/job.conf 2016-03-12 23:15:04 UTC (rev 8651) +++ trunk/frame/_config/job.conf 2016-03-12 23:15:44 UTC (rev 8652) @@ -22,13 +22,13 @@ <trigger id="process_rlogs" type="cron" - cron-schedule="0 22,23,0,1,2,3,4,5 * * *" + cron-schedule="0 21 * * *" job-name="eElastic-rlog_clean" /> <!-- in every domain --> <trigger id="process_rlogs_domain" type="cron" - cron-run-every="24H" + cron-schedule="0 21 * * *" run-on-each="domain" job-name="eElastic-rlog_clean" /> @@ -98,7 +98,7 @@ <trigger id="a510_video_format_check" type="cron" - cron-run-every="3H" + cron-run-every="5M" run-on-each="database" run-if-addon="a510" job-name="a510-video_format_check" /> |
From: <sv...@cy...> - 2016-03-12 23:15:13
|
Author: comsultia Date: 2016-03-13 00:15:04 +0100 (Sun, 13 Mar 2016) New Revision: 8651 Log: Modified: trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job Modified: trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job =================================================================== --- trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job 2016-03-12 23:04:10 UTC (rev 8650) +++ trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job 2016-03-12 23:15:04 UTC (rev 8651) @@ -13,9 +13,9 @@ { my $self=shift; my $env=$self->env; - return if $self->running({'max'=>(3600+600)}); # check if not already running + return if $self->running({'max'=>(3600*12)}); # check if not already running - alarm 3500; + alarm(3600*12); if (!$Ext::Elastic_rlog && !$Ext::Elastic) { @@ -39,6 +39,11 @@ { main::_log("clean in domain mode '$tom::H'"); push @filter,{"terms" => {"d" => [$tom::H]}}; + if (!$TOM::DEBUG_log_type{'.modified'}) + { + main::_log("not configured TOM::DEBUG_log_type for this domain, exit"); + return 1; + } } my @indices_list; |
From: <sv...@cy...> - 2016-03-12 23:04:27
|
Author: rlaucik Date: 2016-03-13 00:04:10 +0100 (Sun, 13 Mar 2016) New Revision: 8650 Log: Modified: trunk/frame/.core/.libs/TOM/Lite.pm Modified: trunk/frame/.core/.libs/TOM/Lite.pm =================================================================== --- trunk/frame/.core/.libs/TOM/Lite.pm 2016-03-11 15:14:07 UTC (rev 8649) +++ trunk/frame/.core/.libs/TOM/Lite.pm 2016-03-12 23:04:10 UTC (rev 8650) @@ -726,4 +726,66 @@ %namespace=(); } + + +package TOM::hash_config; + + +sub TIEHASH +{ + my $class = shift; + my $data = shift || {}; + return bless $data, $class; +} + +sub DESTROY +{ + my $self = shift; + return undef; +} + +sub FETCH +{ + my ($self,$key) = @_; + return $self->{$key}; +} + +sub DELETE +{ + my ($self,$key) = @_; + $self->{'.modified'}=1; + delete $self->{$key}; + return 1; +} + +sub STORE +{ + my ($self,$key,$value)=@_; + $self->{'.modified'}=1; +# print "store key $key value $value\n"; + $self->{$key}=$value; +} + +sub CLEAR +{ + my $self=shift; + %$self=(); + $self->{'.modified'}=1; +} + +sub FIRSTKEY +{ + my $self=shift; + scalar keys %$self; + return scalar each %$self; +} + +sub NEXTKEY +{ + my $self=shift; + return scalar each %$self; +} + +my %data=%TOM::DEBUG_log_type;tie %TOM::DEBUG_log_type, 'TOM::hash_config', \%data; + 1; |
From: <sv...@cy...> - 2016-03-11 15:14:15
|
Author: rlaucik Date: 2016-03-11 16:14:07 +0100 (Fri, 11 Mar 2016) New Revision: 8649 Log: [!][framework] fix for linking image to category in other language Modified: trunk/frame/_addons/App/501/functions.pm Modified: trunk/frame/_addons/App/501/functions.pm =================================================================== --- trunk/frame/_addons/App/501/functions.pm 2016-03-11 13:52:29 UTC (rev 8648) +++ trunk/frame/_addons/App/501/functions.pm 2016-03-11 15:14:07 UTC (rev 8649) @@ -1293,6 +1293,7 @@ WHERE image.ID_entity=$env{'image.ID_entity'} AND ( image_attrs.ID_category = $env{'image_attrs.ID_category'} OR ID_category IS NULL ) AND + image_attrs.lng = '$env{'image_attrs.lng'}' AND image_attrs.status IN ('Y','N','L') LIMIT 1 }; |
From: <sv...@cy...> - 2016-03-11 13:52:37
|
Author: rlaucik Date: 2016-03-11 14:52:29 +0100 (Fri, 11 Mar 2016) New Revision: 8648 Log: Modified: trunk/frame/.core/job.workerd Modified: trunk/frame/.core/job.workerd =================================================================== --- trunk/frame/.core/job.workerd 2016-03-09 14:10:00 UTC (rev 8647) +++ trunk/frame/.core/job.workerd 2016-03-11 13:52:29 UTC (rev 8648) @@ -14,7 +14,7 @@ $TOM::engine.='.workerd'; $0.=".workerd"; $TOM::DEBUG_log_file=90; - setpriority $$,$$,19; +# setpriority $$,$$,19; } use open ':utf8', ':std'; @@ -139,8 +139,6 @@ $TOM::job_worker_start_delay||=1; # start next worker after delay $TOM::job_domain_worker_start_delay||=5; # start next worker after delay on same domain -# $MAX_WORKERS = 2; - our $usable_memory = ( ($memstat->{'memfree'} - ($memstat->{'memtotal'} * 0.05)) # reserve 5% + ($memstat->{'cached'} - ($memstat->{'memtotal'} * 0.05)) # +5% filesystem cache reserver @@ -244,7 +242,7 @@ }, =cut - foreach my $queue (grep {$_->{'name'}=~/^cyclone3\.job\./} @{$data}) + foreach my $queue (sort {$b->{'messages_ready'} <=> $a->{'messages_ready'}} grep {$_->{'name'}=~/^cyclone3\.job\./} @{$data}) { my $domain=$queue->{'name'}; $domain=~s|^cyclone3\.job\.||; |
From: <sv...@cy...> - 2016-03-09 14:10:10
|
Author: comsultia Date: 2016-03-09 15:10:00 +0100 (Wed, 09 Mar 2016) New Revision: 8647 Log: Modified: trunk/frame/.bin/tom3-proc trunk/frame/.core/tom3 Modified: trunk/frame/.bin/tom3-proc =================================================================== --- trunk/frame/.bin/tom3-proc 2016-03-09 13:42:16 UTC (rev 8646) +++ trunk/frame/.bin/tom3-proc 2016-03-09 14:10:00 UTC (rev 8647) @@ -122,9 +122,9 @@ # CPU $print_out.= "["; - if ($hosts{$host}[$_]{'pctcpu'} > 1){$print_out.= color 'bold cyan'} - if ($hosts{$host}[$_]{'pctcpu'} > 10){$print_out.= color 'yellow'} - if ($hosts{$host}[$_]{'pctcpu'} > 30){$print_out.= color 'bold red'} + if ($hosts{$host}[$_]{'pctcpu'} > 10){$print_out.= color 'bold cyan'} + if ($hosts{$host}[$_]{'pctcpu'} > 50){$print_out.= color 'yellow'} + if ($hosts{$host}[$_]{'pctcpu'} > 95){$print_out.= color 'bold red'} $print_out.= sprintf('%5s',sprintf('%-2.1f',$hosts{$host}[$_]{'pctcpu'}));$print_out.= color $setcolor;$print_out.= "]"; $cpu+=$hosts{$host}[$_]{'pctcpu'}; @@ -131,8 +131,8 @@ # MEM $hosts{$host}[$_]{'rss'}=int($hosts{$host}[$_]{'rss'}/1024/1024); $print_out.= "["; - if ($hosts{$host}[$_]{'rss'} > 100){$print_out.= color 'yellow'} - if ($hosts{$host}[$_]{'rss'} > 200){$print_out.= color 'bold red'} + if ($hosts{$host}[$_]{'rss'} > 200){$print_out.= color 'yellow'} + if ($hosts{$host}[$_]{'rss'} > 300){$print_out.= color 'bold red'} $print_out.= sprintf("%4d",$hosts{$host}[$_]{'rss'});$print_out.= color $setcolor;$print_out.= "M]"; $rss+=$hosts{$host}[$_]{'rss'}; Modified: trunk/frame/.core/tom3 =================================================================== --- trunk/frame/.core/tom3 2016-03-09 13:42:16 UTC (rev 8646) +++ trunk/frame/.core/tom3 2016-03-09 14:10:00 UTC (rev 8647) @@ -459,12 +459,12 @@ $main::ENV{'REMOTE_COUNTRY_CODE'}=''; if ($main::ENV{'GEOIP_ADDR'} || $main::ENV{'GEOIP_COUNTRY_CODE'}) { - main::_log("GEOIP_ADDR=$main::ENV{'GEOIP_ADDR'} GEOIP_COUNTRY_CODE=$main::ENV{'GEOIP_COUNTRY_CODE'}",3,"geoip"); +# main::_log("GEOIP_ADDR=$main::ENV{'GEOIP_ADDR'} GEOIP_COUNTRY_CODE=$main::ENV{'GEOIP_COUNTRY_CODE'}",3,"geoip"); } elsif ($TOM::Int::lng::GEOIP) { $main::ENV{'REMOTE_COUNTRY_CODE'} = $TOM::Int::lng::gi->country_code_by_addr($main::ENV{'REMOTE_ADDR'}); - main::_log("\$TOM::Int::lng::GEOIP IP='$main::ENV{'REMOTE_ADDR'}' country_code='$main::ENV{'REMOTE_COUNTRY_CODE'}'",3,"geoip"); +# main::_log("\$TOM::Int::lng::GEOIP IP='$main::ENV{'REMOTE_ADDR'}' country_code='$main::ENV{'REMOTE_COUNTRY_CODE'}'",3,"geoip"); } if ($main::ENV{'REQUEST_URI'}=~s/^\/core.pl/\//) @@ -520,7 +520,8 @@ &&($pub::engine_disabling)) { my @ERR=( - "The page you have requested can't be displayed" + "The page you have requested can't be displayed", + "Contact: info\@comsultia.com" # ,@{$TOM::Net::HTTP::UserAgent::table[$main::UserAgent]{'messages'}} ); main::_log("engine_disable for UserAgent \"$main::UserAgent_name\"-\"$main::ENV{'HTTP_USER_AGENT'}\"",0,"pub.warn",1); @@ -819,7 +820,7 @@ # fixes $main::ENV{'REF_TYPE'}='feed' if $main::ENV{'REF_TYPE'} eq "rss"; - main::_log("referer='$main::ENV{'HTTP_REFERER'}' ref_type='$main::ENV{'REF_TYPE'}'",3,"pub.ref",2); +# main::_log("referer='$main::ENV{'HTTP_REFERER'}' ref_type='$main::ENV{'REF_TYPE'}'",3,"pub.ref",2); # only browser can recache content of a page # when another useragent type uses URL with _rc, then is redirected by code 301 @@ -3358,14 +3359,15 @@ foreach my $p (grep {$_->{'pid'} == $$} @{$t->table}) { main::_log("used memory ".Number::Bytes::Human::format_bytes($p->{'rss'})); - if ($p->{'rss'} >= 200000000) + if ($p->{'rss'} >= 300000000) { main::_log("SHUTDOWN (too much memory ".Number::Bytes::Human::format_bytes($p->{'rss'}).") (lives ".($main::time_current-$TOM::time_start)." secs, $tom::count requests) PID:$$ domain:$tom::H",3); main::_log("SHUTDOWN (too much memory ".Number::Bytes::Human::format_bytes($p->{'rss'}).") (lives ".($main::time_current-$TOM::time_start)." secs, $tom::count requests) PID:$$ domain:$tom::H",3,"pub.mng",1); + Tomahawk::shutdown(); } - } - }} + }; + } $main::request_code="00000000"; # re-registering ALARM |
From: <sv...@cy...> - 2016-03-09 13:42:25
|
Author: rlaucik Date: 2016-03-09 14:42:16 +0100 (Wed, 09 Mar 2016) New Revision: 8646 Log: Modified: trunk/frame/.core/.libs/TOM/Engine.pm trunk/frame/.core/tom3 Modified: trunk/frame/.core/.libs/TOM/Engine.pm =================================================================== --- trunk/frame/.core/.libs/TOM/Engine.pm 2016-03-09 10:08:01 UTC (rev 8645) +++ trunk/frame/.core/.libs/TOM/Engine.pm 2016-03-09 13:42:16 UTC (rev 8646) @@ -83,6 +83,8 @@ use Digest::MD5 qw( md5 md5_hex md5_base64 ); use DateTime; # mem:1.5MB use Term::ANSIColor; +use Number::Bytes::Human; +use Proc::ProcessTable; use TOM::Debug; use TOM::rev; Modified: trunk/frame/.core/tom3 =================================================================== --- trunk/frame/.core/tom3 2016-03-09 10:08:01 UTC (rev 8645) +++ trunk/frame/.core/tom3 2016-03-09 13:42:16 UTC (rev 8646) @@ -1466,7 +1466,7 @@ $main::FORM{'__lng'}=$tom::lng; } main::_log("attribute LNG_permanent_accepted is enabled"); - main::_log("set FORM{'__lng'} to $main::FORM{'__lng'}"); + main::_log("set FORM{'__lng'} to '$main::FORM{'__lng'}'"); # spracovanie a210_path # a210_path funguje len v pripade ak je 100% jasne definovany jazyk @@ -3049,7 +3049,8 @@ print $head."\n"; } - #print "C3-TypeID: $main::H\n"; +# print "Accept-CH: DPR, Width, Viewport-Width\n"; +# print "Vary: Width, Accept-Encoding\n"; if ($TOM::Document::content_security_policy) { @@ -3350,6 +3351,22 @@ Tomahawk::shutdown(); } + # check memory consumption + if (($main::time_current-$TOM::time_start) > 60 && ($main::time_current-$main::time_memory_check)>=10){$main::time_memory_check=$main::time_current; + eval{ + my $t = new Proc::ProcessTable; + foreach my $p (grep {$_->{'pid'} == $$} @{$t->table}) + { + main::_log("used memory ".Number::Bytes::Human::format_bytes($p->{'rss'})); + if ($p->{'rss'} >= 200000000) + { + main::_log("SHUTDOWN (too much memory ".Number::Bytes::Human::format_bytes($p->{'rss'}).") (lives ".($main::time_current-$TOM::time_start)." secs, $tom::count requests) PID:$$ domain:$tom::H",3); + main::_log("SHUTDOWN (too much memory ".Number::Bytes::Human::format_bytes($p->{'rss'}).") (lives ".($main::time_current-$TOM::time_start)." secs, $tom::count requests) PID:$$ domain:$tom::H",3,"pub.mng",1); + } + + } + }} + $main::request_code="00000000"; # re-registering ALARM if ($^O ne "MSWin32") # not working on Win32 |
From: <sv...@cy...> - 2016-03-09 10:08:08
|
Author: rlaucik Date: 2016-03-09 11:08:01 +0100 (Wed, 09 Mar 2016) New Revision: 8645 Log: Modified: trunk/frame/.core/.libs/TOM.pm Modified: trunk/frame/.core/.libs/TOM.pm =================================================================== --- trunk/frame/.core/.libs/TOM.pm 2016-03-09 10:07:37 UTC (rev 8644) +++ trunk/frame/.core/.libs/TOM.pm 2016-03-09 10:08:01 UTC (rev 8645) @@ -167,6 +167,10 @@ require $TOM::P.'/.core/_config/TOM.conf'; # configuration defined by this installation ( server farm ) require $TOM::P.'/_config/TOM.conf'; + if ($TOM::P ne $TOM::DP && -e $TOM::DP.'/_config/TOM.conf') + { + require $TOM::DP.'/_config/TOM.conf'; + } # configuration defined by this hostname ( one node in server farm ) require $TOM::P.'/_config/'.$TOM::hostname.'.conf' if -e $TOM::P.'/_config/'.$TOM::hostname.'.conf'; # localized boolean of cache |
From: <sv...@cy...> - 2016-03-09 10:07:45
|
Author: rlaucik Date: 2016-03-09 11:07:37 +0100 (Wed, 09 Mar 2016) New Revision: 8644 Log: Modified: trunk/frame/.core/.libs/Cyclone/files.pm Modified: trunk/frame/.core/.libs/Cyclone/files.pm =================================================================== --- trunk/frame/.core/.libs/Cyclone/files.pm 2016-03-08 11:29:15 UTC (rev 8643) +++ trunk/frame/.core/.libs/Cyclone/files.pm 2016-03-09 10:07:37 UTC (rev 8644) @@ -115,6 +115,8 @@ ['\/!www' ,"document roots" ,"770","$user_www:$group"], ['![\w\.\-]+/[\w]+$' ,"subdomain" ,"770","$user_www:$group"], + ['\.git' ,".git" ,"770","$user:$group"], + ['^\.' ,"unknown" ,"","$user:$group"], ); @@ -234,6 +236,9 @@ ['_overlays' ,"overlay file" ,"660","$user_www:$group"], + ['\.git' ,".git" ,"660","$user:$group"], + ['\.cron_ignore' ,".cron_ignore" ,"660","$user:$group"], + ['^\.' ,"unknown" ,"","$user:$group"], ); |
From: <sv...@cy...> - 2016-03-08 11:29:24
|
Author: comsultia Date: 2016-03-08 12:29:15 +0100 (Tue, 08 Mar 2016) New Revision: 8643 Log: Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/_ecommerce/ecommerce_tree.xbl Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/_ecommerce/ecommerce_tree.xbl =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/_ecommerce/ecommerce_tree.xbl 2016-03-07 21:48:20 UTC (rev 8642) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/_ecommerce/ecommerce_tree.xbl 2016-03-08 11:29:15 UTC (rev 8643) @@ -2504,6 +2504,20 @@ } ) } + else if (selected.tmpaddon == 'a900_banner_cat' && selected.ID != '0') + { + var win = window.openDialog + ( + 'chrome://c3xuladmin/content/addons/a900/banner_cat_properties.xul', + '', + 'chrome,centerscreen,resizable', + Cyclone3.domain, + { + ID: selected.ID, + ID_entity: selected.ID_entity + } + ) + } else { return |
From: <sv...@cy...> - 2016-03-07 21:48:26
|
Author: comsultia Date: 2016-03-07 22:48:20 +0100 (Mon, 07 Mar 2016) New Revision: 8642 Log: Modified: trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job Modified: trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job =================================================================== --- trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job 2016-03-07 21:47:56 UTC (rev 8641) +++ trunk/frame/_addons/Ext/Elastic/_mdl/eElastic-rlog_clean.job 2016-03-07 21:48:20 UTC (rev 8642) @@ -35,21 +35,26 @@ my @filter=[{"terms" => {"hd" => [$TOM::domain || 'undef']}}]; + if ($tom::H) + { + main::_log("clean in domain mode '$tom::H'"); + push @filter,{"terms" => {"d" => [$tom::H]}}; + } my @indices_list; - main::_log("get list of indices"); +# main::_log("get list of indices"); my $indices=$Elastic->indices->stats('index' => 'logstash-*')->{'indices'}; my $settings=$Elastic->indices->get_settings('index' => 'logstash-*'); foreach my $indice (sort keys %{$indices}) { - main::_log("$indice"); +# main::_log("$indice"); push @indices_list,$indice; } # return 1; - foreach my $indice (sort @indices_list) + foreach my $indice (reverse sort @indices_list) { # at first, search oldest entry my $results = $Elastic->search( |
From: <sv...@cy...> - 2016-03-07 21:48:03
|
Author: comsultia Date: 2016-03-07 22:47:56 +0100 (Mon, 07 Mar 2016) New Revision: 8641 Log: Modified: trunk/frame/_config/job.conf Modified: trunk/frame/_config/job.conf =================================================================== --- trunk/frame/_config/job.conf 2016-03-07 15:58:55 UTC (rev 8640) +++ trunk/frame/_config/job.conf 2016-03-07 21:47:56 UTC (rev 8641) @@ -24,8 +24,14 @@ type="cron" cron-schedule="0 22,23,0,1,2,3,4,5 * * *" job-name="eElastic-rlog_clean" /> + <!-- in every domain --> + <trigger + id="process_rlogs_domain" + type="cron" + cron-run-every="24H" + run-on-each="domain" + job-name="eElastic-rlog_clean" /> - <!-- check for email to send every few minutes --> <trigger id="send_email" |
From: <sv...@cy...> - 2016-03-07 15:59:06
|
Author: comsultia Date: 2016-03-07 16:58:55 +0100 (Mon, 07 Mar 2016) New Revision: 8640 Log: added domain.name into update email processing Modified: trunk/xuladmin/docroot/_addons/App/920/_mdl/920-order.update.mdl Modified: trunk/xuladmin/docroot/_addons/App/920/_mdl/920-order.update.mdl =================================================================== --- trunk/xuladmin/docroot/_addons/App/920/_mdl/920-order.update.mdl 2016-03-07 13:53:35 UTC (rev 8639) +++ trunk/xuladmin/docroot/_addons/App/920/_mdl/920-order.update.mdl 2016-03-07 15:58:55 UTC (rev 8640) @@ -353,7 +353,8 @@ %{$tpl_hash{'domain'}} = ( 'url_grf' => $tom::H_grf, 'url' => $tom::Hm_www, - 'setup' => \%tom::setup + 'setup' => \%tom::setup, + 'name' => $env{'order'}{'domain'}, ); #$tpl_hash{'domain'}{'name'} = $tom::Hm; |
From: <sv...@cy...> - 2016-03-07 13:53:49
|
Author: comsultia Date: 2016-03-07 14:53:35 +0100 (Mon, 07 Mar 2016) New Revision: 8639 Log: Modified: trunk/frame/_addons/App/401/_mdl/401-article_list.tpl.mdl Modified: trunk/frame/_addons/App/401/_mdl/401-article_list.tpl.mdl =================================================================== --- trunk/frame/_addons/App/401/_mdl/401-article_list.tpl.mdl 2016-03-07 09:05:33 UTC (rev 8638) +++ trunk/frame/_addons/App/401/_mdl/401-article_list.tpl.mdl 2016-03-07 13:53:35 UTC (rev 8639) @@ -371,9 +371,41 @@ $db0_line{'abstract_tag'}=$p->{'out_tag'}; $db0_line{'abstract_var'}=$p->{'out_var'}; + if($env{'body'}) + { + my $p=new App::401::mimetypes::html; + $p->config('prefix'=>'article','name'=>'body','env'=>\%env,'entity'=>$TPL->{'entity'}); + $p->parse($db0_line{'body'}); + $p->eof(); + $db0_line{'body'}=$p->{'out'}; + } + $TPL->variables_push(\%db0_line); } + if($env{'article_attrs.ID_category'}=~/^([0-9]+)\*?$/) + { + my $ID_category=$1; + my $sql=qq{ + SELECT + name, name_url + FROM + `$env{'db_name'}`.`a401_article_cat` + WHERE + ID_entity=$ID_category + AND lng='$env{'article_content.lng'}' + AND status IN ('$status_sql') + }; + my %sth0=TOM::Database::SQL::execute($sql,'quiet'=>1,'-slave'=>1,'-cache_auto_'=>60); + if (my %db0_line=$sth0{'sth'}->fetchhash()) + { + $TPL->{'variables'}{'category'}=\%db0_line; + } + } + + $TPL->{'variables'}{'rows'}=$item_counter; + $TPL->{'variables'}{'offset'}=$env{'sql_limit_offset'} if exists $env{'sql_limit_offset'}; + return 1,%env_out; } |
From: <sv...@cy...> - 2016-03-07 09:05:41
|
Author: comsultia Date: 2016-03-07 10:05:33 +0100 (Mon, 07 Mar 2016) New Revision: 8638 Log: Added: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xbl trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xul Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/_init.css Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/_init.css =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/_init.css 2016-03-07 09:04:42 UTC (rev 8637) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/_init.css 2016-03-07 09:05:33 UTC (rev 8638) @@ -8,6 +8,12 @@ -moz-box-flex: 1; } +.a900_banner_cat-properties +{ + -moz-binding: url("chrome://c3xuladmin/content/addons/a900/banner_cat_properties.xbl#a900_banner_cat-properties"); + -moz-box-flex: 1; +} + .a900_banner-edit { -moz-binding: url("chrome://c3xuladmin/content/addons/a900/banner_edit.xbl#a900_banner-edit"); Added: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xbl =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xbl (rev 0) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xbl 2016-03-07 09:05:33 UTC (rev 8638) @@ -0,0 +1,384 @@ +<?xml version="1.0"?> +<!DOCTYPE window SYSTEM "chrome://c3xuladmin/locale/stringlist.ent"> + +<bindings + xmlns="http://www.mozilla.org/xbl" + xmlns:xbl="http://www.mozilla.org/xbl" + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <binding + id="a900_banner_cat-properties" + inherits="flex"> + + <content> + + <xul:vbox IDanon="loadbox" class="fetchbox" collapsed="false" flex="1"/> + <xul:vbox IDanon="infobox" collapsed="true" flex="1"> + + + <xul:tabbox flex="1"> + <xul:tabs height="25" IDanon="tabs"> + <xul:tab + image="chrome://c3xuladmin/skin/icons/16x16/actions/go-home.png" + label="&label.general;"/> + <xul:button type="menu"> + <xul:menupopup> + <xul:menuitem + class="menuitem-iconic" + oncommand="document.getBindingParent(this).fnc_open_relations();" + label="&addon.a160_relations;..."/> + <xul:menuitem + class="menuitem-iconic" + oncommand="document.getBindingParent(this).fnc_open_ACLs();" + label="&addon.a301_ACLs;..."/> + </xul:menupopup> + </xul:button> + + </xul:tabs> + <xul:tabpanels IDanon="tabpanels" flex="1"> + + <!-- General --> + <xul:tabpanel flex="1"> + + <xul:vbox flex="1"> + + <xul:groupbox> + <xul:caption label="&addon.a900_banner_cat; &inline.definition;"/> + + <xul:grid flex="0"> + + <xul:columns> + <xul:column/> + <xul:column flex="1"/> + </xul:columns> + + <xul:rows> + + <xul:row align="center"> + <xul:label class="bold" value="&variable.name;:"/> + <xul:hbox> + <xul:box class="counting_textbox" size="32" maxlength="128" IDdata="name" value="" spellcheck="false" /> + </xul:hbox> + </xul:row> + + </xul:rows> + + </xul:grid> + + </xul:groupbox> + + <xul:box + class="a160_related_sitemap_inverted-list" + flex="1"/> + + </xul:vbox> + + </xul:tabpanel> + + </xul:tabpanels> + </xul:tabbox> + + </xul:vbox> + + </content> + + <implementation> + + <constructor> + <![CDATA[ + try + { + + var tthis=this + + tthis.load_param={} + + tthis.nod_contentObjectImages=document.getAnonymousElementByAttribute + ( + tthis, + 'IDanon', + 'image_view' + ) + + this.obj_SOAP = new SOAPh() + + this.obj_SOAP.var_id = "a900_banner_cat-properties" + + this.obj_SOAP.fnc_onResponse = function(header,body) + { + tthis.fnc_onSOAPLoad(header,body,tthis) + } + + if(cyclone3xuladmin.gen_SOAPBroadcaster) + { + var tmp = cyclone3xuladmin.gen_SOAPBroadcaster.fnc_listenerRegister(tthis); + this.var_listenerOrdinal = tmp.ordinal; + } + + this.fnc_init(); + + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </constructor> + + <destructor> + <![CDATA[ + if(cyclone3xuladmin.gen_SOAPBroadcaster) + { + cyclone3xuladmin.gen_SOAPBroadcaster.fnc_listenerUnregister(this.var_listenerOrdinal); + } + ]]> + </destructor> + + + <!-- CORE --> + + + <method name="fnc_init"> + <body> + <![CDATA[ + try + { + + + + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + + <method name="fnc_onSOAPLoad"> + <parameter name="header"/> + <parameter name="body"/> + <parameter name="bindingElement"/> + <body> + <![CDATA[ + try + { + + var tthis=bindingElement + + log('[banner_cat_edit.xbl] fnc_onSOAPLoad addon=' + body.response['@addon'] + ' addon_type=' + body.response['@addon_type'] + ' type=' + body.response['@type'] + ' result=' + body.response['@result']); + + // enable box + document.getAnonymousElementByAttribute(tthis,'IDanon','loadbox') + .setAttribute('collapsed',true) + document.getAnonymousElementByAttribute(tthis,'IDanon','infobox') + .setAttribute('collapsed',false) + + if(body.response['@result'] != '1') + { + log('response error') + alert(body.response.reason) + return + } + + + if( + Cyclone3.domain.addons.a900 && Cyclone3.domain.addons.a900['@enabled'] == 'true' && + body.response['@addon']=='a900' && + body.response['@addon_type']=='banner_cat') + { + if(body.response['@type']=='detail') + { + + log('[banner_cat_properties.xbl] {fnc_onSoapLoad} a900_banner_cat') + + document.getAnonymousElementByAttribute(this,'IDdata','name').value + = body.response.name + + tthis.load_param.ID = body.response.ID + + } + else if (body.response['@type']=='update') + { + this.fnc_reload(); + } + else + { + } + } + + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + + <method name="fnc_onBroadcast"> + <parameter name="header"/> + <parameter name="body"/> + <body> + <![CDATA[ + try + { + log('fnc_onBroadcast addon=' + body.response['@addon'] + + ' addon_type=' + body.response['@addon_type'] + + ' type=' + body.response['@type'] + + ' result=' + body.response['@result']); + + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + + <!-- METHODS --> + + + <method name="fnc_reload"> + <body> + <![CDATA[ + try + { + + log('[banner_cat_properties.xbl] fnc_reload(' + this.load_param.ID + ')'); + + this.obj_SOAP.rest_call('a900/banner_cat/detail', + { + 'banner_cat.ID': this.load_param.ID + } + ); + + document.getAnonymousElementByAttribute(this,'class','a160_related_sitemap_inverted-list') + .load_param.l_prefix='a900' + document.getAnonymousElementByAttribute(this,'class','a160_related_sitemap_inverted-list') + .load_param.l_table='banner_cat' + document.getAnonymousElementByAttribute(this,'class','a160_related_sitemap_inverted-list') + .load_param.l_ID_entity = (this.load_param.ID_entity || this.load_param.ID); + document.getAnonymousElementByAttribute(this,'class','a160_related_sitemap_inverted-list') + .fnc_reload() + + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + + + <method name="fnc_save"> + <body> + <![CDATA[ + try + { + + this.obj_SOAP.rest_call('a900/banner_cat/update', + { + 'banner_cat.ID': this.load_param.ID, + 'banner_cat.name': document.getAnonymousElementByAttribute(this,'IDdata','name').value + } + ); + + // disable box + document.getAnonymousElementByAttribute(this,'IDanon','infobox') + .setAttribute('collapsed',true) + document.getAnonymousElementByAttribute(this,'IDanon','loadbox') + .setAttribute('collapsed',false) + + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + + <!-- HANDLING EVENTS --> + + + <!-- FUNCTIONS --> + + + <method name="fnc_switch_tab"> + <parameter name="tab"/> + <body> + <![CDATA[ + try + { + if (tab) + { + var tabindex_new=document.getAnonymousElementByAttribute(this,'IDanon','tabs').getIndexOfItem( + document.getAnonymousElementByAttribute(this,'IDanon','tab-' + tab) + ); + var tabindex_current=document.getAnonymousElementByAttribute(this,'IDanon','tabs').selectedIndex; + + if (document.getAnonymousElementByAttribute(this,'IDanon','tab-' + tab).getAttribute('collapsed') == "true") + { + document.getAnonymousElementByAttribute(this,'IDanon','tab-' + tab).setAttribute('collapsed',false); + document.getAnonymousElementByAttribute(this,'IDanon','tabpanel-' + tab).setAttribute('collapsed',false); + document.getAnonymousElementByAttribute(this,'IDanon','tab-' + tab + '-menu').checked=true; + document.getAnonymousElementByAttribute(this,'IDanon','tabs').selectedIndex=tabindex_new; + document.getAnonymousElementByAttribute(this,'IDanon','tabpanels').selectedIndex=tabindex_new; + + } + else + { + document.getAnonymousElementByAttribute(this,'IDanon','tab-' + tab).setAttribute('collapsed',true); + document.getAnonymousElementByAttribute(this,'IDanon','tabpanel-' + tab).setAttribute('collapsed',true); + document.getAnonymousElementByAttribute(this,'IDanon','tab-' + tab + '-menu').checked=false; + if (tabindex_new == tabindex_current) + { + document.getAnonymousElementByAttribute(this,'IDanon','tabs').selectedIndex=0; + document.getAnonymousElementByAttribute(this,'IDanon','tabpanels').selectedIndex=0; + } + } + } + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + <method name="fnc_open_relations"> + <body> + <![CDATA[ + try + { + window.openDialog + ( + 'chrome://c3xuladmin/content/addons/a160/relation_list.xul', + '', + 'chrome,resizable', + Cyclone3.domain, + { + 'l_prefix': 'a900', + 'l_table': 'banner_cat', + 'l_ID_entity': this.load_param.ID_entity + } + ); + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + <method name="fnc_open_ACLs"> + <body> + <![CDATA[ + try + { + window.openDialog + ( + 'chrome://c3xuladmin/content/addons/a301/ACL_view.xul', + '', + 'chrome,resizable', + Cyclone3.domain, + { + 'r_prefix': 'a900', + 'r_table': 'banner_cat', + 'r_ID_entity': this.load_param.ID_entity + } + ); + }catch(e){alert('[banner_cat_properties.xbl] {} ' + e)} + ]]> + </body> + </method> + + </implementation> + + <handlers> + <!-- + <handler event="click" button="0" action="this.fnc_listTreecellClick(event);"/> + --> + </handlers> + + </binding> + +</bindings> Added: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xul =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xul (rev 0) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a900/banner_cat_properties.xul 2016-03-07 09:05:33 UTC (rev 8638) @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> +<?xml-stylesheet href="chrome://c3xuladmin/content/_init.css" type="text/css"?> +<?xml-stylesheet href="chrome://c3xuladmin/skin/default.css" type="text/css"?> + +<!DOCTYPE window SYSTEM "chrome://c3xuladmin/locale/stringlist.ent"> + +<dialog + title="&window.properties.title; &addon.a900_banner_cat; - #" + id="a900_banner_cat-properties" + orient="vertical" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns:html="http://www.w3.org/1999/xhtml" + onload=" + try + { + + document.title = document.title + window.arguments[1].ID_entity; + document.getElementById('head').setAttribute('title', + document.getElementById('head').getAttribute('title') + ' #' + window.arguments[1].ID_entity + ); + + window.resizeTo(640,600); + document.getElementById('content').load_param.ID = window.arguments[1].ID; + document.getElementById('content').load_param.ID_entity = window.arguments[1].ID_entity; + document.getElementById('content').fnc_reload(); + }catch(e){alert('[banner_cat_properties.xul] {} ' + e)}" + ondialogaccept=" + try + { + + document.getElementById('content').fnc_save(); + return false; + + }catch(e){alert('[banner_cat_properties.xul] {} ' + e)}" + buttonlabelaccept="&button.save;" + buttonlabelcancel="&button.close;" + buttons="accept,cancel"> + + <keyset> + <key id="ctrl-s-key" modifiers="control" key="s" oncommand="try{ document.getElementById('content').fnc_save();}catch(e){alert('[banner_cat_properties.xul] {} ' + e)}"/> + </keyset> + + <script type="text/javascript;e4x=1" src="chrome://c3xuladmin/content/js/core.js" /> + <script type="text/javascript;e4x=1" src="chrome://c3xuladmin/content/js/ui.js" /> + <script type="text/javascript;e4x=1" src="chrome://c3xuladmin/content/js/soap_core.js" /> + <script type="text/javascript;e4x=1" src="chrome://c3xuladmin/content/js/window.js" /> + <script type="text/javascript;e4x=1" src="chrome://c3xuladmin/content/js/dialog.js" /> + + <script type="application/x-javascript" src="chrome://global/content/nsDragAndDrop.js" /> + <script type="application/x-javascript" src="chrome://global/content/nsTransferable.js" /> + <script type="text/javascript;e4x=1" src="chrome://c3xuladmin/content/js/dragdrop.js" /> + <script type="application/x-javascript" src="chrome://global/content/inlineSpellCheckUI.js" /> + + <vbox flex="1"> + <dialogheader id="head" title="&addon.a900_banner_cat;" description="&contextmenu.properties;"/> + <box + id="content" + class="a900_banner_cat-properties" + flex="1"/> + </vbox> + +</dialog> |
From: <sv...@cy...> - 2016-03-07 09:05:07
|
Author: comsultia Date: 2016-03-07 10:04:42 +0100 (Mon, 07 Mar 2016) New Revision: 8637 Log: Added: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/related_sitemap_inverted_list.xbl Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/_init.css Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/_init.css =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/_init.css 2016-03-06 14:11:21 UTC (rev 8636) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/_init.css 2016-03-07 09:04:42 UTC (rev 8637) @@ -14,6 +14,12 @@ -moz-box-flex: 1; } +.a160_related_sitemap_inverted-list +{ + -moz-binding: url("chrome://c3xuladmin/content/addons/a160/related_sitemap_inverted_list.xbl#a160_related_sitemap_inverted-list"); + -moz-box-flex: 1; +} + .a160_gallery-list { -moz-binding: url("chrome://c3xuladmin/content/addons/a160/gallery_list.xbl#a160_gallery-list"); @@ -65,6 +71,12 @@ margin-right: 3px; } +treechildren::-moz-tree-image(col-name addon_a210_page), +.a160_related_sitemap_inverted-list treechildren::-moz-tree-image(col-name) +{ + list-style-image: url('chrome://c3xuladmin/content/addons/a210/page.png'); +} + .a160_relation-list treechildren::-moz-tree-image(col-name addon_a301_user) { list-style-image: url('chrome://c3xuladmin/content/addons/a301/user.png'); Added: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/related_sitemap_inverted_list.xbl =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/related_sitemap_inverted_list.xbl (rev 0) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/addons/a160/related_sitemap_inverted_list.xbl 2016-03-07 09:04:42 UTC (rev 8637) @@ -0,0 +1,1509 @@ +<?xml version="1.0"?> +<!DOCTYPE window SYSTEM "chrome://c3xuladmin/locale/stringlist.ent"> + +<bindings + xmlns="http://www.mozilla.org/xbl" + xmlns:xbl="http://www.mozilla.org/xbl" + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <binding + id="a160_related_sitemap_inverted-list" + extends="xul:box" + inherits="flex"> + + <content> + + + <xul:popupset> + + + <xul:menupopup + id="a160_relation-list-popupset-" + > + + <xul:menuitem + class="menuitem-iconic" + image="chrome://c3xuladmin/skin/icons/16x16/actions/view-refresh.png" + label="&contextmenu.reload;" + oncommand="document.getBindingParent(this).fnc_reload()" + /> + + </xul:menupopup> + + <xul:menupopup + id="a160_relation-list-popupset-item" + > + + <xul:menuitem + class="menuitem-iconic" image="chrome://c3xuladmin/skin/icons/16x16/actions/document-open.png" + label="&contextmenu.edit;" + oncommand="document.getBindingParent(this).fnc_edit()"/> + + <xul:menuitem + class="menuitem-iconic" image="chrome://c3xuladmin/skin/icons/16x16/actions/document-properties.png" + label="&addon.a160_relation.change_type;" + oncommand="document.getBindingParent(this).fnc_relation_type()"/> + + <xul:menuseparator/> + + <xul:menuitem + class="menuitem-iconic" + image="chrome://c3xuladmin/skin/icons/16x16/places/user-trash.png" + label="&contextmenu.move_to_trash;" + oncommand="document.getBindingParent(this).fnc_move_to_trash()" + /> + + <xul:menuseparator/> + + <xul:menuitem + class="menuitem-iconic" + image="chrome://c3xuladmin/skin/icons/16x16/actions/view-refresh.png" + label="&contextmenu.reload;" + oncommand="document.getBindingParent(this).fnc_reload()" + /> + + </xul:menupopup> + + + </xul:popupset> + + + + <xul:vbox flex="1"> + + <xul:box + flex="1"> + <xul:tree + IDanon="list" + enableColumnDrag="true" + _onmousedown="document.getBindingParent(this).fnc_tree_onMouseDown(event)" + oncontextmenu="document.getBindingParent(this).fnc_onPopup(event)" + _onclick="document.getBindingParent(this).fnc_tree_onClick(event)" + onkeypress_="document.getBindingParent(this).fnc_tree_onKeyPress(event)" + ondragstart="document.getBindingParent(this).fnc_tree_onDragStart(event)" + ondragdrop="document.getBindingParent(this).fnc_onDragDrop(event)" + ondrop="document.getBindingParent(this).fnc_onDragDrop(event)" + hidecolumnpicker="false" + + addon="a160" addon_type="relation" + editable="true" + flex="1"> + + <xul:treecols> + + <xul:treecol + id="list_col-ID_category" IDanon="list_col-ID_category" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-folder" IDanon="list_col-folder" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-saving" IDanon="list_col-saving" + ignoreincolumnpicker="true" hidden="true" /> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-r_prefix" IDanon="list_col-r_prefix" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-r_table" IDanon="list_col-r_table" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-l_prefix" IDanon="list_col-l_prefix" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-l_table" IDanon="list_col-l_table" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-r_ID" IDanon="list_col-r_ID" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-r_ID_category" IDanon="list_col-r_ID_category" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-r_lng" IDanon="list_col-r_lng" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-l_ID" IDanon="list_col-l_ID" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-l_ID_entity" IDanon="list_col-l_ID_entity" + width="60px" + label="&variable.ID_entity;" + hidden="false" ignoreincolumnpicker="false"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-l_ID_category" IDanon="list_col-l_ID_category" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-l_lng" IDanon="list_col-l_lng" + hidden="true" ignoreincolumnpicker="true"/> + <xul:splitter class="tree-splitter" /> + <xul:treecol + id="list_col-direction" IDanon="list_col-direction" + hidden="true" ignoreincolumnpicker="true"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + id="list_col-ID" IDanon="list_col-ID" + label="&variable.ID;" + _onclick="document.getBindingParent(this).fnc_sort(this)" + hidden="true" + persist="hidden ordinal width" + width="60px"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + id="list_col-ID_entity" IDanon="list_col-ID_entity" + width="60px" + label="&variable.ID_entity;" + hidden="true" ignoreincolumnpicker="true" + persist="hidden ordinal"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + id="list_col-status" IDanon="list_col-status" + class="treecol-image" + width="20" + fixed="true" + label="&variable.status;" + hideheader_="true" + hidden="true" + src="chrome://c3xuladmin/skin/icons/treecol/active.png"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + hidden="true" + id="list_col-rel_type" IDanon="list_col-rel_type" + label="&variable.rel_type;" + persist="hidden ordinal width" + flex="1"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + hidden="true" + id="list_col-named_addon" IDanon="list_col-named_addon" + label="&variable.named_addon;" + persist="hidden ordinal width" + width="130px"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + id="list_col-r_ID_entity" IDanon="list_col-r_ID_entity" + hidden="true" ignoreincolumnpicker="true" + width="60px" + label="&variable.ID_entity;" + persist="hidden ordinal"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + id="list_col-name" IDanon="list_col-name" + label="&variable.name;" + hideheader="true" + editable="true" + persist="hidden ordinal width" + flex="4"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + id="list_col-priority" IDanon="list_col-priority" + hidden="true" + label="priority" + persist="hidden ordinal width" + width="100px"/> + + <xul:splitter class="tree-splitter" /> + + <xul:treecol + id="list_col-datetime_create" IDanon="list_col-datetime_create" + hidden="true" + label="&variable.datetime_create; (&addon.a160_relation;)" + persist="hidden ordinal width" + width="120px"/> + + </xul:treecols> + + <xul:treechildren + /> + + </xul:tree> + </xul:box> + + <xul:hbox align="right" IDanon="menu_bottom" style="margin-right:5px"> + + <xul:button + mode="hyperlink" + label="&addon.a160_relation.add;" + IDanon="new.a210_page" + oncommand="document.getBindingParent(this).fnc_new('a210','page')" + /> + + </xul:hbox> + + </xul:vbox> + + </content> + + <implementation> + + <constructor> + <![CDATA[ + try + { + + var tthis=this + + this.nod_contentObject=document.getAnonymousElementByAttribute + ( + tthis, + 'IDanon', + 'list' + ) + + tthis.load_param = {order_by: 'ID ASC',status: 'YNL'} + tthis.load_param.lng = ui.lng(); + tthis.load_param.rel_type = 'link'; + tthis.load_param.r_prefix = 'a210'; + tthis.load_param.r_table = 'page'; + tthis.order_by = ['rel_type'] + + document.getAnonymousElementByAttribute(tthis, 'IDanon', 'list').addEventListener('click', function(evt){ tthis.fnc_tree_onClick(tthis, evt) }, false); + + tthis.order_by.forEach(function(tmp){ + var tmpCol = document.getAnonymousElementByAttribute(tthis,'IDanon', 'list_col-'+tmp); + tmpCol.addEventListener('click', function() { tthis.fnc_sort(tmpCol) }, false); + }); + + tthis.obj_SOAP = new SOAPh() + + tthis.obj_SOAP.var_id = "a160_relation-list" + + tthis.obj_SOAP.fnc_onResponse = function(header,body) + { + tthis.fnc_onSOAPLoad(header,body,tthis) + } + + if(cyclone3xuladmin.gen_SOAPBroadcaster) + { + var tmp = cyclone3xuladmin.gen_SOAPBroadcaster.fnc_listenerRegister(tthis); + tthis.var_listenerOrdinal = tmp.ordinal; + } + + tthis.selectedID = null + + tthis.fnc_init(); + + + }catch(e){alert("[relation_list.xbl] {constructor} " + e)} + ]]> + </constructor> + + <destructor> + <![CDATA[ + + if(cyclone3xuladmin.gen_SOAPBroadcaster) + { + cyclone3xuladmin.gen_SOAPBroadcaster.fnc_listenerUnregister(this.var_listenerOrdinal); + } + + ]]> + </destructor> + + + <!-- CORE --> + + + <method name="fnc_init"> + <body> + <![CDATA[ + try + { + + /* set selected IDcategory - look into contenttree */ + + this.load_param.lng = Cyclone3.domain.languages['@default']; + this.load_param.status = "YNL"; + + if (this.getAttribute('mode') == 'lite') + { + document.getAnonymousElementByAttribute(this,'IDanon','list') + .setAttribute('hidecolumnpicker','true') + document.getAnonymousElementByAttribute(this,'IDanon','menu_bottom') + .setAttribute('collapsed','true') + document.getAnonymousElementByAttribute(this,'IDanon','list_col-name') + .removeAttribute('label') + document.getAnonymousElementByAttribute(this,'IDanon','list_col-status') + .removeAttribute('label') + document.getAnonymousElementByAttribute(this,'IDanon','list_col-status') + .removeAttribute('class') + } + + if ( + Cyclone3.domain.addons.a210 && + Cyclone3.domain.addons.a210['@enabled'] == 'true') + { + document.getAnonymousElementByAttribute(this,'IDanon','new.a210_page') + .setAttribute('collapsed','false') + } + + this.nod_contentObject.columns.restoreNaturalOrder(); + + + }catch(e){alert("[sub_event_list.xbl] {fnc_init} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_onSOAPLoad"> + <parameter name="header"/> + <parameter name="body"/> + <parameter name="bindingElement"/> + <body> + <![CDATA[ + try + { + //alert(body); + var tthis=bindingElement + + log('[relation_list.xbl] fnc_onSOAPLoad addon=' + body.response['@addon'] + ' addon_type=' + body.response['@addon_type'] + ' type=' + body.response['@type'] + ' result=' + body.response['@result']); + + ui.loading_feedback(document.getAnonymousElementByAttribute(this,'IDanon','list'), false); + + if(body.response['@result'] != '1') + { + log('response error') + log(body.response.reason) + return + } + + + if( + body.response['@addon']=='a160' && + body.response['@addon_type']=='relation') + { + + log('[relation_list.xbl] {fnc_onSoapLoad} a160_relation'); + + if(body.response['@type']=='list') + { + + log('[relation_list.xbl] {fnc_onSoapLoad} a160_relation-list'); + if (header.request_time < this.request_time) return; + this.request_time=header.request_time; + this.fnc_attachTreeview(body.response, this.nod_contentObject) + + } + else if ( + body.response['@type']=='new' || + body.response['@type']=='status' || + body.response['@type']=='rename' || + body.response['@type']=='reorder' || + body.response['@type']=='rel_type' || + body.response['@type']=='move_to_trash' || + body.response['@type']=='change_name' || + body.response['@type']=='change_type' + ) + { + this.fnc_reload(); + } + else + { + } + } + + + }catch(e){alert("[sub_event_list.xbl] {fnc_onSOAPLoad} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_onBroadcast"> + <parameter name="header"/> + <parameter name="body"/> + <body> + <![CDATA[ + try + { + log('[relation_list.xbl] {fnc_onBroadcast} addon=' + body.response['@addon'] + + ' addon_type=' + body.response['@addon_type'] + + ' type=' + body.response['@type'] + + ' result=' + body.response['@result']); + + if( + body.response['@addon']=='a160' && + body.response['@addon_type']=='relation' + ) + { + if ( + body.response['@type']=='new' || + body.response['@type']=='status' || + body.response['@type']=='rel_type' || + body.response['@type']=='rename' || + body.response['@type']=='move_to_trash' + ) + { + this.fnc_reload(); + } + } + + + }catch(e){alert("[sub_event_list.xbl] {fnc_onBroadcast} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_attachTreeview"> + <parameter name="e4x" /> + <parameter name="xulNode" /> + <body> + <![CDATA[ + try + { + + var tthis=this; + + var treevjev = + { + _tree : xulNode, + + _filtered : false, + _filterSet : [], + _usingExclusionSet : false, + _exclusionSet : [], + _filterValue : "", + + _items : [], + + _rowCount: 0, + + _stripColID : function (colID) + { + colID=colID.replace(/^list_col-/,"") + return colID + }, + + get rowCount() + { + return this._rowCount; + }, + + get activeCollection () + { + return this._filtered ? this._filterSet + : this._usingExclusionSet ? this._exclusionSet + : this._items; + }, + + getItemAtIndex : function (aIndex) + { + return this.activeCollection[aIndex]; + }, + + getCellValue : function (aIndex, aColumn) + { + var tmpColID = this._stripColID(aColumn.id) + if(this._items[aIndex]) + { + return this._items[aIndex][tmpColID] + } + else + { + return null + } + }, + + getCellText : function (aIndex, aColumn) + { + var tmpColID = this._stripColID(aColumn.id) + + //log('rel_type=' + document.getBindingParent(tthis).load_param.rel_type); + +// if (tmpColID == 'name' && this._items[aIndex]['rel_type'] != '') +// { +// return '{' + this._items[aIndex]['rel_type'] + '} ' + this._items[aIndex][tmpColID]; +// } + + switch (tmpColID) + { + case "visible": + return null + case "status": + return null + default: + break + } + + return this._items[aIndex][tmpColID] + }, + + getImageSrc : function (aIndex, aColumn) + { + //if (aColumn.id == "fileExtension"){ + // return this.getItemAtIndex(aIndex).smallIcon + //} + //return ""; + }, + + _selection: 0, + get selection () { return this._selection; }, + set selection (val) { this._selection = val; return val; }, + + getRowProperties : function (aIndex, aProperties) + { + aProperties = new cyclone3xuladmin.aProperties(); + var aserv= + Components.classes["@mozilla.org/atom-service;1"] + .getService(Components.interfaces.nsIAtomService); + + if(Math.round(aIndex/2) == (aIndex/2)) + { + aProperties.AppendElement(aserv.getAtom('line-style_odd')) + } + + aProperties.AppendElement(aserv.getAtom('line-dir-' + this._items[aIndex]['direction'])) + if (aIndex > 0 && this._items[aIndex-1]['direction']=='lr' && this._items[aIndex]['direction']=='rl') + { + aProperties.AppendElement(aserv.getAtom('line-dir-change')) + } + + return aProperties.atom; + }, + + getCellProperties : function (aIndex, aColumn, aProperties) + { + aProperties = new cyclone3xuladmin.aProperties(); + var aserv= + Components.classes["@mozilla.org/atom-service;1"] + .getService(Components.interfaces.nsIAtomService); + + var tmpColID = this._stripColID(aColumn.id) + + if(Math.round(aIndex/2) == (aIndex/2)) + { + aProperties.AppendElement(aserv.getAtom('line-style_odd')) + } + + if(this._items[aIndex]['status'] == 'N') + { + aProperties.AppendElement(aserv.getAtom('line-style_inactive')) + } + + if(this._items[aIndex]['folder'] == 'P') + { + aProperties.AppendElement(aserv.getAtom('folder')) + aProperties.AppendElement(aserv.getAtom('parent')) + } + else if(this._items[aIndex]['folder'] == 'Y') + { + aProperties.AppendElement(aserv.getAtom('folder')) + } + else + { + aProperties.AppendElement(aserv.getAtom('item')) + } + + aProperties.AppendElement(aserv.getAtom('dir_' + this._items[aIndex]['direction'])) + + //if (this._items[aIndex]['ico_mime']) + //{ + if (!this._items[aIndex]['direction'] || this._items[aIndex]['direction'] == 'lr') + { + aProperties.AppendElement(aserv.getAtom('addon_' + this._items[aIndex]['r_prefix'] + '_' + this._items[aIndex]['r_table'])) + } + else + { + aProperties.AppendElement(aserv.getAtom('addon_' + this._items[aIndex]['l_prefix'] + '_' + this._items[aIndex]['l_table'])) + } + //} + + if(this._items[aIndex]['saving'] == 'Y') + { + aProperties.AppendElement(aserv.getAtom('saving')); + } + + if(tmpColID) + { + aProperties.AppendElement(aserv.getAtom("col-"+tmpColID)) + + switch (tmpColID) + { + case "visible": + aProperties.AppendElement(aserv.getAtom("visible_"+this._items[aIndex][tmpColID])) + case "status": + aProperties.AppendElement(aserv.getAtom("status_"+this._items[aIndex][tmpColID])) + default: + break + } + + } + + if (tthis.wakka) { aProperties.AppendElement(aserv.getAtom("saving")); } + + return aProperties.atom; + }, + getColumnProperties : function (aColumn, aProperties) {}, + isContainer : function (aIndex) { return false; }, + isContainerOpen : function (aIndex) { return false; }, + isContainerEmpty : function (aIndex) { return false; }, + isSeparator : function (aIndex) { return false; }, + isSorted : function (aIndex) { return false; }, + canDrop : function (aIndex, aOrientation) { return false; }, + drop : function (aIndex, aOrientation) {}, + getParentIndex : function (aIndex) { return -1; }, + hasNextSibling : function (aParentIndex, aIndex) { return false; }, + getLevel : function (aIndex) { return 0; }, + getProgressMode : function (aIndex, aColumn) {}, + setTree : function (aTree) {}, + toggleOpenState : function (aIndex) { }, + cycleHeader : function (aColumn) {}, + selectionChanged : function () {}, + cycleCell : function (aIndex, aColumn) {}, + isEditable : function (aIndex, aColumn) + { + var tmpColID = this._stripColID(aColumn.id) + tmpfolder = this._items[aIndex]['folder']; + if (this._items[aIndex]['status'] == 'T'){return false;} + if (tmpColID == 'name'){return true;} + return false + }, + setCellValue : function (aIndex, aColumn, aValue) + { + var tmpColID = this._stripColID(aColumn.id) + this._items[aIndex][tmpColID] = aValue + this._tree.treeBoxObject.invalidateRow(aIndex) + }, + setCellText : function (aIndex, aColumn, aValue) { + + var tmpColID = this._stripColID(aColumn.id) + + tmpID = this._items[aIndex]['ID']; + tmpIDcategory = this._items[aIndex]['ID_category']; + tmplprefix = this._items[aIndex]['l_prefix']; + tmpSaving = this._items[aIndex]['saving']; + tmpfolder = this._items[aIndex]['folder']; + + aValue=aValue.replace(/^{.*?} ?/,""); + if (tmpColID == 'name' && (aValue != this._items[aIndex]['name'])) + { + this._items[aIndex]['saving'] = 'Y'; + tthis.obj_SOAP.rest_call('a160/relation/change_name',{ + 'relation.l_prefix': tmplprefix, + 'relation.ID': tmpID, + 'relation.rel_name': aValue + }); + } + this._tree.treeBoxObject.invalidateRow(aIndex) + + }, + performAction : function (aAction) {}, + performActionOnRow : function (aAction, aIndex) {}, + performActionOnCell : function (aAction, aIndex, aColumn) {}, + + } + + if (e4x && e4x.item) + { + for (var i = 0; i < e4x.item.length; i++) + { + var tmpItem = {} + + for (var j in e4x.item[i]) + { + if (j[0] != '@') + { + if (typeof(e4x.item[i][j]) != "object") + { + tmpItem[j] = e4x.item[i][j]; + } else + { + if (e4x.item[i][j].length && e4x.item[i][j].length == 1) + { + tmpItem[j] = e4x.item[i][j][0]['value']; + } + } + } + } + tmpItem.named_addon=ui.locale.getStringFromName('addon.' + tmpItem.named_addon + '.item') + treevjev._items.push(tmpItem) + } + } + + treevjev._rowCount=treevjev._items.length + + /* save selection */ + var selected=[]; + for (var i=0; i<xulNode.view.selection.getRangeCount(); i++) + { + var start = new Object(); + var end = new Object(); + xulNode.view.selection.getRangeAt(i,start,end); + for (var j=start.value; j<=end.value; j++) + { + selected.push(xulNode.view.getCellValue(j,{id: 'ID'})+'_'+xulNode.view.getCellValue(j,{id: 'folder'})) + } + } + + xulNode.view=treevjev + + /* select first line */ + /*xulNode.view.selection.select(0)*/ + + for(var j=0; j<xulNode.view.rowCount; j++) + { + var ID=xulNode.view.getCellValue(j,{id: 'ID'})+'_'+xulNode.view.getCellValue(j,{id: 'folder'}); + for(var i=0; i<selected.length; i++) + { + if (ID == selected[i]) + {xulNode.view.selection.rangedSelect(j,j,true);} + } + } + + if (e4x.item) + { + var offset = document.getAnonymousElementByAttribute(this,'class','list_offset'); + if (offset) {offset.e4x = e4x;} + } + + return true + + }catch(e){alert("[sub_event_list.xbl] {fnc_attachTreeview} " + e)} + ]]> + </body> + </method> + + + <!-- METHODS --> + + + <method name="get_selected"> + <body> + <![CDATA[ + try + { + + var listXulNode=this.nod_contentObject + var selCount = listXulNode.view.selection.getRangeCount() + var col_ID = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-ID') + var col_folder = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-folder') + var col_ID_category = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-ID_category') + + var col_r_prefix = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-r_prefix') + var col_r_table = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-r_table') + var col_r_ID_entity = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-r_ID_entity') + var col_r_ID = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-r_ID') + var col_r_ID_category = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-r_ID_category') + var col_r_lng = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-r_lng') + + var col_l_prefix = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-l_prefix') + var col_l_table = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-l_table') + var col_l_ID_entity = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-l_ID_entity') + var col_l_ID = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-l_ID') + var col_l_ID_category = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-l_ID_category') + var col_l_lng = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-l_lng') + + var col_rel_type = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-rel_type') + var col_direction = + listXulNode.treeBoxObject.columns.getNamedColumn('list_col-direction') + + var selected={}; + selected.IDs=0; + selected.IDs_folder=''; + selected.IDs_item=''; + + var selectedIndexes = [] + + for (var i=0; i<selCount; i++) + { + var start = new Object(); + var end = new Object(); + + listXulNode.view.selection.getRangeAt(i,start,end); + + for (var j=start.value; j<=end.value; j++) + { + selectedIndexes.push(j) + selected.IDs++; + var ID = listXulNode.view.getCellValue(j, col_ID) + var folder = listXulNode.view.getCellValue(j, col_folder) + + if (folder == 'Y') + { + selected.IDs_folder = selected.IDs_folder + ';' + ID + } + else if (!folder) + { + selected.IDs_item = selected.IDs_item + ';' + ID + } + } + } + + selected.ID = listXulNode.view.getCellValue(selectedIndexes[0], col_ID); + if (!selected.ID){selected.ID=''} + selected.folder = listXulNode.view.getCellValue(selectedIndexes[0], col_folder) + selected.ID_category = listXulNode.view.getCellValue(selectedIndexes[0], col_ID_category) + selected.r_prefix = listXulNode.view.getCellValue(selectedIndexes[0], col_r_prefix) + selected.r_table = listXulNode.view.getCellValue(selectedIndexes[0], col_r_table) + selected.r_ID_entity = listXulNode.view.getCellValue(selectedIndexes[0], col_r_ID_entity) + selected.r_ID = listXulNode.view.getCellValue(selectedIndexes[0], col_r_ID) + selected.r_ID_category = listXulNode.view.getCellValue(selectedIndexes[0], col_r_ID_category) + selected.r_lng = listXulNode.view.getCellValue(selectedIndexes[0], col_r_lng) + selected.l_prefix = listXulNode.view.getCellValue(selectedIndexes[0], col_l_prefix) + selected.l_table = listXulNode.view.getCellValue(selectedIndexes[0], col_l_table) + selected.l_ID_entity = listXulNode.view.getCellValue(selectedIndexes[0], col_l_ID_entity) + selected.l_ID = listXulNode.view.getCellValue(selectedIndexes[0], col_l_ID) + selected.l_ID_category = listXulNode.view.getCellValue(selectedIndexes[0], col_l_ID_category) + selected.l_lng = listXulNode.view.getCellValue(selectedIndexes[0], col_l_lng) + selected.rel_type = listXulNode.view.getCellValue(selectedIndexes[0], col_rel_type) + selected.direction = listXulNode.view.getCellValue(selectedIndexes[0], col_direction) + + return selected; + + }catch(e){alert("[sub_event_list.xbl] {get_selected} " + e)} + ]]> + </body> + </method> + + + + <method name="get_clicked"> + <parameter name="event"/> + <body> + <![CDATA[ + try + { + + var clicked={}; + + var xulNode = this.nod_contentObject; + var row = {}, col = {}, obj = {} + xulNode.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj) + + row=row.value + col=col.value + obj=obj.value + + clicked.row=row + clicked.obj=obj + + if (col) + { + clicked.col=col.id.toString().replace(/list_col-/, "") + clicked.colvalue=xulNode.view.getCellValue(row, col) + } + + clicked.ID = xulNode.view.getCellValue + (row,{id: 'ID'}) + if (!clicked.ID){clicked.ID=''} + + clicked.folder = xulNode.view.getCellValue + (row,{id: 'folder'}) + + return clicked; + + }catch(e){alert("[sub_event_list.xbl] {get_clicked} " + e)} + ]]> + </body> + </method> + + + + <method name="fnc_reload"> + <body> + <![CDATA[ + try + { + log('[relation_list.xbl] fnc_reload') + + ui.loading_feedback(document.getAnonymousElementByAttribute(this,'IDanon','list'), true); + + this.obj_SOAP.fnc_create( + 'a160_relation_list', + this.load_param + ) + + }catch(e){alert("[sub_event_list.xbl] {fnc_reload} " + e)} + ]]> + </body> + </method> + + + <!-- HANDLING EVENTS --> + + + <method name="fnc_tree_onClick"> + <parameter name="thisbinding"/> + <parameter name="event"/> + <body> + <![CDATA[ + try + { + var tthis = thisbinding; + + var clicked=tthis.get_clicked(event) + + if(event.button==0) + { + // log('clicked col=' + clicked.col) + if(clicked.col == 'name') + { + + } + else if (clicked.col == 'status') + { + if (clicked.colvalue == 'Y') + { + tthis.fnc_status('N'); + } + else if (clicked.colvalue == 'N') + { + tthis.fnc_status('Y'); + } + } + else if (clicked.col && clicked.col.match(/^priority_/)) + { + + } + } + else if(event.button==2) + { + } + + + }catch(e){alert("[sub_event_list.xbl] {fnc_tree_onClick} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_onPopup"> + <parameter name="event"/> + <body> + <![CDATA[ + try + { + + var selected = this.get_selected(); + var clicked = this.get_clicked(event); + + var menu = ''; + + if (selected.ID) + { + menu='a160_relation-list-popupset-item'; + } + else + { + menu='a160_relation-list-popupset-'; + } + + var popup_element = document.getAnonymousElementByAttribute(this,'id',menu); + + if (popup_element != null) + { + popup_element.setAttribute("hidden", "false"); + popup_element.addEventListener("popuphiding", + function(event) + { + if (event.target.tagName == 'xul:popup') + { + event.target.setAttribute("hidden", "true"); + } + } + ,false); + popup_element.openPopup(null, "", event.clientX,event.clientY, true, false); + } + + }catch(e){alert("[sub_event_list.xbl] {fnc_onPopup} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_sort"> + <parameter name = "xulTreecol"/> + <body> + <![CDATA[ + try + { + var id = xulTreecol.getAttribute('id') + var name = id.replace(/^list_col-/,"") + var tmpOrder = '' + + log('[article_cat_list.xbl] {fnc_sort} id=' + id + ' name=' + name) + + var allowed=0 + var direction + + /* find if is allowed to sorting */ + for(var i in this.order_by) + { + log('i=' + this.order_by[i]) + if (name == this.order_by[i]) + { + allowed=1 + direction = + document.getAnonymousElementByAttribute(this,'IDanon','list_col-'+name) + .getAttribute('sortDirection') + } + } + + if (!allowed) + { + return + } + + /* setup sorting */ + for(var i in this.order_by) + { + if (name == this.order_by[i]) + { + if (direction == 'descending') + { + document.getAnonymousElementByAttribute(this,'IDanon','list_col-' + this.order_by[i]) + .setAttribute('sortDirection','ascending') + this.load_param.order_by = name + ' ASC' + } + else + { + document.getAnonymousElementByAttribute(this,'IDanon','list_col-' + this.order_by[i]) + .setAttribute('sortDirection','descending') + this.load_param.order_by = name + ' DESC' + } + } + else + { + document.getAnonymousElementByAttribute(this,'IDanon','list_col-'+this.order_by[i]) + .setAttribute('sortDirection','') + } + } + + this.fnc_reload(); + + }catch(e){alert("[sub_event_list.xbl] {fnc_sort} " + e)} + ]]> + </body> + </method> + + + <!-- FUNCTIONS --> + + + <method name="fnc_new"> + <parameter name="addon"/> + <parameter name="addon_type"/> + <parameter name="rel_type"/> + <parameter name="rel_ids"/> + <body> + <![CDATA[ + try + { + + log('[relation_list.xbl] {fnc_new} (' + addon + ',' + addon_type + ')') + + var rel_type='link' + var item={} + var win = window.openDialog + ( + 'chrome://c3xuladmin/content/addons/' + addon + '/' + addon_type + '_select.xul', + 'cyclone-dialog', + 'chrome,centerscreen,resizable,modal', + Cyclone3.domain, + { + returnFunction: function(ret){item=ret} + } + ) + + log('[relation_list.xbl] returned selected ID=' + item.ID) + + if (item.couples) + { + for (var couple in item.couples) + { + if (item.couples[couple][0]) + { + this.obj_SOAP.fnc_create( + 'a160_relation_new', + { + r_prefix: this.load_param.l_prefix, + r_table: this.load_param.l_table, + r_ID_entity: this.load_param.l_ID_entity, + rel_type: rel_type, + l_prefix: item.addon, + l_table: item.addon_type, + l_ID_entity: item.couples[couple][0] + } + ) + } + } + } + else if (item.ID_entitys) + { + this.obj_SOAP.fnc_create( + 'a160_relation_new', + { + r_prefix: this.load_param.l_prefix, + r_table: this.load_param.l_table, + r_ID_entity: this.load_param.l_ID_entity, + rel_type: rel_type, + l_prefix: item.addon, + l_table: item.addon_type, + l_ID_entity: item.ID_entitys + } + ) + } + else if (item.ID_entity) + { + this.obj_SOAP.fnc_create( + 'a160_relation_new', + { + r_prefix: this.load_param.l_prefix, + r_table: this.load_param.l_table, + r_ID_entity: this.load_param.l_ID_entity, + rel_type: rel_type, + l_prefix: item.addon, + l_table: item.addon_type, + l_ID_entity: item.ID_entity + } + ) + } + + }catch(e){alert("[relation_list.xbl] {fnc_new} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_move_to_trash"> + <body> + <![CDATA[ + try + { + + var selected=this.get_selected(); + + var obj_returnObject=null + + /* Ask */ + var modal = window.openDialog + ( + 'chrome://c3xuladmin/content/addons/a020/entity_to_trash.xul', + 'cyclone-dialog', + 'chrome,centerscreen,modal', + {returnFunction: function(retObj){obj_returnObject=retObj}} + ); + + /* Check answer */ + if(!obj_returnObject) + { + return 0 + } + + /* Move to trash! */ + if (selected.ID) + { +/* alert(this.load_param.l_prefix + ' ' + selected.ID); + return;*/ + this.obj_SOAP.fnc_create( + 'a160_relation_move_to_trash', + { + l_prefix: selected.l_prefix || this.load_param.l_prefix, + ID: selected.ID + } + ) + } + + + }catch(e){alert("[sub_event_list.xbl] {fnc_move_to_trash} " + e)} + ]]> + </body> + </method> + + + + <method name="fnc_edit"> + <body> + <![CDATA[ + try + { + + var selected=this.get_selected(); + + if (selected.ID) + { + if (selected.direction == 'rl') + { + window.openDialog + ( + 'chrome://c3xuladmin/content/addons/' + + selected.l_prefix + '/' + selected.l_table + '_edit.xul', + '', + 'chrome,resizable,centerscreen', + Cyclone3.domain, + { + ID: selected.l_ID, + ID_entity: selected.l_ID_entity, + ID_category: selected.l_ID_category + } + ); + } + else + { + if (selected.r_prefix == 'a210' && selected.r_table == 'page') + { + window.openDialog + ( + 'chrome://c3xuladmin/content/addons/' + + selected.r_prefix + '/' + selected.r_table + '_edit.xul', + '', + 'chrome,resizable,centerscreen', + Cyclone3.domain, + { + ID: selected.r_ID_entity, + ID_entity: selected.r_ID_entity, + ID_category: selected.r_ID_category + } + ); + } + else + { + window.openDialog + ( + 'chrome://c3xuladmin/content/addons/' + + selected.r_prefix + '/' + selected.r_table + '_edit.xul', + '', + 'chrome,resizable,centerscreen', + Cyclone3.domain, + { + ID: selected.r_ID, + ID_entity: selected.r_ID_entity, + ID_category: selected.r_ID_category + } + ); + } + } + } + + }catch(e){alert("[sub_event_list.xbl] {fnc_edit} " + e)} + ]]> + </body> + </method> + + + + <method name="fnc_status"> + <parameter name="status"/> + <body> + <![CDATA[ + try + { + + var selected=this.get_selected(); + + if (selected.ID) + { + this.obj_SOAP.fnc_create( + 'a160_relation_status', + { + l_prefix: this.load_param.l_prefix, + ID: selected.ID, + status: status + } + ) + } + + }catch(e){alert("[sub_event_list.xbl] {fnc_status} " + e)} + ]]> + </body> + </method> + + <method name="fnc_relation_type"> + <body> + <![CDATA[ + try + { + + var selected=this.get_selected(); + + if (selected.ID) + { + var rel_type = selected.rel_type; + var rel_type_new; + + var win = window.openDialog + ( + 'chrome://c3xuladmin/content/addons/a160/relation_type.xul', + 'cyclone-dialog', + 'chrome,centerscreen,modal', + { + returnFunction: function(name){rel_type_new=name}, + rel_type: rel_type + } + ) + + if (rel_type_new) + { + if (rel_type_new != rel_type) + { + this.obj_SOAP.fnc_create( + 'a160_relation_rel_type', + { + l_prefix: this.load_param.l_prefix, + ID: selected.ID, + rel_type: rel_type_new + } + ) + } + } + + } + + }catch(e){alert("[sub_event_list.xbl] {fnc_relation_type} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_tree_onDragStart"> + <parameter name="event"/> + <body> + <![CDATA[ + try + { + log('[relation_list.xbl] {fnc_tree_onDragStart} '); + + var bindingParent = document.getBindingParent(event.target); + + if (bindingParent.getAttribute('mode') == 'select'){return} + if (bindingParent.getAttribute('mode') == 'select_lite'){return} + + var selected = bindingParent.get_selected(); + var clicked = bindingParent.get_clicked(event); + + //dragdropServices.onDrop(event,'chrome://c3xuladmin/skin/icons/48x48/mimetypes/text-x-generic.png'); + + if (clicked.obj != 'text' && clicked.obj != 'image'){return} + + if (!selected.folder && selected.ID && clicked.ID) + { + event.dataTransfer.setData("text/unicode", selected.ID); + + Cyclone3DragDrop.ddobject = { + type : 'a160', + type_sub : 'relation', + ID: selected.ID, + ID_entity: selected.ID_entity + }; + } + + return false + + }catch(e){alert("[relation_list.xbl] {fnc_tree_onDragStart} " + e)} + ]]> + </body> + </method> + + + <method name="fnc_onDragDrop"> + <parameter name="event"/> + <parameter name="dragobj"/> + <body> + <![CDATA[ + try + { + log('[relation_list.xbl] fnc_onDragDrop'); + + log('dropped ' + Cyclone3DragDrop.ddobject.type + '_' + Cyclone3DragDrop.ddobject.type_sub + '/' + Cyclone3DragDrop.ddobject.ID); + + if (!Cyclone3DragDrop.ddobject.ID) + { + /* reparse */ + nsDragAndDrop.drop(event, boardObserver) + } + + /* exit when none data dragged */ + if (!Cyclone3DragDrop.ddobject.ID){ + Cyclone3DragDrop.ddobject={}; + return; + } + + /* try to open dragdropobject */ + var clicked=this.get_clicked(event) + + if (Cyclone3DragDrop.ddobject.type == 'a160') + { + if (Cyclone3DragDrop.ddobject.type_sub == 'relation') + { + if (clicked.ID && clicked.ID != Cyclone3DragDrop.ddobject.ID) + { + this.obj_SOAP.rest_call('a160/relation/reorder',{ + 'l_prefix': this.load_param.l_prefix, + 'relation.ID': Cyclone3DragDrop.ddobject.ID, + 'relation.ID.before': clicked.ID, + 'ignore_rel_type': 1 + }); + return + } + } + } + else if (Cyclone3DragDrop.ddobject.type != null && Cyclone3DragDrop.ddobject.type_sub != null && Cyclone3DragDrop.ddobject.ID != null) + { +// log('dropped ' + Cyclone3DragDrop.ddobject.type + '_' + Cyclone3DragDrop.ddobject.type_sub + '/' + Cyclone3DragDrop.ddobject.ID); + } + + return false + + }catch(e){alert("[relation_list.xbl] {fnc_onDragDrop} " + e)} + ]]> + </body> + </method> + + + </implementation> + + <handlers> + <handler event="dragover" action="nsDragAndDrop.dragOver(event,boardObserver)"/> + + + </handlers> + + </binding> + +</bindings> |
From: <sv...@cy...> - 2016-03-06 14:11:32
|
Author: comsultia Date: 2016-03-06 15:11:21 +0100 (Sun, 06 Mar 2016) New Revision: 8636 Log: Modified: trunk/frame/.core/.libs/Cyclone/files.pm Modified: trunk/frame/.core/.libs/Cyclone/files.pm =================================================================== --- trunk/frame/.core/.libs/Cyclone/files.pm 2016-03-04 11:23:31 UTC (rev 8635) +++ trunk/frame/.core/.libs/Cyclone/files.pm 2016-03-06 14:11:21 UTC (rev 8636) @@ -145,7 +145,8 @@ # www:$mediasrv_group ak media su cez NFS na inom serveri ['^!media\/' ,"!media" ,"664","$mediasrv_user:$mediasrv_group"], # $user_www:cyclone3 ak media su normalne lokalne - ['/!?media\/' ,"!media domain" ,"664","$user_www:$group"], + ['/!?media\/.*\.sh' ,"!media domain builder" ,"755","$user_www:$group"], + ['/!?media\/' ,"!media domain" ,"664","$user_www:$group"], ['\.htaccess$' ,".htaccess" ,"460","$user_www:$group"], ['_logs\/.*\.log$' ,"_logs cron .log" ,"",""], |
From: <sv...@cy...> - 2016-03-04 11:23:39
|
Author: comsultia Date: 2016-03-04 12:23:31 +0100 (Fri, 04 Mar 2016) New Revision: 8635 Log: fied utf-8 characters Modified: trunk/xuladmin/docroot/_addons/App/910/_mdl/910-product_generate_modifications.new.mdl Modified: trunk/xuladmin/docroot/_addons/App/910/_mdl/910-product_generate_modifications.new.mdl =================================================================== --- trunk/xuladmin/docroot/_addons/App/910/_mdl/910-product_generate_modifications.new.mdl 2016-03-03 18:54:00 UTC (rev 8634) +++ trunk/xuladmin/docroot/_addons/App/910/_mdl/910-product_generate_modifications.new.mdl 2016-03-04 11:23:31 UTC (rev 8635) @@ -10,6 +10,7 @@ use App::301::perm; use App::910::_init; use JSON; +use Encode qw(encode_utf8); use Data::Dumper; my %all_L10n; @@ -37,7 +38,7 @@ delete_existing_modifications('ID_entity' => $main::RPC->{'product_main.ID_entity'}); } - my $generator_hash = decode_json($main::RPC->{'generator_json'}); + my $generator_hash = decode_json(encode_utf8($main::RPC->{'generator_json'})); my $generated = generate_modifications( 'groups' => \@{$generator_hash}, |
From: <sv...@cy...> - 2016-03-03 18:54:07
|
Author: rlaucik Date: 2016-03-03 19:54:00 +0100 (Thu, 03 Mar 2016) New Revision: 8634 Log: Modified: trunk/frame/.core/.libs/Template/Filters.pm Modified: trunk/frame/.core/.libs/Template/Filters.pm =================================================================== --- trunk/frame/.core/.libs/Template/Filters.pm 2016-03-03 18:53:40 UTC (rev 8633) +++ trunk/frame/.core/.libs/Template/Filters.pm 2016-03-03 18:54:00 UTC (rev 8634) @@ -692,14 +692,15 @@ $text = '' unless defined $text; if ($env->{'mimetype'} eq "html") { - my $p=new App::401::mimetypes::html; +# use App::020::mimetypes::html; + my $p=new App::020::mimetypes::html; $p->config( 'env' => $env, - 'entity' => $context->{'tpl'}->{'entity'} + 'tpl_ext' => $context->{'tpl'} ); $p->parse($text); $p->eof(); - $text=$p->{'out'}; + $text=$p->{'output'}; } return $text; } |
From: <sv...@cy...> - 2016-03-03 18:53:47
|
Author: rlaucik Date: 2016-03-03 19:53:40 +0100 (Thu, 03 Mar 2016) New Revision: 8633 Log: Modified: trunk/frame/.core/.libs/TOM/Domain.pm Modified: trunk/frame/.core/.libs/TOM/Domain.pm =================================================================== --- trunk/frame/.core/.libs/TOM/Domain.pm 2016-03-03 18:52:42 UTC (rev 8632) +++ trunk/frame/.core/.libs/TOM/Domain.pm 2016-03-03 18:53:40 UTC (rev 8633) @@ -90,6 +90,7 @@ eval "use $addon_path;"; if ($@){main::_log("can't load addon '$addon_path' $@ $!",1)} } + require App::020::mimetypes; # default parser } require TOM::Template; |
From: <sv...@cy...> - 2016-03-03 18:52:49
|
Author: rlaucik Date: 2016-03-03 19:52:42 +0100 (Thu, 03 Mar 2016) New Revision: 8632 Log: Modified: trunk/frame/.core/.libs/Int/charsets/encode.pm Modified: trunk/frame/.core/.libs/Int/charsets/encode.pm =================================================================== --- trunk/frame/.core/.libs/Int/charsets/encode.pm 2016-03-03 18:41:44 UTC (rev 8631) +++ trunk/frame/.core/.libs/Int/charsets/encode.pm 2016-03-03 18:52:42 UTC (rev 8632) @@ -37,7 +37,7 @@ '158' => "z", # 'z' s makcenom - '161' => "i", # 'i' divne + '161' => "!", # '¡' '162' => "c", # '¢' '164' => "'", # napriklad v slove "don't" @@ -69,7 +69,7 @@ '189' => "½", # 1/2 '190' => "Z", # 'Z' s makcenom - '191' => "¿", # obrateny otaznik + '191' => "?", # '¿' obrateny otaznik '192' => "A", # 'À' '193' => "A", # 'A' s dlznom '194' => "A", # 'A' s kruzkom @@ -234,8 +234,9 @@ '381' => "Z", # 'Z' s makcenom '382' => "z", # 'z' s makcenom + '536' => "S", # 'Ș' '537' => "s", # 'ș' - + '538' => "T", # 'Ț' '539' => "t", # 'ț' '711' => "ˇ", # makcen |
From: <sv...@cy...> - 2016-03-03 18:41:53
|
Author: comsultia Date: 2016-03-03 19:41:44 +0100 (Thu, 03 Mar 2016) New Revision: 8631 Log: Modified: trunk/frame/.core/job.workerd Modified: trunk/frame/.core/job.workerd =================================================================== --- trunk/frame/.core/job.workerd 2016-03-03 12:53:23 UTC (rev 8630) +++ trunk/frame/.core/job.workerd 2016-03-03 18:41:44 UTC (rev 8631) @@ -121,6 +121,7 @@ our %domain_info; our %domain_worker; our %config_file; +check_processes(); check_domains(); sub get_workers @@ -141,12 +142,11 @@ # $MAX_WORKERS = 2; our $usable_memory = ( - ($memstat->{'memfree'} - ($memstat->{'memtotal'} * 0.05)) # reserve 1GB - + ($memstat->{'cached'} - ($memstat->{'memtotal'} * 0.05)) # +1GB filesystem cache reserver + ($memstat->{'memfree'} - ($memstat->{'memtotal'} * 0.05)) # reserve 5% + + ($memstat->{'cached'} - ($memstat->{'memtotal'} * 0.05)) # +5% filesystem cache reserver ); main::_log_stdout("max $MAX_WORKERS workers (allowed to fork?=$ENV{'WORKERS'}), max load is allowed $MAX_LOAD, usable free memory ".(int(($usable_memory/1024/1024)*100)/100)."GB for ".int($usable_memory/200000)." workers",3,"job.workerd"); - main::_log_stdout("main loop timer starting",3,"job.workerd") if $ENV{'WORKERS'}; my $w=AnyEvent->timer(after => 1, interval => 10, cb => sub { $main::request_code=Utils::vars::genhash(8); @@ -167,8 +167,8 @@ my $memstat = $meminfo->get; $usable_memory = ( - ($memstat->{'memfree'} - ($memstat->{'memtotal'} * 0.05)) # reserve 1GB - + ($memstat->{'cached'} - ($memstat->{'memtotal'} * 0.05)) # +1GB filesystem cache reserver + ($memstat->{'memfree'} - ($memstat->{'memtotal'} * 0.05)) # reserve 5% + + ($memstat->{'cached'} - ($memstat->{'memtotal'} * 0.05)) # +5% filesystem cache reserver ); if ($usable_memory < 200000 && $WORKERS > 1) { @@ -338,25 +338,6 @@ sleep 2; $WORKERS++; main::_log_stdout("started new worker",3,"job.workerd"); -# main::_log("executed"); -# next; - -# $main::pm->start( -# 'cb' => sub { -# $0.=" [".$domain."]"; -# $0.=" :".$class if $class; -# undef $Ext::RabbitMQ::service; # destroy queue, create own -# srand (time ^ $$); -# $tom::P=$domain_info{$domain}{'tom::P'} || $TOM::P.'/.core'; # new local.conf location -# chdir $tom::P; -# my $cmd='/usr/bin/perl '.$TOM::P."/.core/job.worker $class > /dev/null"; -# system($cmd); -# $pm->finish; -# exit; -# } -# ) || do { -## main::_log_stdout("sorry, too much processes",1); -# };# and next; } } @@ -378,6 +359,8 @@ my $w=AnyEvent->timer(after => 60, interval => 30, cb => \&check_domains); my $w=AnyEvent->timer(after => 0, interval => 1, cb => \&check_scheduler); +my $w=AnyEvent->timer(after => 600, interval => 600, cb => \&check_processes); + sub check_domains { $main::request_code=Utils::vars::genhash(8); @@ -970,6 +953,33 @@ } + +sub check_processes +{ + $main::request_code=Utils::vars::genhash(8); + local $main::_canexit; + + my $t = new Proc::ProcessTable; + + foreach my $proc (grep {$_->{'cmndline'}=~/^c3\-job\.worker[^d]/;} @{$t->table}) + { + my $durr=time() - $proc->{'start'}; + next unless $durr >= 600; + + main::_log("long running process $proc->{'pid'} '".$proc->{'cmndline'}."' cpu=".($proc->{'pctcpu'}+0)."% running=".int($durr/60)."m",3,"job.workerd"); + my $vals={@{$Redis->hgetall('c3process|'.$TOM::hostname.':'.$proc->{'pid'})}}; + + if ($proc->{'cmndline'}=~/\{\}/ && !$vals->{'time'}) + { + main::_log("long running process $proc->{'pid'} '".$proc->{'cmndline'}."' cpu=".($proc->{'pctcpu'}+0)."% running=".int($durr/60)."m to kill",4,"job.workerd"); + kill 15, $proc->{'pid'}; + } + + } +} + + + # read notify messages sub callback { |
Author: comsultia Date: 2016-03-03 13:53:23 +0100 (Thu, 03 Mar 2016) New Revision: 8630 Log: [+][xuladmin:xul] contextual delete menu/button in element properties toolbar - possibility to erase whole tag, or only the selected wrapping tag Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/bindings/htmleditor.xbl trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/en-US/stringlist.ent trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/sk-SK/stringlist.ent Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/bindings/htmleditor.xbl =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/bindings/htmleditor.xbl 2016-03-03 12:00:19 UTC (rev 8629) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/content/bindings/htmleditor.xbl 2016-03-03 12:53:23 UTC (rev 8630) @@ -1202,7 +1202,7 @@ anonid="editContextToolbar_class" editable="true" tooltiptext="class" - value="" flex="1" style="min-width: 200px" + value="" flex="1" style="min-width: 180px" onchange="document.getBindingParent(this).attrChange(this);" onkeyup="if(event.keyCode==13) document.getBindingParent(this).attrChange(this);" > @@ -1210,13 +1210,39 @@ onpopuphiding="document.getBindingParent(this).attrChange(this.parentNode);"> </xul:menupopup> </xul:menulist> - <xul:toolbarbutton image="chrome://c3xuladmin/skin/icons/16x16/actions/edit.png" - oncommand="document.getBindingParent(this).editTag(this);"/> + oncommand="document.getBindingParent(this).editTag(this);" + /> + <!--<xul:toolbarbutton + anonid="editContextToolbar_retainErase" + image="chrome://c3xuladmin/skin/icons/16x16/actions/process-stop-retain.png" + oncommand="document.getBindingParent(this).eraseTag(1);" + />--> <xul:toolbarbutton + anonid="editContextToolbar_elemRemove" image="chrome://c3xuladmin/skin/icons/16x16/actions/process-stop.png" - oncommand="document.getBindingParent(this).eraseTag(this);"/> + oncommand="document.getBindingParent(this).eraseTag();"/> + <xul:toolbarbutton + anonid="editContextToolbar_elemActions" + image="chrome://c3xuladmin/skin/icons/16x16/actions/process-stop.png" + label="" + tooltiptext="&editor.toolbar.insert.table.tooltip;" + type="menu" + > + <xul:menupopup id="editor-table-popup"> + <xul:menuitem + label="Erase with content" + oncommand="document.getBindingParent(this).eraseTag();" + class="menuitem" + /> + <xul:menuitem + label="Leave content" + oncommand="document.getBindingParent(this).eraseTag(1);" + class="menuitem" + /> + </xul:menupopup> + </xul:toolbarbutton> </xul:hbox> </xul:toolbar> </xul:toolbox> @@ -1274,7 +1300,7 @@ { return this.bodyclass; - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {document_class getter} ' + e)} ]]> </getter> <setter> @@ -1284,7 +1310,7 @@ this.bodyclass = val; this.editor.contentWindow.document.body.setAttribute('class', this.bodyclass); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {document_class setter} ' + e)} ]]> </setter> </property> @@ -1510,7 +1536,7 @@ return; - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {constructor} ' + e)} ]]> </constructor> @@ -1527,7 +1553,7 @@ { this.editor.contentWindow.document.body.setAttribute('class', this.bodyclass); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {fnc_init} ' + e)} ]]> </body> </method> @@ -1652,7 +1678,7 @@ popup_element.openPopup(event.currentTarget, "", event.clientX, event.clientY, false, false); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {contextMenu} ' + e)} ]]> </body> </method> @@ -1679,7 +1705,7 @@ */ - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {contextMenuHiding} ' + e)} ]]> </body> </method> @@ -1742,7 +1768,7 @@ this.fnc_init(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {update} ' + e)} ]]> </body> </method> @@ -1791,7 +1817,7 @@ this.replaceMenuImages(node.childNodes[i]); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {replaceMenuImages} ' + e)} ]]> </body> </method> @@ -1859,7 +1885,7 @@ mi.setAttribute('label', '.'+style); mi.setAttribute('tooltiptext', '.'+style); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {updateStyleList} ' + e)} ]]> </body> </method> @@ -1911,7 +1937,7 @@ 50 ); } -}catch(e){alert('[htmleditor.xbl] {} ' + e)} +}catch(e){alert('[htmleditor.xbl] {exec} ' + e)} ]]> </body> </method> @@ -2003,7 +2029,7 @@ sel.value ); } - }catch(e){log('Invalid command! ' + e)} + }catch(e){log('[htmleditor.xbl] {setStyle} Invalid command! ' + e)} } sel.selectedIndex = 0; } @@ -2023,7 +2049,7 @@ 50 ); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {setStyle} ' + e)} ]]> </body> </method> @@ -2259,7 +2285,7 @@ 50 ); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {_editorEvent} ' + e)} ]]> </body> </method> @@ -2311,7 +2337,7 @@ } return inContext; - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {_isContextEnabled} ' + e)} ]]> </body> </method> @@ -2455,7 +2481,7 @@ document.getAnonymousElementByAttribute(this,'IDdata','nodeClass').value = '' } */ - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {updateToolbar} ' + e)} ]]> </body> </method> @@ -2481,7 +2507,7 @@ } return null; - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {getToolbarItemByName} ' + e)} ]]> </body> </method> @@ -2512,7 +2538,7 @@ a.push(this._doc.body); return a; - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {getAllAncestors} ' + e)} ]]> </body> </method> @@ -2628,7 +2654,7 @@ } return nodes[0]; - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {getSelectedNode} ' + e)} ]]> </body> </method> @@ -2656,7 +2682,7 @@ return p; }catch (e){return null;} - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {getParentElement} ' + e)} ]]> </body> </method> @@ -2689,7 +2715,7 @@ return this._doc.createRange(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {_createRange} ' + e)} ]]> </body> </method> @@ -2730,7 +2756,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showImgPopup} ' + e)} ]]> </body> </method> @@ -2741,7 +2767,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showImgUpload') + log('[htmleditor.xbl] {showImgUpload}') if (!obj_uploader) {return;} @@ -2829,7 +2855,7 @@ // now let's handle this in onsoapload - }catch(e){alert('[htmleditor.xbl] showImgUpload ' + e)} + }catch(e){alert('[htmleditor.xbl] {showImgUpload} ' + e)} ]]> </body> </method> @@ -2841,7 +2867,7 @@ try { - log('[htmleditor.xbl] showVideoPopup') + log('[htmleditor.xbl] {showVideoPopup}') var item={} var win = window.openDialog @@ -2869,7 +2895,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showVideoPopup} ' + e)} ]]> </body> </method> @@ -2882,7 +2908,7 @@ try { - log('[htmleditor.xbl] showVideoPartPopup') + log('[htmleditor.xbl] {showVideoPartPopup}') var item={} var win = window.openDialog @@ -2910,7 +2936,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showVideoPartPopup} ' + e)} ]]> </body> </method> @@ -2923,7 +2949,7 @@ try { - log('[htmleditor.xbl] showVideoPopup') + log('[htmleditor.xbl] {showVideoPopup}') var item={} var win = window.openDialog @@ -2951,7 +2977,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showVideoPopup} ' + e)} ]]> </body> </method> @@ -2964,7 +2990,7 @@ try { - log('[htmleditor.xbl] insertYouTube') + log('[htmleditor.xbl] {insertYouTube}') var ID = prompt( ui.locale.getStringFromName('prompt.a030_youtube.text') @@ -3007,7 +3033,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {insertYouTube} ' + e)} ]]> </body> </method> @@ -3103,7 +3129,7 @@ this.addLinkEvent() - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showLinkPopup} ' + e)} ]]> </body> </method> @@ -3145,7 +3171,7 @@ this.exec('createlink',url ); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showEmailPopup} ' + e)} ]]> </body> </method> @@ -3156,7 +3182,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showContactPopup'); + log('[htmleditor.xbl] {showContactPopup}'); var item={} var win = window.openDialog @@ -3184,7 +3210,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showContactPopup} ' + e)} ]]> </body> </method> @@ -3195,7 +3221,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showFilePopup') + log('[htmleditor.xbl] {showFilePopup}') var item={} var win = window.openDialog @@ -3219,7 +3245,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showFilePopup} ' + e)} ]]> </body> </method> @@ -3230,7 +3256,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showArticlePopup'); + log('[htmleditor.xbl] {showArticlePopup}'); var item={} var win = window.openDialog @@ -3258,7 +3284,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showArticlePopup} ' + e)} ]]> </body> </method> @@ -3269,7 +3295,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showArticlePopup'); + log('[htmleditor.xbl] {showArticlePopup}'); var item={} var win = window.openDialog @@ -3297,7 +3323,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showArticlePopup} ' + e)} ]]> </body> </method> @@ -3308,7 +3334,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showEventPopup'); + log('[htmleditor.xbl] {showEventPopup}'); var item={} var win = window.openDialog @@ -3336,7 +3362,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showEventPopup} ' + e)} ]]> </body> </method> @@ -3347,7 +3373,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showArticlePopup'); + log('[htmleditor.xbl] {showArticlePopup}'); var item={} var win = window.openDialog @@ -3399,7 +3425,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showArticlePopup} ' + e)} ]]> </body> </method> @@ -3410,7 +3436,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showStaticPopupInsert'); + log('[htmleditor.xbl] {showStaticPopupInsert}'); var item={} var win = window.openDialog @@ -3462,7 +3488,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showStaticPopupInsert} ' + e)} ]]> </body> </method> @@ -3474,7 +3500,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showStaticSWFInsert'); + log('[htmleditor.xbl] {showStaticSWFInsert}'); var item={} var win = window.openDialog @@ -3575,7 +3601,7 @@ - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showStaticSWFInsert} ' + e)} ]]> </body> </method> @@ -3586,7 +3612,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showStaticEmbedInsert'); + log('[htmleditor.xbl] {showStaticEmbedInsert}'); var item={} var win = window.openDialog @@ -3714,7 +3740,7 @@ } */ - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showStaticEmbedInsert} ' + e)} ]]> </body> </method> @@ -3725,7 +3751,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showPagePopup'); + log('[htmleditor.xbl] {showPagePopup}'); var item={} var win = window.openDialog @@ -3753,7 +3779,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showPagePopup} ' + e)} ]]> </body> </method> @@ -3764,7 +3790,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showBannerPopup'); + log('[htmleditor.xbl] {showBannerPopup}'); var item={} var win = window.openDialog @@ -3792,7 +3818,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showBannerPopup} ' + e)} ]]> </body> </method> @@ -3820,7 +3846,7 @@ this.exec('createlink',url ); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {addLinkEvent} ' + e)} ]]> </body> </method> @@ -4062,6 +4088,16 @@ tb.value = a.value; } document.getAnonymousElementByAttribute(this, "anonid", 'editContextToolbar_class').value=tmpClass; + + if(this.canHazRetainableContent(el)) + { + document.getAnonymousElementByAttribute(this, "anonid", 'editContextToolbar_elemRemove').setAttribute('collapsed', 'true'); + document.getAnonymousElementByAttribute(this, "anonid", 'editContextToolbar_elemActions').setAttribute('collapsed', 'false'); + } + else{ + document.getAnonymousElementByAttribute(this, "anonid", 'editContextToolbar_elemActions').setAttribute('collapsed', 'true'); + document.getAnonymousElementByAttribute(this, "anonid", 'editContextToolbar_elemRemove').setAttribute('collapsed', 'false'); + } ]]> </body> </method> @@ -4074,8 +4110,7 @@ <![CDATA[ var oldNode = this.editingNode; var newNode = this._doc.createElement(changeto); - log(newNode); - log('-------'); + var node = oldNode.firstChild; while (node) { @@ -4161,6 +4196,7 @@ <method name="eraseTag"> + <parameter name="retain"/> <body> <![CDATA[ try @@ -4167,40 +4203,69 @@ { selNode = this.editingNode; - log('erase node=' + selNode.localName) + log('[htmleditor.xbl] {eraseTag} ' + selNode.localName+' (retain content: '+retain+')'); - newNode = document.createTextNode(''); + /* standard scenario */ - if (selNode.hasAttribute('value')) - { - //newNode.appendChild(selNode.value); + if (this.canHazRetainableContent(selNode)){ + if (retain) { + log('[htmleditor.xbl] {eraseTag} removing tag, leaving content'); + var newFragment = document.createDocumentFragment(); + + while (selNode.firstChild) + { + newFragment.appendChild(selNode.firstChild); + } + + selNode.parentNode.replaceChild(newFragment, selNode); + } + else + { + log('[htmleditor.xbl] {eraseTag} removing tag with all its contents'); + selNode.parentNode.removeChild(selNode); + } } - else if (selNode.hasAttribute('class')) - { - if (selNode.parentNode) selNode.parentNode.removeChild(selNode); - } - else if (selNode.firstChild) - { - /*newNode.appendChild(selNode.firstChild);*/ + else if ( + //these usually contain other subnodes, even text, but you are deleting them, so YOU should know you can + selNode.localName.toLowerCase() == 'ul' + || selNode.localName.toLowerCase() == 'ol' + || selNode.localName.toLowerCase() == 'dl' + || selNode.localName.toLowerCase() == 'datalist' + || selNode.localName.toLowerCase() == 'select' + || selNode.localName.toLowerCase() == 'datalist' + || selNode.localName.toLowerCase() == 'fieldset' + || selNode.localName.toLowerCase() == 'optgroup' - if (selNode.parentNode) selNode.parentNode.replaceChild(selNode.firstChild,selNode); + //these are supposed to contain other elements, but you know, see above ... + || selNode.localName.toLowerCase() == 'table' + || selNode.localName.toLowerCase() == 'thead' + || selNode.localName.toLowerCase() == 'tbody' + || selNode.localName.toLowerCase() == 'td' + || selNode.localName.toLowerCase() == 'tr' - /* - selNode.parentNode.replaceChild(selNode.innerHTML,selNode); - */ - /* - var child=selNode.firstChild; - while (child != selNode.lastChild) - { - newNode.appendChild(child) - child = child.nextSibling - } - selNode.parentNode.replaceChild(child,selNode); - */ + //these nodes usually contain text or other content, but ... you know the drill + || selNode.localName.toLowerCase() == 'td' + || selNode.localName.toLowerCase() == 'li' + || selNode.localName.toLowerCase() == 'dd' + || selNode.localName.toLowerCase() == 'dt' + ) { + selNode.parentNode.removeChild(selNode); } + else + { + //object + //embed + //script + //style + //video + //img + ///...and other friends + selNode.parentNode.removeChild(selNode); + } + this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {eraseTag} ' + e)} ]]> </body> </method> @@ -4326,7 +4391,7 @@ } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {showContextBar} ' + e)} ]]> </body> </method> @@ -4465,7 +4530,7 @@ try { - log('[htmleditor.xbl] insertEmbed'); + log('[htmleditor.xbl] {insertEmbed}'); var sel = this.editor.contentWindow.getSelection(); var range = this._createRange(sel); @@ -4486,7 +4551,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {insertEmbed} ' + e)} ]]> </body> </method> @@ -4497,7 +4562,7 @@ <![CDATA[ try { - log('[htmleditor.xbl] showImgLink') + log('[htmleditor.xbl] {insertImageLink}') var item={} var win = window.openDialog @@ -4527,7 +4592,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {insertImageLink} ' + e)} ]]> </body> </method> @@ -4543,7 +4608,7 @@ try { - log('[htmleditor.xbl] insertImage'); + log('[htmleditor.xbl] {insertImage}'); var sel = this.editor.contentWindow.getSelection(); //log('defined sel'); @@ -4580,7 +4645,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {insertImage} ' + e)} ]]> </body> </method> @@ -4594,7 +4659,7 @@ try { - log('[htmleditor.xbl] insertFileLink'); + log('[htmleditor.xbl] {insertFileLink}'); var sel = this.editor.contentWindow.getSelection(); var range = this._createRange(sel); @@ -4607,7 +4672,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {insertFileLink} ' + e)} ]]> </body> </method> @@ -5055,7 +5120,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {addFieldset} ' + e)} ]]> </body> </method> @@ -5101,7 +5166,7 @@ sel.addRange(range); this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {addTextInput} ' + e)} ]]> </body> </method> @@ -5467,7 +5532,7 @@ this.checkForWellFormed(obj_returnObject.html); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {openSourcePreview} ' + e)} ]]> </body> </method> @@ -5482,7 +5547,7 @@ this.editor.contentWindow.document.execCommand(cmd,false,null); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {doContextCommand} ' + e)} ]]> </body> </method> @@ -5541,7 +5606,7 @@ my_css.href = url; } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {useCSS} ' + e)} ]]> </body> </method> @@ -5558,7 +5623,7 @@ document.getAnonymousElementByAttribute(this,'IDdata','nodeClass').value = '' this.editor.focus() - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {applyCSSToTag} ' + e)} ]]> </body> </method> @@ -5575,11 +5640,11 @@ var tthis=bindingElement - log('[htmleditor.xbl] fnc_onSOAPLoad addon=' + body.response['@addon'] + ' addon_type=' + body.response['@addon_type'] + ' type=' + body.response['@type'] + ' result=' + body.response['@result']); + log('[htmleditor.xbl] {fnc_onSOAPLoad} addon=' + body.response['@addon'] + ' addon_type=' + body.response['@addon_type'] + ' type=' + body.response['@type'] + ' result=' + body.response['@result']); if(body.response['@result'] != '1') { - log('[htmleditor.xbl] response error') + log('[htmleditor.xbl] {fnc_onSOAPLoad} response error') alert(body.response.reason) return } @@ -5675,7 +5740,7 @@ this.value=body.response.body.toString(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {fnc_onSOAPLoad} ' + e)} ]]> </body> </method> @@ -5692,7 +5757,7 @@ document.getAnonymousElementByAttribute(this,'IDdata','nodeClass').value = '' this.editor.focus() - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {fnc_applyDefinedCSS} ' + e)} ]]> </body> </method> @@ -5798,7 +5863,7 @@ } break; } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {fnc_tableOperation} ' + e)} ]]> </body> </method> @@ -5813,7 +5878,7 @@ if((moveMode!='up') && (moveMode!='down')){ return false; } - log('[htmleditor.xbl] move table row '+moveMode); + log('[htmleditor.xbl] {fnc_tableRowMove} move table row '+moveMode); var sel = this.editor.contentWindow.getSelection(); //alert('defined sel: '+sel); @@ -5940,7 +6005,7 @@ */ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {fnc_tableRowMove} ' + e)} ]]> </body> </method> @@ -5968,7 +6033,7 @@ } } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {setSpellLang} ' + e)} ]]> </body> </method> @@ -5980,7 +6045,7 @@ try { this.editor.contentWindow.print(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {printArticle} ' + e)} ]]> </body> </method> @@ -6002,7 +6067,7 @@ } ); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {editVideo} ' + e)} ]]> </body> </method> @@ -6026,7 +6091,7 @@ Cyclone3.domain, my_arguments ); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {editImage} ' + e)} ]]> </body> </method> @@ -6093,7 +6158,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {cropImage} ' + e)} ]]> </body> </method> @@ -6148,7 +6213,7 @@ this.updateToolbar(); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {editImageFormat} ' + e)} ]]> </body> </method> @@ -6169,7 +6234,7 @@ ID: ID } ); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {editVideoPart} ' + e)} ]]> </body> </method> @@ -6200,7 +6265,7 @@ this.updateToolbar(); - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {replaceYoutube} ' + e)} ]]> </body> </method> @@ -6254,7 +6319,7 @@ this.checkForWellFormed(this.value); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {pasteAction} ' + e)} ]]> </body> </method> @@ -6323,7 +6388,7 @@ } } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {checkForWellFormed} ' + e)} ]]> </body> </method> @@ -6367,7 +6432,7 @@ return universal; } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {getPreferredAttributesFor} ' + e)} ]]> </body> </method> @@ -6450,7 +6515,7 @@ } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {onDblClick} ' + e)} ]]> </body> </method> @@ -6483,12 +6548,84 @@ ); } - }catch(e){alert('[htmleditor.xbl] {} ' + e)} + }catch(e){alert('[htmleditor.xbl] {fnc_template} ' + e)} ]]> </body> </method> + <method name="canHazRetainableContent"> + <parameter name="elem"/> + <body> + <![CDATA[ + try + { + if ( + elem.localName.toLowerCase() == 'a' + || elem.localName.toLowerCase() == 'abbr' + || elem.localName.toLowerCase() == 'acronym' + || elem.localName.toLowerCase() == 'address' + || elem.localName.toLowerCase() == 'applet' + || elem.localName.toLowerCase() == 'article' + || elem.localName.toLowerCase() == 'aside' + || elem.localName.toLowerCase() == 'b' + //|| elem.localName.toLowerCase() == 'base' ??? + //|| elem.localName.toLowerCase() == 'basefont' ??? + || elem.localName.toLowerCase() == 'bdo' + || elem.localName.toLowerCase() == 'big' + || elem.localName.toLowerCase() == 'blockquote' + || elem.localName.toLowerCase() == 'center' + || elem.localName.toLowerCase() == 'cite' + || elem.localName.toLowerCase() == 'code' + || elem.localName.toLowerCase() == 'del' + || elem.localName.toLowerCase() == 'details' + || elem.localName.toLowerCase() == 'dfn' + || elem.localName.toLowerCase() == 'dialog' + || elem.localName.toLowerCase() == 'div' + || elem.localName.toLowerCase() == 'em' + || elem.localName.toLowerCase() == 'font' + || elem.localName.toLowerCase() == 'footer' + || elem.localName.toLowerCase() == 'form' + || elem.localName.toLowerCase() == 'h1' + || elem.localName.toLowerCase() == 'h2' + || elem.localName.toLowerCase() == 'h3' + || elem.localName.toLowerCase() == 'h4' + || elem.localName.toLowerCase() == 'h5' + || elem.localName.toLowerCase() == 'h6' + || elem.localName.toLowerCase() == 'header' + || elem.localName.toLowerCase() == 'i' + || elem.localName.toLowerCase() == 'ins' + || elem.localName.toLowerCase() == 'main' + || elem.localName.toLowerCase() == 'mark' + || elem.localName.toLowerCase() == 'nav' + || elem.localName.toLowerCase() == 'optgroup' + || elem.localName.toLowerCase() == 'p' + || elem.localName.toLowerCase() == 'pre' + || elem.localName.toLowerCase() == 'q' + || elem.localName.toLowerCase() == 's' + || elem.localName.toLowerCase() == 'samp' + || elem.localName.toLowerCase() == 'section' + || elem.localName.toLowerCase() == 'small' + || elem.localName.toLowerCase() == 'span' + || elem.localName.toLowerCase() == 'strike' + || elem.localName.toLowerCase() == 'strong' + || elem.localName.toLowerCase() == 'sub' + || elem.localName.toLowerCase() == 'summary' + || elem.localName.toLowerCase() == 'sup' + || elem.localName.toLowerCase() == 'u' + ){ + return true; + } + else + { + return false; + } + }catch(e){alert('[htmleditor.xbl] {canHazRetainableContent} ' + e)} + ]]> + </body> + </method> + + </implementation> <!-- ::::::::::::::::: HANDLERS ::::::::::::::::::::::::: --> Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/en-US/stringlist.ent =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/en-US/stringlist.ent 2016-03-03 12:00:19 UTC (rev 8629) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/en-US/stringlist.ent 2016-03-03 12:53:23 UTC (rev 8630) @@ -924,6 +924,8 @@ <!ENTITY editor.toolbar.insert.specialcharacter.tooltip "Insert special character"> <!ENTITY editor.toolbar.label.reformat "Reformat"> <!ENTITY editor.toolbar.format.tooltip "Format"> +<!ENTITY editor.toolbar.remove "Remove"> +<!ENTITY editor.toolbar.remove.retain "Remove, leave contents"> <!ENTITY editor.dictionary.add "Add To Dictionary"> <!ENTITY editor.toolbar.label.tools "Tools:"> Modified: trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/sk-SK/stringlist.ent =================================================================== --- trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/sk-SK/stringlist.ent 2016-03-03 12:00:19 UTC (rev 8629) +++ trunk/xuladmin/xpi-source-22/chrome/chromeFiles/locale/sk-SK/stringlist.ent 2016-03-03 12:53:23 UTC (rev 8630) @@ -925,6 +925,8 @@ <!ENTITY editor.toolbar.insert.specialcharacter.tooltip "Vložiť špeciálny znak"> <!ENTITY editor.toolbar.label.reformat "Preformátovať"> <!ENTITY editor.toolbar.format.tooltip "Formátovať"> +<!ENTITY editor.toolbar.remove "Odstrániť"> +<!ENTITY editor.toolbar.remove.retain "Odstrániť, zachovať obsah"> <!ENTITY editor.dictionary.add "Pridať do slovníka"> <!ENTITY editor.toolbar.label.tools "Nástroje:"> |
From: <sv...@cy...> - 2016-03-03 12:00:35
|
Author: rlaucik Date: 2016-03-03 13:00:19 +0100 (Thu, 03 Mar 2016) New Revision: 8629 Log: Added: trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.default.tpl trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.mdl Added: trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.default.tpl =================================================================== --- trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.default.tpl (rev 0) +++ trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.default.tpl 2016-03-03 12:00:19 UTC (rev 8629) @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<template> + <entity id="main"><![CDATA[ +<response addon="a900" addon_type="banner_cat" type="detail" result="[% + IF module.output.invalid; + 0; + ELSE; + 1; + END; +%]"> + [%IF module.output.invalid%] + <reason>[%module.output.invalid|xml%]</reason> + [%ELSE%] + <ID>[%banner_cat.ID%]</ID> + <ID_entity>[%banner_cat.ID_entity%]</ID_entity> + <name>[%banner_cat.name|xml%]</name> + <name_url>[%banner_cat.name_url|xml%]</name_url> + <status>[%banner.status|xml%]</status> + [%END%] +</response> + ]]></entity> + +</template> Added: trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.mdl =================================================================== --- trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.mdl (rev 0) +++ trunk/xuladmin/docroot/_addons/App/900/_mdl/900-banner_cat.detail.mdl 2016-03-03 12:00:19 UTC (rev 8629) @@ -0,0 +1,57 @@ +#!/usr/bin/perl +# USE UTF-8 !!! +package Tomahawk::module; +use open ':utf8', ':std'; +use if $] < 5.018, 'encoding','utf8'; +use utf8; +use strict; + +use App::020::_init; +use App::301::perm; +use App::900::_init; + + +sub execute +{ + my %env=@_; + my %env_out; + + Tomahawk::GetTpl() || return undef; + + $main::RPC->{'banner_cat.ID'} = $main::RPC->{'banner_cat.ID'} || $main::RPC->{'ID'}; + $main::RPC->{'banner_cat.ID_entity'} = $main::RPC->{'banner_cat.ID_entity'} || $main::RPC->{'ID_entity'}; + $main::RPC->{'banner_cat.lng'} = $main::RPC->{'banner_cat.lng'} || $main::RPC->{'lng'}; + + if (!$main::RPC->{'banner_cat.ID'} && !$main::RPC->{'banner_cat.ID_entity'}) + { + $env_out{'invalid'}='Missing param banner_cat.ID/banner_cat.ID_entity'; + return 1,%env_out; + } + + my $sql_where; + if ($main::RPC->{'banner_cat.ID'}) + { + $sql_where.=" a900_banner_cat.ID=".$main::RPC->{'banner_cat.ID'}; + } + elsif ($main::RPC->{'banner_cat.ID_entity'}) + { + $sql_where.=" a900_banner_cat.ID_entity=".$main::RPC->{'banner_cat.ID_entity'}; + } + + my %sth0=TOM::Database::SQL::execute(qq{ + SELECT + a900_banner_cat.* + FROM + $App::900::db_name.a900_banner_cat + WHERE + $sql_where + LIMIT 1 + }); + my %db0_line=$sth0{'sth'}->fetchhash(); + + $TPL->{'variables'}{'banner_cat'}=\%db0_line; + + return 1,%env_out; +} + +1; |
From: <sv...@cy...> - 2016-03-01 14:58:44
|
Author: rlaucik Date: 2016-03-01 15:58:36 +0100 (Tue, 01 Mar 2016) New Revision: 8628 Log: when searching, show only unique job names Modified: trunk/frame/_addons/App/740/_mdl/740-joboffer_list.2013.mdl Modified: trunk/frame/_addons/App/740/_mdl/740-joboffer_list.2013.mdl =================================================================== --- trunk/frame/_addons/App/740/_mdl/740-joboffer_list.2013.mdl 2016-03-01 13:53:29 UTC (rev 8627) +++ trunk/frame/_addons/App/740/_mdl/740-joboffer_list.2013.mdl 2016-03-01 14:58:36 UTC (rev 8628) @@ -125,6 +125,7 @@ } if ($env{'joboffer_lng.name_search'}) { $sql_where.=" AND joboffer_lng.name LIKE '".TOM::Security::form::sql_escape($env{'joboffer_lng.name_search'})."%'"; + $sql_group_by = "joboffer_lng.name"; } if ($env{'get_org_data'}) { |