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'}) {
|