From 775a36be2e7531cb2c0304d66b6d1bc13c9f5189 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 22 Jul 2024 15:56:36 +0200 Subject: [PATCH 001/152] Remove images bars, replace by css only Remove need of images for bar rendering. Using only css classes. --- wwwroot/cgi-bin/awstats.pl | 290 +++++++++++++------------------- wwwroot/css/awstats_bw.css | 43 ++++- wwwroot/css/awstats_default.css | 43 ++++- wwwroot/icon/other/he.png | Bin 122 -> 0 bytes wwwroot/icon/other/hh.png | Bin 122 -> 0 bytes wwwroot/icon/other/hk.png | Bin 119 -> 0 bytes wwwroot/icon/other/hp.png | Bin 125 -> 0 bytes wwwroot/icon/other/ht.png | Bin 118 -> 0 bytes wwwroot/icon/other/hx.png | Bin 127 -> 0 bytes wwwroot/icon/other/vh.png | Bin 105 -> 0 bytes wwwroot/icon/other/vk.png | Bin 104 -> 0 bytes wwwroot/icon/other/vp.png | Bin 105 -> 0 bytes wwwroot/icon/other/vu.png | Bin 105 -> 0 bytes wwwroot/icon/other/vv.png | Bin 105 -> 0 bytes 14 files changed, 197 insertions(+), 179 deletions(-) delete mode 100644 wwwroot/icon/other/he.png delete mode 100644 wwwroot/icon/other/hh.png delete mode 100644 wwwroot/icon/other/hk.png delete mode 100644 wwwroot/icon/other/hp.png delete mode 100644 wwwroot/icon/other/ht.png delete mode 100644 wwwroot/icon/other/hx.png delete mode 100644 wwwroot/icon/other/vh.png delete mode 100644 wwwroot/icon/other/vk.png delete mode 100644 wwwroot/icon/other/vp.png delete mode 100644 wwwroot/icon/other/vu.png delete mode 100644 wwwroot/icon/other/vv.png diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 0e111fc34..5d2735c24 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -150,7 +150,6 @@ $MaxLengthOfShownURL $MaxLengthOfStoredURL $MaxLengthOfStoredUA - %BarPng $BuildReportFormat $BuildHistoryFormat $ExtraTrackedRowsLimit @@ -167,19 +166,6 @@ $MaxLengthOfShownURL = 64; $MaxLengthOfStoredURL = 256; # Note: Apache LimitRequestLine is default to 8190 $MaxLengthOfStoredUA = 256; -%BarPng = ( - 'vv' => 'vv.png', - 'vu' => 'vu.png', - 'hu' => 'hu.png', - 'vp' => 'vp.png', - 'hp' => 'hp.png', - 'he' => 'he.png', - 'hx' => 'hx.png', - 'vh' => 'vh.png', - 'hh' => 'hh.png', - 'vk' => 'vk.png', - 'hk' => 'hk.png' -); $BuildReportFormat = 'html'; $BuildHistoryFormat = 'text'; $ExtraTrackedRowsLimit = 500; @@ -970,6 +956,46 @@ sub html_head { a:visited { color: #$color_link; text-decoration: none; } a:hover { color: #$color_hover; text-decoration: underline; } .currentday { font-weight: bold; } +.bar{ } + +.bar-horizontal{ height: 4px; } + +.bar-vertical{ + display: inline-block; + width: 4px; +} + +.color-u{ + background-color: #FFAA66; +} + +.color-v{ + background-color: #F4F090; +} + +.color-p{ + background-color: #4477DD; +} + +.color-h{ + background-color: #66DDEE; +} + +.color-k{ + background-color: #2EA495; +} + +.color-e{ + background-color: #CEC2E8; +} + +.color-x{ + background-color: #C1B2E2; +} + +.color-s{ + background-color: #8888DD; +} EOF } @@ -8354,6 +8380,37 @@ sub Format_Number { return $number; } +#------------------------------------------------------------------------------ +# Function: Return Horizontal Bar +# Parameters: type, width, alt +# Input: None +# Output: None +# Return: The bar +#------------------------------------------------------------------------------ +sub HtmlBarH { + my $type = shift || ''; + my $width = shift || 0; + my $alt = shift || ''; + + return '
'; +} + +#------------------------------------------------------------------------------ +# Function: Return Vertical Bar +# Parameters: type, height +# Input: None +# Output: None +# Return: The bar +#------------------------------------------------------------------------------ +sub HtmlBarV { + my $type = shift || ''; + my $height = shift || 0; + my $alt = shift || ''; + + return '
'; +} + + #------------------------------------------------------------------------------ # Function: Return " alt=string title=string" # Parameters: string @@ -11344,10 +11401,8 @@ sub HTMLShowBrowserDetail{ # alt and title are not provided to reduce page size if ($ShowBrowsersStats) { - print -"
"; - print -"
"; + print HtmlBarH('p', $bredde_p); + print HtmlBarH('h', $bredde_h); } print ""; print "\n"; @@ -11447,10 +11502,8 @@ sub HTMLShowBrowserDetail{ # alt and title are not provided to reduce page size if ($ShowBrowsersStats) { - print -"
"; - print -"
"; + print HtmlBarH('p', $bredde_p); + print HtmlBarH('h', $bredde_h); } print ""; print "\n"; @@ -11630,10 +11683,8 @@ sub HTMLShowOSDetail{ # alt and title are not provided to reduce page size if ($ShowOSStats) { - print -"
"; - print -"
"; + print HtmlBarH('p', $bredde_p); + print HtmlBarH('h', $bredde_h); } print ""; print "\n"; @@ -11721,10 +11772,8 @@ sub HTMLShowOSDetail{ # alt and title are not provided to reduce page size if ($ShowOSStats) { - print -"
"; - print -"
"; + print HtmlBarH('p', $bredde_p); + print HtmlBarH('h', $bredde_h); } print ""; print "\n"; @@ -12672,20 +12721,16 @@ sub HTMLShowURLDetail{ # alt and title are not provided to reduce page size if ( $ShowPagesStats =~ /P/i ) { - print -"
"; + print HtmlBarH('p', $bredde_p); } if ( $ShowPagesStats =~ /B/i ) { - print -"
"; + print HtmlBarH('k', $bredde_k); } if ( $ShowPagesStats =~ /E/i ) { - print -"
"; + print HtmlBarH('e', $bredde_e); } if ( $ShowPagesStats =~ /X/i ) { - print -""; + print HtmlBarH('x', $bredde_x); } print "\n"; $total_p += $_url_p{$key}; @@ -13252,23 +13297,13 @@ sub HTMLShowDomains{ } print ""; if ( $ShowDomainsStats =~ /P/i ) { - print -"
\n"; + print HtmlBarH('p', $bredde_p, "$Message[56]: " . int( $_domener_p{$key} )); } if ( $ShowDomainsStats =~ /H/i ) { - print -"
\n"; + print HtmlBarH('h', $bredde_h, "$Message[57]: " . int( $_domener_h{$key} )); } if ( $ShowDomainsStats =~ /B/i ) { - print -""; + print HtmlBarH('k', $bredde_k, "$Message[75]: " . Format_Bytes( $_domener_k{$key} )); } print ""; print "\n"; @@ -13780,47 +13815,19 @@ sub HTMLMainMonthly{ } print ""; if ( $ShowMonthStats =~ /U/i ) { - print -""; + print HtmlBarV('u', $bredde_u, "$Message[11]: " . ( $MonthUnique{ $YearRequired . $monthix } || 0 )); } if ( $ShowMonthStats =~ /V/i ) { - print -""; + print HtmlBarV('v', $bredde_v, "$Message[10]: " . ( $MonthVisits{ $YearRequired . $monthix } || 0 )); } if ( $ShowMonthStats =~ /P/i ) { - print -""; + print HtmlBarV('p', $bredde_p, "$Message[56]: " . ( $MonthPages{ $YearRequired . $monthix } || 0 )); } if ( $ShowMonthStats =~ /H/i ) { - print -""; + print HtmlBarV('h', $bredde_h, "$Message[57]: " . ( $MonthHits{ $YearRequired . $monthix } || 0 )); } if ( $ShowMonthStats =~ /B/i ) { - print -""; + print HtmlBarV('k', $bredde_k, "$Message[75]: " . Format_Bytes( $MonthBytes{ $YearRequired . $monthix } || 0 )); } print "\n"; } @@ -14170,37 +14177,16 @@ sub HTMLMainDaily{ } print ""; if ( $ShowDaysOfMonthStats =~ /V/i ) { - print -""; + print HtmlBarV('v', $bredde_v, "$Message[10]: " . int( $DayVisits{ $year . $month . $day } || 0 )); } if ( $ShowDaysOfMonthStats =~ /P/i ) { - print -""; + print HtmlBarV('p', $bredde_p, "$Message[56]: " . int( $DayPages{ $year . $month . $day } || 0 )); } if ( $ShowDaysOfMonthStats =~ /H/i ) { - print -""; + print HtmlBarV('h', $bredde_h, "$Message[57]: " . int( $DayHits{ $year . $month . $day } || 0 )); } if ( $ShowDaysOfMonthStats =~ /B/i ) { - print -""; + print HtmlBarV('k', $bredde_k, "$Message[75]: " . Format_Bytes( $DayBytes{ $year . $month . $day } )); } print "\n"; } @@ -14229,24 +14215,16 @@ sub HTMLMainDaily{ $average_h = sprintf( "%.2f", $average_h ); $average_k = sprintf( "%.2f", $average_k ); if ( $ShowDaysOfMonthStats =~ /V/i ) { - print -""; + print HtmlBarV('v', $bredde_v, "$Message[10]: $average_v"); } if ( $ShowDaysOfMonthStats =~ /P/i ) { - print -""; + print HtmlBarV('p', $bredde_p, "$Message[56]: $average_p"); } if ( $ShowDaysOfMonthStats =~ /H/i ) { - print -""; + print HtmlBarV('h', $bredde_h, "$Message[57]: $average_h"); } if ( $ShowDaysOfMonthStats =~ /B/i ) { - print -""; + print HtmlBarV('k', $bredde_k, "$Message[75]: $average_k"); } print "\n"; print "\n"; @@ -14625,23 +14603,13 @@ sub HTMLMainDaysofWeek{ } print ""; if ( $ShowDaysOfWeekStats =~ /P/i ) { - print -""; + print HtmlBarV('p', $bredde_p, "$Message[56]: $avg_dayofweek_p[$_]"); } if ( $ShowDaysOfWeekStats =~ /H/i ) { - print -""; + print HtmlBarV('h', $bredde_h, "$Message[57]: $avg_dayofweek_h[$_]"); } if ( $ShowDaysOfWeekStats =~ /B/i ) { - print -""; + print HtmlBarV('k', $bredde_k, "$Message[75]: $avg_dayofweek_k[$_]"); } print "\n"; } @@ -14940,23 +14908,13 @@ sub HTMLMainHours{ } print ""; if ( $ShowHoursStats =~ /P/i ) { - print -""; + print HtmlBarV('p', $bredde_p, "$Message[56]: " . int( $_time_p[$ix] )); } if ( $ShowHoursStats =~ /H/i ) { - print -""; + print HtmlBarV('h', $bredde_h, "$Message[57]: " . int( $_time_h[$ix] )); } if ( $ShowHoursStats =~ /B/i ) { - print -""; + print HtmlBarV('k', $bredde_k, "$Message[75]: " . int( $_time_k[$ix] )); } print "\n"; } @@ -15272,21 +15230,13 @@ sub HTMLMainCountries{ print ""; if ( $ShowDomainsStats =~ /P/i ) { - print -"
\n"; + print HtmlBarH('p', $bredde_p); } if ( $ShowDomainsStats =~ /H/i ) { - print -"
\n"; + print HtmlBarH('h', $bredde_h); } if ( $ShowDomainsStats =~ /B/i ) { - print -""; + print HtmlBarH('k', $bredde_k); } print ""; print "\n"; @@ -16102,33 +16052,19 @@ sub HTMLMainPages{ } print ""; if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { - print -"
"; + print HtmlBarH('p', $bredde_p); } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { - print -"
"; + print HtmlBarH('h', $bredde_p); } if ( $ShowPagesStats =~ /B/i ) { - print -"
"; + print HtmlBarH('k', $bredde_k); } if ( $ShowPagesStats =~ /E/i ) { - print -"
"; + print HtmlBarH('e', $bredde_e); } if ( $ShowPagesStats =~ /X/i ) { - print -""; + print HtmlBarH('x', $bredde_x); } print "\n"; $total_p += $_url_p{$key} || 0; diff --git a/wwwroot/css/awstats_bw.css b/wwwroot/css/awstats_bw.css index 4f1e3b0a9..0bdb91d10 100644 --- a/wwwroot/css/awstats_bw.css +++ b/wwwroot/css/awstats_bw.css @@ -28,4 +28,45 @@ a:link { color: #001133; text-decoration: none; } a:visited { color: #001133; text-decoration: none; } a:hover { color: #444444; text-decoration: underline; } div { font: 12px arial,verdana,helvetica; text-align:justify; } -.ctooltip { position:absolute; top:0px; left:0px; z-index:2; width:380; visibility:hidden; font: 8pt MS Comic Sans,arial,sans-serif; background-color: #EEEEEE; padding: 8px; border: 1px solid black; } \ No newline at end of file +.ctooltip { position:absolute; top:0px; left:0px; z-index:2; width:380; visibility:hidden; font: 8pt MS Comic Sans,arial,sans-serif; background-color: #EEEEEE; padding: 8px; border: 1px solid black; } + +.bar{ } + +.bar-horizontal{ height: 4px; } + +.bar-vertical{ + display: inline-block; + width: 4px; +} + +.color-u{ + background-color: #FFAA66; +} + +.color-v{ + background-color: #F4F090; +} + +.color-p{ + background-color: #4477DD; +} + +.color-h{ + background-color: #66DDEE; +} + +.color-k{ + background-color: #2EA495; +} + +.color-e{ + background-color: #CEC2E8; +} + +.color-x{ + background-color: #C1B2E2; +} + +.color-s{ + background-color: #8888DD; +} \ No newline at end of file diff --git a/wwwroot/css/awstats_default.css b/wwwroot/css/awstats_default.css index 6eb99de20..83fdc65fc 100644 --- a/wwwroot/css/awstats_default.css +++ b/wwwroot/css/awstats_default.css @@ -28,4 +28,45 @@ a:link { color: #0011BB; text-decoration: none; } a:visited { color: #0011BB; text-decoration: none; } a:hover { color: #605040; text-decoration: underline; } div { font: 12px arial,verdana,helvetica; text-align:justify; } -.ctooltip { position:absolute; top:0px; left:0px; z-index:2; width:380; visibility:hidden; font: 8pt MS Comic Sans,arial,sans-serif; background-color: #FFFFE6; padding: 8px; border: 1px solid black; } \ No newline at end of file +.ctooltip { position:absolute; top:0px; left:0px; z-index:2; width:380; visibility:hidden; font: 8pt MS Comic Sans,arial,sans-serif; background-color: #FFFFE6; padding: 8px; border: 1px solid black; } + +.bar{ } + +.bar-horizontal{ height: 4px; } + +.bar-vertical{ + display: inline-block; + width: 4px; +} + +.color-u{ + background-color: #FFAA66; +} + +.color-v{ + background-color: #F4F090; +} + +.color-p{ + background-color: #4477DD; +} + +.color-h{ + background-color: #66DDEE; +} + +.color-k{ + background-color: #2EA495; +} + +.color-e{ + background-color: #CEC2E8; +} + +.color-x{ + background-color: #C1B2E2; +} + +.color-s{ + background-color: #8888DD; +} \ No newline at end of file diff --git a/wwwroot/icon/other/he.png b/wwwroot/icon/other/he.png deleted file mode 100644 index 5eb9f64d251184ef3d6ee8fd75263402f960fe2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!2~2D{x&@TQjVT3jv*C{Np~zB3oS_8V8A56 z#&jdT%lbEe$8PK1f_u{QcHG$5Iyq{_wzc6Jw-506_;^>i-0)63?f)(DX{5Z>%DTHR Wg*7~`$Ylc!WAJqKb6Mw<&;$U0Ln+7r diff --git a/wwwroot/icon/other/hh.png b/wwwroot/icon/other/hh.png deleted file mode 100644 index 87332eff02fe13787283ea6576c00ece9111bb97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!2~2D{x&@TQjVT3jv*CstOpk|HW&!792C~J zdv~vK2@99M^n*)GpOlrAXCB%5x~VTJp;@pVSTUdpi^}F1s0o-L-0OOmtKX@ReY8c2@9^XZUeK;Ax4? RpL(E444$rjF6*2UngB-kBme*a diff --git a/wwwroot/icon/other/hp.png b/wwwroot/icon/other/hp.png deleted file mode 100644 index 0b8cc99c90fdf07e00af9534c91c3a778c874176..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!2~2D{x&@TQZAk@jv*C{ysfJl8w_|@<(EfI z-=Q>d&Ea`#82P%_^sH5$wD0`gq~j+g8uv}D-CTM6?uMY{+-oKE7HZ8C_-_5ew!_0{ az5Jzop>L0_85sc0WAJqKb6Mw<&;$Sr%`49U diff --git a/wwwroot/icon/other/ht.png b/wwwroot/icon/other/ht.png deleted file mode 100644 index 156aba4bd67fb38e33718621cc020f1f4d538b14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!2~2D{x&@TQnsEhjv*C{NpEIszMlC?&Deo3p-~oM*WZFH(ab`bxt4KcmGcKccvGv!cWg+ SKRO9Ch{4m<&t;ucLK6V|LMj3P diff --git a/wwwroot/icon/other/hx.png b/wwwroot/icon/other/hx.png deleted file mode 100644 index c6c07148e16a4e461d48b2964ba161074402d2f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!2~2D{x&@TQf{6ujv*C{NppgWdpH9GY!n=M z4lppBIb!+yzrFSCb+_*>`H{qLC82zHhGi5>mOv3l*8K}I2J8p^i+$Ma@uB{A!biOi b9Jkpn&k}k*vEB9+&_o7LS3j3^P6 diff --git a/wwwroot/icon/other/vh.png b/wwwroot/icon/other/vh.png deleted file mode 100644 index 86a816a0dcaaed4ed7184a09683a24cc927fd57f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp@K+MR&1SGq>HwOSI15X#nkcv6U&n(LP%&hOPSg5*c zx$?e62X&SoFxc&&Z5wT9HBVXNP3w01=E-v%ii{Wx5AyK~nxAV1>SgeB^>bP0l+XkK Dke?qp diff --git a/wwwroot/icon/other/vk.png b/wwwroot/icon/other/vk.png deleted file mode 100644 index e7b587e00ead447443e050a1f7ef008a67b08713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmeAS@N?(olHy`uVBq!ia0vp@K+MR&1SGq>HwOSIeNPw1kP61+gba?97aYkE0V{Tu z_Wgb3TIIcr%m3}uSF2NBoJd{qAHwOSI15X#nkcznEXCJK8v!~~a+!303 zS8)ElglBOHFG3bPow7DV>b!#Vx3=T+9nbn5Fpy;UJCS?Er0REdK)no}u6{1-oD!M< D2jnA& diff --git a/wwwroot/icon/other/vu.png b/wwwroot/icon/other/vu.png deleted file mode 100644 index ac5fddb1a47db49af95d596406443c2877d374f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp@K+MR&1SGq>HwOSI15X#nkP60RyYMp;<#lcghAA diff --git a/wwwroot/icon/other/vv.png b/wwwroot/icon/other/vv.png deleted file mode 100644 index f31a2d342bd69e8ef1b69dce3a1bffb71a44c8fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp@K+MR&1SGq>HwOSI15X#nkcznEeKkfZ_9s^@JGFS9 z(#BO<`xLIL+aI?zzpSZxQq9iET+8RseMe>6iyRDIDtxOrl>g)a^)h(6`njxgN@xNA DcAFk- From 7311f132c83ef6eada3b079e16bf619da68ecde5 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 22 Jul 2024 16:34:39 +0200 Subject: [PATCH 002/152] set background color to css Remove bgcolor, replace by newly color- css class introduced by css bars. --- wwwroot/cgi-bin/awstats.pl | 238 ++++++++++++++++++------------------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 5d2735c24..788971790 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -9887,19 +9887,19 @@ sub HTMLShowEmailSendersChart { "$Message[131] : " . ( scalar keys %_emails_h ) . ""; if ( $ShowEMailSenders =~ /H/i ) { - print "$Message[57]"; } if ( $ShowEMailSenders =~ /B/i ) { print -"$Message[75]"; } if ( $ShowEMailSenders =~ /M/i ) { print -"$Message[106]"; +"$Message[106]"; } if ( $ShowEMailSenders =~ /L/i ) { print "$Message[9]"; @@ -10054,19 +10054,19 @@ sub HTMLShowEmailReceiversChart { "$Message[132] : " . ( scalar keys %_emailr_h ) . ""; if ( $ShowEMailReceivers =~ /H/i ) { - print "$Message[57]"; } if ( $ShowEMailReceivers =~ /B/i ) { print -"$Message[75]"; } if ( $ShowEMailReceivers =~ /M/i ) { print -"$Message[106]"; +"$Message[106]"; } if ( $ShowEMailReceivers =~ /L/i ) { print "$Message[9]"; @@ -10989,18 +10989,18 @@ sub HTMLMainFileType{ "$Message[73]"; if ( $ShowFileTypesStats =~ /H/i ) { - print "$Message[57]$Message[15]"; + . ">$Message[57]$Message[15]"; } if ( $ShowFileTypesStats =~ /B/i ) { - print "$Message[75]$Message[15]"; + . ">$Message[75]$Message[15]"; } if ( $ShowFileTypesStats =~ /C/i ) { print -"$Message[100]$Message[101]$Message[99]"; +"$Message[100]$Message[101]$Message[99]"; } print "\n"; my $total_con = 0; @@ -11150,7 +11150,7 @@ sub HTMLMainFileSize{ } if ($Totals) { $average_s = int($average_s / $Totals); } else { $average_s = '?'; } - print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; + print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; my $total_s = 0; my $count = 0; foreach my $key (@PayloadRange) { @@ -11229,7 +11229,7 @@ sub HTMLMainRequestTime{ } if ($Totals) { $average_s = int($average_s / $Totals); } else { $average_s = '?'; } - print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; + print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; my $total_s = 0; my $count = 0; foreach my $key (@TimeRange) { @@ -11273,9 +11273,9 @@ sub HTMLShowBrowserDetail{ print "$Message[58]"; print -"$Message[111]$Message[56]$Message[15]"; +"$Message[111]$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print " "; print "\n"; my $total_h = 0; @@ -11574,9 +11574,9 @@ sub HTMLShowOSDetail{ print "$Message[58]"; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print "\n"; my $total_h = 0; my $total_p = 0; @@ -11852,9 +11852,9 @@ sub HTMLShowReferers{ print "".Format_Number($TotalDifferentSearchEngines)." $Message[122]"; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print "\n"; my $total_s = 0; my $total_p = 0; @@ -11989,9 +11989,9 @@ sub HTMLShowRefererPages{ else { print "$Message[102]: ".Format_Number($cpt)." $Message[28]"; } print ""; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print "\n"; my $total_s = 0; my $count = 0; @@ -12091,7 +12091,7 @@ sub HTMLShowKeyPhrases{ &tab_head( $title, 19, 0, 'keyphrases' ); print "".Format_Number($TotalDifferentKeyphrases)." $Message[103]$Message[14]$Message[15]\n"; + . ">".Format_Number($TotalDifferentKeyphrases)." $Message[103]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( @@ -12159,7 +12159,7 @@ sub HTMLShowKeywords{ &tab_head( $title, 19, 0, 'keywords' ); print "".Format_Number($TotalDifferentKeywords)." $Message[13]$Message[14]$Message[15]\n"; + . ">".Format_Number($TotalDifferentKeywords)." $Message[13]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Keyword'}, @@ -12220,12 +12220,12 @@ sub HTMLShowErrorCodes{ &tab_head( $title, 19, 0, "errors$code" ); print "URL (" . Format_Number(( scalar keys %{$_sider_h{$code}} )) - . ")$Message[49]"; + . ")$Message[49]"; foreach (split(//, $ShowHTTPErrorsPageDetail)) { if ( $_ =~ /R/i ) { - print "$Message[23]"; + print "$Message[23]"; } elsif ( $_ =~ /H/i ) { - print "$Message[81]"; + print "$Message[81]"; } } print "\n"; @@ -12291,15 +12291,15 @@ sub HTMLShowExtraSections{ if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print -"$Message[56]"; +"$Message[56]"; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print -"$Message[57]"; +"$Message[57]"; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print -"$Message[75]"; +"$Message[75]"; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print "$Message[9]"; @@ -12458,11 +12458,11 @@ sub HTMLShowRobots{ . " $Message[51]"; if ( $ShowRobotsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowRobotsStats =~ /B/i ) { print -"$Message[75]"; +"$Message[75]"; } if ( $ShowRobotsStats =~ /L/i ) { print "$Message[9]"; @@ -12606,19 +12606,19 @@ sub HTMLShowURLDetail{ print ""; if ( $ShowPagesStats =~ /P/i ) { print - "$Message[29]"; + "$Message[29]"; } if ( $ShowPagesStats =~ /B/i ) { print -"$Message[106]"; +"$Message[106]"; } if ( $ShowPagesStats =~ /E/i ) { print - "$Message[104]"; + "$Message[104]"; } if ( $ShowPagesStats =~ /X/i ) { print - "$Message[116]"; + "$Message[116]"; } # Call to plugins' function ShowPagesAddField @@ -12807,15 +12807,15 @@ sub HTMLShowLogins{ &HTMLShowUserInfo('__title__'); if ( $ShowAuthenticatedUsers =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print -"$Message[75]"; +"$Message[75]"; } if ( $ShowAuthenticatedUsers =~ /L/i ) { print "$Message[9]"; @@ -12914,15 +12914,15 @@ sub HTMLShowHostsUnknown{ &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { print -"$Message[75]"; +"$Message[75]"; } if ( $ShowHostsStats =~ /L/i ) { print "$Message[9]"; @@ -13051,15 +13051,15 @@ sub HTMLShowHosts{ &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { print -"$Message[75]"; +"$Message[75]"; } if ( $ShowHostsStats =~ /L/i ) { print "$Message[9]"; @@ -13193,23 +13193,23 @@ sub HTMLShowDomains{ " $Message[17]"; if ( $ShowDomainsStats =~ /U/i ) { print - "$Message[11]"; + "$Message[11]"; } if ( $ShowDomainsStats =~ /V/i ) { print - "$Message[10]"; + "$Message[10]"; } if ( $ShowDomainsStats =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowDomainsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowDomainsStats =~ /B/i ) { print -"$Message[75]"; +"$Message[75]"; } print " "; print "\n"; @@ -13353,11 +13353,11 @@ sub HTMLShowDownloads{ print "$Center 
\n"; &tab_head( $Message[178], 19, 0, "downloads" ); print "$Message[178]"; - if ( $ShowFileTypesStats =~ /H/i ){print "$Message[57]" - ."206 $Message[57]"; } + if ( $ShowFileTypesStats =~ /H/i ){print "$Message[57]" + ."206 $Message[57]"; } if ( $ShowFileTypesStats =~ /B/i ){ - print "$Message[75]"; - print "$Message[106]"; + print "$Message[75]"; + print "$Message[106]"; } print "\n"; my $count = 0; @@ -13507,7 +13507,7 @@ sub HTMLMainSummary{ print " "; } if ( $ShowSummary =~ /U/i ) { - print "$Message[11]"; } @@ -13516,7 +13516,7 @@ sub HTMLMainSummary{ " "; } if ( $ShowSummary =~ /V/i ) { - print "$Message[10]"; } @@ -13525,7 +13525,7 @@ sub HTMLMainSummary{ " "; } if ( $ShowSummary =~ /P/i ) { - print "$Message[56]"; } @@ -13534,7 +13534,7 @@ sub HTMLMainSummary{ " "; } if ( $ShowSummary =~ /H/i ) { - print "$Message[57]"; } @@ -13543,7 +13543,7 @@ sub HTMLMainSummary{ " "; } if ( $ShowSummary =~ /B/i ) { - print "$Message[75]"; } @@ -13886,27 +13886,27 @@ sub HTMLMainMonthly{ print "$Message[5]"; if ( $ShowMonthStats =~ /U/i ) { - print "$Message[11]"; } if ( $ShowMonthStats =~ /V/i ) { - print "$Message[10]"; } if ( $ShowMonthStats =~ /P/i ) { - print "$Message[56]"; } if ( $ShowMonthStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowMonthStats =~ /B/i ) { - print "$Message[75]"; } @@ -14284,22 +14284,22 @@ sub HTMLMainDaily{ print "$Message[4]"; if ( $ShowDaysOfMonthStats =~ /V/i ) { - print "$Message[10]"; } if ( $ShowDaysOfMonthStats =~ /P/i ) { - print "$Message[56]"; } if ( $ShowDaysOfMonthStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowDaysOfMonthStats =~ /B/i ) { - print "$Message[75]"; } @@ -14644,17 +14644,17 @@ sub HTMLMainDaysofWeek{ print "$Message[4]"; if ( $ShowDaysOfWeekStats =~ /P/i ) { - print "$Message[56]"; } if ( $ShowDaysOfWeekStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowDaysOfWeekStats =~ /B/i ) { - print "$Message[75]"; } @@ -14771,11 +14771,11 @@ sub HTMLMainDownloads{ my $total_dls = scalar keys %_downloads; print "$Message[178]: $total_dls"; - if ( $ShowDownloadsStats =~ /H/i ){print "$Message[57]" - ."206 $Message[57]"; } + if ( $ShowDownloadsStats =~ /H/i ){print "$Message[57]" + ."206 $Message[57]"; } if ( $ShowDownloadsStats =~ /B/i ){ - print "$Message[75]"; - print "$Message[106]"; + print "$Message[75]"; + print "$Message[106]"; } print "\n"; my $count = 0; @@ -14951,17 +14951,17 @@ sub HTMLMainHours{ print "$Message[20]"; if ( $ShowHoursStats =~ /P/i ) { - print "$Message[56]"; } if ( $ShowHoursStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowHoursStats =~ /B/i ) { - print "$Message[75]"; } @@ -14996,17 +14996,17 @@ sub HTMLMainHours{ print "$Message[20]"; if ( $ShowHoursStats =~ /P/i ) { - print "$Message[56]"; } if ( $ShowHoursStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowHoursStats =~ /B/i ) { - print "$Message[75]"; } @@ -15125,27 +15125,27 @@ sub HTMLMainCountries{ ## pages and total hits, and total visits and total unique ## by Josep Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { - print "$Message[11]"; } if ( $ShowDomainsStats =~ /V/i ) { - print "$Message[10]"; } if ( $ShowDomainsStats =~ /P/i ) { - print "$Message[56]"; } if ( $ShowDomainsStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowDomainsStats =~ /B/i ) { - print "$Message[75]"; } @@ -15373,17 +15373,17 @@ sub HTMLMainHosts{ } &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { - print "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { - print "$Message[75]"; } @@ -15505,17 +15505,17 @@ sub HTMLMainLogins{ . Format_Number(( scalar keys %_login_h )) . ""; &HTMLShowUserInfo('__title__'); if ( $ShowAuthenticatedUsers =~ /P/i ) { - print "$Message[56]"; } if ( $ShowAuthenticatedUsers =~ /H/i ) { - print "$Message[57]"; } if ( $ShowAuthenticatedUsers =~ /B/i ) { - print "$Message[75]"; } @@ -15652,11 +15652,11 @@ sub HTMLMainRobots{ . " $Message[51]*"; if ( $ShowRobotsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowRobotsStats =~ /B/i ) { print - "$Message[75]"; + "$Message[75]"; } if ( $ShowRobotsStats =~ /L/i ) { print "$Message[9]"; @@ -15747,11 +15747,11 @@ sub HTMLMainWorms{ print "$Message[167]"; if ( $ShowWormsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowWormsStats =~ /B/i ) { print - "$Message[75]"; + "$Message[75]"; } if ( $ShowWormsStats =~ /L/i ) { print "$Message[9]"; @@ -15844,7 +15844,7 @@ sub HTMLMainSessions{ else { $average_s = '?'; } print "$Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]\n"; + . ">$Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]\n"; $average_s = 0; my $total_s = 0; my $count = 0; @@ -15942,23 +15942,23 @@ sub HTMLMainPages{ "".Format_Number($TotalDifferentPages)." $Message[28]"; if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { print - "$Message[29]"; + "$Message[29]"; } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowPagesStats =~ /B/i ) { print - "$Message[106]"; + "$Message[106]"; } if ( $ShowPagesStats =~ /E/i ) { print - "$Message[104]"; + "$Message[104]"; } if ( $ShowPagesStats =~ /X/i ) { print - "$Message[116]"; + "$Message[116]"; } # Call to plugins' function ShowPagesAddField @@ -16221,9 +16221,9 @@ sub HTMLMainOS{ print " $Message[59]"; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]\n"; +"$Message[57]$Message[15]\n"; my $total_h = 0; my $total_p = 0; my $count = 0; @@ -16389,7 +16389,7 @@ sub HTMLMainBrowsers{ } } print -" $Message[21]$Message[111]$Message[56]$Message[15]$Message[57]$Message[15]\n"; +" $Message[21]$Message[111]$Message[56]$Message[15]$Message[57]$Message[15]\n"; my $total_h = 0; my $total_p = 0; my $count = 0; @@ -16478,7 +16478,7 @@ sub HTMLMainScreenSize{ "$Message[135] ($Message[77] $MaxNbOf{'ScreenSizesShown'})"; &tab_head( "$title", 0, 0, 'screensizes' ); print -"$Message[135]$Message[15]\n"; +"$Message[135]$Message[15]\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'ScreenSizesShown'}, @@ -16579,11 +16579,11 @@ sub HTMLMainReferrers{ "$Message[37]"; if ( $ShowOriginStats =~ /P/i ) { print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; } if ( $ShowOriginStats =~ /H/i ) { print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; } print "\n"; @@ -16839,7 +16839,7 @@ sub HTMLMainKeys{ ); print "$TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]\n"; + . ">$TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeyphrasesShown'}, @@ -16910,7 +16910,7 @@ sub HTMLMainKeys{ ); print "$TotalDifferentKeywords $Message[13]$Message[14]$Message[15]\n"; + . ">$TotalDifferentKeywords $Message[13]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeywordsShown'}, @@ -17082,7 +17082,7 @@ sub HTMLMainHTTPStatus{ } print -"$Message[32]*$Message[57]$Message[15]$Message[75]\n"; +"$Message[32]*$Message[57]$Message[15]$Message[75]\n"; my $total_h = 0; my $count = 0; foreach my $key (@keylist) { @@ -17127,7 +17127,7 @@ sub HTMLMainSMTPStatus{ my $title = "$Message[147]"; &tab_head( "$title", 19, 0, 'errors' ); print -"$Message[147]$Message[57]$Message[15]$Message[75]\n"; +"$Message[147]$Message[57]$Message[15]$Message[75]\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); @@ -17208,15 +17208,15 @@ sub HTMLMainCluster{ &HTMLShowClusterInfo('__title__'); if ( $ShowClusterStats =~ /P/i ) { print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; } if ( $ShowClusterStats =~ /H/i ) { print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; } if ( $ShowClusterStats =~ /B/i ) { print -"$Message[75]$Message[15]"; +"$Message[75]$Message[15]"; } print "\n"; my $total_p = my $total_h = my $total_k = 0; @@ -17295,15 +17295,15 @@ sub HTMLMainExtra{ if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print - "$Message[75]"; + "$Message[75]"; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print "$Message[9]"; @@ -21507,10 +21507,10 @@ sub HTMLMainExtra{ { # to add unique visitors & number of visits, by J Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { - print "$Message[11]"; + print "$Message[11]"; } if ( $ShowDomainsStats =~ /V/i ) { - print "$Message[10]"; + print "$Message[10]"; } my $function = "AddHTMLContentHeader_$pluginname"; From ddaf8edca71ff7699b54158266697a7295d36da9 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 22 Jul 2024 17:37:50 +0200 Subject: [PATCH 003/152] Add color vars to default css, saving lines --- wwwroot/cgi-bin/awstats.pl | 47 ++++++++------------------------------ 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 788971790..0a9afe3da 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -957,45 +957,16 @@ sub html_head { a:hover { color: #$color_hover; text-decoration: underline; } .currentday { font-weight: bold; } .bar{ } - .bar-horizontal{ height: 4px; } - -.bar-vertical{ - display: inline-block; - width: 4px; -} - -.color-u{ - background-color: #FFAA66; -} - -.color-v{ - background-color: #F4F090; -} - -.color-p{ - background-color: #4477DD; -} - -.color-h{ - background-color: #66DDEE; -} - -.color-k{ - background-color: #2EA495; -} - -.color-e{ - background-color: #CEC2E8; -} - -.color-x{ - background-color: #C1B2E2; -} - -.color-s{ - background-color: #8888DD; -} +.bar-vertical{ display: inline-block; width: 4px; } +.color-u{ background-color: #$color_u; } +.color-v{ background-color: #$color_v; } +.color-p{ background-color: #$color_p; } +.color-h{ background-color: #$color_h; } +.color-k{ background-color: #$color_k; } +.color-e{ background-color: #$color_e; } +.color-x{ background-color: #$color_x; } +.color-s{ background-color: #$color_s; } EOF } From 2c4baee876f011418324de2479ed72b32de33df9 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 22 Jul 2024 18:50:25 +0200 Subject: [PATCH 004/152] Reduce year size in month bars stats Set "font-size: 9px" -> same presentation as day of month --- wwwroot/cgi-bin/awstats.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 0a9afe3da..ac5a4f7f4 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -13830,7 +13830,7 @@ sub HTMLMainMonthly{ ? '' : '' ); - print "$MonthNumLib{$monthix}
$YearRequired"; + print "$MonthNumLib{$monthix}
$YearRequired
"; print( !$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '
' : '' ); From f38472539ef3f35c166b711a0bacf994c446ac8c Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 22 Jul 2024 21:03:37 +0200 Subject: [PATCH 005/152] Change font definitions Set font to sans-serif, system-ui Remove duplicates font family Change font size unit to rem unit --- wwwroot/cgi-bin/awstats.pl | 52 +++++++++++++++----------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index ac5a4f7f4..f839b32ea 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -918,18 +918,13 @@ sub html_head { print "\n"; } + print renderJavascript(); + # les scripts necessaires pour trier avec Tablekit # print "' +EOF +} + #------------------------------------------------------------------------------ # Function: Print on stdout tab header of a chart # Parameters: $title $tooltipnb [$width percentage of chart title] @@ -13246,10 +13274,8 @@ sub HTMLShowDomains{ . " />$Message[0]$newkey"; } else { - print -"$DomainsHashIDLib{$newkey}$newkey"; + print ''; + print "$DomainsHashIDLib{$newkey}$newkey"; } ## to add unique visitors and number of visits, by Josep Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { @@ -15149,10 +15175,8 @@ sub HTMLMainCountries{ . " />$Message[0]$newkey"; } else { - print -"$DomainsHashIDLib{$newkey}$newkey"; + print ''; +print "$DomainsHashIDLib{$newkey}$newkey"; } ## to add unique visitors and number of visits, by Josep Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { From 6a28b2b261df0ce709ac7fc1f7719aa85cc701cb Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 25 Jul 2024 12:39:03 +0200 Subject: [PATCH 015/152] clocks night and day --- wwwroot/cgi-bin/awstats.pl | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index eb7c2841a..0d5924782 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -936,19 +936,19 @@ sub html_head { . " 1px; margin-top: 0px; margin-bottom: 0px; }\n"; print <= 12 ? $ix - 12 : $ix ); my $hre = ( $ix >= 12 ? $ix - 11 : $ix + 1 ); - my $apm = ( $ix >= 12 ? "pm" : "am" ); - print "
\n"; + my $apm = ( $ix >= 12 ? 'pm' : 'am' ); + print '
'; } print "\n"; print "\n"; @@ -14967,7 +14969,7 @@ sub HTMLMainHours{ print ''; - print '' . $monthix . ''; + print '' . $monthix . ''; if ( $ShowHoursStats =~ /P/i ) { $data = $_time_p[$monthix] ? $_time_p[$monthix] : '0'; @@ -15002,7 +15004,7 @@ sub HTMLMainHours{ print ''; - print '' . $monthix . ''; + print '' . $monthix . ''; if ( $ShowHoursStats =~ /P/i ) { $data = $_time_p[$monthix] ? $_time_p[$monthix] : '0'; From d8b822a61f5e059e856a99a241add6f1a2859a41 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 25 Jul 2024 12:44:57 +0200 Subject: [PATCH 016/152] Adding effects on lines hovering --- wwwroot/cgi-bin/awstats.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 0d5924782..6a7f5c2aa 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -952,7 +952,7 @@ sub html_head { .multi-data-table { display: flex; gap: 5dvw; flex-wrap: wrap; justify-content: center } .data-table { border-spacing: 0 2px; } .data-table tbody tr { transition: background 0.5s; transition: transform 0.2s ease-out } -.data-table tbody tr:hover { background: rgba(0,0,0,0.2); transform: scale(1.05 ); } +.data-table tbody tr:hover { background: rgba(0,0,0,0.2); transform: scale(1.05) translateX(2px); } .data-table th, .data-table td { padding: 2px; } .data-table td div { padding: 1px 2px; } .data-table td { text-align: right; font-weight: 700; } From fd62ccb3312291a0cabca4f0382d5620411e0eeb Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 25 Jul 2024 23:38:40 +0200 Subject: [PATCH 017/152] activate U and V stats to domains/country table add options to ShowDomainsStats and defaulted to "UVPHB''. Already Coded by Josep Ruano here : https://github.com/eldy/AWStats/blob/269e9736ce02e65c25a2a4ad3e5be921ea92b878/wwwroot/cgi-bin/awstats.pl#L13217-L13243 --- wwwroot/cgi-bin/awstats.model.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.model.conf b/wwwroot/cgi-bin/awstats.model.conf index 12f066af5..2e55f4f22 100644 --- a/wwwroot/cgi-bin/awstats.model.conf +++ b/wwwroot/cgi-bin/awstats.model.conf @@ -1002,8 +1002,8 @@ ShowHoursStats=PHB # Show domains/country chart # Context: Web, Streaming, Mail, Ftp -# Default: PHB, Possible column codes: UVPHB -ShowDomainsStats=PHB +# Default: UVPHB, Possible column codes: UVPHB +ShowDomainsStats=UVPHB # Show hosts chart # Context: Web, Streaming, Mail, Ftp From 1650400e2ce0806b33c52348e80ae7891b79ee21 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 01:19:20 +0200 Subject: [PATCH 018/152] change translations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "différents" > "uniques" (plus court, évite les sauts de lignes) - "Heures" > "Heure" --- wwwroot/cgi-bin/lang/awstats-fr.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index 33d721f43..d955ec4c9 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -12,7 +12,7 @@ message7=Statistiques de message8=Première visite message9=Dernière visite message10=Visites -message11=Visiteurs différents +message11=Visiteurs uniques message12=Visite message13=mots clé différents message14=Recherche @@ -21,7 +21,7 @@ message16=Trafic message17=Domaines/Pays message18=Visiteurs message19=Pages-URL -message20=Heures +message20=Heure message21=Navigateurs message22= message23=Origine/Referer From ad834077c9ddb7af4f73fc31c442fbeb0a6cef0f Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 02:32:37 +0200 Subject: [PATCH 019/152] Update Countries table - global update of redesigning, refactoring tasks - reintroducing a world map --- wwwroot/cgi-bin/awstats.pl | 405 ++-- wwwroot/img/BlankMap-World.svg | 3272 ++++++++++++++++++++++++++++++++ 2 files changed, 3481 insertions(+), 196 deletions(-) create mode 100644 wwwroot/img/BlankMap-World.svg diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 6a7f5c2aa..5c73dc42e 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -299,7 +299,7 @@ ) = ( 2, 2, 0, 2, 2, 2, 2, 2, 2 ); use vars qw/ - $DirLock $DirCgi $DirConfig $DirData $DirIcons $DirLang $AWScript $ArchiveFileName + $DirLock $DirCgi $DirConfig $DirData $DirIcons $DirImgs $DirLang $AWScript $ArchiveFileName $AllowAccessFromWebToFollowingIPAddresses $HTMLHeadSection $HTMLEndSection $LinksToWhoIs $LinksToIPWhoIs $LogFile $LogType $LogFormat $LogSeparator $Logo $LogoLink $StyleSheet $WrapperScript $SiteDomain $UseHTTPSLinkForUrl $URLQuerySeparators $URLWithAnchor $ErrorMessages $ShowFlagLinks @@ -308,7 +308,8 @@ ( $DirLock, $DirCgi, $DirConfig, $DirData, - $DirIcons, $DirLang, + $DirIcons, $DirImgs, + $DirLang, $AWScript, $ArchiveFileName, $AllowAccessFromWebToFollowingIPAddresses, $HTMLHeadSection, $HTMLEndSection, $LinksToWhoIs, @@ -534,7 +535,7 @@ %_session %_browser_h %_browser_p %_filesize %_requesttime - %_domener_p %_domener_h %_domener_k %_errors_h %_errors_k + %_domener_u %_domener_p %_domener_h %_domener_k %_errors_h %_errors_k %_filetypes_h %_filetypes_k %_filetypes_gz_in %_filetypes_gz_out %_host_p %_host_h %_host_k %_host_l %_host_s %_host_u %_waithost_e %_waithost_l %_waithost_s %_waithost_u @@ -936,7 +937,7 @@ sub html_head { . " 1px; margin-top: 0px; margin-bottom: 0px; }\n"; print <\n"; +"\n"; } if ($tooltipnb) { @@ -2042,6 +2047,12 @@ sub Parse_Config { if ( $QueryString !~ /diricons=([^\s&]+)/i ) { $DirIcons = $value; } next; } + + if ( $param =~ /^DirImgs/ ) { + if ( $QueryString !~ /dirimgs=([^\s&]+)/i ) { $DirImgs = $value; } + next; + } + if ( $param =~ /^SiteDomain/ ) { # No regex test as SiteDomain is always exact value @@ -15047,38 +15058,87 @@ sub HTMLMainCountries{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowDomainsStats", 2 ); } + + my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; + my $rest_u = my $rest_v = my $rest_p = my $rest_h = my $rest_k = 0; + my $max_u = my $max_p = my $max_h = 1; + print "$Center 
\n"; - my $title = -"$Message[25] ($Message[77] $MaxNbOf{'Domain'})   -   + +document.addEventListener("DOMContentLoaded", (d) => { + let worldmap = document.getElementById('worldmap'); + + fetch('$DirImgs/BlankMap-World.svg').then(response=>response.text()).then(data=>{ + + worldmap.innerHTML = data; + + let realMap = worldmap.querySelector('svg'); + realMap.setAttribute('width', '100%'); + realMap.setAttribute('height', '100%'); + realMap.setAttribute('viewBox', '300 20 2300 1170'); + + let domainsTable = document.querySelector('.domains-table'); + + [...domainsTable.querySelectorAll('.flag')].forEach(el => { + let country = worldmap.querySelector('g#' + el.dataset.country); + + if(country !== null){ + + [...country.querySelectorAll('.landxx')].forEach(el => { + el.classList.remove('landxx'); + el.classList.add('lighted-land'); + }); + + } else { + + country = worldmap.querySelector('path#' + el.dataset.country); + + if(country !== null){ + country.classList.remove('landxx'); + country.classList.add('lighted-land'); + } + } + }); + }); +}); +' +EOF + + my $title = "$Message[25] ($Message[77] $MaxNbOf{'Domain'})   -   $Message[80]"; - - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title = "$title   -   $Message[179]"); - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { + # extend the title to include the added link + $title = "$title   -   $Message[179]"); + } &tab_head( "$title", 19, 0, 'countries' ); - my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; - my $max_h = 1; + foreach ( values %_domener_u ) { + if ( $_ > $max_u ) { $max_u = $_; } + } + + foreach ( values %_domener_p ) { + if ( $_ > $max_p ) { $max_p = $_; } + } + foreach ( values %_domener_h ) { if ( $_ > $max_h ) { $max_h = $_; } } + my $max_k = 1; + foreach ( values %_domener_k ) { if ( $_ > $max_k ) { $max_k = $_; } } + my $count = 0; &BuildKeyList( @@ -15086,151 +15146,99 @@ sub HTMLMainCountries{ \%_domener_h, \%_domener_p ); - # print the map - if (scalar @keylist > 1){ - foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) - { - my @blocklabel = (); - my @valdata = (); - my $cnt = 0; - foreach my $key (@keylist) { - push @valdata, int( $_domener_h{$key} ); - push @blocklabel, $DomainsHashIDLib{$key}; - $cnt++; - if ($cnt > 99) { last; } - } - print ""; - } - } - - print -""; + # # print the map + # if (scalar @keylist > 1){ + # foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) + # { + # my @blocklabel = (); + # my @valdata = (); + # my $cnt = 0; + # foreach my $key (@keylist) { + # push @valdata, int( $_domener_h{$key} ); + # push @blocklabel, $DomainsHashIDLib{$key}; + # $cnt++; + # if ($cnt > 99) { last; } + # } + # print ""; + # } + # } + + print '
'; + print '
'; + print '
"; - my $function = "ShowGraph_$pluginname"; - &$function( - "AWStatsCountryMap", "countries_map", - 0, \@blocklabel, - 0, 0, - 0, 0, - 0, \@valdata - ); - print "
 $Message[17]
"; + # my $function = "ShowGraph_$pluginname"; + # &$function( + # "AWStatsCountryMap", "countries_map", + # 0, \@blocklabel, + # 0, 0, + # 0, 0, + # 0, \@valdata + # ); + # print "
'; + + #header + print HTMLDataTableHeader($Message[148], $ShowDomainsStats); + + # body + print ''; - ## to add unique visitors and number of visits by calculation of average of the relation with total - ## pages and total hits, and total visits and total unique - ## by Josep Ruano @ CAPSiDE - if ( $ShowDomainsStats =~ /U/i ) { - print ""; - } - if ( $ShowDomainsStats =~ /V/i ) { - print ""; - } - if ( $ShowDomainsStats =~ /P/i ) { - print ""; - } - if ( $ShowDomainsStats =~ /H/i ) { - print ""; - } - if ( $ShowDomainsStats =~ /B/i ) { - print ""; - } - print ""; - print "\n"; - foreach my $key (@keylist) { + my ( $_domener_u, $_domener_v ); - my $bredde_p = 0; - my $bredde_h = 0; - my $bredde_k = 0; - my $bredde_u = 0; - my $bredde_v = 0; - if ( $max_h > 0 ) { - $bredde_p = - int( $BarWidth * $_domener_p{$key} / $max_h ) + 1; - } # use max_h to enable to compare pages with hits - if ( $_domener_p{$key} && $bredde_p == 1 ) { $bredde_p = 2; } - if ( $max_h > 0 ) { - $bredde_h = - int( $BarWidth * $_domener_h{$key} / $max_h ) + 1; - } - if ( $_domener_h{$key} && $bredde_h == 1 ) { $bredde_h = 2; } - if ( $max_k > 0 ) { - $bredde_k = - int( $BarWidth * ( $_domener_k{$key} || 0 ) / $max_k ) + - 1; - } - if ( $_domener_k{$key} && $bredde_k == 1 ) { $bredde_k = 2; } my $newkey = lc($key); + my $data = ''; + + print ''; + if ( $newkey eq 'ip' || !$DomainsHashIDLib{$newkey} ) { - print -""; + print ''; } else { - print ''; -print ""; + print ''; } - ## to add unique visitors and number of visits, by Josep Ruano @ CAPSiDE + + my $domener_temp = ($_domener_p{$key} ? $_domener_p{$key} / $TotalPages : 0) + $_domener_h{$key} / $TotalHits; + if ( $ShowDomainsStats =~ /U/i ) { - $_domener_u = ( - $_domener_p{$key} - ? $_domener_p{$key} / $TotalPages - : 0 - ); - $_domener_u += ( $_domener_h{$key} / $TotalHits ); - $_domener_u = - sprintf( "%.0f", ( $_domener_u * $TotalUnique ) / 2 ); - print ""; + + $data = int( $domener_temp * $TotalUnique / 2 ); + + print HTMLDataCellWithBar('u', $data , Format_Number($data), $TotalUnique); + } + if ( $ShowDomainsStats =~ /V/i ) { - $_domener_v = ( - $_domener_p{$key} - ? $_domener_p{$key} / $TotalPages - : 0 - ); - $_domener_v += ( $_domener_h{$key} / $TotalHits ); - $_domener_v = - sprintf( "%.0f", ( $_domener_v * $TotalVisits ) / 2 ); - print ""; - } - if ( $ShowDomainsStats =~ /P/i ) { - print ""; - } - if ( $ShowDomainsStats =~ /H/i ) { - print ""; - } - if ( $ShowDomainsStats =~ /B/i ) { - print ""; + $data = int( $domener_temp * $TotalVisits / 2 ); + + print HTMLDataCellWithBar('v', $data , Format_Number($data), $TotalVisits); + } - print ""; + print "\n"; $total_u += $_domener_u; @@ -15240,29 +15248,34 @@ sub HTMLMainCountries{ $total_k += $_domener_k{$key} || 0; $count++; } - my $rest_u = $TotalUnique - $total_u; - my $rest_v = $TotalVisits - $total_v; - my $rest_p = $TotalPages - $total_p; - my $rest_h = $TotalHits - $total_h; - my $rest_k = $TotalBytes - $total_k; - if ( $rest_u > 0 - || $rest_v > 0 - || $rest_p > 0 - || $rest_h > 0 - || $rest_k > 0 ) - { # All other domains (known or not) - print -""; - if ( $ShowDomainsStats =~ /U/i ) { print ""; } - if ( $ShowDomainsStats =~ /V/i ) { print ""; } - if ( $ShowDomainsStats =~ /P/i ) { print ""; } - if ( $ShowDomainsStats =~ /H/i ) { print ""; } - if ( $ShowDomainsStats =~ /B/i ) { - print ""; - } - print ""; + + $rest_u = $TotalUnique - $total_u; + $rest_v = $TotalVisits - $total_v; + $rest_p = $TotalPages - $total_p; + $rest_h = $TotalHits - $total_h; + $rest_k = $TotalBytes - $total_k; + + if ( $rest_u > 0 || $rest_v > 0 || $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other domains (known or not) + + print ''; + + print (( $ShowDomainsStats =~ /U/i ) ? HTMLDataCellWithBar('u', $rest_u , Format_Number($rest_u), $TotalUnique) : ''); + + print (( $ShowDomainsStats =~ /V/i ) ? HTMLDataCellWithBar('v', $rest_v , Format_Number($rest_v), $TotalVisits) : ''); + + print (( $ShowDomainsStats =~ /P/i ) ? HTMLDataCellWithBar('p', $rest_p , Format_Number($rest_p), $TotalPages) : ''); + + print (( $ShowDomainsStats =~ /H/i ) ? HTMLDataCellWithBar('h', $rest_h , Format_Number($rest_h), $TotalHits) : ''); + + print (( $ShowDomainsStats =~ /B/i ) ? HTMLDataCellWithBar('b', $rest_k , Format_Bytes($rest_k), $TotalBytes) : ''); + print "\n"; + + print '
$Message[11]$Message[10]$Message[56]$Message[57]$Message[75] 
$Message[0]$newkey' . $Message[0] . '
$DomainsHashIDLib{$newkey}$newkey' . $DomainsHashIDLib{$newkey} . ' ( ' . $newkey . ' ) ".Format_Number($_domener_u)." (" - . sprintf( "%.1f%", 100 * $_domener_u / $TotalUnique ) - . ")".Format_Number($_domener_v)." (" - . sprintf( "%.1f%", 100 * $_domener_v / $TotalVisits ) - . ")" - . ( $_domener_p{$key} ? Format_Number($_domener_p{$key}) : ' ' ) - . "".Format_Number($_domener_h{$key})."" . Format_Bytes( $_domener_k{$key} ) . ""; if ( $ShowDomainsStats =~ /P/i ) { - print HtmlBarH('p', $bredde_p); + + $data = int($_domener_p{$key} || 0); + + print HTMLDataCellWithBar('p', $data , Format_Number($data), $TotalPages); + } + if ( $ShowDomainsStats =~ /H/i ) { - print HtmlBarH('h', $bredde_h); + + $data = int($_domener_h{$key} || 0); + + print HTMLDataCellWithBar('h', $data , Format_Number($data), $TotalHits); + } + if ( $ShowDomainsStats =~ /B/i ) { - print HtmlBarH('k', $bredde_k); + + $data = int($_domener_k{$key} || 0); + + print HTMLDataCellWithBar('b', $data , Format_Bytes($data), $TotalBytes); + } - print "
 $Message[2]$rest_u$rest_v$rest_p$rest_h" . Format_Bytes($rest_k) . " 
' . $Message[2] . '
'; + print '
'; + } + &tab_end(); } diff --git a/wwwroot/img/BlankMap-World.svg b/wwwroot/img/BlankMap-World.svg new file mode 100644 index 000000000..92d8555b4 --- /dev/null +++ b/wwwroot/img/BlankMap-World.svg @@ -0,0 +1,3272 @@ + + + World Map + + + + + Sudan + + + South Sudan + + + Georgia + + + Abkhazia + + + + + South Ossetia + + + + + + Peru + + + Burkina Faso + + + Libya + + + Belarus + + + Pakistan + + + Azad Jammu and Kashmir + + + + Indonesia + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yemen + + + + + + + Madagascar + + + + + + Bolivia, Plurinational State of + + + + + Serbia + + + Kosovo + + + + + + Cote d'Ivoire + + + Algeria + + + Switzerland + + + Cameroon + + + North Macedonia, Republic of + + + Botswana + + + Kenya + + + Jordan + + + Mexico + + + + + + + + + + + + + + + + + + United Arab Emirates + + + + + Belize + + + + + Brazil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sierra Leone + + + + + Mali + + + Congo, Democratic Republic of the + + + Italy + + + + + + + + Somalia + + + Somaliland + + + + Afghanistan + + + Bangladesh + + + + + + + + + + + + + + Dominican Republic + + + + + Guinea-Bissau + + + + + + + + + + + Ghana + + + Austria + + + Sweden + + + + + + + + + + + + + + + Turkey + + + + + + Uganda + + + Mozambique + + + + + + + + New Zealand + + + + + + + + + + + + Cuba + + + + + + + + + + + Venezuela, Bolivarian Republic of + + + + + + + + + + + + + + + + Portugal + + + + + + + + + + + Colombia + + + Mauritania + + + + + Angola + + + + + Germany + + + + + + + + Thailand + + + + + + + + + + + + Papua New Guinea + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Iraq + + + Croatia + + + + + + + + + + + + + + + + + + + + + Greenland + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Niger + + + Denmark + + + + + + + + + + + + + + + + + + Latvia + + + Romania + + + Zambia + + + Myanmar + + + + + + + + + + + + + + + + + + + + + + + Ethiopia + + + Guatemala + + + Suriname + + + Czech Republic + + + Chad + + + Albania + + + Finland + + + + + + + + + + + + + + + + + + + + + + Syrian Arab Republic + + + Kyrgyzstan + + + Solomon Islands + + + + + + + + + + + + + + + + + + + + + + + + + + + Oman + + + + + + Panama + + + + + + + + Argentina + + + + + + + + United Kingdom + + + + + + + + + + + + + + + + + + + + + + + + + + + + Costa Rica + + + + + Paraguay + + + Guinea + + + + + Ireland + + + + + + Nigeria + + + + + + Tunisia + + + + + Poland + + + Namibia + + + South Africa + + + Egypt + + + Tanzania, United Republic of + + + + + + + Saudi Arabia + + + + + + + + Vietnam, Socialist Republic of + + + + + + + + + + + + + Russian Federation + + + + + + + + + + + + + + Southern Kuril Islands + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Crimea + + + + Haiti + + + + + + + Bosnia and Herzegovina + + + India + + + + + + + + + + + + + + + Canada + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + El Salvador + + + Guyana + + + Belgium + + + Equatorial Guinea + + + + + Lesotho + + + Bulgaria + + + Burundi + + + Djibouti + + + Azerbaijan + + + + + + Artsakh, Republic of + + + + + + Iran, Islamic Republic of + + + + + + + Malaysia + + + + + + + + + + + + + + + + + + Philippines + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Uruguay + + + Congo, Republic of the + + + Estonia + + + + + + + + Rwanda + + + Armenia + + + Senegal + + + Togo + + + Spain + + + + + + + + + + + + + + + Gabon + + + + + Hungary + + + Malawi + + + Tajikistan + + + Cambodia + + + + + + + Korea, Republic of + + + + + + + + + + + + Honduras + + + + + Iceland + + + Nicaragua + + + Chile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Morocco + + + + Western Sahara + + + Sahrawi Arab Democratic Republic + + + + + Liberia + + + Central African Republic + + + Slovakia + + + Lithuania + + + Zimbabwe + + + Sri Lanka + + + + + + Israel + + + + State of Palestine + + + Gaza Strip + + + West Bank + + + + + + Lao People's Democratic Republic + + + Korea, Democratic People's Republic of + + + Greece + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Turkmenistan + + + Ecuador + + + + + + + + + + + + + Benin + + + Slovenia + + + Norway + + Svalbard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moldova, Republic of + + + Transnistria + + + + + + Ukraine + + + Donetsk People's Republic + + + + + Luhansk People's Republic + + + + + + Nepal + + + Eritrea + + + + + United States of America + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kazakhstan + + + + + French Southern Territories + + + + + Uzbekistan + + + Mongolia + + + Bhutan + + + Antarctica + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Australia + + + + + + + + + + + + + + + + + + + + + + + Christmas Island + + + + + Cocos (Keeling) Islands + + + + + Heard Island and McDonald Islands + + + + + Norfolk Island + + + + + + China + + China, People's Republic of + + + + + + + + + + + + + + + + + + + + + + + Hong Kong + + + + + + + + + Macao + + + + + Taiwan + + + + + + + + + + France + + + + + + + + + + French Guiana + + + Guadeloupe + + + + + + + + + Martinique + + + + + Reunion + + + + + Mayotte + + + + + + Netherlands + + + + + + + + + + + + Bonaire, Sint Eustatius and Saba + + + + + + + + + + Lebanon + + + + + Montenegro + + + + + Eswatini + + + + + New Caledonia + + + + + + + + + + + + Fiji + + + + + + + + + + + + + + Kuwait + + + + + + + + Timor-Leste + + + + + + + + Bahamas + + + + + + + + + + + + + + + + + + + + + + + + Vanuatu + + + + + + + + + + + + + + + + + + + + Falkland Islands (Islas Malvinas) + + + + + + + + + + + + + + South Georgia and the South Sandwich Islands + + + + + Gambia + + + + + Qatar + + + + + Jamaica + + + + + Cyprus + + + Northern Cyprus + + + + + + + Puerto Rico + + + + + Brunei + + + + + + + + Trinidad and Tobago + + + + + + + + Cape Verde + + + + + + + + + + + + + + French Polynesia + + + + + + + + + + + + + + Samoa + + + + + + + + Luxembourg + + + + + Comoros + + + + + + + + + Mauritius + + + + + Faroe Islands + + + + + + + + + + + + Sao Tome and Principe + + + + + + + + Virgin Islands, U.S. + + + + + + + + Curaçao + + + + + Sint Maarten (Dutch Part) + + + + + Dominica + + + + + Tonga + + + + + + + + + Kiribati + + + + + + + + Micronesia, Federated States of + + + + + Bahrain + + + + + + Northern Mariana Islands + + + + + Palau + + + + + Seychelles, Republic of + + + + + British Indian Ocean Territory + + + + + Antigua and Barbuda + + + + + + + + Barbados + + + + + Turks and Caicos Islands + + + + + + + + + Saint Vincent and the Grenadines + + + + + Saint Lucia + + + + + Grenada + + + + + Malta + + + + + Maldives, Republic of + + + + + Cayman Islands + + + + + Saint Kitts and Nevis + + + + + + + + Montserrat + + + + + Saint Barthélemy + + + + + Niue + + + + + Saint Pierre and Miquelon + + + + + Cook Islands + + + + + Wallis and Futuna + + + + + American Samoa + + + + + Marshall Islands, Republic of the + + + + + Aruba + + + + + Liechtenstein + + + + + Virgin Islands, British + + + + + + + + Saint Helena, Ascension and Tristan da Cunha + + + + + Jersey + + + + + Anguilla + + + + + Saint Martin (French Part) + + + + + Guernsey + + + + + San Marino + + + + + Bermuda + + + + + Tuvalu + + + + + Nauru + + + + + Gibraltar + + + + + Pitcairn Islands + + + + + Monaco + + + + + Vatican City + + + + + Isle of Man + + + + + Guam + + + + + Singapore + + + + + Tokelau + + + + + + + + \ No newline at end of file From 1202bb584584a8a274dd575f0efbcbaaa309cded Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 02:34:43 +0200 Subject: [PATCH 020/152] Introduce img folder (worldmap) - Add folder in installation setup - Update documentation --- docs/awstats_config.html | 18 ++++++++++++++++-- docs/awstats_setup.html | 6 ++++++ make/rpm/awstats.spec | 2 ++ tools/awstats_configure.pl | 19 +++++++++++++++++-- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/docs/awstats_config.html b/docs/awstats_config.html index 073a4ceb3..5fc426a9e 100644 --- a/docs/awstats_config.html +++ b/docs/awstats_config.html @@ -53,6 +53,7 @@
  • DirData
  • DirCgi
  • DirIcons +
  • DirImgs
  • SiteDomain
  • HostAliases
  • AllowToUpdateStatsFromBrowser @@ -468,6 +469,19 @@


    +DirImgs
    +Version : 1.0+
    +
    # Relative or absolute web URL of your awstats images directory. +
    # If you build static reports ("... -output > outputpath/output.html"), enter +
    # path of images directory relative to the output directory 'outputpath'. +
    # Example: "/awstatsimgs" +
    # Example: "../img" +
    # Default: "/img" (means you must copy images directories in "/mywwwroot/img") +
    # +
    DirIcons="/img" + +


    + SiteDomain
    Version : 3.2+

    # "SiteDomain" must contain the main domain name or the main intranet web @@ -1430,8 +1444,8 @@

    # Show domains/country chart
    # Context: Web, Streaming, Mail, Ftp -
    # Default: PHB, Possible column codes: PHB -
    ShowDomainsStats=PHB +
    # Default: UVPHB, Possible column codes: UVPHB +
    ShowDomainsStats=UVPHB

    # Show hosts chart
    # Context: Web, Streaming, Mail, Ftp diff --git a/docs/awstats_setup.html b/docs/awstats_setup.html index f9f515645..a5aeb2389 100644 --- a/docs/awstats_setup.html +++ b/docs/awstats_setup.html @@ -115,6 +115,7 @@

    I. Setup: Installation and configuration using Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
    Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
    Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
    +Alias /awstatsimgs "/usr/local/awstats/wwwroot/img/"
    ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
    #
    # This is to permit URL access to scripts/files in AWStats directory.
    @@ -252,6 +253,9 @@

    I. Setup: Installation and configuration using Move AWStats icon sub-directories and its content into a directory readable by your web server, for example C:\yourwwwroot\icon.
    +Move AWStats img sub-directories and its content into a +directory readable by your +web server, for example C:\yourwwwroot\img.

    * Step 4:

    @@ -282,6 +286,8 @@

    I. Setup: Installation and configuration using cs-uri-query sc-status sc-bytes cs-version cs(User-Agent) cs(Referer)"
    - Change the DirIcons parameter to reflect relative path of icon directory.
    +- Change the DirImgs +parameter to reflect relative path of img directory.
    - Set the SiteDomain parameter to the main domain name or the intranet web server name used to reach the web site being analyzed (Example: diff --git a/make/rpm/awstats.spec b/make/rpm/awstats.spec index 4d017b81d..55067fc4f 100644 --- a/make/rpm/awstats.spec +++ b/make/rpm/awstats.spec @@ -124,6 +124,7 @@ mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/icon/flags mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/icon/mime mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/icon/os mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/icon/other +mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/img mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/js mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/cgi-bin/lang mkdir -p $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/cgi-bin/lang/tooltips_f @@ -163,6 +164,7 @@ install -m 444 wwwroot/icon/flags/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/ic install -m 444 wwwroot/icon/mime/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/icon/mime install -m 444 wwwroot/icon/os/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/icon/os install -m 444 wwwroot/icon/other/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/icon/other +install -m 444 wwwroot/img/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/img install -m 444 wwwroot/js/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/js install -m 444 wwwroot/cgi-bin/lang/tooltips_f/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/cgi-bin/lang/tooltips_f install -m 444 wwwroot/cgi-bin/lang/tooltips_m/* $RPM_BUILD_ROOT/usr/local/awstats/wwwroot/cgi-bin/lang/tooltips_m diff --git a/tools/awstats_configure.pl b/tools/awstats_configure.pl index 462528ee2..d735395ee 100755 --- a/tools/awstats_configure.pl +++ b/tools/awstats_configure.pl @@ -21,6 +21,7 @@ use vars qw/ $AWSTATS_PATH $AWSTATS_ICON_PATH +$AWSTATS_IMG_PATH $AWSTATS_CSS_PATH $AWSTATS_CLASSES_PATH $AWSTATS_CGI_PATH @@ -29,6 +30,7 @@ /; $AWSTATS_PATH=''; $AWSTATS_ICON_PATH='/usr/local/awstats/wwwroot/icon'; +$AWSTATS_IMG_PATH='/usr/local/awstats/wwwroot/img'; $AWSTATS_CSS_PATH='/usr/local/awstats/wwwroot/css'; $AWSTATS_CLASSES_PATH='/usr/local/awstats/wwwroot/classes'; $AWSTATS_CGI_PATH='/usr/local/awstats/wwwroot/cgi-bin'; @@ -324,6 +326,7 @@ sub update_awstats_config exit 1; } $AWSTATS_ICON_PATH="$AWSTATS_PATH/wwwroot/icon"; + $AWSTATS_IMG_PATH="$AWSTATS_PATH/wwwroot/img" $AWSTATS_CSS_PATH="$AWSTATS_PATH/wwwroot/css"; $AWSTATS_CLASSES_PATH="$AWSTATS_PATH/wwwroot/classes"; $AWSTATS_CGI_PATH="$AWSTATS_PATH/wwwroot/cgi-bin"; @@ -349,6 +352,7 @@ sub update_awstats_config exit 1; } $AWSTATS_ICON_PATH="$AWSTATS_PATH/wwwroot/icon"; + $AWSTATS_IMG_PATH="$AWSTATS_PATH/wwwroot/img"; $AWSTATS_CSS_PATH="$AWSTATS_PATH/wwwroot/css"; $AWSTATS_CLASSES_PATH="$AWSTATS_PATH/wwwroot/classes"; $AWSTATS_CGI_PATH="$AWSTATS_PATH/wwwroot/cgi-bin"; @@ -358,6 +362,7 @@ sub update_awstats_config # We do not use default values for awstats directives # but thoose defined from AWSTATS_PATH $AWSTATS_ICON_PATH="$AWSTATS_PATH/wwwroot/icon"; + $AWSTATS_IMG_PATH="$AWSTATS_PATH/wwwroot/img"; $AWSTATS_CSS_PATH="$AWSTATS_PATH/wwwroot/css"; $AWSTATS_CLASSES_PATH="$AWSTATS_PATH/wwwroot/classes"; $AWSTATS_CGI_PATH="$AWSTATS_PATH/wwwroot/cgi-bin"; @@ -457,6 +462,7 @@ sub update_awstats_config my $awstatsclassesfound=0; my $awstatscssfound=0; my $awstatsiconsfound=0; + my $awstatsimgsfound=0; my $awstatscgifound=0; my $awstatsdirectoryfound=0; while() @@ -480,13 +486,14 @@ sub update_awstats_config if ($_ =~ /Alias \/awstatsclasses/) { $awstatsclassesfound=1; } if ($_ =~ /Alias \/awstatscss/) { $awstatscssfound=1; } if ($_ =~ /Alias \/awstatsicons/) { $awstatsiconsfound=1; } + if ($_ =~ /Alias \/awstatsimgs/) { $awstatsimgsfound=1; } if ($_ =~ /ScriptAlias \/awstats\//) { $awstatscgifound=1; } my $awstats_path_quoted=quotemeta($AWSTATS_PATH); if ($_ =~ /Directory "$awstats_path_quoted\/wwwroot"/) { $awstatsdirectoryfound=1; } } close CONF; - if ($awstatsclassesfound && $awstatscssfound && $awstatsiconsfound && $awstatscgifound && $awstatsdirectoryfound) + if ($awstatsclassesfound && $awstatscssfound && $awstatsiconsfound && $awstatsimgsfound && $awstatscgifound && $awstatsdirectoryfound) { $UseAlias=1; if ($commonchangedtocombined) { print " Common log files changed to combined.\n"; } @@ -497,7 +504,7 @@ sub update_awstats_config # Add awstats directives open(CONF,">>$key") || error("Failed to open config file '$key' for adding AWStats directives"); binmode CONF; - if (! $awstatsclassesfound || ! $awstatscssfound || ! $awstatsiconsfound || ! $awstatscgifound) { + if (! $awstatsclassesfound || ! $awstatscssfound || ! $awstatsiconsfound || ! $awstatsimgsfound || ! $awstatscgifound) { print CONF "$CR\n"; print CONF "#$CR\n"; print CONF "# Directives to allow use of AWStats as a CGI$CR\n"; @@ -515,6 +522,12 @@ sub update_awstats_config print " Add 'Alias \/awstatsicons \"$AWSTATS_ICON_PATH\/\"'\n"; print CONF "Alias \/awstatsicons \"$AWSTATS_ICON_PATH\/\"$CR\n"; } + + if (! $awstatsimgsfound) { + print " Add 'Alias \/awstatsimgs \"$AWSTATS_IMG_PATH\/\"'\n"; + print CONF "Alias \/awstatsimgs \"$AWSTATS_IMG_PATH\/\"$CR\n"; + } + if (! $awstatscgifound) { print " Add 'ScriptAlias \/awstats\/ \"$AWSTATS_CGI_PATH\/\"'\n"; print CONF "ScriptAlias \/awstats\/ \"$AWSTATS_CGI_PATH\/\"$CR\n"; @@ -570,6 +583,7 @@ sub update_awstats_config if ($UseAlias) { $ConfToChange{'DirCgi'}='/awstats'; $ConfToChange{'DirIcons'}='/awstatsicons'; + $ConfToChange{'DirImgs'}='/awstatsimgs'; } update_awstats_config("$modelfile"); print " File awstats.model.conf updated.\n"; @@ -639,6 +653,7 @@ sub update_awstats_config if ($UseAlias) { $ConfToChange{'DirCgi'}='/awstats'; $ConfToChange{'DirIcons'}='/awstatsicons'; + $ConfToChange{'DirImgs'}='/awstatsimgs'; } $ConfToChange{'SiteDomain'}="$site"; my $sitewithoutwww=lc($site); $sitewithoutwww =~ s/^www\.//i; From a4d5dd62f5906d023068d27f2a23d53dc6d4c5d2 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 05:37:52 +0200 Subject: [PATCH 021/152] Cleaning Days of Month process - rearrange code : declarations => datas manipulations => rendering - avoid loops : days are now parsed only once --- wwwroot/cgi-bin/awstats.pl | 354 ++++++++++++++++--------------------- 1 file changed, 151 insertions(+), 203 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 5c73dc42e..a2189c3c4 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14086,9 +14086,9 @@ sub HTMLMainDaily{ my $lastdaytoshowtime = shift; if ($Debug) { debug( "ShowDaysOfMonthStats", 2 ); } - print "$Center 
    \n"; - + my $NewLinkParams = ${QueryString}; + $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)year=[^&]*//i; @@ -14097,43 +14097,65 @@ sub HTMLMainDaily{ $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; + if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } + my $NewLinkTarget = ''; + my $title = "$Message[138]"; + my $graphPlugin = 0; + my $not_empty_days = 0; + my $average_v = my $average_p = 0; + my $average_h = my $average_k = 0; + my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; + my $max_v = my $max_p = my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 + my $height = 0; + my $bars = ''; + my $data = ''; + my $tableData = ''; + + my @blocklabel = (); + my @valcolor = ("$color_v", "$color_p", "$color_h", "$color_k" ); + my @valmax = ($max_v, $max_h, $max_h, $max_k ); + my @valtotal = ($total_v, $total_p, $total_h, $total_k ); + my @valaverage = ($average_v, $average_p, $average_h, $average_k ); + my @valdata = (); + my $xx = 0; + my @vallabel = ("$Message[10]", "$Message[56]", "$Message[57]", "$Message[75]"); if ( $FrameName eq 'mainright' ) { $NewLinkTarget = " target=\"_parent\""; } - my $title = "$Message[138]"; + if (%{ $PluginsLoaded{'ShowGraph'} }) { + $graphPlugin = 1; + } - if ($AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title = "$title   -   $Message[179]"); - } + if ($AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { + # extend the title to include the added link + $title = "$title   -   $Message[179]" + ); + } + print "$Center 
    \n"; + &tab_head( "$title", 0, 0, 'daysofmonth' ); print ""; print "\n"; print "
    \n"; - my $not_empty_days = 0; - my $average_v = my $average_p = 0; - my $average_h = my $average_k = 0; - my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; - my $max_v = my $max_p = my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { - next; - } # If not an existing day, go to next + if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next + + my $dayofweekcursor = DayOfWeek( $day, $month, $year ); if($DayHits{ $year . $month . $day } > 0){ $not_empty_days++; @@ -14151,170 +14173,145 @@ sub HTMLMainDaily{ $max_h = ( ( $DayHits{ $year . $month . $day } || 0 ) > $max_h ) ? $DayHits{ $year . $month . $day } : $max_h; $max_k = ( ( $DayBytes{ $year . $month . $day } || 0 ) > $max_k ) ? $DayBytes{ $year . $month . $day } : $max_k; - } - $average_v = sprintf( "%.2f", $total_v / $not_empty_days ); - $average_p = sprintf( "%.2f", $total_p / $not_empty_days ); - $average_h = sprintf( "%.2f", $total_h / $not_empty_days ); - $average_k = sprintf( "%.2f", $total_k / $not_empty_days ); + $average_v = sprintf( "%.2f", $total_v / $not_empty_days ); + $average_p = sprintf( "%.2f", $total_p / $not_empty_days ); + $average_h = sprintf( "%.2f", $total_h / $not_empty_days ); + $average_k = sprintf( "%.2f", $total_k / $not_empty_days ); - # Show bars for day - my $graphdone=0; - foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) - { - my @blocklabel = (); - foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) - { - $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; - my $year = $1; - my $month = $2; - my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { - next; - } # If not an existing day, go to next - my $bold = - ( $day == $nowday - && $month == $nowmonth - && $year == $nowyear ? ':' : '' ); - my $weekend = - ( DayOfWeek( $day, $month, $year ) =~ /[06]/ ? '!' : '' ); - push @blocklabel, - "$day\n$MonthNumLib{$month}$weekend$bold"; - } - my @vallabel = ( - "$Message[10]", "$Message[56]", - "$Message[57]", "$Message[75]" - ); - my @valcolor = - ( "$color_v", "$color_p", "$color_h", "$color_k" ); - my @valmax = ( $max_v, $max_h, $max_h, $max_k ); - my @valtotal = ( $total_v, $total_p, $total_h, $total_k ); - my @valaverage = - ( $average_v, $average_p, $average_h, $average_k ); - my @valdata = (); - my $xx = 0; + if ($graphPlugin == 1) { - foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) - { - $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; - my $year = $1; - my $month = $2; - my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { - next; - } # If not an existing day, go to next - $valdata[ $xx++ ] = $DayVisits{ $year . $month . $day } - || 0; + my $bold = ($day == $nowday && $month == $nowmonth && $year == $nowyear) ? ':' : ''; + my $weekend = (DayOfWeek( $day, $month, $year ) =~ /[06]/) ? '!' : '' ; + push @blocklabel, "$day\n$MonthNumLib{$month}$weekend$bold"; + $valdata[ $xx++ ] = $DayVisits{ $year . $month . $day } || 0; $valdata[ $xx++ ] = $DayPages{ $year . $month . $day } || 0; $valdata[ $xx++ ] = $DayHits{ $year . $month . $day } || 0; $valdata[ $xx++ ] = $DayBytes{ $year . $month . $day } || 0; - } - my $function = "ShowGraph_$pluginname"; - &$function( - "$title", "daysofmonth", - $ShowDaysOfMonthStats, \@blocklabel, - \@vallabel, \@valcolor, - \@valmax, \@valtotal, - \@valaverage, \@valdata - ); - $graphdone=1; - } - # If graph was not printed by a plugin - if (! $graphdone) { - print "\n"; - print "\n"; - foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) - { - $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; - my $year = $1; - my $month = $2; - my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { - next; - } # If not an existing day, go to next - my $bredde_v = 0; - my $bredde_p = 0; - my $bredde_h = 0; - my $bredde_k = 0; - if ( $max_v > 0 ) { - $bredde_v = - int( ( $DayVisits{ $year . $month . $day } || 0 ) / - $max_v * $BarHeight ) + 1; - } - if ( $max_h > 0 ) { - $bredde_p = - int( ( $DayPages{ $year . $month . $day } || 0 ) / - $max_h * $BarHeight ) + 1; - } - if ( $max_h > 0 ) { - $bredde_h = - int( ( $DayHits{ $year . $month . $day } || 0 ) / - $max_h * $BarHeight ) + 1; - } - if ( $max_k > 0 ) { - $bredde_k = - int( ( $DayBytes{ $year . $month . $day } || 0 ) / - $max_k * $BarHeight ) + 1; - } - print "\n"; + + $bars .= ''; + } - print ""; - # Show average value bars - print "'; + + if ( $ShowDaysOfMonthStats =~ /V/i ) { + $data = $DayVisits{ $year . $month . $day } ? $DayVisits{ $year . $month . $day } : '0'; + $tableData .= HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); } - if ( $max_h > 0 ) { - $bredde_p = int( $average_p / $max_h * $BarHeight ) + 1; + + if ( $ShowDaysOfMonthStats =~ /P/i ) { + $data = $DayPages{ $year . $month . $day } ? $DayPages{ $year . $month . $day } : '0'; + $tableData .= HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); } - if ( $max_h > 0 ) { - $bredde_h = int( $average_h / $max_h * $BarHeight ) + 1; + + if ( $ShowDaysOfMonthStats =~ /H/i ) { + $data = $DayHits{ $year . $month . $day } ? $DayHits{ $year . $month . $day } : '0'; + $tableData .= HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); } - if ( $max_k > 0 ) { - $bredde_k = int( $average_k / $max_k * $BarHeight ) + 1; + + if ( $ShowDaysOfMonthStats =~ /B/i ) { + $data = $DayBytes{ $year . $month . $day } ? $DayBytes{ $year . $month . $day } : '0'; + $tableData .= HTMLDataCellWithBar('b', $data, Format_Bytes($data), $max_k); + } + + $tableData .= ''; + + } + + # render Graph Plugin + if ($graphPlugin == 1) { + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) + { + my $function = "ShowGraph_$pluginname"; + &$function( + "$title", "daysofmonth", + $ShowDaysOfMonthStats, \@blocklabel, + \@vallabel, \@valcolor, + \@valmax, \@valtotal, + \@valaverage, \@valdata + ); } - $average_v = sprintf( "%.2f", $average_v ); - $average_p = sprintf( "%.2f", $average_p ); - $average_h = sprintf( "%.2f", $average_h ); - $average_k = sprintf( "%.2f", $average_k ); + + } else { + + print '
    "; + + } else { + + $bars .= ''; + if ( $ShowDaysOfMonthStats =~ /V/i ) { - print HtmlBarV('v', $bredde_v, "$Message[10]: " . int( $DayVisits{ $year . $month . $day } || 0 )); + + $height = ( $max_v > 0 ) ? int( ( $DayVisits{ $year . $month . $day } || 0 ) / $max_v * $BarHeight ) : 0; + + $bars .= HtmlBarV('v', $height, "$Message[10]: " . int( $DayVisits{ $year . $month . $day } || 0 )); } + if ( $ShowDaysOfMonthStats =~ /P/i ) { - print HtmlBarV('p', $bredde_p, "$Message[56]: " . int( $DayPages{ $year . $month . $day } || 0 )); + + $height = ($max_h > 0 ) ? int( ( $DayPages{ $year . $month . $day } || 0 ) / $max_h * $BarHeight ) : 0; + + $bars .= HtmlBarV('p', $height, "$Message[56]: " . int( $DayPages{ $year . $month . $day } || 0 )); } + if ( $ShowDaysOfMonthStats =~ /H/i ) { - print HtmlBarV('h', $bredde_h, "$Message[57]: " . int( $DayHits{ $year . $month . $day } || 0 )); + + $height = ( $max_h > 0 ) ? int( ( $DayHits{ $year . $month . $day } || 0 ) / $max_h * $BarHeight ) : 0; + + $bars .= HtmlBarV('h', $height, "$Message[57]: " . int( $DayHits{ $year . $month . $day } || 0 )); + } if ( $ShowDaysOfMonthStats =~ /B/i ) { - print HtmlBarV('k', $bredde_k, "$Message[75]: " . Format_Bytes( $DayBytes{ $year . $month . $day } )); + + $height = ( $max_k > 0 ) ? int( ( $DayBytes{ $year . $month . $day } || 0 ) / $max_k * $BarHeight ) : 0; + + $bars .= HtmlBarV('k', $height, "$Message[75]: " . Format_Bytes( $DayBytes{ $year . $month . $day } )); } - print " "; - my $bredde_v = 0; - my $bredde_p = 0; - my $bredde_h = 0; - my $bredde_k = 0; - if ( $max_v > 0 ) { - $bredde_v = int( $average_v / $max_v * $BarHeight ) + 1; + $tableData .= '' + . '' + . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ) + . $day . ' ' . $MonthNumLib{$MonthRequired} + . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ) + . '
    '; + print ''; + print $bars . ''; + + # Show average value bars + print '\n"; - print "\n"; + + print '' . ''; # Show lib for day print ""; - foreach - my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) - { + foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; @@ -14356,20 +14353,17 @@ sub HTMLMainDaily{ . ">$Message[96]\n"; print "\n"; print "
     '; + if ( $ShowDaysOfMonthStats =~ /V/i ) { - print HtmlBarV('v', $bredde_v, "$Message[10]: $average_v"); + + $height = ($max_v > 0 ) ? int( $average_v / $max_v * $BarHeight ) : 0; + + print HtmlBarV('v', $height, "$Message[10]: $average_v"); } + if ( $ShowDaysOfMonthStats =~ /P/i ) { - print HtmlBarV('p', $bredde_p, "$Message[56]: $average_p"); + + $height = ($max_p > 0 ) ? int( $average_p / $max_p * $BarHeight ) : 0; + + print HtmlBarV('p', $height, "$Message[56]: $average_p"); } + if ( $ShowDaysOfMonthStats =~ /H/i ) { - print HtmlBarV('h', $bredde_h, "$Message[57]: $average_h"); + + $height = ($max_h > 0 ) ? int( $average_h / $max_h * $BarHeight ) : 0; + + print HtmlBarV('h', $height, "$Message[57]: $average_h"); } + if ( $ShowDaysOfMonthStats =~ /B/i ) { - print HtmlBarV('k', $bredde_k, "$Message[75]: $average_k"); + + $height = ($max_k > 0 ) ? int( $average_k / $max_k * $BarHeight ) : 0; + + print HtmlBarV('b', $height, "$Message[75]: $average_k"); } - print "
    \n"; - } + } # Show data array for days if ($AddDataArrayShowDaysOfMonthStats) { - my $data = ''; - print ''; #header print HTMLDataTableHeader($MonthNumLib{$MonthRequired} . ' ' . $YearRequired, $ShowDaysOfMonthStats); #footer - # Total row my (%sums) = ( 'v'=> Format_Number($total_v), @@ -14377,7 +14371,6 @@ sub HTMLMainDaily{ 'h'=> Format_Number($total_h), 'b'=> Format_Bytes($total_k) ); - # Average row my (%averages) = ( 'v'=> Format_Number(int($average_v)), @@ -14389,52 +14382,7 @@ sub HTMLMainDaily{ print HTMLDataTableFooter($Message[102], $ShowDaysOfMonthStats, \%sums, $Message[96], \%averages); # body - print ''; - - foreach - my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) - { - $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; - my $year = $1; - my $month = $2; - my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { - next; - } # If not an existing day, go to next - my $dayofweekcursor = DayOfWeek( $day, $month, $year ); - - print ''; - - print ''; - - if ( $ShowDaysOfMonthStats =~ /V/i ) { - $data = $DayVisits{ $year . $month . $day } ? $DayVisits{ $year . $month . $day } : '0'; - print HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); - } - - if ( $ShowDaysOfMonthStats =~ /P/i ) { - $data = $DayPages{ $year . $month . $day } ? $DayPages{ $year . $month . $day } : '0'; - print HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); - } - - if ( $ShowDaysOfMonthStats =~ /H/i ) { - $data = $DayHits{ $year . $month . $day } ? $DayHits{ $year . $month . $day } : '0'; - print HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); - } - - if ( $ShowDaysOfMonthStats =~ /B/i ) { - $data = $DayBytes{ $year . $month . $day } ? $DayBytes{ $year . $month . $day } : '0'; - print HTMLDataCellWithBar('b', $data, Format_Bytes($data), $max_k); - } - - print ''; - } - - print '
    ' - . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ) - . $day . ' ' . $MonthNumLib{$MonthRequired} - . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ) - . '
    '; + print '' . $tableData . ''; } From bcc9e1b9f29e24722716f17b76bccd92b227c184 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 06:26:05 +0200 Subject: [PATCH 022/152] Fix countries resolve the width problems. set flexible, new design. --- wwwroot/cgi-bin/awstats.pl | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index a2189c3c4..262d08f00 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -938,7 +938,7 @@ sub html_head { print <'; #header - print HTMLDataTableHeader($Message[4], $ShowDaysOfWeekStats); + print HTMLDataTableHeader('', $ShowDaysOfWeekStats); #body print ''; @@ -14919,7 +14919,7 @@ sub HTMLMainHours{ print ''; #header - print HTMLDataTableHeader($Message[20], $ShowHoursStats); + print HTMLDataTableHeader('', $ShowHoursStats); #body for ( my $ix = 0 ; $ix <= 11 ; $ix++ ) { @@ -14952,7 +14952,7 @@ sub HTMLMainHours{ print '
    '; #header - print HTMLDataTableHeader($Message[20], $ShowHoursStats); + print HTMLDataTableHeader('', $ShowHoursStats); #body print ''; @@ -15120,12 +15120,14 @@ sub HTMLMainCountries{ # } # } + print "\n"; + print "\n"; } From 9c74eabef43ecb804a26e5af485c4c939ac55508 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 06:44:21 +0200 Subject: [PATCH 023/152] Fix bars the 'bk' problem :) --- wwwroot/cgi-bin/awstats.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 262d08f00..19e05da53 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14591,7 +14591,7 @@ sub HTMLMainDaysofWeek{ print HtmlBarV('h', $bredde_h, "$Message[57]: $avg_dayofweek_h[$_]"); } if ( $ShowDaysOfWeekStats =~ /B/i ) { - print HtmlBarV('k', $bredde_k, "$Message[75]: $avg_dayofweek_k[$_]"); + print HtmlBarV('b', $bredde_k, "$Message[75]: $avg_dayofweek_k[$_]"); } print "\n"; } @@ -14884,7 +14884,7 @@ sub HTMLMainHours{ print HtmlBarV('h', $bredde_h, "$Message[57]: " . int( $_time_h[$ix] )); } if ( $ShowHoursStats =~ /B/i ) { - print HtmlBarV('k', $bredde_k, "$Message[75]: " . int( $_time_k[$ix] )); + print HtmlBarV('b', $bredde_k, "$Message[75]: " . int( $_time_k[$ix] )); } print "\n"; } From d1d5a5d61d59a4a2fcd1572090cad767a430c59f Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 07:02:03 +0200 Subject: [PATCH 024/152] Fix space/maj --- wwwroot/cgi-bin/lang/awstats-fr.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index d955ec4c9..05debd064 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -26,7 +26,7 @@ message21=Navigateurs message22= message23=Origine/Referer message24=Jamais mis à jour (Voir 'Build/Update', page awstats_setup.html) -message25=Domaines/pays visiteurs +message25=Domaines / Pays visiteurs message26=des hôtes message27=des pages message28=pages différentes From d35b608d7be1920a3084970916538c5121c14594 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 07:10:48 +0200 Subject: [PATCH 025/152] Removing the wrapping table of countries --- wwwroot/cgi-bin/awstats.pl | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 19e05da53..597024a81 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -951,6 +951,7 @@ sub html_head { a:visited{ color: #$color_link; text-decoration: none; } a:hover{ color: #$color_hover; text-decoration: underline; } .multi-data-table { display: flex; gap: 5dvw; flex-wrap: wrap; justify-content: center } +.multi-data-table.worldmap{ background-color: #4477DD;position: relative; } .data-table { border-spacing: 0 2px } .data-table tbody tr { transition: background 0.5s; transition: transform 0.2s ease-out } .data-table tbody tr:hover { background: rgba(0,0,0,0.2); transform: scale(1.05) translateX(2px); } @@ -988,6 +989,7 @@ sub html_head { .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } #worldmap{ width: 50dvw; margin-top: 1dvh; background-color: #4477DD; } +.title-map{ position:absolute; top:5px; left:5px; color: #FFFFFF; } .country { text-transform: uppercase; font-weight: 700; } .lighted-land{ fill: var(--aws-color-u); var(--dark-color); stroke-width: 0.5; fill-rule: evenodd;} .oceanxx{ fill: #4477DD !important; stroke-width: 0 !important; } @@ -15061,13 +15063,13 @@ sub HTMLMainCountries{ if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $title = "$title   -   $Message[179]"); } - &tab_head( "$title", 19, 0, 'countries' ); + # &tab_head( "$title", 19, 0, 'countries' ); foreach ( values %_domener_u ) { if ( $_ > $max_u ) { $max_u = $_; } @@ -15120,9 +15122,10 @@ sub HTMLMainCountries{ # } # } - print "\n"; - print "\n"; + # print "\n"; + # print "\n"; } From 44bc1247ccf8f4844b6fb7ebb4a8124de5626766 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 18:43:06 +0200 Subject: [PATCH 026/152] Cleaning Months process - rearrange code : declarations => datas manipulations => rendering - avoid loops : days are now parsed only twice - Fix also average for days of month table. --- wwwroot/cgi-bin/awstats.pl | 519 ++++++++++++++++--------------------- 1 file changed, 219 insertions(+), 300 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 597024a81..d02354394 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -939,7 +939,7 @@ sub html_head { body { font: 0.75rem sans-serif, system-ui; background-color: #$color_Background; margin-top: 0; margin-bottom: 0; } b, .aws_title, th.aws{ font-weight: 700 } th{ border-color: #$color_TableBorder; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 1px; padding: 1px 2px 1px 1px; color: #$color_titletext; } -td{ border-color: #$color_TableBorder; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 1px; text-align:center; color: #$color_text; } +td{ border-color: #$color_TableBorder; border-left-width: 0px; border-right-width: 1px; border-top-width: 0px; border-bottom-width: 1px; text-align:center; } .aws_blank { font-size: 0.9rem; background-color: #$color_Background; text-align: center; margin-bottom: 0; padding: 1px 1px 1px 1px; } .aws_title{ font-size: 0.9rem; background-color: #$color_TableBGTitle; text-align: center; margin-top: 0; margin-bottom: 0; padding: 1px 1px 1px 1px; color: #$color_TableTitle; } .aws_data{ background-color: #$color_Background; border-top-width: 1px; border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; } @@ -951,7 +951,7 @@ sub html_head { a:visited{ color: #$color_link; text-decoration: none; } a:hover{ color: #$color_hover; text-decoration: underline; } .multi-data-table { display: flex; gap: 5dvw; flex-wrap: wrap; justify-content: center } -.multi-data-table.worldmap{ background-color: #4477DD;position: relative; } +.multi-data-table.worldmap{ background-color: #4477DD;position: relative; color: #FFFFFF } .data-table { border-spacing: 0 2px } .data-table tbody tr { transition: background 0.5s; transition: transform 0.2s ease-out } .data-table tbody tr:hover { background: rgba(0,0,0,0.2); transform: scale(1.05) translateX(2px); } @@ -963,6 +963,7 @@ sub html_head { .data-table .data-table-sum { font-size : 1.2em } .data-table .title { font-size: 2em } .currentday{ font-weight: 900 } +.bar-table tr:first-child td { vertical-align: bottom; } .bar{ } .bar-horizontal{ height: 4px } .bar-vertical{ display: inline-block; width: 4px; } @@ -989,9 +990,10 @@ sub html_head { .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } #worldmap{ width: 50dvw; margin-top: 1dvh; background-color: #4477DD; } -.title-map{ position:absolute; top:5px; left:5px; color: #FFFFFF; } +.title-map{ position:absolute; top:5px; left:5px; } .country { text-transform: uppercase; font-weight: 700; } -.lighted-land{ fill: var(--aws-color-u); var(--dark-color); stroke-width: 0.5; fill-rule: evenodd;} +.landxx{ fill: rgba(128, 86, 86, 1) !important } +.lighted-land{ fill: var(--aws-color-v) !important; stroke-width: 2 !important; fill-rule: evenodd;} .oceanxx{ fill: #4477DD !important; stroke-width: 0 !important; } EOF } @@ -13787,26 +13789,44 @@ sub HTMLDataCellWithBar{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainMonthly{ + if ($Debug) { debug( "ShowMonthStats", 2 ); } - print "$Center 
    \n"; + my $title = "$Message[162]"; - &tab_head( "$title", 0, 0, 'month' ); - print "
    ' + . ''; + + if ( $ShowMonthStats =~ /U/i ) { + + $data = int($MonthUnique{ $YearRequired . $monthix } || 0 ); + + $height = ($max_u> 0) ? $data / $max_u * $BarHeight : 0; + + $bars .= HtmlBarV('u', $height, "$Message[11]: " . $data); + + $tableData .= HTMLDataCellWithBar('u', $data, Format_Number($data), $max_u); + } + + if ( $ShowMonthStats =~ /V/i ) { + + $data = int($MonthVisits{ $YearRequired . $monthix } || 0 ); + + $height = ($max_v > 0) ? $data / $max_v * $BarHeight : 0; + + $bars .= HtmlBarV('v', $height, "$Message[10]: " . ( $MonthVisits{ $YearRequired . $monthix } || 0 )); + + $tableData .= HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); + } + + if ( $ShowMonthStats =~ /P/i ) { + + $data = int($MonthPages{ $YearRequired . $monthix } || 0 ); + + $height = ($max_p > 0) ? $data / $max_p * $BarHeight : 0; + + $bars .= HtmlBarV('p', $height, "$Message[56]: " . $data); + + $tableData .= HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); + } + + if ( $ShowMonthStats =~ /H/i ) { + + $data = int($MonthHits{ $YearRequired . $monthix } || 0 ); + + $height = ($max_h > 0) ? $data / $max_h * $BarHeight : 0; + + $bars .= HtmlBarV('h', $height, "$Message[57]: " . $data); + + $tableData .= HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); + } + + if ( $ShowMonthStats =~ /B/i ) { + + $data = int($MonthBytes{ $YearRequired . $monthix } || 0 ); + + $height = ($max_k > 0) ? $data / $max_k * $BarHeight : 0; + + $bars .= HtmlBarV('b', $height, "$Message[75]: " . Format_Bytes($data)); + + $tableData .= HTMLDataCellWithBar('b', $data, Format_Bytes($data), $max_k); + } + + $bars .= ''; + $tableData .= ''; + } + # Define average $average_u = sprintf( "%.2f", $total_u / $not_empty_months ); $average_v = sprintf( "%.2f", $total_v / $not_empty_months ); @@ -13832,161 +13941,47 @@ sub HTMLMainMonthly{ $average_h = sprintf( "%.2f", $total_h / $not_empty_months ); $average_k = sprintf( "%.2f", $total_k / $not_empty_months ); + print "$Center 
    \n"; + &tab_head( "$title", 0, 0, 'month' ); + print "' . '
    "; + print '
    '; - print '
    '; + print '
    '; print ''; #header - print HTMLDataTableHeader($Message[148], $ShowDomainsStats); + print HTMLDataTableHeader('', $ShowDomainsStats); # body print ''; @@ -15187,7 +15189,7 @@ sub HTMLMainCountries{ } - print "\n"; + print ''; $total_u += $_domener_u; $total_v += $_domener_v; @@ -15217,10 +15219,13 @@ sub HTMLMainCountries{ print (( $ShowDomainsStats =~ /B/i ) ? HTMLDataCellWithBar('b', $rest_k , Format_Bytes($rest_k), $TotalBytes) : ''); - print "\n"; + print ''; print '
    '; print '
    '; + + print "
    "; + # print "
    "; - print '
    '; + print '
    '; + print '
    ' . $title . '
    '; print '
    '; print ''; @@ -15224,8 +15227,8 @@ sub HTMLMainCountries{ print '
    '; print '
    '; - print "
    \n"; - print "
    \n"; + my $graphPlugin = 0; my $not_empty_months = 0; my $average_nb = my $average_u = my $average_v = my $average_p = 0; my $average_h = my $average_k = 0; my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $max_u = my $max_v = my $max_p = my $max_h = my $max_k = 1; + my $height = 0; + my $bars = ''; + my $data = ''; + my $tableData = ''; + + my @blocklabel = (); + my @vallabel = ( + "$Message[11]", "$Message[10]", + "$Message[56]", "$Message[57]", + "$Message[75]" + ); + my @valcolor = ( "$color_u", "$color_v", "$color_p", "$color_h", "$color_k" ); + my @valmax = ( $max_v, $max_v, $max_h, $max_h, $max_k ); + my @valtotal = ( $total_u, $total_v, $total_p, $total_h, $total_k ); + my @valaverage = (); + my @valdata = (); + my $xx = 0; + + if (%{ $PluginsLoaded{'ShowGraph'} }) { + $graphPlugin = 1; + } + # Define total and max - for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { + for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) + { my $monthix = sprintf( "%02s", $ix ); - - if($MonthHits{ $YearRequired . $monthix } > 0){ - $not_empty_months++; - } $total_u += $MonthUnique{ $YearRequired . $monthix } || 0; $total_v += $MonthVisits{ $YearRequired . $monthix } || 0; @@ -13825,6 +13845,95 @@ sub HTMLMainMonthly{ $max_k = (( $MonthBytes{ $YearRequired . $monthix } || 0 ) > $max_k ) ? $MonthBytes{ $YearRequired . $monthix } : $max_k; } + # Set table datas + for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) + { + my $monthix = sprintf( "%02s", $ix ); + + if($MonthHits{ $YearRequired . $monthix } > 0){ + $not_empty_months++; + } + + if ($graphPlugin == 1) { + + $valdata[ $xx++ ] = $MonthUnique{ $YearRequired . $monthix } || 0; + $valdata[ $xx++ ] = $MonthVisits{ $YearRequired . $monthix } || 0; + $valdata[ $xx++ ] = $MonthPages{ $YearRequired . $monthix } || 0; + $valdata[ $xx++ ] = $MonthHits{ $YearRequired . $monthix } || 0; + $valdata[ $xx++ ] = $MonthBytes{ $YearRequired . $monthix } || 0; + + push @blocklabel, "$MonthNumLib{$monthix}\n$YearRequired"; + + } + + $bars .= '
    '; + + $tableData .= '
    ' + . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ) + . $MonthNumLib{$monthix} + . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ) + . '
    \n"; + print "
    \n"; + # Show bars for month - my $graphdone=0; - foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) - { - my @blocklabel = (); - for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { - my $monthix = sprintf( "%02s", $ix ); - push @blocklabel, - "$MonthNumLib{$monthix}\n$YearRequired"; - } - my @vallabel = ( - "$Message[11]", "$Message[10]", - "$Message[56]", "$Message[57]", - "$Message[75]" - ); - my @valcolor = - ( "$color_u", "$color_v", "$color_p", "$color_h", - "$color_k" ); - my @valmax = ( $max_v, $max_v, $max_h, $max_h, $max_k ); - my @valtotal = - ( $total_u, $total_v, $total_p, $total_h, $total_k ); - my @valaverage = (); - - #my @valaverage=($average_v,$average_p,$average_h,$average_k); - my @valdata = (); - my $xx = 0; - for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { - my $monthix = sprintf( "%02s", $ix ); - $valdata[ $xx++ ] = $MonthUnique{ $YearRequired . $monthix } - || 0; - $valdata[ $xx++ ] = $MonthVisits{ $YearRequired . $monthix } - || 0; - $valdata[ $xx++ ] = $MonthPages{ $YearRequired . $monthix } - || 0; - $valdata[ $xx++ ] = $MonthHits{ $YearRequired . $monthix } - || 0; - $valdata[ $xx++ ] = $MonthBytes{ $YearRequired . $monthix } - || 0; - } - - my $function = "ShowGraph_$pluginname"; - &$function( - "$title", "month", - $ShowMonthStats, \@blocklabel, - \@vallabel, \@valcolor, - \@valmax, \@valtotal, - \@valaverage, \@valdata - ); - $graphdone=1; - } - if (! $graphdone) - { - print ''; - print ""; - print "\n"; - for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { - my $monthix = sprintf( "%02s", $ix ); - my $bredde_u = 0; - my $bredde_v = 0; - my $bredde_p = 0; - my $bredde_h = 0; - my $bredde_k = 0; - if ( $max_v > 0 ) { - $bredde_u = - int( - ( $MonthUnique{ $YearRequired . $monthix } || 0 ) / - $max_v * $BarHeight ) + 1; - } - if ( $max_v > 0 ) { - $bredde_v = - int( - ( $MonthVisits{ $YearRequired . $monthix } || 0 ) / - $max_v * $BarHeight ) + 1; - } - if ( $max_h > 0 ) { - $bredde_p = - int( - ( $MonthPages{ $YearRequired . $monthix } || 0 ) / - $max_h * $BarHeight ) + 1; - } - if ( $max_h > 0 ) { - $bredde_h = - int( ( $MonthHits{ $YearRequired . $monthix } || 0 ) / - $max_h * $BarHeight ) + 1; - } - if ( $max_k > 0 ) { - $bredde_k = - int( - ( $MonthBytes{ $YearRequired . $monthix } || 0 ) / - $max_k * $BarHeight ) + 1; - } - print "\n"; + if ($graphPlugin == 1) { + + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) + { + my @valaverage=($average_v,$average_p,$average_h,$average_k); + + my $function = "ShowGraph_$pluginname"; + &$function( + "$title", "month", + $ShowMonthStats, \@blocklabel, + \@vallabel, \@valcolor, + \@valmax, \@valtotal, + \@valaverage, \@valdata + ); } - print ""; - print "\n"; - # Show lib for month - print ""; + } else { - #if (!$StaticLinks) { - # print ""; - #} - #else { - print ""; + print '
     "; - if ( $ShowMonthStats =~ /U/i ) { - print HtmlBarV('u', $bredde_u, "$Message[11]: " . ( $MonthUnique{ $YearRequired . $monthix } || 0 )); - } - if ( $ShowMonthStats =~ /V/i ) { - print HtmlBarV('v', $bredde_v, "$Message[10]: " . ( $MonthVisits{ $YearRequired . $monthix } || 0 )); - } - if ( $ShowMonthStats =~ /P/i ) { - print HtmlBarV('p', $bredde_p, "$Message[56]: " . ( $MonthPages{ $YearRequired . $monthix } || 0 )); - } - if ( $ShowMonthStats =~ /H/i ) { - print HtmlBarV('h', $bredde_h, "$Message[57]: " . ( $MonthHits{ $YearRequired . $monthix } || 0 )); - } - if ( $ShowMonthStats =~ /B/i ) { - print HtmlBarV('k', $bredde_k, "$Message[75]: " . Format_Bytes( $MonthBytes{ $YearRequired . $monthix } || 0 )); - } - print " 
    << 
    ' + . '' + . $bars + . '' + . ''; - # } for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { my $monthix = sprintf( "%02s", $ix ); -# if (!$StaticLinks) { -# print ""; -# } -# else { print ""; - - # } + . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '') + . "$MonthNumLib{$monthix}
    $YearRequired
    " + . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '
    ' : '' ) + . ''; } -# if (!$StaticLinks) { -# print ""; -# } -# else { - print ""; - - # } - print "\n"; - print "
    $MonthNumLib{$monthix}
    $YearRequired
    " - . ( - !$StaticLinks - && $monthix == $nowmonth - && $YearRequired == $nowyear - ? '' - : '' - ); - print "$MonthNumLib{$monthix}
    $YearRequired
    "; - print( !$StaticLinks - && $monthix == $nowmonth - && $YearRequired == $nowyear ? '
    ' : '' ); - print "
    >> 
    \n"; + print '
    '; } # Show data array for month @@ -13998,8 +13993,7 @@ sub HTMLMainMonthly{ print HTMLDataTableHeader($YearRequired, $ShowMonthStats); # footer - - # Average row + # Total row my (%sums) = ( 'u' => Format_Number($total_u), 'v'=> Format_Number($total_v), @@ -14020,52 +14014,7 @@ sub HTMLMainMonthly{ print HTMLDataTableFooter($Message[102], $ShowMonthStats, \%sums, $Message[96], \%averages); # body - print ''; - - for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { - - my $monthix = sprintf( "%02s", $ix ); - my $data = ''; - - print ''; - - print '' - . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ) - . $MonthNumLib{$monthix} - . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ) - . ''; - - if ( $ShowMonthStats =~ /U/i ) { - $data = $MonthUnique{ $YearRequired . $monthix } ? $MonthUnique{ $YearRequired . $monthix } : '0'; - print HTMLDataCellWithBar('u', $data, Format_Number($data), $max_u); - } - - if ( $ShowMonthStats =~ /V/i ) { - $data = $MonthVisits{ $YearRequired . $monthix } ? $MonthVisits{ $YearRequired . $monthix } : '0'; - print HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); - } - - if ( $ShowMonthStats =~ /P/i ) { - $data = $MonthPages{ $YearRequired . $monthix } ? $MonthPages{ $YearRequired . $monthix } : '0'; - print HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); - } - - if ( $ShowMonthStats =~ /H/i ) { - $data = $MonthHits{ $YearRequired . $monthix } ? $MonthHits{ $YearRequired . $monthix } : '0'; - print HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); - } - - if ( $ShowMonthStats =~ /B/i ) { - $data = int( $MonthBytes{ $YearRequired . $monthix } || 0 ); - print HTMLDataCellWithBar('b', $data, Format_Bytes($data), $max_k); - } - - print ''; - } - - print ''; - - print ''; + print '' . $tableData . '' . ''; } print "
    \n"; @@ -14157,11 +14106,7 @@ sub HTMLMainDaily{ my $day = $3; if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next - my $dayofweekcursor = DayOfWeek( $day, $month, $year ); - - if($DayHits{ $year . $month . $day } > 0){ - $not_empty_days++; - } + if($DayHits{ $year . $month . $day } > 0){ $not_empty_days++; } $total_v += $DayVisits{ $year . $month . $day } || 0; $total_p += $DayPages{ $year . $month . $day } || 0; @@ -14175,11 +14120,22 @@ sub HTMLMainDaily{ $max_h = ( ( $DayHits{ $year . $month . $day } || 0 ) > $max_h ) ? $DayHits{ $year . $month . $day } : $max_h; $max_k = ( ( $DayBytes{ $year . $month . $day } || 0 ) > $max_k ) ? $DayBytes{ $year . $month . $day } : $max_k; + } - $average_v = sprintf( "%.2f", $total_v / $not_empty_days ); - $average_p = sprintf( "%.2f", $total_p / $not_empty_days ); - $average_h = sprintf( "%.2f", $total_h / $not_empty_days ); - $average_k = sprintf( "%.2f", $total_k / $not_empty_days ); + $average_v = sprintf( "%.2f", $total_v / $not_empty_days ); + $average_p = sprintf( "%.2f", $total_p / $not_empty_days ); + $average_h = sprintf( "%.2f", $total_h / $not_empty_days ); + $average_k = sprintf( "%.2f", $total_k / $not_empty_days ); + + foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) + { + $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; + my $year = $1; + my $month = $2; + my $day = $3; + if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next + + my $dayofweekcursor = DayOfWeek( $day, $month, $year ); if ($graphPlugin == 1) { @@ -14191,42 +14147,10 @@ sub HTMLMainDaily{ $valdata[ $xx++ ] = $DayHits{ $year . $month . $day } || 0; $valdata[ $xx++ ] = $DayBytes{ $year . $month . $day } || 0; - } else { - - $bars .= ''; - - if ( $ShowDaysOfMonthStats =~ /V/i ) { - - $height = ( $max_v > 0 ) ? int( ( $DayVisits{ $year . $month . $day } || 0 ) / $max_v * $BarHeight ) : 0; - - $bars .= HtmlBarV('v', $height, "$Message[10]: " . int( $DayVisits{ $year . $month . $day } || 0 )); - } - - if ( $ShowDaysOfMonthStats =~ /P/i ) { - - $height = ($max_h > 0 ) ? int( ( $DayPages{ $year . $month . $day } || 0 ) / $max_h * $BarHeight ) : 0; - - $bars .= HtmlBarV('p', $height, "$Message[56]: " . int( $DayPages{ $year . $month . $day } || 0 )); - } - - if ( $ShowDaysOfMonthStats =~ /H/i ) { - - $height = ( $max_h > 0 ) ? int( ( $DayHits{ $year . $month . $day } || 0 ) / $max_h * $BarHeight ) : 0; - - $bars .= HtmlBarV('h', $height, "$Message[57]: " . int( $DayHits{ $year . $month . $day } || 0 )); - - } - if ( $ShowDaysOfMonthStats =~ /B/i ) { - - $height = ( $max_k > 0 ) ? int( ( $DayBytes{ $year . $month . $day } || 0 ) / $max_k * $BarHeight ) : 0; - - $bars .= HtmlBarV('k', $height, "$Message[75]: " . Format_Bytes( $DayBytes{ $year . $month . $day } )); - } - - $bars .= ''; - } + $bars .= ''; + $tableData .= '' . '' . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ) @@ -14235,31 +14159,55 @@ sub HTMLMainDaily{ . ''; if ( $ShowDaysOfMonthStats =~ /V/i ) { - $data = $DayVisits{ $year . $month . $day } ? $DayVisits{ $year . $month . $day } : '0'; + $data = int($DayVisits{ $year . $month . $day } || 0 ); + + $height = ($max_v > 0) ? $data / $max_v * $BarHeight : 0; + + $bars .= HtmlBarV('v', $height, "$Message[10]: " . $data); + $tableData .= HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); } if ( $ShowDaysOfMonthStats =~ /P/i ) { - $data = $DayPages{ $year . $month . $day } ? $DayPages{ $year . $month . $day } : '0'; + $data = int($DayPages{ $year . $month . $day } || 0 ); + + $height = ($max_p > 0) ? $data / $max_p * $BarHeight : 0; + + $bars .= HtmlBarV('p', $height, "$Message[56]: " . $data); + $tableData .= HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); } if ( $ShowDaysOfMonthStats =~ /H/i ) { - $data = $DayHits{ $year . $month . $day } ? $DayHits{ $year . $month . $day } : '0'; + + $data = int($DayHits{ $year . $month . $day } || 0 ); + + $height = ($max_h > 0) ? $data / $max_h * $BarHeight : 0; + + $bars .= HtmlBarV('h', $height, "$Message[57]: " . $data); + $tableData .= HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); } if ( $ShowDaysOfMonthStats =~ /B/i ) { - $data = $DayBytes{ $year . $month . $day } ? $DayBytes{ $year . $month . $day } : '0'; + + $data = int($DayBytes{ $year . $month . $day } || 0 ); + + $height = ($max_k > 0) ? $data / $max_k * $BarHeight : 0; + + $bars .= HtmlBarV('b', $height, "$Message[75]: " . Format_Bytes($data)); + $tableData .= HTMLDataCellWithBar('b', $data, Format_Bytes($data), $max_k); } + $bars .= ''; $tableData .= ''; } # render Graph Plugin if ($graphPlugin == 1) { + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my $function = "ShowGraph_$pluginname"; @@ -14274,87 +14222,59 @@ sub HTMLMainDaily{ } else { - print ''; - print ''; - print $bars . ''; - # Show average value bars - print '' . '' . ''; + $bars .= '' . ''; # Show lib for day - print ""; + $bars .= ""; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { + $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { - next; - } # If not an existing day, go to next + if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next my $dayofweekcursor = DayOfWeek( $day, $month, $year ); - print ""; - print( - !$StaticLinks - && $day == $nowday - && $month == $nowmonth - && $year == $nowyear - ? '' - : '' - ); - print "$day
    " - . $MonthNumLib{$month} - . ""; - print( !$StaticLinks - && $day == $nowday - && $month == $nowmonth - && $year == $nowyear ? '
    ' : '' ); - print "\n"; + $bars .= "" + . (!$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '') + . "$day
    " . $MonthNumLib{$month} . "" + . (!$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '
    ' : '' ) + . "\n"; } - print "
    "; - print "\n"; - print "\n"; - print "
     '; + $bars .= ' '; if ( $ShowDaysOfMonthStats =~ /V/i ) { $height = ($max_v > 0 ) ? int( $average_v / $max_v * $BarHeight ) : 0; - print HtmlBarV('v', $height, "$Message[10]: $average_v"); + $bars .= HtmlBarV('v', $height, "$Message[10]: $average_v"); } if ( $ShowDaysOfMonthStats =~ /P/i ) { $height = ($max_p > 0 ) ? int( $average_p / $max_p * $BarHeight ) : 0; - print HtmlBarV('p', $height, "$Message[56]: $average_p"); + $bars .= HtmlBarV('p', $height, "$Message[56]: $average_p"); } if ( $ShowDaysOfMonthStats =~ /H/i ) { $height = ($max_h > 0 ) ? int( $average_h / $max_h * $BarHeight ) : 0; - print HtmlBarV('h', $height, "$Message[57]: $average_h"); + $bars .= HtmlBarV('h', $height, "$Message[57]: $average_h"); } if ( $ShowDaysOfMonthStats =~ /B/i ) { $height = ($max_k > 0 ) ? int( $average_k / $max_k * $BarHeight ) : 0; - print HtmlBarV('b', $height, "$Message[75]: $average_k"); + $bars .= HtmlBarV('b', $height, "$Message[75]: $average_k"); } - print '
     $Message[96]
    \n"; + + print '' + . '' + . $bars . '' . '' . '' . '
     ' . $Message[96] . '
    '; } # Show data array for days @@ -15013,7 +14933,7 @@ sub HTMLMainCountries{ my $rest_u = my $rest_v = my $rest_p = my $rest_h = my $rest_k = 0; my $max_u = my $max_p = my $max_h = 1; - print "$Center 
    \n"; + print "$Center "; print < @@ -15038,7 +14958,6 @@ sub HTMLMainCountries{ if(country !== null){ [...country.querySelectorAll('.landxx')].forEach(el => { - el.classList.remove('landxx'); el.classList.add('lighted-land'); }); From 5d41ad7364a5edc8548c774ca178af879c194a50 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 21:08:56 +0200 Subject: [PATCH 027/152] Cleaning html headers generator ! "AddHTMLStyles_" PLUGINS : MUST READ COMMENT ! - Remove backslashes from strings - Cleaning code - Set a proper function to render css rules ##### NOTE ##### "AddHTMLStyles_" plugins MUST now RETURN A STRING instead of printing freely to the output. It permits future validation methods (security) and easy refactoring for awstats.pl development. ################ - Start works for weekdays table --- wwwroot/cgi-bin/awstats.pl | 440 ++++++++++++++++++------------------- 1 file changed, 209 insertions(+), 231 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index d02354394..8ba068c6c 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -810,132 +810,129 @@ sub http_head { # Return: None #------------------------------------------------------------------------------ sub html_head { - my $dir = $PageDir ? 'right' : 'left'; + if ($NOHTML) { return; } + if ( scalar keys %HTMLOutput || $PluginMode ) { - my $periodtitle = " ($YearRequired"; - $periodtitle .= ( $MonthRequired ne 'all' ? "-$MonthRequired" : "" ); - $periodtitle .= ( $DayRequired ne '' ? "-$DayRequired" : "" ); - $periodtitle .= ( $HourRequired ne '' ? "-$HourRequired" : "" ); - $periodtitle .= ")"; + + my $periodtitle = " ($YearRequired" + . ( $MonthRequired ne 'all' ? "-$MonthRequired" : "" ) + . ( $DayRequired ne '' ? "-$DayRequired" : "" ) + . ( $HourRequired ne '' ? "-$HourRequired" : "" ) + . ")"; # Write head section if ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ) { - if ($PageCode) { - print "\n"; - } - else { print "\n"; } - if ( $FrameName ne 'index' ) { - print -"\n"; - } - else { - print -"\n"; - } - print -"\n"; - } - else { - if ( $FrameName ne 'index' ) { - print -"\n"; - } - else { - print -"\n"; - } - print '\n"; - } - print "\n"; - my $endtag = '>'; - if ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ) { - $endtag = ' />'; + print (($PageCode) ? '' : ''); + + print (( $FrameName ne 'index' ) + ? '' + : '' + ); + + print ''; + + } else { + + print (( $FrameName ne 'index' ) + ? '' + : '' + ); + + print ''; + } + + print ''; + + my $endtag = ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ) ? ' />' : '>'; # Affiche tag meta generator - print -"\n" - : "' + : '' . $Message[7] . ' ' . $SiteDomain . $periodtitle . ( $k[0] ? ' - ' . $k[0] : '' ) . ''; + + if ( $FrameName ne 'index' ) { + print (($StyleSheet) ? '' : renderCss()); } - print "$Message[7] $SiteDomain$periodtitle" - . ( $k[0] ? " - " . $k[0] : "" ) - . "\n"; + + print renderJavascript(); + +# les scripts necessaires pour trier avec Tablekit +# print "' +EOF } #------------------------------------------------------------------------------ @@ -1088,32 +1087,6 @@ sub html_end { } } - -#------------------------------------------------------------------------------ -# Function: Return the necessary java scripts -# Parameters: _ -# Input: _ -# Output: _ -# Return: string -#------------------------------------------------------------------------------ -sub renderJavascript { -return < -document.addEventListener("DOMContentLoaded", (d) => { - - [...document.querySelectorAll('.flag')].forEach(el => { - el.textContent = el.dataset.country - .split('') - .map(letter => letter.charCodeAt(0) % 32 + 0x1F1E5) - .map(emojiCode => String.fromCodePoint(emojiCode)) - .join(''); - }); - -}); -' -EOF -} - #------------------------------------------------------------------------------ # Function: Print on stdout tab header of a chart # Parameters: $title $tooltipnb [$width percentage of chart title] @@ -14104,22 +14077,24 @@ sub HTMLMainDaily{ my $year = $1; my $month = $2; my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next + my $date = $year . $month . $day; + + if ( !DateIsValid( $3, $2, $1 ) ) { next; } # If not an existing day, go to next - if($DayHits{ $year . $month . $day } > 0){ $not_empty_days++; } + if($DayHits{ $date } > 0){ $not_empty_days++; } - $total_v += $DayVisits{ $year . $month . $day } || 0; - $total_p += $DayPages{ $year . $month . $day } || 0; - $total_h += $DayHits{ $year . $month . $day } || 0; - $total_k += $DayBytes{ $year . $month . $day } || 0; + $total_v += $DayVisits{ $date } || 0; + $total_p += $DayPages{ $date } || 0; + $total_h += $DayHits{ $date } || 0; + $total_k += $DayBytes{ $date } || 0; - $max_v = ( ( $DayVisits{ $year . $month . $day } || 0 ) > $max_v ) ? $DayVisits{ $year . $month . $day } : $max_v; + $max_v = ( ( $DayVisits{ $date } || 0 ) > $max_v ) ? $DayVisits{ $date } : $max_v; - $max_p = ( ( $DayPages{$year . $month . $day } ||0) > $max_p) ? $DayPages{$year.$month.$day} : $max_p; + $max_p = ( ( $DayPages{$date } ||0) > $max_p) ? $DayPages{$date} : $max_p; - $max_h = ( ( $DayHits{ $year . $month . $day } || 0 ) > $max_h ) ? $DayHits{ $year . $month . $day } : $max_h; + $max_h = ( ( $DayHits{ $date } || 0 ) > $max_h ) ? $DayHits{ $date } : $max_h; - $max_k = ( ( $DayBytes{ $year . $month . $day } || 0 ) > $max_k ) ? $DayBytes{ $year . $month . $day } : $max_k; + $max_k = ( ( $DayBytes{ $date } || 0 ) > $max_k ) ? $DayBytes{ $date } : $max_k; } $average_v = sprintf( "%.2f", $total_v / $not_empty_days ); @@ -14133,19 +14108,21 @@ sub HTMLMainDaily{ my $year = $1; my $month = $2; my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next + my $date = $year . $month . $day; + + if ( !DateIsValid( $3, $2, $1 ) ) { next; } # If not an existing day, go to next my $dayofweekcursor = DayOfWeek( $day, $month, $year ); if ($graphPlugin == 1) { my $bold = ($day == $nowday && $month == $nowmonth && $year == $nowyear) ? ':' : ''; - my $weekend = (DayOfWeek( $day, $month, $year ) =~ /[06]/) ? '!' : '' ; + my $weekend = ($dayofweekcursor =~ /[06]/) ? '!' : '' ; push @blocklabel, "$day\n$MonthNumLib{$month}$weekend$bold"; - $valdata[ $xx++ ] = $DayVisits{ $year . $month . $day } || 0; - $valdata[ $xx++ ] = $DayPages{ $year . $month . $day } || 0; - $valdata[ $xx++ ] = $DayHits{ $year . $month . $day } || 0; - $valdata[ $xx++ ] = $DayBytes{ $year . $month . $day } || 0; + $valdata[ $xx++ ] = $DayVisits{ $date } || 0; + $valdata[ $xx++ ] = $DayPages{ $date } || 0; + $valdata[ $xx++ ] = $DayHits{ $date } || 0; + $valdata[ $xx++ ] = $DayBytes{ $date } || 0; } @@ -14159,7 +14136,7 @@ sub HTMLMainDaily{ . ''; if ( $ShowDaysOfMonthStats =~ /V/i ) { - $data = int($DayVisits{ $year . $month . $day } || 0 ); + $data = int($DayVisits{ $date } || 0 ); $height = ($max_v > 0) ? $data / $max_v * $BarHeight : 0; @@ -14169,7 +14146,7 @@ sub HTMLMainDaily{ } if ( $ShowDaysOfMonthStats =~ /P/i ) { - $data = int($DayPages{ $year . $month . $day } || 0 ); + $data = int($DayPages{ $date } || 0 ); $height = ($max_p > 0) ? $data / $max_p * $BarHeight : 0; @@ -14180,7 +14157,7 @@ sub HTMLMainDaily{ if ( $ShowDaysOfMonthStats =~ /H/i ) { - $data = int($DayHits{ $year . $month . $day } || 0 ); + $data = int($DayHits{ $date } || 0 ); $height = ($max_h > 0) ? $data / $max_h * $BarHeight : 0; @@ -14191,7 +14168,7 @@ sub HTMLMainDaily{ if ( $ShowDaysOfMonthStats =~ /B/i ) { - $data = int($DayBytes{ $year . $month . $day } || 0 ); + $data = int($DayBytes{ $date } || 0 ); $height = ($max_k > 0) ? $data / $max_k * $BarHeight : 0; @@ -14263,8 +14240,10 @@ sub HTMLMainDaily{ my $year = $1; my $month = $2; my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { next; } # If not an existing day, go to next - my $dayofweekcursor = DayOfWeek( $day, $month, $year ); + + if ( !DateIsValid( $3, $2, $1 ) ) { next; } # If not an existing day, go to next + + my $dayofweekcursor = DayOfWeek( $3, $2, $1 ); $bars .= "" . (!$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '') . "$day
    " . $MonthNumLib{$month} . "" @@ -14323,57 +14302,56 @@ sub HTMLMainDaily{ sub HTMLMainDaysofWeek{ my $firstdaytocountaverage = shift; my $lastdaytocountaverage = shift; - my $NewLinkParams = shift; - my $NewLinkTarget = shift; + my $NewLinkParams = shift; + my $NewLinkTarget = shift; if ($Debug) { debug( "ShowDaysOfWeekStats", 2 ); } - print "$Center 
    \n"; - my $title = "$Message[91]"; - &tab_head( "$title", 18, 0, 'daysofweek' ); - print ""; - print ""; - print "
    \n"; - - my $max_p = my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 - # Get average value for day of week - my @avg_dayofweek_nb = (); - my @avg_dayofweek_p = (); - my @avg_dayofweek_h = (); - my @avg_dayofweek_k = (); - foreach my $daycursor ( - $firstdaytocountaverage .. $lastdaytocountaverage ) - { - $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; - my $year = $1; - my $month = $2; - my $day = $3; - if ( !DateIsValid( $day, $month, $year ) ) { - next; - } # If not an existing day, go to next - my $dayofweekcursor = DayOfWeek( $day, $month, $year ); - $avg_dayofweek_nb[$dayofweekcursor] - ++; # Increase number of day used to count for this day of week - $avg_dayofweek_p[$dayofweekcursor] += - ( $DayPages{$daycursor} || 0 ); - $avg_dayofweek_h[$dayofweekcursor] += - ( $DayHits{$daycursor} || 0 ); - $avg_dayofweek_k[$dayofweekcursor] += - ( $DayBytes{$daycursor} || 0 ); - } - for (@DOWIndex) { - if ( $avg_dayofweek_nb[$_] ) { - $avg_dayofweek_p[$_] = - $avg_dayofweek_p[$_] / $avg_dayofweek_nb[$_]; - $avg_dayofweek_h[$_] = - $avg_dayofweek_h[$_] / $avg_dayofweek_nb[$_]; - $avg_dayofweek_k[$_] = - $avg_dayofweek_k[$_] / $avg_dayofweek_nb[$_]; - if ( $avg_dayofweek_p[$_] > $max_p ) { $max_p = $avg_dayofweek_p[$_]; } - if ( $avg_dayofweek_h[$_] > $max_h ) { $max_h = $avg_dayofweek_h[$_]; } - if ( $avg_dayofweek_k[$_] > $max_k ) { $max_k = $avg_dayofweek_k[$_]; } - } - else { + my $title = "$Message[91]"; + + my $max_p = my $max_h = my $max_k = 0; + my @avg_dayofweek_nb = (); + my @avg_dayofweek_p = (); + my @avg_dayofweek_h = (); + my @avg_dayofweek_k = (); + + print "$Center 
    \n"; + &tab_head( "$title", 18, 0, 'daysofweek' ); + print ""; + print ""; + print "
    \n"; + + foreach my $daycursor ( + $firstdaytocountaverage .. $lastdaytocountaverage ) + { + $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; + my $year = $1; + my $month = $2; + my $day = $3; + + if ( !DateIsValid( $3, $2, $1 ) ) { next; } # If not an existing day, go to next + + my $dayofweekcursor = DayOfWeek( $3, $2, $1 ); + + $avg_dayofweek_nb[$dayofweekcursor]++; # Increase number of day used to count for this day of week + $avg_dayofweek_p[$dayofweekcursor] += ( $DayPages{$daycursor} || 0 ); + $avg_dayofweek_h[$dayofweekcursor] += ( $DayHits{$daycursor} || 0 ); + $avg_dayofweek_k[$dayofweekcursor] += ( $DayBytes{$daycursor} || 0 ); + } + + for (@DOWIndex) { + + if ( $avg_dayofweek_nb[$_] ) { + + $avg_dayofweek_p[$_] = $avg_dayofweek_p[$_] / $avg_dayofweek_nb[$_]; + $avg_dayofweek_h[$_] = $avg_dayofweek_h[$_] / $avg_dayofweek_nb[$_]; + $avg_dayofweek_k[$_] = $avg_dayofweek_k[$_] / $avg_dayofweek_nb[$_]; + + if ( $avg_dayofweek_p[$_] > $max_p ) { $max_p = $avg_dayofweek_p[$_]; } + if ( $avg_dayofweek_h[$_] > $max_h ) { $max_h = $avg_dayofweek_h[$_]; } + if ( $avg_dayofweek_k[$_] > $max_k ) { $max_k = $avg_dayofweek_k[$_]; } + } else { + $avg_dayofweek_p[$_] = "?"; $avg_dayofweek_h[$_] = "?"; $avg_dayofweek_k[$_] = "?"; From 514f60b2b3baaeb69c85a815c8d0703b26f3f463 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 21:47:38 +0200 Subject: [PATCH 028/152] default BarHeight to 75 + borders - remove borders --- wwwroot/cgi-bin/awstats.model.conf | 4 ++-- wwwroot/cgi-bin/awstats.pl | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.model.conf b/wwwroot/cgi-bin/awstats.model.conf index 2e55f4f22..f52550364 100644 --- a/wwwroot/cgi-bin/awstats.model.conf +++ b/wwwroot/cgi-bin/awstats.model.conf @@ -1267,10 +1267,10 @@ LogoLink="https://www.awstats.org" # Value of maximum bar width/height for horizontal/vertical HTML graphics bars. -# Default: 260/90 +# Default: 260/75 # BarWidth = 260 -BarHeight = 90 +BarHeight = 75 # You can ask AWStats to use a particular CSS (Cascading Style Sheet) to diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 8ba068c6c..d525f6dbb 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -931,12 +931,11 @@ sub renderCss { . ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ? "2px" : "1px" ) . " 1px; margin-top: 0px; margin-bottom: 0px; }\n"; - $css .= < Date: Fri, 26 Jul 2024 21:52:35 +0200 Subject: [PATCH 029/152] reset heures au pluriel --- wwwroot/cgi-bin/lang/awstats-fr.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index 05debd064..0e5f95196 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -21,7 +21,7 @@ message16=Trafic message17=Domaines/Pays message18=Visiteurs message19=Pages-URL -message20=Heure +message20=Heures message21=Navigateurs message22= message23=Origine/Referer From 1f94dcb8e65c213cb1a8a6a2a19ec52013ff2ae4 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 22:16:36 +0200 Subject: [PATCH 030/152] Introduce ShowBars option To see or not the tables with vertical bars Default : ShowBar = 1 --- wwwroot/cgi-bin/awstats.model.conf | 5 +++++ wwwroot/cgi-bin/awstats.pl | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.model.conf b/wwwroot/cgi-bin/awstats.model.conf index f52550364..854d4f777 100644 --- a/wwwroot/cgi-bin/awstats.model.conf +++ b/wwwroot/cgi-bin/awstats.model.conf @@ -1265,6 +1265,11 @@ MetaRobot=0 Logo="awstats_logo6.png" LogoLink="https://www.awstats.org" +# This parameter is used to show the vertical HTML graphics bars reports. +# Default: 1 +# +ShowBars=1 + # Value of maximum bar width/height for horizontal/vertical HTML graphics bars. # Default: 260/75 diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index d525f6dbb..35f3af0ba 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -172,7 +172,7 @@ $DatabaseBreak = 'month'; use vars qw/ $DebugMessages $AllowToUpdateStatsFromBrowser $EnableLockForUpdate $DNSLookup $DynamicDNSLookup $AllowAccessFromWebToAuthenticatedUsersOnly - $BarHeight $BarWidth $CreateDirDataIfNotExists $KeepBackupOfHistoricFiles + $ShowBars $BarHeight $BarWidth $CreateDirDataIfNotExists $KeepBackupOfHistoricFiles $NbOfLinesParsed $NbOfLinesDropped $NbOfLinesCorrupted $NbOfLinesComment $NbOfLinesBlank $NbOfOldLines $NbOfNewLines $NbOfLinesShowsteps $NewLinePhase $NbOfLinesForCorruptedLog $PurgeLogFile $ArchiveLogRecords $ShowDropped $ShowCorrupted $ShowUnknownOrigin $ShowDirectOrigin $ShowLinksToWhoIs @@ -190,6 +190,7 @@ $DNSLookup, $DynamicDNSLookup, $AllowAccessFromWebToAuthenticatedUsersOnly, + $ShowBars, $BarHeight, $BarWidth, $CreateDirDataIfNotExists, @@ -2938,6 +2939,7 @@ sub Check_Config { if ( $ShowLinksToWhoIs !~ /[01]/ ) { $ShowLinksToWhoIs = 0; } $Logo ||= 'awstats_logo6.png'; $LogoLink ||= 'https://www.awstats.org'; + if ( $ShowBars !~ /[01]/ ) { $ShowBars = 1; } if ( $BarWidth !~ /^\d+/ || $BarWidth < 1 ) { $BarWidth = 260; } if ( $BarHeight !~ /^\d+/ || $BarHeight < 1 ) { $BarHeight = 90; } $color_Background =~ s/#//g; @@ -13935,7 +13937,7 @@ sub HTMLMainMonthly{ ); } - } else { + } elsif($ShowBars == 1) { print '' . '' @@ -14196,7 +14198,7 @@ sub HTMLMainDaily{ ); } - } else { + } elsif($ShowBars == 1) { # Show average value bars $bars .= '' . '' - . '' + . '' . '' . ( ( $config =~ /U/i ) ? HTMLDataCellWithBar('u', 0, $ref_averages{'u'}, 100) : '' ) . ( ( $config =~ /V/i ) ? HTMLDataCellWithBar('v', 0, $ref_averages{'v'}, 100) : '' ) From b55424f75aecd550a6899a14001f4d8f6e371e06 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 23:51:54 +0200 Subject: [PATCH 032/152] Set some css vars - converting perl color vars in css vars - set a class for header domain name - remove label for domain name - higher font size and bolding for domain name - remove default centered text alignment in tables cell --- wwwroot/cgi-bin/awstats.pl | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 00c8796e5..c3986d9d2 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -916,6 +916,7 @@ sub renderCss { if ( !$StyleSheet ) { $css .= ':root {' + . '--default-page-color: #' . $color_text . ';' . '--aws-color-u: #' . $color_u . ';' . '--aws-color-v: #' . $color_v . ';' . '--aws-color-p: #' . $color_p . ';' @@ -926,6 +927,14 @@ sub renderCss { . '--aws-color-s: #' . $color_s . ';' . '--dark-color: rgba(0,0,0,0.5);' . '--light-color: rgba(255,255,255,0.9);' + . '--a-color: #' . $color_link . ';' + . '--a-visited-color: #' . $color_link . ';' + . '--a-hover-color: #' . $color_hover . ';' + . '--aws-table-border-color: #' . $color_TableBorder . ';' + . '--aws-background-color: #' . $color_Background . ';' + . '--aws-title-text-color: #' . $color_titletext . ';' + . '--aws-table-title-color: #' . $color_TableTitle . ';' + . '--aws-table-title-bgcolor: #' . $color_TableBGTitle . ';' . '}'; $css .= ".aws_border { border-collapse: collapse; background-color: #$color_TableBG; padding: 1px 1px " @@ -933,20 +942,21 @@ sub renderCss { . " 1px; margin-top: 0px; margin-bottom: 0px; }\n"; $css .= <"; } else { - print -""; + print ''; } # Logo and flags From 375a0bbff833ac35dc25114733de22c839aa0eec Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 00:52:26 +0200 Subject: [PATCH 033/152] Refactoring bar system --- wwwroot/cgi-bin/awstats.pl | 248 +++++++++++-------------------------- 1 file changed, 71 insertions(+), 177 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index c3986d9d2..fd22832e1 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -8407,7 +8407,7 @@ sub Format_Number { # Parameters: type, width, alt # Input: None # Output: None -# Return: The bar +# Return: string #------------------------------------------------------------------------------ sub HtmlBarH { my $type = shift || ''; @@ -8419,19 +8419,48 @@ sub HtmlBarH { #------------------------------------------------------------------------------ # Function: Return Vertical Bar -# Parameters: type, height -# Input: None -# Output: None -# Return: The bar +# Parameters: string $type, int $data, string $formattedData, int $max, string $title +# Input: None +# Output: None +# Return: string #------------------------------------------------------------------------------ -sub HtmlBarV { +sub HtmlBar { my $type = shift || ''; - my $height = shift || 0; - my $alt = shift || ''; + my $data = shift; + my $formattedData = shift; + my $max = shift; + my $title = shift || ''; + my $height = ($max > 0) ? int( ( ( $data || 0 ) / $max ) * $BarHeight ): 0; - return '
    '; -} + if($data > 0 && $height < 1){ + $height = 1; + } + + return '
    '; +} +#------------------------------------------------------------------------------ +# Function: Return data cell with percentage bar +# Parameters: string $type = 'u' | 'v' | 'p' | 'h' | 'b', +# int $data, string | int $formattedData, int $max +# Output: _ +# Return: string +#------------------------------------------------------------------------------ +sub HTMLDataCellWithBar{ + my $type = shift; + my $data = shift; + my $formattedData = shift; + my $max = shift; + my $percentage = int( ( ( $data || 0 ) / $max ) * $BarHeight ); + + if($data > 0 && $percentage < 1){ + $percentage = 1; + } + + return '
    '; +} #------------------------------------------------------------------------------ # Function: Return " alt=string title=string" @@ -13746,25 +13775,6 @@ sub HTMLDataTableHeader{ . ''; } -#------------------------------------------------------------------------------ -# Function: Return data cell with percentage bar -# Parameters: string $type = 'u' | 'v' | 'p' | 'h' | 'b', -# int $data, string | int $formattedData, int $max -# Output: _ -# Return: string (html) -#------------------------------------------------------------------------------ -sub HTMLDataCellWithBar{ - my $type = shift; - my $data = shift; - my $formattedData = shift; - my $max = shift; - my $percentage = int( ( ( $data || 0 ) / $max ) * $BarHeight ); - - return ''; -} - #------------------------------------------------------------------------------ # Function: Prints the Monthly section on the main page # Parameters: _ @@ -13863,9 +13873,7 @@ sub HTMLMainMonthly{ $data = int($MonthUnique{ $YearRequired . $monthix } || 0 ); - $height = ($max_u> 0) ? $data / $max_u * $BarHeight : 0; - - $bars .= HtmlBarV('u', $height, "$Message[11]: " . $data); + $bars .= HtmlBar('u', $data, Format_Number($data), $max_u, $Message[11]); $tableData .= HTMLDataCellWithBar('u', $data, Format_Number($data), $max_u); } @@ -13874,10 +13882,8 @@ sub HTMLMainMonthly{ $data = int($MonthVisits{ $YearRequired . $monthix } || 0 ); - $height = ($max_v > 0) ? $data / $max_v * $BarHeight : 0; - - $bars .= HtmlBarV('v', $height, "$Message[10]: " . ( $MonthVisits{ $YearRequired . $monthix } || 0 )); - + $bars .= HtmlBar('v', $data, Format_Number($data), $max_v, $Message[10]); + $tableData .= HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); } @@ -13885,9 +13891,7 @@ sub HTMLMainMonthly{ $data = int($MonthPages{ $YearRequired . $monthix } || 0 ); - $height = ($max_p > 0) ? $data / $max_p * $BarHeight : 0; - - $bars .= HtmlBarV('p', $height, "$Message[56]: " . $data); + $bars .= HtmlBar('p', $data, Format_Number($data), $max_p, $Message[56]); $tableData .= HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); } @@ -13896,9 +13900,7 @@ sub HTMLMainMonthly{ $data = int($MonthHits{ $YearRequired . $monthix } || 0 ); - $height = ($max_h > 0) ? $data / $max_h * $BarHeight : 0; - - $bars .= HtmlBarV('h', $height, "$Message[57]: " . $data); + $bars .= HtmlBar('h', $data, Format_Number($data), $max_h, $Message[57]); $tableData .= HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); } @@ -13907,9 +13909,7 @@ sub HTMLMainMonthly{ $data = int($MonthBytes{ $YearRequired . $monthix } || 0 ); - $height = ($max_k > 0) ? $data / $max_k * $BarHeight : 0; - - $bars .= HtmlBarV('b', $height, "$Message[75]: " . Format_Bytes($data)); + $bars .= HtmlBar('b', $data, Format_Bytes($data), $max_k, $Message[75]); $tableData .= HTMLDataCellWithBar('b', $data, Format_Bytes($data), $max_k); } @@ -14149,19 +14149,15 @@ sub HTMLMainDaily{ if ( $ShowDaysOfMonthStats =~ /V/i ) { $data = int($DayVisits{ $date } || 0 ); - $height = ($max_v > 0) ? $data / $max_v * $BarHeight : 0; - - $bars .= HtmlBarV('v', $height, "$Message[10]: " . $data); - + $bars .= HtmlBar('v', $data, Format_Number($data), $max_v, $Message[10]); + $tableData .= HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); } if ( $ShowDaysOfMonthStats =~ /P/i ) { $data = int($DayPages{ $date } || 0 ); - $height = ($max_p > 0) ? $data / $max_p * $BarHeight : 0; - - $bars .= HtmlBarV('p', $height, "$Message[56]: " . $data); + $bars .= HtmlBar('p', $data, Format_Number($data), $max_p, $Message[56]); $tableData .= HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); } @@ -14170,9 +14166,7 @@ sub HTMLMainDaily{ $data = int($DayHits{ $date } || 0 ); - $height = ($max_h > 0) ? $data / $max_h * $BarHeight : 0; - - $bars .= HtmlBarV('h', $height, "$Message[57]: " . $data); + $bars .= HtmlBar('h', $data, Format_Number($data), $max_h, $Message[57]); $tableData .= HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); } @@ -14181,10 +14175,8 @@ sub HTMLMainDaily{ $data = int($DayBytes{ $date } || 0 ); - $height = ($max_k > 0) ? $data / $max_k * $BarHeight : 0; + $bars .= HtmlBar('b', $data, Format_Bytes($data), $max_k, $Message[75]); - $bars .= HtmlBarV('b', $height, "$Message[75]: " . Format_Bytes($data)); - $tableData .= HTMLDataCellWithBar('b', $data, Format_Bytes($data), $max_k); } @@ -14211,37 +14203,12 @@ sub HTMLMainDaily{ } elsif($ShowBars == 1) { # Show average value bars - $bars .= '' . '' . ''; + $bars .= '' . '' . ''; # Show lib for day $bars .= ""; @@ -14432,79 +14399,13 @@ sub HTMLMainDaysofWeek{ print "
     '; From dc4a013e8979e66876e38dfc40e0892f08e416bf Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 26 Jul 2024 23:09:33 +0200 Subject: [PATCH 031/152] add class to average row --- wwwroot/cgi-bin/awstats.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 35f3af0ba..00c8796e5 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -13705,7 +13705,7 @@ sub HTMLDataTableFooter { . ( ( $config =~ /H/i ) ? HTMLDataCellWithBar('h', 110, $ref_sums{'h'}, 100) : '' ) . ( ( $config =~ /B/i ) ? HTMLDataCellWithBar('b', 110, $ref_sums{'b'}, 100) : '' ) . '
    ' . $averageTitle . '$Message[7]:
    $shortSiteDomain
    $Message[7]: $SiteDomain
    ' . $SiteDomain . '' + . '
    ' + . $formattedData . '
    ' - . '
    ' - . $formattedData . '
     '; - - if ( $ShowDaysOfMonthStats =~ /V/i ) { - - $height = ($max_v > 0 ) ? int( $average_v / $max_v * $BarHeight ) : 0; - - $bars .= HtmlBarV('v', $height, "$Message[10]: $average_v"); - } - - if ( $ShowDaysOfMonthStats =~ /P/i ) { - - $height = ($max_p > 0 ) ? int( $average_p / $max_p * $BarHeight ) : 0; - - $bars .= HtmlBarV('p', $height, "$Message[56]: $average_p"); - } - - if ( $ShowDaysOfMonthStats =~ /H/i ) { - - $height = ($max_h > 0 ) ? int( $average_h / $max_h * $BarHeight ) : 0; - - $bars .= HtmlBarV('h', $height, "$Message[57]: $average_h"); - } - - if ( $ShowDaysOfMonthStats =~ /B/i ) { - - $height = ($max_k > 0 ) ? int( $average_k / $max_k * $BarHeight ) : 0; - - $bars .= HtmlBarV('b', $height, "$Message[75]: $average_k"); - } - - $bars .= '
     ' + . (( $ShowDaysOfMonthStats =~ /V/i ) ? HtmlBar('v', $average_v, Format_Number($average_v), $max_v, $Message[10]) : '') + . (( $ShowDaysOfMonthStats =~ /P/i ) ? HtmlBar('p', $average_p, Format_Number($average_p), $max_p, $Message[56]) : '') + . (( $ShowDaysOfMonthStats =~ /H/i ) ? HtmlBar('h', $average_h, Format_Number($average_h), $max_h, $Message[57]) : '') + . (( $ShowDaysOfMonthStats =~ /B/i ) ? HtmlBar('b', $average_k, Format_Number($average_k), $max_k, $Message[75]) : '') + . '
    \n"; print "\n"; for (@DOWIndex) { - my $bredde_p = 0; - my $bredde_h = 0; - my $bredde_k = 0; - if ( $max_h > 0 ) { - $bredde_p = int( - ( - $avg_dayofweek_p[$_] ne '?' - ? $avg_dayofweek_p[$_] - : 0 - ) / $max_h * $BarHeight - ) + 1; - } - if ( $max_h > 0 ) { - $bredde_h = int( - ( - $avg_dayofweek_h[$_] ne '?' - ? $avg_dayofweek_h[$_] - : 0 - ) / $max_h * $BarHeight - ) + 1; - } - if ( $max_k > 0 ) { - $bredde_k = int( - ( - $avg_dayofweek_k[$_] ne '?' - ? $avg_dayofweek_k[$_] - : 0 - ) / $max_k * $BarHeight - ) + 1; - } - $avg_dayofweek_p[$_] = sprintf( - "%.2f", - ( - $avg_dayofweek_p[$_] ne '?' - ? $avg_dayofweek_p[$_] - : 0 - ) - ); - $avg_dayofweek_h[$_] = sprintf( - "%.2f", - ( - $avg_dayofweek_h[$_] ne '?' - ? $avg_dayofweek_h[$_] - : 0 - ) - ); - $avg_dayofweek_k[$_] = sprintf( - "%.2f", - ( - $avg_dayofweek_k[$_] ne '?' - ? $avg_dayofweek_k[$_] - : 0 - ) - ); + + print ''; - # Remove decimal part that are .0 - if ( $avg_dayofweek_p[$_] == int( $avg_dayofweek_p[$_] ) ) { - $avg_dayofweek_p[$_] = int( $avg_dayofweek_p[$_] ); - } - if ( $avg_dayofweek_h[$_] == int( $avg_dayofweek_h[$_] ) ) { - $avg_dayofweek_h[$_] = int( $avg_dayofweek_h[$_] ); - } - print "\n"; } print "\n"; print "\n"; @@ -14772,13 +14673,10 @@ sub HTMLMainHours{ print "
    ' + . (( $ShowDaysOfWeekStats =~ /P/i ) ? HtmlBar('p', $avg_dayofweek_p[$_], Format_Number($avg_dayofweek_p[$_]), $max_p, $Message[56]) : '') + . (( $ShowDaysOfWeekStats =~ /H/i ) ? HtmlBar('h', $avg_dayofweek_h[$_], Format_Number($avg_dayofweek_h[$_]), $max_h, $Message[57]) : '') + . (( $ShowDaysOfWeekStats =~ /B/i ) ? HtmlBar('b', $avg_dayofweek_k[$_], Format_Number($avg_dayofweek_k[$_]), $max_k, $Message[75]) : '') + . '"; - if ( $ShowDaysOfWeekStats =~ /P/i ) { - print HtmlBarV('p', $bredde_p, "$Message[56]: $avg_dayofweek_p[$_]"); - } - if ( $ShowDaysOfWeekStats =~ /H/i ) { - print HtmlBarV('h', $bredde_h, "$Message[57]: $avg_dayofweek_h[$_]"); - } - if ( $ShowDaysOfWeekStats =~ /B/i ) { - print HtmlBarV('b', $bredde_k, "$Message[75]: $avg_dayofweek_k[$_]"); - } - print "
    \n"; print "\n"; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { - my $bredde_p = 0; + my $bredde_h = 0; my $bredde_k = 0; - if ( $max_h > 0 ) { - $bredde_p = - int( $BarHeight * $_time_p[$ix] / $max_h ) + 1; - } + if ( $max_h > 0 ) { $bredde_h = int( $BarHeight * $_time_h[$ix] / $max_h ) + 1; @@ -14787,17 +14685,13 @@ sub HTMLMainHours{ $bredde_k = int( $BarHeight * $_time_k[$ix] / $max_k ) + 1; } - print "\n"; + + print ''; + } print "\n"; From c125c72ad0912678e4fb06e31fb7d8ea35a0fe45 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 01:05:19 +0200 Subject: [PATCH 034/152] Remove unnecessary quotes and replace double quotes by simple quotes. --- wwwroot/cgi-bin/awstats.pl | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index fd22832e1..0aaccfc86 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -13786,9 +13786,8 @@ sub HTMLMainMonthly{ if ($Debug) { debug( "ShowMonthStats", 2 ); } - my $title = "$Message[162]"; + my $title = $Message[162]; - my $graphPlugin = 0; my $not_empty_months = 0; my $average_nb = my $average_u = my $average_v = my $average_p = 0; my $average_h = my $average_k = 0; @@ -13802,21 +13801,19 @@ sub HTMLMainMonthly{ my @blocklabel = (); my @vallabel = ( - "$Message[11]", "$Message[10]", - "$Message[56]", "$Message[57]", - "$Message[75]" + $Message[11], $Message[10], + $Message[56], $Message[57], + $Message[75] ); - my @valcolor = ( "$color_u", "$color_v", "$color_p", "$color_h", "$color_k" ); + my @valcolor = ( $color_u, $color_v, $color_p, $color_h, $color_k ); my @valmax = ( $max_v, $max_v, $max_h, $max_h, $max_k ); my @valtotal = ( $total_u, $total_v, $total_p, $total_h, $total_k ); my @valaverage = (); my @valdata = (); my $xx = 0; - if (%{ $PluginsLoaded{'ShowGraph'} }) { - $graphPlugin = 1; - } - + my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; + # Define total and max for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { @@ -13939,7 +13936,7 @@ sub HTMLMainMonthly{ my $function = "ShowGraph_$pluginname"; &$function( - "$title", "month", + $title, 'month', $ShowMonthStats, \@blocklabel, \@vallabel, \@valcolor, \@valmax, \@valtotal, @@ -13949,10 +13946,7 @@ sub HTMLMainMonthly{ } elsif($ShowBars == 1) { - print '
    "; - if ( $ShowHoursStats =~ /P/i ) { - print HtmlBarV('p', $bredde_p, "$Message[56]: " . int( $_time_p[$ix] )); - } - if ( $ShowHoursStats =~ /H/i ) { - print HtmlBarV('h', $bredde_h, "$Message[57]: " . int( $_time_h[$ix] )); - } - if ( $ShowHoursStats =~ /B/i ) { - print HtmlBarV('b', $bredde_k, "$Message[75]: " . int( $_time_k[$ix] )); - } - print "' + . (( $ShowHoursStats =~ /P/i ) ? HtmlBar('p', $_time_p[$ix], $_time_p[$ix], $max_p, $Message[56]) : '') + . (( $ShowHoursStats =~ /H/i ) ? HtmlBar('h', $_time_h[$ix], $_time_h[$ix], $max_h, $Message[57]) : '') + . (( $ShowHoursStats =~ /B/i ) ? HtmlBar('b', $_time_k[$ix], $_time_k[$ix], $max_k, $Message[75]) : '') + . '
    ' - . '' - . $bars - . '' + print '
    ' . '' . $bars . '' . ''; for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { @@ -14015,13 +14009,12 @@ sub HTMLMainMonthly{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainDaily{ + if ($Debug) { debug( "ShowDaysOfMonthStats", 2 ); } + my $firstdaytocountaverage = shift; my $lastdaytocountaverage = shift; my $firstdaytoshowtime = shift; my $lastdaytoshowtime = shift; - - if ($Debug) { debug( "ShowDaysOfMonthStats", 2 ); } - my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; @@ -14037,7 +14030,6 @@ sub HTMLMainDaily{ my $NewLinkTarget = ''; my $title = "$Message[138]"; - my $graphPlugin = 0; my $not_empty_days = 0; my $average_v = my $average_p = 0; my $average_h = my $average_k = 0; @@ -14061,9 +14053,7 @@ sub HTMLMainDaily{ $NewLinkTarget = " target=\"_parent\""; } - if (%{ $PluginsLoaded{'ShowGraph'} }) { - $graphPlugin = 1; - } + my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; if ($AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link @@ -14192,7 +14182,7 @@ sub HTMLMainDaily{ { my $function = "ShowGraph_$pluginname"; &$function( - "$title", "daysofmonth", + $title, 'daysofmonth', $ShowDaysOfMonthStats, \@blocklabel, \@vallabel, \@valcolor, \@valmax, \@valtotal, @@ -14211,7 +14201,7 @@ sub HTMLMainDaily{ . '' . ''; # Show lib for day - $bars .= ""; + $bars .= ''; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; From 09532dd134a53cf95554f41277c81cf8b423f8c0 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 02:00:08 +0200 Subject: [PATCH 035/152] Clean HTMLMainDaysofWeek refactoring, clean code --- wwwroot/cgi-bin/awstats.pl | 293 +++++++++++++++++-------------------- 1 file changed, 138 insertions(+), 155 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 0aaccfc86..07d873c20 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14268,12 +14268,13 @@ sub HTMLMainDaily{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainDaysofWeek{ + + if ($Debug) { debug( "ShowDaysOfWeekStats", 2 ); } + my $firstdaytocountaverage = shift; my $lastdaytocountaverage = shift; my $NewLinkParams = shift; my $NewLinkTarget = shift; - - if ($Debug) { debug( "ShowDaysOfWeekStats", 2 ); } my $title = "$Message[91]"; @@ -14282,6 +14283,9 @@ sub HTMLMainDaysofWeek{ my @avg_dayofweek_p = (); my @avg_dayofweek_h = (); my @avg_dayofweek_k = (); + + + my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; print "$Center 
    \n"; &tab_head( "$title", 18, 0, 'daysofweek' ); @@ -14289,184 +14293,163 @@ sub HTMLMainDaysofWeek{ print "
    '; + } - if ( $ShowDaysOfWeekStats =~ /P/i ) { - $data = int($avg_dayofweek_p[$_]); - print HTMLDataCellWithBar('p', $data * .75 , Format_Number($data), $max_p); - } + # Show data array for days of week + if ($AddDataArrayShowDaysOfWeekStats) { - if ( $ShowDaysOfWeekStats =~ /H/i ) { - $data = int($avg_dayofweek_h[$_]); - print HTMLDataCellWithBar('h', $data * .75 , Format_Number($data), $max_h); - } + my $data = ''; - if ( $ShowDaysOfWeekStats =~ /B/i ) { - $data = int($avg_dayofweek_k[$_]); - print HTMLDataCellWithBar('b', $data * .75 , Format_Bytes($data), $max_k); - } + print '
    "; print "
    \n"; - foreach my $daycursor ( - $firstdaytocountaverage .. $lastdaytocountaverage ) - { - $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; - my $year = $1; - my $month = $2; - my $day = $3; + foreach my $daycursor ($firstdaytocountaverage .. $lastdaytocountaverage ) + { + $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; + my $year = $1; + my $month = $2; + my $day = $3; + my $bars = ''; - if ( !DateIsValid( $3, $2, $1 ) ) { next; } # If not an existing day, go to next - - my $dayofweekcursor = DayOfWeek( $3, $2, $1 ); + if ( !DateIsValid( $3, $2, $1 ) ) { next; } # If not an existing day, go to next - $avg_dayofweek_nb[$dayofweekcursor]++; # Increase number of day used to count for this day of week - $avg_dayofweek_p[$dayofweekcursor] += ( $DayPages{$daycursor} || 0 ); - $avg_dayofweek_h[$dayofweekcursor] += ( $DayHits{$daycursor} || 0 ); - $avg_dayofweek_k[$dayofweekcursor] += ( $DayBytes{$daycursor} || 0 ); - } + my $dayofweekcursor = DayOfWeek( $3, $2, $1 ); - for (@DOWIndex) { - - if ( $avg_dayofweek_nb[$_] ) { + $avg_dayofweek_nb[$dayofweekcursor]++; # Increase number of day used to count for this day of week + $avg_dayofweek_p[$dayofweekcursor] += ( $DayPages{$daycursor} || 0 ); + $avg_dayofweek_h[$dayofweekcursor] += ( $DayHits{$daycursor} || 0 ); + $avg_dayofweek_k[$dayofweekcursor] += ( $DayBytes{$daycursor} || 0 ); + } + + for (@DOWIndex) { - $avg_dayofweek_p[$_] = $avg_dayofweek_p[$_] / $avg_dayofweek_nb[$_]; - $avg_dayofweek_h[$_] = $avg_dayofweek_h[$_] / $avg_dayofweek_nb[$_]; - $avg_dayofweek_k[$_] = $avg_dayofweek_k[$_] / $avg_dayofweek_nb[$_]; + $avg_dayofweek_p[$_] = ( $avg_dayofweek_nb[$_] ) ? $avg_dayofweek_p[$_] / $avg_dayofweek_nb[$_] : 0; + $avg_dayofweek_h[$_] = ( $avg_dayofweek_nb[$_] ) ?$avg_dayofweek_h[$_] / $avg_dayofweek_nb[$_] : 0; + $avg_dayofweek_k[$_] = ( $avg_dayofweek_nb[$_] ) ? $avg_dayofweek_k[$_] / $avg_dayofweek_nb[$_] : 0; - if ( $avg_dayofweek_p[$_] > $max_p ) { $max_p = $avg_dayofweek_p[$_]; } - if ( $avg_dayofweek_h[$_] > $max_h ) { $max_h = $avg_dayofweek_h[$_]; } - if ( $avg_dayofweek_k[$_] > $max_k ) { $max_k = $avg_dayofweek_k[$_]; } - } else { + $max_p = ( $avg_dayofweek_p[$_] > $max_p ) ? $avg_dayofweek_p[$_] : $max_p; + $max_h = ( $avg_dayofweek_h[$_] > $max_h ) ? $avg_dayofweek_h[$_] : $max_h; + $max_k = ( $avg_dayofweek_k[$_] > $max_k ) ? $avg_dayofweek_k[$_] : $max_k; + } - $avg_dayofweek_p[$_] = "?"; - $avg_dayofweek_h[$_] = "?"; - $avg_dayofweek_k[$_] = "?"; - } - } + my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; - # Show bars for days of week - my $graphdone=0; - foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) - { - my @blocklabel = (); - for (@DOWIndex) { - push @blocklabel, - ( $Message[ $_ + 84 ] . ( $_ =~ /[06]/ ? "!" : "" ) ); - } - my @vallabel = - ( "$Message[56]", "$Message[57]", "$Message[75]" ); - my @valcolor = ( "$color_p", "$color_h", "$color_k" ); - my @valmax = ( int($max_h), int($max_h), int($max_k) ); - my @valtotal = ( $TotalPages, $TotalHits, $TotalBytes ); - # TEMP - my $average_p = my $average_h = my $average_k = 0; - $average_p = sprintf( "%.2f", $AveragePages ); - $average_h = sprintf( "%.2f", $AverageHits ); - $average_k = ( - int($average_k) - ? Format_Bytes( sprintf( "%.2f", $AverageBytes ) ) - : "0.00" - ); - my @valaverage = ( $average_p, $average_h, $average_k ); - my @valdata = (); - my $xx = 0; - - for (@DOWIndex) { - $valdata[ $xx++ ] = $avg_dayofweek_p[$_] || 0; - $valdata[ $xx++ ] = $avg_dayofweek_h[$_] || 0; - $valdata[ $xx++ ] = $avg_dayofweek_k[$_] || 0; - - # Round to be ready to show array - $avg_dayofweek_p[$_] = - sprintf( "%.2f", $avg_dayofweek_p[$_] ); - $avg_dayofweek_h[$_] = - sprintf( "%.2f", $avg_dayofweek_h[$_] ); - $avg_dayofweek_k[$_] = - sprintf( "%.2f", $avg_dayofweek_k[$_] ); - - # Remove decimal part that are .0 - if ( $avg_dayofweek_p[$_] == int( $avg_dayofweek_p[$_] ) ) { - $avg_dayofweek_p[$_] = int( $avg_dayofweek_p[$_] ); - } - if ( $avg_dayofweek_h[$_] == int( $avg_dayofweek_h[$_] ) ) { - $avg_dayofweek_h[$_] = int( $avg_dayofweek_h[$_] ); - } - } - my $function = "ShowGraph_$pluginname"; - &$function( - "$title", "daysofweek", - $ShowDaysOfWeekStats, \@blocklabel, - \@vallabel, \@valcolor, - \@valmax, \@valtotal, - \@valaverage, \@valdata - ); - $graphdone=1; + if($graphPlugin == 1){ + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) + { + my @blocklabel = (); + + for (@DOWIndex) { + push @blocklabel, ( $Message[ $_ + 84 ] . ( $_ =~ /[06]/ ? "!" : "" ) ); } - if (! $graphdone) - { - print "\n"; - print "\n"; - for (@DOWIndex) { - - print ''; + + my @vallabel = ( $Message[56], $Message[57], $Message[75] ); + my @valcolor = ( $color_p, $color_h, $color_k ); + my @valmax = ( int($max_h), int($max_h), int($max_k) ); + my @valtotal = ( $TotalPages, $TotalHits, $TotalBytes ); + + my @valaverage = ( + sprintf( "%.2f", $AveragePages ), + sprintf( "%.2f", $AverageHits ), + (int($AverageBytes) ? Format_Bytes(sprintf( "%.2f", $AverageBytes)) : "0.00") + ); + my @valdata = (); + my $xx = 0; + + for (@DOWIndex) { + $valdata[ $xx++ ] = $avg_dayofweek_p[$_] || 0; + $valdata[ $xx++ ] = $avg_dayofweek_h[$_] || 0; + $valdata[ $xx++ ] = $avg_dayofweek_k[$_] || 0; + + # Round to be ready to show array + $avg_dayofweek_p[$_] = sprintf( "%.2f", $avg_dayofweek_p[$_] ); + $avg_dayofweek_h[$_] = sprintf( "%.2f", $avg_dayofweek_h[$_] ); + $avg_dayofweek_k[$_] = sprintf( "%.2f", $avg_dayofweek_k[$_] ); + + # Remove decimal part that are .0 + if ( $avg_dayofweek_p[$_] == int( $avg_dayofweek_p[$_] ) ) { + $avg_dayofweek_p[$_] = int( $avg_dayofweek_p[$_] ); } - print "\n"; - print "\n"; - for (@DOWIndex) { - print "" - . ( - !$StaticLinks - && $_ == ( $nowwday - 1 ) - && $MonthRequired == $nowmonth - && $YearRequired == $nowyear - ? '' - : '' - ); - print $Message[ $_ + 84 ]; - print( !$StaticLinks - && $_ == ( $nowwday - 1 ) - && $MonthRequired == $nowmonth - && $YearRequired == $nowyear ? '' : '' ); - print ""; + if ( $avg_dayofweek_h[$_] == int( $avg_dayofweek_h[$_] ) ) { + $avg_dayofweek_h[$_] = int( $avg_dayofweek_h[$_] ); } - print "\n
    ' - . (( $ShowDaysOfWeekStats =~ /P/i ) ? HtmlBar('p', $avg_dayofweek_p[$_], Format_Number($avg_dayofweek_p[$_]), $max_p, $Message[56]) : '') - . (( $ShowDaysOfWeekStats =~ /H/i ) ? HtmlBar('h', $avg_dayofweek_h[$_], Format_Number($avg_dayofweek_h[$_]), $max_h, $Message[57]) : '') - . (( $ShowDaysOfWeekStats =~ /B/i ) ? HtmlBar('b', $avg_dayofweek_k[$_], Format_Number($avg_dayofweek_k[$_]), $max_k, $Message[75]) : '') - . '
    \n"; } + + my $function = "ShowGraph_$pluginname"; + &$function( + $title, 'daysofweek', + $ShowDaysOfWeekStats, \@blocklabel, + \@vallabel, \@valcolor, + \@valmax, \@valtotal, + \@valaverage, \@valdata + ); + } + } else { + + print '' . ''; - # Show data array for days of week - if ($AddDataArrayShowDaysOfWeekStats) { + for (@DOWIndex) { + + print ''; + + } - my $data = ''; - print '
    ' + . (( $ShowDaysOfWeekStats =~ /P/i ) ? HtmlBar('p', $avg_dayofweek_p[$_], Format_Number($avg_dayofweek_p[$_]), $max_p, $Message[56]) : '') + . (( $ShowDaysOfWeekStats =~ /H/i ) ? HtmlBar('h', $avg_dayofweek_h[$_], Format_Number($avg_dayofweek_h[$_]), $max_h, $Message[57]) : '') + . (( $ShowDaysOfWeekStats =~ /B/i ) ? HtmlBar('b', $avg_dayofweek_k[$_], Format_Number($avg_dayofweek_k[$_]), $max_k, $Message[75]) : '') + . '
    '; + print '' . ''; - #header - print HTMLDataTableHeader('', $ShowDaysOfWeekStats); + for (@DOWIndex) { - #body - print ''; + print '" + . (!$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ? '' : '') + . $Message[ $_ + 84 ] + . (!$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ? '' : '' ) + . ''; - for (@DOWIndex) { - print ''; + } - print '' . '
    ' . ( ( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ) ? '' : '' ); - - print $Message[ $_ + 84 ]; + print '
    '; - print ( ( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ) ? '' : '' ); - - print '
    '; - print ''; - } - print '
    '; + #header + print HTMLDataTableHeader('', $ShowDaysOfWeekStats); + + #body + print ''; + + for (@DOWIndex) { + + print '' + . '' . ( ( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ) ? '' : '' ) + . $Message[ $_ + 84 ] + . ( ( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ) ? '' : '' ) + . ''; + + if ( $ShowDaysOfWeekStats =~ /P/i ) { + $data = int($avg_dayofweek_p[$_]); + print HTMLDataCellWithBar('p', $data , Format_Number($data), $max_p); } - print "
    "; - print "\n"; - &tab_end(); + if ( $ShowDaysOfWeekStats =~ /H/i ) { + $data = int($avg_dayofweek_h[$_]); + print HTMLDataCellWithBar('h', $data , Format_Number($data), $max_h); + } + + if ( $ShowDaysOfWeekStats =~ /B/i ) { + $data = int($avg_dayofweek_k[$_]); + print HTMLDataCellWithBar('b', $data , Format_Bytes($data), $max_k); + } + + print ''; + } + + print ''; + } + + print "
    "; + print "\n"; + &tab_end(); } #------------------------------------------------------------------------------ From c7f15ac7ef07b7be9273b9486fabe9d86ce8b2ed Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 02:45:17 +0200 Subject: [PATCH 036/152] css - fluidify effect on hovering --- wwwroot/cgi-bin/awstats.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 07d873c20..77b16f6d4 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -960,8 +960,8 @@ sub renderCss { .multi-data-table { display: flex; gap: 5dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ background-color: #4477DD;position: relative; color: #FFFFFF } .data-table { border-spacing: 0 2px } -.data-table tbody tr { transition: background 0.5s; transition: transform 0.2s ease-out } -.data-table tbody tr:hover { background: rgba(0,0,0,0.2); transform: scale(1.05) translateX(2px); } +.data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } +.data-table tbody tr:hover { font-weight: 900; background: rgba(0,0,0,0.2); transform: scale(1.1) translateX(2px); } .data-table th, .data-table td:first-child { padding: 2px 4px } .data-table td:not(:first-child) { padding: 2px 0 } .data-table td div { padding: 3px 4px } @@ -14664,7 +14664,7 @@ sub HTMLMainHours{ . (( $ShowHoursStats =~ /H/i ) ? HtmlBar('h', $_time_h[$ix], $_time_h[$ix], $max_h, $Message[57]) : '') . (( $ShowHoursStats =~ /B/i ) ? HtmlBar('b', $_time_k[$ix], $_time_k[$ix], $max_k, $Message[75]) : '') . ''; - + } print "\n"; From e90fadecfe169ce7b9d21e711419ef66f91f4cf8 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 03:51:22 +0200 Subject: [PATCH 037/152] Add $StyleSheetMode option When templating with a personnal stylesheet, the user can choose to only override the built-in css (included in the awstats.pl file), or totally ignore the built-in css. --- wwwroot/cgi-bin/awstats.model.conf | 9 ++++ wwwroot/cgi-bin/awstats.pl | 74 +++++++++++++++--------------- 2 files changed, 47 insertions(+), 36 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.model.conf b/wwwroot/cgi-bin/awstats.model.conf index 854d4f777..0d03bcd1d 100644 --- a/wwwroot/cgi-bin/awstats.model.conf +++ b/wwwroot/cgi-bin/awstats.model.conf @@ -1287,6 +1287,15 @@ BarHeight = 75 # StyleSheet="" +# When using a particular CSS (Cascading Style Sheet), +# you can choose one of the two modes available +# +# "herited" : you keep the awstats built-in css base and you override it in your stylesheet +# "standalone" : the built-in css will not be considered +# +# Default: "herited" +# +StylesheetMode="herited" # Those color parameters can be used (if StyleSheet parameter is not used) # to change AWStats look. diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 77b16f6d4..8b6e3a623 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -302,7 +302,7 @@ use vars qw/ $DirLock $DirCgi $DirConfig $DirData $DirIcons $DirImgs $DirLang $AWScript $ArchiveFileName $AllowAccessFromWebToFollowingIPAddresses $HTMLHeadSection $HTMLEndSection $LinksToWhoIs $LinksToIPWhoIs - $LogFile $LogType $LogFormat $LogSeparator $Logo $LogoLink $StyleSheet $WrapperScript $SiteDomain + $LogFile $LogType $LogFormat $LogSeparator $Logo $LogoLink $StyleSheet $StyleSheetMode $WrapperScript $SiteDomain $UseHTTPSLinkForUrl $URLQuerySeparators $URLWithAnchor $ErrorMessages $ShowFlagLinks $AddLinkToExternalCGIWrapper $LogFormatJsonMap /; @@ -318,6 +318,7 @@ $LogType, $LogFormat, $LogSeparator, $Logo, $LogoLink, $StyleSheet, + $StyleSheetMode, $WrapperScript, $SiteDomain, $UseHTTPSLinkForUrl, $URLQuerySeparators, $URLWithAnchor, $ErrorMessages, @@ -325,7 +326,7 @@ $LogFormatJsonMap ) = ( - '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ); use vars qw/ @@ -806,7 +807,7 @@ sub http_head { #------------------------------------------------------------------------------ # Function: Write on output header of HTML page # Parameters: None -# Input: %HTMLOutput $PluginMode $Expires $Lang $StyleSheet $HTMLHeadSection $PageCode $PageDir +# Input: %HTMLOutput $PluginMode $Expires $Lang $StyleSheet $StyleSheetMode $HTMLHeadSection $PageCode $PageDir # Output: $HeaderHTMLSent=1 # Return: None #------------------------------------------------------------------------------ @@ -883,10 +884,13 @@ sub html_head { print '' . $Message[7] . ' ' . $SiteDomain . $periodtitle . ( $k[0] ? ' - ' . $k[0] : '' ) . ''; if ( $FrameName ne 'index' ) { - print (($StyleSheet) ? '' : renderCss()); - } - print renderJavascript(); + print ((!$StyleSheet || $StyleSheetMode eq "herited") ? renderCss() : ''); + + print (($StyleSheet) ? '' : ''); + + print renderJavascript(); + } # les scripts necessaires pour trier avec Tablekit # print "' EOF @@ -13310,7 +13394,7 @@ sub HTMLShowDomains{ . " />$Message[0]$newkey"; } else { - print ''; + print ''; print "$DomainsHashIDLib{$newkey}$newkey"; } ## to add unique visitors and number of visits, by Josep Ruano @ CAPSiDE @@ -14806,47 +14890,6 @@ sub HTMLMainCountries{ print "$Center "; - print < - -document.addEventListener("DOMContentLoaded", (d) => { - let worldmap = document.getElementById('worldmap'); - - fetch('$DirImgs/BlankMap-World.svg').then(response=>response.text()).then(data=>{ - - worldmap.innerHTML = data; - - let realMap = worldmap.querySelector('svg'); - realMap.setAttribute('width', '100%'); - realMap.setAttribute('height', '100%'); - realMap.setAttribute('viewBox', '300 20 2300 1170'); - - let domainsTable = document.querySelector('.domains-table'); - - [...domainsTable.querySelectorAll('.flag')].forEach(el => { - let country = worldmap.querySelector('g#' + el.dataset.country); - - if(country !== null){ - - [...country.querySelectorAll('.landxx')].forEach(el => { - el.classList.add('lighted-land'); - }); - - } else { - - country = worldmap.querySelector('path#' + el.dataset.country); - - if(country !== null){ - country.classList.remove('landxx'); - country.classList.add('lighted-land'); - } - } - }); - }); -}); -' -EOF - my $title = "$Message[25] ($Message[77] $MaxNbOf{'Domain'})   -   $Message[80]"; @@ -14931,12 +14974,12 @@ sub HTMLMainCountries{ my $newkey = lc($key); my $data = ''; - print ''; - if ( $newkey eq 'ip' || !$DomainsHashIDLib{$newkey} ) { + print ''; print '' . $Message[0] . ' '; } else { + print ''; print '' . $DomainsHashIDLib{$newkey} . ' ( ' . $newkey . ' ) '; } From adf8e8cd35ca2959a533e991a8251586618c73dd Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 07:08:02 +0200 Subject: [PATCH 042/152] js refactoring --- wwwroot/cgi-bin/awstats.pl | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 835695bd2..4cbef4321 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -1076,9 +1076,11 @@ sub renderJavascript { }); [...document.querySelectorAll('.multi-data-table.worldmap tbody tr.country')].forEach(el => { + + let country = worldmap.querySelector('g#' + el.dataset.country); + el.addEventListener("mouseover", (e) => { - let country = worldmap.querySelector('g#' + el.dataset.country); - + if(country !== null){ [...country.querySelectorAll('.landxx')].forEach(land => { @@ -1097,8 +1099,7 @@ sub renderJavascript { }); el.addEventListener("mouseout", (e) => { - let country = worldmap.querySelector('g#' + el.dataset.country); - + if(country !== null){ [...country.querySelectorAll('.landxx')].forEach(land => { @@ -1113,18 +1114,9 @@ sub renderJavascript { country.classList.remove('zoomed-land'); } } - }); }); - }); - - - - - - - }); ' EOF From 63eebb891292f563ce59376ea095cee7d889733f Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 08:37:36 +0200 Subject: [PATCH 043/152] HTML cleaning remove obsolete attributes --- wwwroot/cgi-bin/awstats.pl | 166 ++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 86 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 4cbef4321..ab121cea0 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -846,7 +846,7 @@ sub html_head { } - print ''; + print "\n" . ''; my $endtag = ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ) ? ' />' : '>'; @@ -877,7 +877,7 @@ sub html_head { %HTMLOutput; # This is to have a unique title and description page - print '' : ''); + print (($StyleSheet) ? '' : ''); print renderJavascript(); } @@ -900,7 +900,7 @@ sub html_head { print ''; if ( $FrameName ne 'index' ) { - print ''; + print ''; } } @@ -942,7 +942,7 @@ sub renderCss { $css .= ".aws_border { border-collapse: collapse; background-color: #$color_TableBG; padding: 1px 1px " . ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ? "2px" : "1px" ) - . " 1px; margin-top: 0px; margin-bottom: 0px; }\n"; + . " 1px; margin-top: 0px; margin-bottom: 0px; }"; $css .= <' . $css . ''; + return ''; } #------------------------------------------------------------------------------ @@ -1118,7 +1118,7 @@ sub renderJavascript { }); }); }); -' + EOF } @@ -1200,11 +1200,11 @@ sub tab_head { if ( $width == 70 && $QueryString =~ /buildpdf/i ) { print -"\n"; +"
    \n"; } else { print -"
    \n"; +"
    \n"; } if ($tooltipnb) { @@ -1221,11 +1221,11 @@ sub tab_head { print ""; + print ""; print "\n"; &tab_end(); } @@ -14692,8 +14687,7 @@ sub HTMLMainHours{ . int( GetTimeZoneTitle_timezone() ) . ")"; } &tab_head( "$title", 19, 0, 'hours' ); - print "
    \n"; if ( $width == 70 && $QueryString =~ /buildpdf/i ) { print -"\n"; +"
    \n"; } else { print -"
    \n"; +"
    \n"; } } @@ -8429,7 +8429,7 @@ sub Show_Flag_Links { ); print " \n"; } @@ -9160,14 +9160,14 @@ sub HTMLShowFormFilter { . XMLEncode("$AWScript${NewLinkParams}") . "\" class=\"aws_border\">\n"; print -"
    \n"; - print "\n"; +"
    $Message[79] :
    \n"; + print "\n"; print -"\n"; +"\n"; print ""; - print "\n"; + print "\n"; print -"\n"; +"\n"; print "\n"; print( $frame? "\n" : ""; } if ( $ShowEMailSenders =~ /B/i ) { - print ""; } if ( $ShowEMailSenders =~ /M/i ) { - print ""; } if ( $ShowEMailSenders =~ /L/i ) { - print ""; } @@ -10118,10 +10118,10 @@ sub HTMLShowEmailSendersChart { ""; if ( $ShowEMailSenders =~ /H/i ) { print ""; } if ( $ShowEMailSenders =~ /B/i ) { - print ""; + print ""; } if ( $ShowEMailSenders =~ /M/i ) { - print ""; } if ( $ShowEMailSenders =~ /L/i ) { print ""; } @@ -10259,16 +10259,16 @@ sub HTMLShowEmailReceiversChart { print ""; } if ( $ShowEMailReceivers =~ /B/i ) { - print ""; } if ( $ShowEMailReceivers =~ /M/i ) { - print ""; } if ( $ShowEMailReceivers =~ /L/i ) { - print ""; } @@ -10288,10 +10288,10 @@ sub HTMLShowEmailReceiversChart { ""; if ( $ShowEMailReceivers =~ /H/i ) { print ""; } if ( $ShowEMailReceivers =~ /B/i ) { - print ""; + print ""; } if ( $ShowEMailReceivers =~ /M/i ) { - print ""; } if ( $ShowEMailReceivers =~ /L/i ) { print ""; } @@ -10336,13 +10336,13 @@ sub HTMLTopBanner{ if ( $QueryString !~ /buildpdf/i ) { print -"
    $Message[79] :   $Message[153] :$Message[153] :"; print "" + . ( $frame ? "" : "" ) . ">" . ( $categicon ? " " : "" ) . "$categtext:
    " ); @@ -10090,16 +10090,16 @@ sub HTMLShowEmailSendersChart { } if ( $ShowEMailSenders =~ /H/i ) { print "$_emails_h{$key}" + print "" . Format_Bytes( $_emails_k{$key} ) . "" + print "" . Format_Bytes( $_emails_k{$key} / ( $_emails_h{$key} || 1 ) ) . "" + print "" . ( $_emails_l{$key} ? Format_Date( $_emails_l{$key}, 1 ) : '-' ) . "
    $Message[2]$rest_h" . Format_Bytes($rest_k) . "" . Format_Bytes($rest_k) . "" + print "" . Format_Bytes( $rest_k / ( $rest_h || 1 ) ) . " $_emailr_h{$key}" + print "" . Format_Bytes( $_emailr_k{$key} ) . "" + print "" . Format_Bytes( $_emailr_k{$key} / ( $_emailr_h{$key} || 1 ) ) . "" + print "" . ( $_emailr_l{$key} ? Format_Date( $_emailr_l{$key}, 1 ) : '-' ) . "
    $Message[2]$rest_h" . Format_Bytes($rest_k) . "" . Format_Bytes($rest_k) . "" + print "" . Format_Bytes( $rest_k / ( $rest_h || 1 ) ) . " 
    \n"; +"
    \n"; print "\n"; &tab_end(); } @@ -14153,8 +14151,7 @@ sub HTMLMainDaily{ &tab_head( "$title", 0, 0, 'daysofmonth' ); print ""; - print "\n"; &tab_end(); } @@ -14380,8 +14376,7 @@ sub HTMLMainDaysofWeek{ print "$Center 
    \n"; &tab_head( "$title", 18, 0, 'daysofweek' ); print ""; - print "
    \n"; print -"\n"; +"
    \n"; } else { - print "
    \n"; + print "
    \n"; } if ( $FrameName ne 'mainright' ) { @@ -10365,16 +10365,16 @@ sub HTMLTopBanner{ # Logo and flags if ( $FrameName ne 'mainleft' ) { if ( $LogoLink =~ "https://www.awstats.org" ) { - print ""; @@ -10385,9 +10385,9 @@ sub HTMLTopBanner{ # Print Last Update print -""; +""; print -""; @@ -10446,8 +10446,8 @@ sub HTMLTopBanner{ # Print selected period of analysis (month and year required) print -""; - print ""; + print ""; +""; } print "\n"; my $total_con = 0; @@ -11170,7 +11170,7 @@ sub HTMLMainFileType{ print ""; } if ( $ShowFileTypesStats =~ /B/i ) { - print '"; } @@ -11467,7 +11467,7 @@ sub HTMLShowBrowserDetail{ if ( $key =~ /^$family(.*)/i ) { if ( !$familyheadershown ) { print -""; print ""; +""; print ""; @@ -11674,7 +11674,7 @@ sub HTMLShowBrowserUnknown{ foreach my $key (@keylist) { my $useragent = XMLEncode( CleanXSS($key) ); print - "\n"; $total_l += 1; @@ -11761,7 +11761,7 @@ sub HTMLShowOSDetail{ $family_name = $OSFamily{$family}; } print -""; +""; print ""; @@ -11845,7 +11845,7 @@ sub HTMLShowOSDetail{ $p_p = "$p_p %"; } print -""; +""; print ""; @@ -11944,7 +11944,7 @@ sub HTMLShowOSUnknown{ foreach my $key (@keylist) { my $useragent = XMLEncode( CleanXSS($key) ); print ""; - print ""; print "\n"; $total_l += 1; @@ -14007,8 +14007,7 @@ sub HTMLMainMonthly{ print "$Center 
    \n"; &tab_head( "$title", 0, 0, 'month' ); - print "' . $tableData . '' . '
    "; } else { - print ""; + . "\" target=\"awstatshome\">"; } if ( !$StaticLinks ) { print "
    "; Show_Flag_Links($Lang); } print "
    $Message[35]: 
    $Message[35]: "; +""; if ($LastUpdate) { print Format_Date( $LastUpdate, 0 ); } else { @@ -10427,16 +10427,16 @@ sub HTMLTopBanner{ # Logo and flags if ( $FrameName eq 'mainright' ) { if ( $LogoLink =~ "https://www.awstats.org" ) { - print "\n"; } else { - print "\n"; + . "\" target=\"awstatshome\">\n"; } if ( !$StaticLinks ) { print "
    "; Show_Flag_Links($Lang); } print "
    $Message[133]:"; +"
    $Message[133]:"; if ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ) { print "
    " + . ( $frame ? "" : "" ) . ">" . ( $menuicon ? " " @@ -11132,7 +11132,7 @@ sub HTMLMainFileType{ } if ( $ShowFileTypesStats =~ /C/i ) { print -"$Message[100]$Message[101]$Message[99]$Message[100]$Message[101]$Message[99]
    ".Format_Number($_filetypes_h{$key})."$p_h' + print '' . Format_Bytes( $_filetypes_k{$key} ) . "$p_k
    " +"
    " . uc($family) . " " @@ -11563,7 +11563,7 @@ sub HTMLShowBrowserDetail{ $p_h = "$p_h %"; } print -"
    $Message[2]
    $Message[2] " . Format_Number(( $total_p - $TotalFamily_p )) . "$p_p
    $useragent" + "
    $useragent" . Format_Date( $_unknownrefererbrowser_l{$key}, 1 ) . "
    $family_name
    $family_name" . Format_Number(int( $totalfamily_p{$family} )) . "$p_p
    $Message[2]
    $Message[2]" . Format_Number(( $total_p - $TotalFamily_p )) . "$p_p
    $useragent" + print "" . Format_Date( $_unknownreferer_l{$key}, 1 ) . "
    \n"; - print "
    \n"; + print "
    \n"; # Show bars for month if ($graphPlugin == 1) { @@ -14078,7 +14077,6 @@ sub HTMLMainMonthly{ print '
    '; } - print "\n"; print "
    \n"; - print "
    \n"; + print "
    \n"; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { @@ -14344,7 +14341,6 @@ sub HTMLMainDaily{ } - print "\n"; print "
    "; - print "
    \n"; + print "
    "; foreach my $daycursor ($firstdaytocountaverage .. $lastdaytocountaverage ) { @@ -14537,7 +14532,7 @@ sub HTMLMainDaysofWeek{ print '
    '; } - print "
    \n"; - print "
    \n"; + print "
    \n"; my $width = 8; my $max_p = my $max_h = my $max_k = 1; @@ -14735,7 +14729,7 @@ sub HTMLMainHours{ if (! $graphdone) { print "\n"; - print "\n"; + print "\n"; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { my $bredde_h = 0; @@ -14856,10 +14850,10 @@ sub HTMLMainHours{ print ''; - print "
    \n"; + print "
    \n"; } - print "\n"; + print "\n"; &tab_end(); } @@ -14934,7 +14928,7 @@ sub HTMLMainCountries{ # $cnt++; # if ($cnt > 99) { last; } # } - # print ""; + # print ""; # my $function = "ShowGraph_$pluginname"; # &$function( # "AWStatsCountryMap", "countries_map", @@ -15220,7 +15214,7 @@ sub HTMLMainHosts{ print '' . Format_Bytes( $_host_k{$key} ) . ''; } if ( $ShowHostsStats =~ /L/i ) { - print '' + print '' . ( $_host_l{$key} ? Format_Date( $_host_l{$key}, 1 ) @@ -16448,15 +16442,15 @@ sub HTMLMainReferrers{ } print "\n"; if ( $ShowOriginStats =~ /P/i ) { - print "" + print "" . ( $_from_p[2] ? Format_Number($_from_p[2]) : " " ) - . "" + . "" . ( $_from_p[2] ? "$p_p[2] %" : " " ) . ""; } if ( $ShowOriginStats =~ /H/i ) { - print "" + print "" . ( $_from_h[2] ? Format_Number($_from_h[2]) : " " ) - . "" + . "" . ( $_from_h[2] ? "$p_h[2] %" : " " ) . ""; } print "\n"; @@ -16519,15 +16513,15 @@ sub HTMLMainReferrers{ } print "\n"; if ( $ShowOriginStats =~ /P/i ) { - print "" + print "" . ( $_from_p[3] ? Format_Number($_from_p[3]) : " " ) - . "" + . "" . ( $_from_p[3] ? "$p_p[3] %" : " " ) . ""; } if ( $ShowOriginStats =~ /H/i ) { - print "" + print "" . ( $_from_h[3] ? Format_Number($_from_h[3]) : " " ) - . "" + . "" . ( $_from_h[3] ? "$p_h[3] %" : " " ) . ""; } print "\n"; @@ -16601,13 +16595,13 @@ sub HTMLMainKeys{ if ( $ShowKeyphrasesStats || $ShowKeywordsStats ) { print "
    \n"; } if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print - ""; + "
    "; } if ($ShowKeyphrasesStats) { # By Keyphrases if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print ""; - print ""; - print ""; + print ""; + print ""; print "\n"; my %label = ( 'AddToFavourites' => $Message[137], @@ -16884,7 +16878,7 @@ sub HTMLMainHTTPStatus{ ) . "\"$NewLinkTarget>$key"; } - else { print ""; } + else { print ""; } print ""; + print ""; print "
    \n"; + print "\n"; } if ($Debug) { debug( "ShowKeyphrasesStats", 2 ); } &tab_head( @@ -16678,7 +16672,7 @@ sub HTMLMainKeys{ # By Keywords if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print "\n"; + print "\n"; } if ($Debug) { debug( "ShowKeywordsStats", 2 ); } &tab_head( @@ -16760,8 +16754,8 @@ sub HTMLMainMisc{ &tab_head( "$title", 19, 0, 'misc' ); print "
    $Message[139]    
    $key$key" . ( $httpcodelib{$key} ? $httpcodelib{$key} : 'Unknown error' ) @@ -16921,7 +16915,7 @@ sub HTMLMainSMTPStatus{ foreach my $key (@keylist) { my $p = int( $_errors_h{$key} / $TotalHitsErrors * 1000 ) / 10; print ""; - print "$key$key" . ( $smtpcodelib{$key} ? $smtpcodelib{$key} : 'Unknown error' ) From 86a7c06412e85ef1435083335d443e0f5bdcf9dc Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 10:49:54 +0200 Subject: [PATCH 044/152] Update update message --- wwwroot/cgi-bin/lang/awstats-fr.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index 0e5f95196..caaa828f0 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -36,7 +36,7 @@ message31=Pages non trouvées message32=Codes Status HTTP message33=Versions de Netscape message34=Versions de MS Internet Explorer -message35=Dernière mise à jour +message35=Mis à jour le message36=Connexions au site par message37=Origine de la connexion message38=Adresse directe / Bookmark / Lien dans email... From a54c1bb6e9c8cf158e4608469ef117e77a6c4232 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 10:51:31 +0200 Subject: [PATCH 045/152] clean site header --- wwwroot/cgi-bin/awstats.pl | 133 ++++++++++++------------------------- 1 file changed, 42 insertions(+), 91 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index ab121cea0..c413fca8c 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -901,6 +901,7 @@ sub html_head { if ( $FrameName ne 'index' ) { print ''; + print '
    '; } } @@ -938,20 +939,15 @@ sub renderCss { . '--aws-title-text-color: #' . $color_titletext . ';' . '--aws-table-title-color: #' . $color_TableTitle . ';' . '--aws-table-title-bgcolor: #' . $color_TableBGTitle . ';' - . '}'; - - $css .= ".aws_border { border-collapse: collapse; background-color: #$color_TableBG; padding: 1px 1px " - . ( $BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml' ? "2px" : "1px" ) - . " 1px; margin-top: 0px; margin-bottom: 0px; }"; - - $css .= <\n"; } + print '
    '; print "\n"; } print "\n"; @@ -1200,7 +1196,7 @@ sub tab_head { if ( $width == 70 && $QueryString =~ /buildpdf/i ) { print -"\n"; +"
    \n"; } else { print @@ -9158,7 +9154,7 @@ sub HTMLShowFormFilter { if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } print "\n\n"; + . "\">\n"; print "
    \n"; print "\n"; @@ -9931,22 +9927,22 @@ sub HTMLShowMenuCateg { # At least one entry in menu for this category, we can show category and entries my $WIDTHMENU1 = ( $FrameName eq 'mainleft' ? $FRAMEWIDTH : 150 ); - print "\n"; - print( $frame? "\n" : "\n" : "\n" : "   " ); } if ( $menulink->{$key} == 2 ) { print( $frame - ? "
    $Message[79] :
    " . ( $categicon ? " " : "" ) . "$categtext:
    " ); + print( $frame? "
    " ); foreach my $key ( sort { $menu->{$a} <=> $menu->{$b} } keys %$menu ) { if ( $menu->{$key} == 0 ) { next; } if ( $menulink->{$key} == 1 ) { - print( $frame? "
    " : "" ); + print( $frame? "
    " : "" ); print "$menutext->{$key}"; print( $frame? "
      \"...\" " + ? "
      \"...\" " : "" ); print "\n"; - } + print ''; - if ( $QueryString !~ /buildpdf/i ) { - print -"\n"; - print "
    \n"; - print -"\n"; - } - else { - print "
    \n"; + print '
    ' . $SiteDomain . '
    '; + + # Logo and flags + print ''; + + if ( !$StaticLinks ) { Show_Flag_Links($Lang); } } + print '
    '; + if ( $FrameName ne 'mainright' ) { # Print Statistics Of @@ -10355,39 +10346,16 @@ sub HTMLTopBanner{ substr( $SiteDomain, 0, 20 ) . "..." . substr( $SiteDomain, length($SiteDomain) - 5, 5 ); } - print -""; - } - else { - print ''; - } - - # Logo and flags - if ( $FrameName ne 'mainleft' ) { - if ( $LogoLink =~ "https://www.awstats.org" ) { - print ""; + print ""; } + print "\n"; } if ( $FrameName ne 'mainleft' ) { # Print Last Update - print -""; - print -"'; + print '"; } print "\n"; # Print selected period of analysis (month and year required) - print -""; + print ""; print "
    $Message[7]:
    $shortSiteDomain
    ' . $SiteDomain . '"; - } - else { - print ""; - } - if ( !$StaticLinks ) { print "
    "; Show_Flag_Links($Lang); } - print "
    $Message[7]:
    $shortSiteDomain
    $Message[35]: "; + print '
    '. $Message[35] .' : '; if ($LastUpdate) { print Format_Date( $LastUpdate, 0 ); } else { @@ -10396,8 +10364,7 @@ sub HTMLTopBanner{ print "$Message[24]"; } else { - print - "No qualified records found in log + print "No qualified records found in log ($NbOfLinesCorrupted corrupted, $NbOfLinesComment comments, $NbOfLinesBlank Blank, $NbOfLinesDropped dropped)"; } @@ -10438,15 +10405,14 @@ sub HTMLTopBanner{ . XMLEncode($LogoLink) . "\" target=\"awstatshome\">\n"; } - if ( !$StaticLinks ) { print "
    "; Show_Flag_Links($Lang); } + if ( !$StaticLinks ) { Show_Flag_Links($Lang); } print "
    $Message[133]:
    "; if ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ) { print "
    \n"; - print "
    \n"; } else { print "
    \n"; } - if ( $FrameName ne 'mainleft' ) { print "
    \n"; } - else { print "
    \n"; } - print "\n"; + if ( $FrameName ne 'mainleft' ) { print ""; } } #------------------------------------------------------------------------------ @@ -10605,13 +10568,7 @@ sub HTMLMenu{ if ( !$PluginsLoaded{'ShowMenu'}{'menuapplet'} ) { my $menuicon = 0; # TODO a virer # Menu HTML - print "\n"; + print ''; if ( $FrameName eq 'mainleft' && $ShowMonthStats ) { print( $frame? ""; } if ( $ShowSummary =~ /U/i ) { - print ""; } @@ -13646,7 +13599,7 @@ sub HTMLMainSummary{ ""; } if ( $ShowSummary =~ /V/i ) { - print ""; } @@ -13655,7 +13608,7 @@ sub HTMLMainSummary{ ""; } if ( $ShowSummary =~ /P/i ) { - print ""; } @@ -13664,7 +13617,7 @@ sub HTMLMainSummary{ ""; } if ( $ShowSummary =~ /H/i ) { - print ""; } @@ -13673,7 +13626,7 @@ sub HTMLMainSummary{ ""; } if ( $ShowSummary =~ /B/i ) { - print ""; } @@ -14728,7 +14681,7 @@ sub HTMLMainHours{ } if (! $graphdone) { - print "
    " : "" ); print @@ -11021,8 +10978,6 @@ sub HTMLMenu{ else { } } - #print ($frame?"":"
    \n"); - print "
    \n"; } # Print Back link @@ -11067,7 +11022,7 @@ sub HTMLMainFileType{ my $NewLinkTarget = shift; if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowFileTypesStatsCompressionStats", 2 ); } - print "$Center 
    \n"; + print "$Center \n"; my $Totalh = 0; foreach ( keys %_filetypes_h ) { $Totalh += $_filetypes_h{$_}; } my $Totalk = 0; @@ -13599,9 +13554,7 @@ sub HTMLMainSummary{ } my $colspan = 5; - my $w = '20'; if ( $LogType eq 'W' || $LogType eq 'S' ) { - $w = '17'; $colspan = 6; } @@ -13637,7 +13590,7 @@ sub HTMLMainSummary{ print "
     $Message[11] $Message[10] $Message[56] $Message[57] $Message[75]
    \n"; + print '
    '; print "\n"; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { @@ -21081,12 +21034,10 @@ sub HTMLMainExtra{ &$function(); } - my $WIDTHMENU1 = ( $FrameName eq 'mainleft' ? $FRAMEWIDTH : 150 ); - # TOP BAN #--------------------------------------------------------------------- if ( $ShowMenu || $FrameName eq 'mainleft' ) { - HTMLTopBanner($WIDTHMENU1); + HTMLTopBanner(); } # Call to plugins' function AddHTMLMenuHeader From 03d952ca39794a68f54d1902e5c62631e46bc459 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 11:01:08 +0200 Subject: [PATCH 046/152] reset domains/country on white bg --- wwwroot/cgi-bin/awstats.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index c413fca8c..a0fc652c6 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -958,7 +958,7 @@ sub renderCss { #domain { font-weight: 900; font-size: 4ch } #header-form { display: flex; flex-wrap: wrap; column-gap: 20px; } .multi-data-table { display: flex; column-gap: 5dvw; flex-wrap: wrap; justify-content: center } -.multi-data-table.worldmap{ background-color: #4477DD;position: relative; color: #FFFFFF } +.multi-data-table.worldmap{ position: relative; } .data-table { border-spacing: 0 2px } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } .data-table tbody tr:hover { font-weight: 900; background: rgba(0,0,0,0.2); transform: scale(1.1) translateX(2px); } @@ -998,8 +998,8 @@ sub renderCss { .hr-9{ rotate: 270deg } .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } -#worldmap{ width: 50dvw; margin-top: 1dvh; background-color: #4477DD; } -.title-map{ position:absolute; top:5px; left:5px; } +#worldmap{ width: 100%; margin-top: 1dvh; background-color: #4477DD; } +.title-map{ position:absolute; top: 16px; color: #FFFFFF; } .country { text-transform: uppercase; font-weight: 700; } .landxx{ fill: rgba(128, 86, 86, 1) !important; transition: fill 0.5s ease-in } .lighted-land{ fill: var(--aws-color-u) !important; fill-rule: evenodd;} From 742acff11b9cd5cd8a785bda40118161407fd590 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 27 Jul 2024 11:15:04 +0200 Subject: [PATCH 047/152] flex container --- wwwroot/cgi-bin/awstats.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index a0fc652c6..da6c213f8 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -942,7 +942,7 @@ sub renderCss { . '}' . < Date: Sun, 28 Jul 2024 02:01:45 +0200 Subject: [PATCH 048/152] Lighten default pages stats blue background --- wwwroot/cgi-bin/awstats.model.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/awstats.model.conf b/wwwroot/cgi-bin/awstats.model.conf index 0d03bcd1d..2064b071f 100644 --- a/wwwroot/cgi-bin/awstats.model.conf +++ b/wwwroot/cgi-bin/awstats.model.conf @@ -1316,7 +1316,7 @@ color_link="0011BB" # Color of HTML links (Default = "0011BB") color_hover="605040" # Color of HTML on-mouseover links (Default = "605040") color_u="FFAA66" # Background color for number of unique visitors (Default = "FFAA66") color_v="F4F090" # Background color for number of visites (Default = "F4F090") -color_p="4477DD" # Background color for number of pages (Default = "4477DD") +color_p="74A2FD" # Background color for number of pages (Default = "74A2FD") color_h="66DDEE" # Background color for number of hits (Default = "66DDEE") color_k="2EA495" # Background color for number of bytes (Default = "2EA495") color_s="8888DD" # Background color for number of search (Default = "8888DD") From 04b7804a8d25834c90849eababd0236cd0bd04f3 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 02:02:04 +0200 Subject: [PATCH 049/152] update fr translation --- wwwroot/cgi-bin/lang/awstats-fr.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index caaa828f0..652152e2d 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -53,7 +53,7 @@ message48=Adresse IP message49=Hits en échec message50=Navigateurs non reconnus (champ useragent brut) message51=robots différents -message52=visites/visiteur +message52=visites / visiteur message53=Visiteurs Robots/Spiders message54=Analyseur de log libre pour statistiques Web avancées message55=sur @@ -75,7 +75,7 @@ message70=Nov message71=Déc message72=Navigation message73=Types de fichiers -message74=Mise à jour immédiate +message74=Mettre à jour message75=Bande passante message76=Retour page principale message77=Top @@ -160,9 +160,9 @@ message155=Cluster message156=Les robots présentés ici sont à l'origine de hits ou de traffic "non vus" par les visiteurs donc non représentés dans les autres tableaux. message157=Les nombres après le + indiquent les hits avec succès sur les fichiers "robots.txt". message158=Les vers présentés ici sont à l'origine de hits ou de traffic "non vus" par les visiteurs donc non représentés dans les autres tableaux. -message159=Le trafic 'non vu' est le trafic généré par les robots, vers ou réponses HTTP avec code retour spécial. -message160=Trafic 'vu' -message161=Trafic 'non vu' +message159=Le trafic 'non vu' est généré par les robots, vers ou réponses HTTP avec code retour spécial. +message160=vu +message161=non vu message162=Historique mensuel message163=Vers message164=vers differents From e1cd7b01fabcf85dc61bad71c94d80c279cda3f3 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 02:03:52 +0200 Subject: [PATCH 050/152] new headers - for global page - for sections + css stuffs --- wwwroot/cgi-bin/awstats.pl | 1069 ++++++++++++++---------------------- 1 file changed, 398 insertions(+), 671 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index da6c213f8..b788d9547 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -84,7 +84,7 @@ $TotalEntries $TotalExits $TotalBytesPages $TotalDifferentPages $TotalKeyphrases $TotalKeywords $TotalDifferentKeyphrases $TotalDifferentKeywords $TotalSearchEnginesPages $TotalSearchEnginesHits $TotalRefererPages $TotalRefererHits $TotalDifferentSearchEngines $TotalDifferentReferer - $FrameName $Center $FileConfig $FileSuffix $Host $YearRequired $MonthRequired $DayRequired $HourRequired + $FrameName $FileConfig $FileSuffix $Host $YearRequired $MonthRequired $DayRequired $HourRequired $QueryString $SiteConfig $StaticLinks $PageCode $PageDir $PerlParsingFormat $PerlParsingFormatJsonMap $UserAgent $pos_vh $pos_host $pos_logname $pos_date $pos_tz $pos_method $pos_url $pos_code $pos_size $pos_time $pos_referer $pos_agent $pos_query $pos_gzipin $pos_gzipout $pos_compratio $pos_timetaken @@ -109,13 +109,13 @@ $TotalSearchEnginesPages = $TotalSearchEnginesHits = $TotalRefererPages = 0; $TotalRefererHits = $TotalDifferentSearchEngines = $TotalDifferentReferer = 0; ( - $FrameName, $Center, $FileConfig, $FileSuffix, + $FrameName, $FileConfig, $FileSuffix, $Host, $YearRequired, $MonthRequired, $DayRequired, $HourRequired, $QueryString, $SiteConfig, $StaticLinks, $PageCode, $PageDir, $PerlParsingFormat, $UserAgent, $PerlParsingFormatJsonMap ) - = ( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', undef ); + = ( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', undef ); # ----- Plugins variable ----- use vars qw/ %PluginsLoaded $PluginDir $AtLeastOneSectionPlugin /; @@ -920,7 +920,8 @@ sub renderCss { my $css = ''; $css .= ':root {' - . '--default-page-color: #' . $color_text . ';' + . '--default-page-color: hsl(1, 0%, 25%);' + . '--default-page-bgcolor: hsl(1, 0%, 95%);' . '--aws-color-u: #' . $color_u . ';' . '--aws-color-v: #' . $color_v . ';' . '--aws-color-p: #' . $color_p . ';' @@ -929,37 +930,33 @@ sub renderCss { . '--aws-color-e: #' . $color_e . ';' . '--aws-color-x: #' . $color_x . ';' . '--aws-color-s: #' . $color_s . ';' - . '--dark-color: rgba(0,0,0,0.5);' - . '--light-color: rgba(255,255,255,0.9);' + . '--dark-color: hsl(1, 0%, 50%);' + . '--neutral-color: hsl(1, 0%, 75%);' + . '--light-color: hsl(1, 0%, 90%);' . '--a-color: #' . $color_link . ';' - . '--a-visited-color: #' . $color_link . ';' . '--a-hover-color: #' . $color_hover . ';' - . '--aws-table-border-color: #' . $color_TableBorder . ';' - . '--aws-background-color: #' . $color_Background . ';' - . '--aws-title-text-color: #' . $color_titletext . ';' - . '--aws-table-title-color: #' . $color_TableTitle . ';' - . '--aws-table-title-bgcolor: #' . $color_TableBGTitle . ';' . '}' . < header { display: flex; flex-wrap: wrap; column-gap: 20px; } +#domain { font-weight: 900; font-size: 2.4em } +header select { width : 60px } +nav { height: 17px; background-color: #F9F9F9; width:clamp(760px, 960px, 80%); } +#summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; align-items: flex-start;} +#summary-logs div { padding: 2px 4px } +.summary-label { margin: 0 9px; } +button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } +section header {border-bottom: 8px solid var(--light-color); width: 100%; text-align: center; font-weight: 900; font-size: 1.4rem; } .multi-data-table { display: flex; column-gap: 5dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ position: relative; } -.data-table { border-spacing: 0 2px } +.data-table { border-spacing: 0 2px; margin: auto; } +.data-table tfoot { display: table-header-group } +.data-table tbody div { opacity: 0.9 } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } .data-table tbody tr:hover { font-weight: 900; background: rgba(0,0,0,0.2); transform: scale(1.1) translateX(2px); } .data-table th, .data-table td:first-child { padding: 2px 4px } @@ -968,7 +965,7 @@ sub renderCss { .data-table td { text-align: right; font-weight: 700; } .data-table th, .data-table td:first-child:not(.country) { font-weight: 400 } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } -.data-table .data-table-sum { font-size : 1.2em } +.data-table-sum { font-size : 1.3em } .data-table .title { font-size: 2em } .currentday{ font-weight: 900 } .bar-table { text-align: center } @@ -976,35 +973,28 @@ sub renderCss { .bar{ } .bar-horizontal{ height: 4px } .bar-vertical{ display: inline-block; width: 4px; } -.color-u{ background-color: var(--aws-color-u) } -.color-v{ background-color: var(--aws-color-v) } -.color-p{ background-color: var(--aws-color-p) } -.color-h{ background-color: var(--aws-color-h) } -.color-b{ background-color: var(--aws-color-b) } -.color-e{ background-color: var(--aws-color-e) } -.color-x{ background-color: var(--aws-color-x) } -.color-s{ background-color: var(--aws-color-s) } .clock{ display: inline-block; vertical-align: bottom; height: 16px; width: 16px; margin: 0 5px; border-radius: 50%; } -.clock-night{ background: conic-gradient(rgba(30, 28, 97, 1) 330deg, rgba(244, 240, 144, 1) 30deg); } -.clock-day{ background: conic-gradient(rgba(244, 240, 144, 1) 330deg, rgba(30, 28, 97, 1) 30deg); } -.hr-1{ rotate: 30deg } -.hr-2{ rotate: 60deg } -.hr-3{ rotate: 90deg } -.hr-4{ rotate: 120deg } -.hr-5{ rotate: 150deg } -.hr-6{ rotate: 180deg } -.hr-7{ rotate: 210deg } -.hr-8{ rotate: 240deg } -.hr-9{ rotate: 270deg } -.hr-10{ rotate: 300deg } -.hr-11{ rotate: 330deg } +.hr-1{ rotate: 30deg } .hr-2{ rotate: 60deg } .hr-3{ rotate: 90deg } .hr-4{ rotate: 120deg } .hr-5{ rotate: 150deg } .hr-6{ rotate: 180deg } .hr-7{ rotate: 210deg } .hr-8{ rotate: 240deg } .hr-9{ rotate: 270deg } .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } #worldmap{ width: 100%; margin-top: 1dvh; background-color: #4477DD; } -.title-map{ position:absolute; top: 16px; color: #FFFFFF; } +.title-map{ position:absolute; top: 16px; color: var(--light-color); } .country { text-transform: uppercase; font-weight: 700; } +/* colors */ +.bg-u{ background-color: var(--aws-color-u) } +.bg-v{ background-color: var(--aws-color-v) } +.bg-p{ background-color: var(--aws-color-p) } +.bg-h{ background-color: var(--aws-color-h) } +.bg-b{ background-color: var(--aws-color-b) } +.bg-e{ background-color: var(--aws-color-e) } +.bg-x{ background-color: var(--aws-color-x) } +.bg-s{ background-color: var(--aws-color-s) } +.clock-night{ background: conic-gradient(rgba(30, 28, 97, 1) 330deg, rgba(244, 240, 144, 1) 30deg); } +.clock-day{ background: conic-gradient(rgba(244, 240, 144, 1) 330deg, rgba(30, 28, 97, 1) 30deg); } .landxx{ fill: rgba(128, 86, 86, 1) !important; transition: fill 0.5s ease-in } +.oceanxx{ fill: #4477DD !important; stroke-width: 0 !important; } .lighted-land{ fill: var(--aws-color-u) !important; fill-rule: evenodd;} .zoomed-land{ fill: var(--aws-color-v) !important;} -.oceanxx{ fill: #4477DD !important; stroke-width: 0 !important; } +.weekend { background-color: var(--light-color) } +.data-table-average { background-color: var(--neutral-color) } EOF # Call to plugins' function AddHTMLStyles @@ -1139,7 +1129,6 @@ sub html_end { } if ( $FrameName ne 'index' && $FrameName ne 'mainleft' ) { - print "$Center

    \n"; print ""; print @@ -1157,14 +1146,11 @@ sub html_end { } if ($atleastoneplugin) { print ")"; } } - print "
    \n"; - if ($HTMLEndSection) { print "
    \n$HTMLEndSection\n"; } + print ""; + if ($HTMLEndSection) { print "$HTMLEndSection\n"; } } print "\n"; if ( $FrameName ne 'index' ) { - if ( $FrameName ne 'mainleft' && $BuildReportFormat eq 'html' ) { - print "
    \n"; - } print ''; print "\n"; } @@ -1184,45 +1170,37 @@ sub html_end { sub tab_head { my $title = shift; my $tooltipnb = shift; - my $width = shift || 70; - my $class = shift; + + print '
    '; + print '
    ' . $title . '
    '; # Call to plugins' function TabHeadHTML - my $extra_head_html = ''; - foreach my $pluginname ( keys %{ $PluginsLoaded{'TabHeadHTML'} } ) { - my $function = "TabHeadHTML_$pluginname"; - $extra_head_html .= &$function($title); - } + # my $extra_head_html = ''; + # foreach my $pluginname ( keys %{ $PluginsLoaded{'TabHeadHTML'} } ) { + # my $function = "TabHeadHTML_$pluginname"; + # $extra_head_html .= &$function($title); + # } - if ( $width == 70 && $QueryString =~ /buildpdf/i ) { - print -"
    \n"; - } - else { - print -"
    \n"; - } + # if ($tooltipnb) { + # print ""; + # } + # else { + # print ""; + # } - if ($tooltipnb) { - print ""; - } - else { - print ""; - } - print "\n"; - print "
    $title " + # . $extra_head_html . "
    $title " + # . $extra_head_html . "
    $title " - . $extra_head_html . "
    $title " - . $extra_head_html . " 
    \n"; - if ( $width == 70 && $QueryString =~ /buildpdf/i ) { - print -"\n"; - } - else { - print -"
    \n"; - } +# print "
    \n"; +# if ( $width == 70 && $QueryString =~ /buildpdf/i ) { +# print +# "\n"; +# } +# else { +# print +# "
    \n"; +# } } #------------------------------------------------------------------------------ @@ -1234,12 +1212,12 @@ sub tab_head { #------------------------------------------------------------------------------ sub tab_end { my $string = shift; - print "
    "; + # print "
    "; if ($string) { - print -"$string
    \n"; + print "
    $string
    "; } - print "
    \n\n"; + + print ''; } #------------------------------------------------------------------------------ @@ -1282,7 +1260,6 @@ sub error { if ( !$ErrorMessages && $message =~ /^Format error$/i ) { # Files seems to have bad format - if ( scalar keys %HTMLOutput ) { print "

    \n"; } if ( $message !~ $LogSeparator ) { # Bad LogSeparator parameter @@ -1365,7 +1342,7 @@ sub error { } print "And this is an example of records AWStats found in your log file (the record number $NbOfLinesForCorruptedLog in your log):\n"; - print( scalar keys %HTMLOutput ? "
    $tagfontgrey" : "" ); + print( scalar keys %HTMLOutput ? "$tagfontgrey" : "" ); print "$secondmessage"; print( scalar keys %HTMLOutput @@ -1380,9 +1357,9 @@ sub error { #print "\n"; } else { - print( scalar keys %HTMLOutput ? "
    $tagfontred\n" : "" ); + print( scalar keys %HTMLOutput ? "$tagfontred\n" : "" ); print( $ErrorMessages? "$ErrorMessages" : "Error: $message" ); - print( scalar keys %HTMLOutput ? "\n

    " : "" ); + print( scalar keys %HTMLOutput ? "\n
    " : "" ); print "\n"; } if ( !$ErrorMessages && !$donotshowsetupinfo ) { @@ -8491,7 +8468,7 @@ sub HtmlBarH { my $width = shift || 0; my $alt = shift || ''; - return '
    '; + return '
    '; } #------------------------------------------------------------------------------ @@ -8514,7 +8491,7 @@ sub HtmlBar { $height = 1; } - return '
    '; + return '
    '; } #------------------------------------------------------------------------------ @@ -9208,8 +9185,6 @@ sub HTMLShowFormFilter { print "   "; print "\n"; print "\n"; - print "
    \n"; - print "\n"; } } @@ -9985,7 +9960,7 @@ sub HTMLShowEmailSendersChart { #&ShowFormFilter("emailsfilter",$EmailsFilter); # Show emails list - print "$Center 
    \n"; + print " "; my $title; if ( $HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'} ) { $title = "$Message[131]"; @@ -10016,7 +9991,7 @@ sub HTMLShowEmailSendersChart { "$Message[131] : " . ( scalar keys %_emails_h ) . ""; if ( $ShowEMailSenders =~ /H/i ) { - print "$Message[57]"; } @@ -10028,7 +10003,7 @@ sub HTMLShowEmailSendersChart { } if ( $ShowEMailSenders =~ /M/i ) { print -"$Message[106]"; +"$Message[106]"; } if ( $ShowEMailSenders =~ /L/i ) { print "$Message[9]"; @@ -10152,7 +10127,7 @@ sub HTMLShowEmailReceiversChart { #&ShowFormFilter("emailrfilter",$EmailrFilter); # Show emails list - print "$Center 
    \n"; + print " "; my $title; if ( $HTMLOutput{'allemailr'} || $HTMLOutput{'lastemailr'} ) { $title = "$Message[132]"; @@ -10183,7 +10158,7 @@ sub HTMLShowEmailReceiversChart { "$Message[132] : " . ( scalar keys %_emailr_h ) . ""; if ( $ShowEMailReceivers =~ /H/i ) { - print "$Message[57]"; } @@ -10195,7 +10170,7 @@ sub HTMLShowEmailReceiversChart { } if ( $ShowEMailReceivers =~ /M/i ) { print -"$Message[106]"; +"$Message[106]"; } if ( $ShowEMailReceivers =~ /L/i ) { print "$Message[9]"; @@ -10304,232 +10279,124 @@ sub HTMLShowEmailReceiversChart { # Return: - #------------------------------------------------------------------------------ sub HTMLTopBanner{ - my $frame = ( $FrameName eq 'mainleft' ); - if ($Debug) { debug( "ShowTopBan", 2 ); } - print "$Center \n"; + + print " \n"; - if ( $FrameName ne 'mainleft' ) { + my $NewLinkParams = ${QueryString}; + $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; + $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; + $NewLinkParams =~ s/(^|&|&)year=[^&]*//i; + $NewLinkParams =~ s/(^|&|&)month=[^&]*//i; + $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; + $NewLinkParams =~ s/(&|&)+/&/i; + $NewLinkParams =~ s/^&//; + $NewLinkParams =~ s/&$//; + my $NewLinkTarget = ''; + + if ( $FrameName eq 'mainright' ) { + $NewLinkTarget = " target=\"_parent\""; + } + + print '
    '; + + my $lastUpdateBuild = (($LastUpdate) ? + '' . Format_Date( $LastUpdate, 0 ) . '' + : '' + . (( !$UpdateStats ) ? $Message[24] : 'No qualified records found in log (' . $NbOfLinesCorrupted .' corrupted, ' . $NbOfLinesComment . ' comments, ' . $NbOfLinesBlank . ' Blank, ' . $NbOfLinesDropped .' dropped)') + . '' + ); + + if ( $AllowToUpdateStatsFromBrowser && !$StaticLinks ) { my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; - $NewLinkParams =~ s/(^|&|&)year=[^&]*//i; - $NewLinkParams =~ s/(^|&|&)month=[^&]*//i; $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; + if ( $FrameName eq 'mainright' ) { + $NewLinkParams .= "&framename=mainright"; + } $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; - my $NewLinkTarget = ''; - - if ( $FrameName eq 'mainright' ) { - $NewLinkTarget = " target=\"_parent\""; - } - print '
    '; - - print '
    ' . $SiteDomain . '
    '; - - # Logo and flags - print ''; - - if ( !$StaticLinks ) { Show_Flag_Links($Lang); } + if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } + $lastUpdateBuild .= ''; } - print ''; + print '
    ' . $SiteDomain . '
    '. $Message[35] .' : ' . $lastUpdateBuild . '
    ' + . ''; + + if ( !$StaticLinks ) { Show_Flag_Links($Lang); } - if ( $FrameName ne 'mainright' ) { + if ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ) { - # Print Statistics Of - if ( $FrameName eq 'mainleft' ) { - my $shortSiteDomain = $SiteDomain; - if ( length($SiteDomain) > 30 ) { - $shortSiteDomain = - substr( $SiteDomain, 0, 20 ) . "..." - . substr( $SiteDomain, length($SiteDomain) - 5, 5 ); - } - print ""; - } - - print "\n"; - } - if ( $FrameName ne 'mainleft' ) { + print ''; - # Print Last Update - print ''; - print '"; + print ''; - # Logo and flags - if ( $FrameName eq 'mainright' ) { - if ( $LogoLink =~ "https://www.awstats.org" ) { - print ""; + print ''; } - print "\n"; - - # Print selected period of analysis (month and year required) - print ""; - print "\n"; - } - if ( $QueryString !~ /buildpdf/i ) { - print "
    $Message[7]:
    $shortSiteDomain
    '. $Message[35] .' : '; - if ($LastUpdate) { print Format_Date( $LastUpdate, 0 ); } - else { + print ''; + - # Here NbOfOldLines = 0 (because LastUpdate is not defined) - if ( !$UpdateStats ) { - print "$Message[24]"; - } - else { - print "No qualified records found in log - ($NbOfLinesCorrupted corrupted, $NbOfLinesComment comments, $NbOfLinesBlank Blank, - $NbOfLinesDropped dropped)"; - } + print ''; - # Print Update Now link - if ( $AllowToUpdateStatsFromBrowser && !$StaticLinks ) { - my $NewLinkParams = ${QueryString}; - $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; - $NewLinkParams =~ s/(^|&|&)staticlinks(=\w*|$)//i; - $NewLinkParams =~ s/(^|&|&)framename=[^&]*//i; - if ( $FrameName eq 'mainright' ) { - $NewLinkParams .= "&framename=mainright"; - } - $NewLinkParams =~ s/(&|&)+/&/i; - $NewLinkParams =~ s/^&//; - $NewLinkParams =~ s/&$//; - if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } - print "       "; - print "$Message[74]"; + print '\n"; + if ( $DatabaseBreak eq 'day' || $DatabaseBreak eq 'hour') { + if (!$DayRequired) { $DayRequired = $nowday; } + print '\n"; - } - if ( !$StaticLinks ) { Show_Flag_Links($Lang); } - print "
    "; - if ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ) { - print "\n"; - - print "\n"; - print "\n"; - - if ( $DatabaseBreak eq 'day' || - $DatabaseBreak eq 'hour') { - if (!$DayRequired) { - $DayRequired = $nowday; - } - print "\n"; - } - - if ( $DatabaseBreak eq 'hour') { - if (!$HourRequired) { - $HourRequired = $nowhour; - } - print "\n"; - } - - print "\n"; - if ($SiteConfig) { - print -"\n"; - } - if ($DirConfig) { - print -"\n"; - } - if ( $QueryString =~ /lang=(\w+)/i ) { - print - "\n"; - } - if ( $QueryString =~ /debug=(\d+)/i ) { - print - "\n"; - } - if ( $FrameName eq 'mainright' ) { - print -"\n"; + if ( $DatabaseBreak eq 'hour') { + if (!$HourRequired) { $HourRequired = $nowhour; } + print '"; + print ''; } - else { - print ""; - if ($DayRequired) { print "$Message[4] $DayRequired - "; } - if ( $MonthRequired eq 'all' ) { - print "$Message[6] $YearRequired"; - } - else { - print - "$Message[5] $MonthNumLib{$MonthRequired} $YearRequired"; - } - print ""; + + print '' + . (($SiteConfig) ? '' : '') + . (($DirConfig) ? '' : '') + . (( $QueryString =~ /lang=(\w+)/i ) ? '' : '') + . (( $QueryString =~ /debug=(\d+)/i ) ? '' : '') + . (( $FrameName eq 'mainright' ) ? '' : '') + . ''; + + print ''; + + } else { + print ""; + if ($DayRequired) { print "$Message[4] $DayRequired - "; } + + if ( $MonthRequired eq 'all' ) { + print "$Message[6] $YearRequired"; + } else { + print "$Message[5] $MonthNumLib{$MonthRequired} $YearRequired"; } - print "
    \n"; - } - else { - print "\n"; + + print ""; } - if ( $FrameName ne 'mainleft' ) { print ""; } + print "
    "; + } #------------------------------------------------------------------------------ @@ -10540,6 +10407,10 @@ sub HTMLTopBanner{ # Return: - #------------------------------------------------------------------------------ sub HTMLMenu{ + + print ''; + return; + my $NewLinkParams = shift; my $NewLinkTarget = shift; my $frame = ( $FrameName eq 'mainleft' ); @@ -11022,7 +10893,7 @@ sub HTMLMainFileType{ my $NewLinkTarget = shift; if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowFileTypesStatsCompressionStats", 2 ); } - print "$Center \n"; + print " \n"; my $Totalh = 0; foreach ( keys %_filetypes_h ) { $Totalh += $_filetypes_h{$_}; } my $Totalk = 0; @@ -11076,18 +10947,18 @@ sub HTMLMainFileType{ "$Message[73]"; if ( $ShowFileTypesStats =~ /H/i ) { - print "$Message[57]$Message[15]"; + . ">$Message[57]$Message[15]"; } if ( $ShowFileTypesStats =~ /B/i ) { - print "$Message[75]$Message[15]"; + . ">$Message[75]$Message[15]"; } if ( $ShowFileTypesStats =~ /C/i ) { print -"$Message[100]$Message[101]$Message[99]"; +"$Message[100]$Message[101]$Message[99]"; } print "\n"; my $total_con = 0; @@ -11226,7 +11097,7 @@ sub HTMLMainFileSize{ } if ($periodo) { $request_frequency_average = $number_of_requests/$periodo;} else { $request_frequency_average = 0 }; - print "$Center 
    \n"; + print " "; my $title = "$Message[186]"; &tab_head($title, 19, 0, 'filesizes'); my $Totals = 0; @@ -11237,7 +11108,7 @@ sub HTMLMainFileSize{ } if ($Totals) { $average_s = int($average_s / $Totals); } else { $average_s = '?'; } - print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; + print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; my $total_s = 0; my $count = 0; foreach my $key (@PayloadRange) { @@ -11305,7 +11176,7 @@ sub HTMLMainRequestTime{ } if ($periodo) { $request_frequency_average = $number_of_requests / $periodo;} else { $request_frequency_average = 0}; - print "$Center 
    \n"; + print " "; my $title = "$Message[188]"; &tab_head($title, 19, 0, 'requesttimes'); my $Totals = 0; @@ -11316,7 +11187,7 @@ sub HTMLMainRequestTime{ } if ($Totals) { $average_s = int($average_s / $Totals); } else { $average_s = '?'; } - print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; + print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; my $total_s = 0; my $count = 0; foreach my $key (@TimeRange) { @@ -11354,15 +11225,15 @@ sub HTMLMainRequestTime{ #------------------------------------------------------------------------------ sub HTMLShowBrowserDetail{ # Show browsers versions - print "$Center 
    "; + print " "; my $title = "$Message[21]"; &tab_head( "$title", 19, 0, 'browsersversions' ); print "$Message[58]"; print -"$Message[111]$Message[56]$Message[15]"; +"$Message[111]$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print " "; print "\n"; my $total_h = 0; @@ -11608,7 +11479,7 @@ sub HTMLShowBrowserDetail{ #------------------------------------------------------------------------------ sub HTMLShowBrowserUnknown{ my $NewLinkTarget = shift; - print "$Center 
    \n"; + print " "; my $title = "$Message[50]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link @@ -11655,15 +11526,15 @@ sub HTMLShowBrowserUnknown{ #------------------------------------------------------------------------------ sub HTMLShowOSDetail{ # Show os versions - print "$Center 
    "; + print " "; my $title = "$Message[59]"; &tab_head( "$title", 19, 0, 'osversions' ); print "$Message[58]"; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print "\n"; my $total_h = 0; my $total_p = 0; @@ -11878,7 +11749,7 @@ sub HTMLShowOSDetail{ #------------------------------------------------------------------------------ sub HTMLShowOSUnknown{ my $NewLinkTarget = shift; - print "$Center 
    \n"; + print " "; my $title = "$Message[46]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link @@ -11925,7 +11796,7 @@ sub HTMLShowOSUnknown{ #------------------------------------------------------------------------------ sub HTMLShowReferers{ my $NewLinkTarget = shift; - print "$Center 
    \n"; + print " "; my $title = "$Message[40]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link @@ -11939,9 +11810,9 @@ sub HTMLShowReferers{ print "".Format_Number($TotalDifferentSearchEngines)." $Message[122]"; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print "\n"; my $total_s = 0; my $total_p = 0; @@ -12027,7 +11898,7 @@ sub HTMLShowReferers{ #------------------------------------------------------------------------------ sub HTMLShowRefererPages{ my $NewLinkTarget = shift; - print "$Center 
    \n"; + print " "; my $total_p = 0; my $total_h = 0; my $rest_p = 0; @@ -12070,15 +11941,15 @@ sub HTMLShowRefererPages{ print "$cpt $Message[28]"; #if ($MonthRequired ne 'all') { - # if ($HTMLOutput{'refererpages'}) { print "
    $Message[102]: $TotalDifferentPages $Message[28]"; } + # if ($HTMLOutput{'refererpages'}) { print "$Message[102]: $TotalDifferentPages $Message[28]"; } #} } else { print "$Message[102]: ".Format_Number($cpt)." $Message[28]"; } print ""; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; print "\n"; my $total_s = 0; my $count = 0; @@ -12165,7 +12036,7 @@ sub HTMLShowRefererPages{ #------------------------------------------------------------------------------ sub HTMLShowKeyPhrases{ my $NewLinkTarget = shift; - print "$Center 
    \n"; + print " "; my $title = "$Message[43]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link @@ -12178,7 +12049,7 @@ sub HTMLShowKeyPhrases{ &tab_head( $title, 19, 0, 'keyphrases' ); print "".Format_Number($TotalDifferentKeyphrases)." $Message[103]$Message[14]$Message[15]\n"; + . ">".Format_Number($TotalDifferentKeyphrases)." $Message[103]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( @@ -12233,7 +12104,7 @@ sub HTMLShowKeyPhrases{ #------------------------------------------------------------------------------ sub HTMLShowKeywords{ my $NewLinkTarget = shift; - print "$Center 
    \n"; + print " "; my $title = "$Message[44]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link @@ -12246,7 +12117,7 @@ sub HTMLShowKeywords{ &tab_head( $title, 19, 0, 'keywords' ); print "".Format_Number($TotalDifferentKeywords)." $Message[13]$Message[14]$Message[15]\n"; + . ">".Format_Number($TotalDifferentKeywords)." $Message[13]$Message[14]$Message[15]\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Keyword'}, @@ -12303,16 +12174,16 @@ sub HTMLShowErrorCodes{ $title = $customtitles{$code} ? $customtitles{$code} : (join(' ', ( ($httpcodelib{$code} ? $httpcodelib{$code} : 'Unknown error'), "urls (HTTP code " . $code . ")" ))); - print "$Center 
    \n"; + print " "; &tab_head( $title, 19, 0, "errors$code" ); print "URL (" . Format_Number(( scalar keys %{$_sider_h{$code}} )) - . ")$Message[49]"; + . ")$Message[49]"; foreach (split(//, $ShowHTTPErrorsPageDetail)) { if ( $_ =~ /R/i ) { - print "$Message[23]"; + print "$Message[23]"; } elsif ( $_ =~ /H/i ) { - print "$Message[81]"; + print "$Message[81]"; } } print "\n"; @@ -12370,7 +12241,7 @@ sub HTMLShowExtraSections{ if ( $HTMLOutput{"allextra$extranum"} ) { if ($Debug) { debug( "ExtraName$extranum", 2 ); } - print "$Center 
    "; + print " "; my $title = $ExtraName[$extranum]; &tab_head( "$title", 19, 0, "extra$extranum" ); print ""; @@ -12378,11 +12249,11 @@ sub HTMLShowExtraSections{ if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print -"$Message[56]"; +"$Message[56]"; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print -"$Message[57]"; +"$Message[57]"; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print @@ -12535,7 +12406,7 @@ sub HTMLShowRobots{ my $rest_k = 0; my $rest_r = 0; - print "$Center 
    \n"; + print " "; my $title = ''; if ( $HTMLOutput{'allrobots'} ) { $title .= "$Message[53]"; } if ( $HTMLOutput{'lastrobots'} ) { $title .= "$Message[9]"; } @@ -12545,7 +12416,7 @@ sub HTMLShowRobots{ . " $Message[51]"; if ( $ShowRobotsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowRobotsStats =~ /B/i ) { print @@ -12650,7 +12521,7 @@ sub HTMLShowURLDetail{ my $function = "ShowPagesFilter_$pluginname"; &$function(); } - print "$Center 
    \n"; + print " "; # Show filter form &HTMLShowFormFilter( "urlfilter", $FilterIn{'url'}, $FilterEx{'url'} ); @@ -12685,7 +12556,7 @@ sub HTMLShowURLDetail{ if ( $MonthRequired ne 'all' ) { if ( $HTMLOutput{'urldetail'} ) { print -"
    $Message[102]: ".Format_Number($TotalDifferentPages)." $Message[28]"; +"$Message[102]: ".Format_Number($TotalDifferentPages)." $Message[28]"; } } } @@ -12693,7 +12564,7 @@ sub HTMLShowURLDetail{ print ""; if ( $ShowPagesStats =~ /P/i ) { print - "$Message[29]"; + "$Message[29]"; } if ( $ShowPagesStats =~ /B/i ) { print @@ -12701,11 +12572,11 @@ sub HTMLShowURLDetail{ } if ( $ShowPagesStats =~ /E/i ) { print - "$Message[104]"; + "$Message[104]"; } if ( $ShowPagesStats =~ /X/i ) { print - "$Message[116]"; + "$Message[116]"; } # Call to plugins' function ShowPagesAddField @@ -12884,7 +12755,7 @@ sub HTMLShowLogins{ my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; - print "$Center 
    \n"; + print " "; my $title = ''; if ( $HTMLOutput{'alllogins'} ) { $title .= "$Message[94]"; } if ( $HTMLOutput{'lastlogins'} ) { $title .= "$Message[9]"; } @@ -12894,11 +12765,11 @@ sub HTMLShowLogins{ &HTMLShowUserInfo('__title__'); if ( $ShowAuthenticatedUsers =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowAuthenticatedUsers =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowAuthenticatedUsers =~ /B/i ) { print @@ -12993,7 +12864,7 @@ sub HTMLShowHostsUnknown{ my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; - print "$Center 
    \n"; + print " "; &tab_head( "$Message[45]", 19, 0, 'unknownwip' ); print "" . Format_Number(( scalar keys %_host_h )) @@ -13001,11 +12872,11 @@ sub HTMLShowHostsUnknown{ &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { print @@ -13091,7 +12962,7 @@ sub HTMLShowHosts{ my $rest_p = 0; my $rest_h = 0; my $rest_k = 0; - print "$Center 
    \n"; + print " "; # Show filter form &HTMLShowFormFilter( "hostfilter", $FilterIn{'host'}, @@ -13123,7 +12994,7 @@ sub HTMLShowHosts{ if ( $MonthRequired ne 'all' ) { if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} ) { print -"
    $Message[102]: ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1] - ".Format_Number($TotalUnique)." $Message[11]"; +"$Message[102]: ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1] - ".Format_Number($TotalUnique)." $Message[11]"; } } } @@ -13138,11 +13009,11 @@ sub HTMLShowHosts{ &HTMLShowHostInfo('__title__'); if ( $ShowHostsStats =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { print @@ -13266,7 +13137,7 @@ sub HTMLShowDomains{ my $rest_k = 0; my $rest_v = 0; my $rest_u = 0; - print "$Center 
    \n"; + print " "; # Show domains list my $title = ''; @@ -13280,19 +13151,19 @@ sub HTMLShowDomains{ " $Message[17]"; if ( $ShowDomainsStats =~ /U/i ) { print - "$Message[11]"; + "$Message[11]"; } if ( $ShowDomainsStats =~ /V/i ) { print - "$Message[10]"; + "$Message[10]"; } if ( $ShowDomainsStats =~ /P/i ) { print - "$Message[56]"; + "$Message[56]"; } if ( $ShowDomainsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowDomainsStats =~ /B/i ) { print @@ -13435,14 +13306,14 @@ sub HTMLShowDomains{ #------------------------------------------------------------------------------ sub HTMLShowDownloads{ my $regext = qr/\.(\w{1,6})$/; - print "$Center 
    \n"; + print " "; &tab_head( $Message[178], 19, 0, "downloads" ); print "$Message[178]"; - if ( $ShowFileTypesStats =~ /H/i ){print "$Message[57]" - ."206 $Message[57]"; } + if ( $ShowFileTypesStats =~ /H/i ){print "$Message[57]" + ."206 $Message[57]"; } if ( $ShowFileTypesStats =~ /B/i ){ - print "$Message[75]"; - print "$Message[106]"; + print "$Message[75]"; + print "$Message[106]"; } print "\n"; my $count = 0; @@ -13494,9 +13365,10 @@ sub HTMLShowDownloads{ #------------------------------------------------------------------------------ sub HTMLMainSummary{ if ($Debug) { debug( "ShowSummary", 2 ); } - # FirstTime LastTime + my $FirstTime = 0; my $LastTime = 0; + foreach my $key ( keys %FirstTime ) { my $keyqualified = 0; if ( $MonthRequired eq 'all' ) { $keyqualified = 1; } @@ -13512,10 +13384,6 @@ sub HTMLMainSummary{ } } } - - #print "$Center 
    \n"; - my $title = "$Message[128]"; - &tab_head( "$title", 0, 0, 'month' ); my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; @@ -13526,6 +13394,7 @@ sub HTMLMainSummary{ $NewLinkParams =~ s/(&|&)+/&/i; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; + if ($NewLinkParams) { $NewLinkParams = "${NewLinkParams}&"; } my $NewLinkTarget = ''; @@ -13538,226 +13407,86 @@ sub HTMLMainSummary{ my $RatioPages = 0; my $RatioHits = 0; my $RatioBytes = 0; - if ( $TotalUnique > 0 ) { - $RatioVisits = int( $TotalVisits / $TotalUnique * 100 ) / 100; - } - if ( $TotalVisits > 0 ) { - $RatioPages = int( $TotalPages / $TotalVisits * 100 ) / 100; - } - if ( $TotalVisits > 0 ) { - $RatioHits = int( $TotalHits / $TotalVisits * 100 ) / 100; - } - if ( $TotalVisits > 0 ) { - $RatioBytes = - int( ( $TotalBytes / 1024 ) * 100 / - ( $LogType eq 'M' ? $TotalHits : $TotalVisits ) ) / 100; - } - - my $colspan = 5; - if ( $LogType eq 'W' || $LogType eq 'S' ) { - $colspan = 6; - } + + if ( $TotalUnique > 0 ) { $RatioVisits = sprintf( "%.1f", $TotalVisits / $TotalUnique ) ; } + if ( $TotalVisits > 0 ) { $RatioPages = sprintf( "%.1f", $TotalPages / $TotalVisits ); } + if ( $TotalVisits > 0 ) { $RatioHits = sprintf( "%.1f", $TotalHits / $TotalVisits ); } + if ( $TotalVisits > 0 ) { $RatioBytes = int( ( $TotalBytes / 1024 ) * 100 / ( $LogType eq 'M' ? $TotalHits : $TotalVisits ) ) / 100; } # Show first/last - print ""; - print -"$Message[133]\n"; - print( $MonthRequired eq 'all' - ? "$Message[6] $YearRequired" - : "$Message[5] " - . $MonthNumLib{$MonthRequired} - . " $YearRequired" - ); - print "\n"; - print ""; - print "$Message[8]\n"; - print "" - . ( $FirstTime ? Format_Date( $FirstTime, 0 ) : "NA" ) . ""; - print "\n"; - print ""; - print "$Message[9]\n"; - print "" - . ( $LastTime ? Format_Date( $LastTime, 0 ) : "NA" ) - . "\n"; - print "\n"; + print '
    ' + . '' . $Message[133] . ' ' . ($MonthRequired eq 'all' ? $YearRequired : $MonthNumLib{$MonthRequired} . ' ' . $YearRequired) . '' + . '' . $Message[8] . ' ' . ($FirstTime ? Format_Date($FirstTime, 0) : 'N/A') . '' + . '' . $Message[9] . ' ' . ($LastTime ? Format_Date( $LastTime, 0 ) : "NA" ) . '' + . '
    '; # Show main indicators title row - print ""; - if ( $LogType eq 'W' || $LogType eq 'S' ) { - print " "; - } - if ( $ShowSummary =~ /U/i ) { - print "$Message[11]"; - } - else { - print -" "; - } - if ( $ShowSummary =~ /V/i ) { - print "$Message[10]"; - } - else { - print -" "; - } - if ( $ShowSummary =~ /P/i ) { - print "$Message[56]"; - } - else { - print -" "; - } - if ( $ShowSummary =~ /H/i ) { - print "$Message[57]"; - } - else { - print -" "; - } - if ( $ShowSummary =~ /B/i ) { - print "$Message[75]"; - } - else { - print -" "; - } - print "\n"; + print '
    '; + print '
    '; + print (( $ShowSummary =~ /U/i && $LogType ne 'M' ) ? + '
    ' + . '
    $Message[11]
    " + . '
    ' . (($MonthRequired eq 'all') ? '<= ' . Format_Number($TotalUnique) . ' ' . $Message[129] : '' . Format_Number($TotalUnique) . '') . '
    ' + . '
    ' + : '' + ); + + print (( $ShowSummary =~ /V/i && $LogType ne 'M' ) ? + '
    ' + . '
    $Message[10]
    " + . '
    ' . Format_Number($TotalVisits) . '
    ' + . '(' . $RatioVisits . ' ' . $Message[52] .')' + . '
    ' + : '' + ); + + print (( $ShowSummary =~ /P/i && $LogType ne 'M' ) ? + '
    ' + . '
    $Message[56]
    " + . '
    ' + . '
    ' . Format_Number($TotalPages) . '
    ' + . '(' . $RatioPages . ' ' . $Message[56] . ' / ' . $Message[12] . ')' + . '
    ' + . '
    ' . Format_Number($TotalNotViewedPages) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' + . '
    ' + : '' + ); + + print (( $ShowSummary =~ /H/i ) ? + '
    ' + . '
    $Message[57]
    " + . '
    ' + . '
    '.Format_Number($TotalHits).'
    ' + . ($LogType eq 'M' ? '' : ' (' . $RatioHits . ' ' . $Message[57] . ' / ' . $Message[12] . ')') + . '
    ' + . '
    ' . Format_Number($TotalNotViewedHits) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' + . '
    ' + : '' + ); + + print (( $ShowSummary =~ /B/i ) ? + '
    ' + . '
    $Message[75]
    " + . '
    ' + . '
    ' . Format_Bytes( int($TotalBytes) ) . '
    ' + . '(' . $RatioBytes . ' ' . $Message[108] . ' / ' . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] . ')' + . '
    ' + . '
    ' . Format_Bytes( int($TotalNotViewedBytes) ) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' + . '
    ' + : '' + ); +print '
    ' . ($LogType eq 'W' || $LogType eq 'S' ? "* $Message[159]" : "" ) . '
    '; + print '
    '; + print '
    '; + + - # Show main indicators values for viewed traffic - print ""; - if ( $LogType eq 'M' ) { - print "$Message[165]"; - print " 
     \n"; - print " 
     \n"; - if ( $ShowSummary =~ /H/i ) { - print "".Format_Number($TotalHits)."" - . ( - $LogType eq 'M' - ? "" - : "
    ($RatioHits " - . lc( $Message[57] . "/" . $Message[12] ) . ")" - ) - . ""; - } - else { print " "; } - if ( $ShowSummary =~ /B/i ) { - print "" - . Format_Bytes( int($TotalBytes) ) - . "
    ($RatioBytes $Message[108]/" - . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] - . ")"; - } - else { print " "; } - } - else { - if ( $LogType eq 'W' || $LogType eq 'S' ) { - print "$Message[160] *"; - } - if ( $ShowSummary =~ /U/i ) { - print "" - . ( - $MonthRequired eq 'all' - ? "<= ".Format_Number($TotalUnique)."
    $Message[129]" - : "".Format_Number($TotalUnique)."
     " - ) - . ""; - } - else { print " "; } - if ( $ShowSummary =~ /V/i ) { - print -"".Format_Number($TotalVisits)."
    ($RatioVisits $Message[52])"; - } - else { print " "; } - if ( $ShowSummary =~ /P/i ) { - print "".Format_Number($TotalPages)."
    ($RatioPages " - . $Message[56] . "/" - . $Message[12] - . ")"; - } - else { print " "; } - if ( $ShowSummary =~ /H/i ) { - print "".Format_Number($TotalHits)."" - . ( - $LogType eq 'M' - ? "" - : "
    ($RatioHits " - . $Message[57] . "/" - . $Message[12] . ")" - ) - . ""; - } - else { print " "; } - if ( $ShowSummary =~ /B/i ) { - print "" - . Format_Bytes( int($TotalBytes) ) - . "
    ($RatioBytes $Message[108]/" - . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] - . ")"; - } - else { print " "; } - } - print "\n"; - # Show main indicators values for not viewed traffic values - if ( $LogType eq 'M' || $LogType eq 'W' || $LogType eq 'S' ) { - print ""; - if ( $LogType eq 'M' ) { - print "$Message[166]"; - print " 
     \n"; - print " 
     \n"; - if ( $ShowSummary =~ /H/i ) { - print "".Format_Number($TotalNotViewedHits).""; - } - else { print " "; } - if ( $ShowSummary =~ /B/i ) { - print "" - . Format_Bytes( int($TotalNotViewedBytes) ) - . ""; - } - else { print " "; } - } - else { - if ( $LogType eq 'W' || $LogType eq 'S' ) { - print "$Message[161] *"; - } - print " 
     \n"; - if ( $ShowSummary =~ /P/i ) { - print "".Format_Number($TotalNotViewedPages).""; - } - else { print " "; } - if ( $ShowSummary =~ /H/i ) { - print "".Format_Number($TotalNotViewedHits).""; - } - else { print " "; } - if ( $ShowSummary =~ /B/i ) { - print "" - . Format_Bytes( int($TotalNotViewedBytes) ) - . ""; - } - else { print " "; } - } - print "\n"; - } - &tab_end($LogType eq 'W' - || $LogType eq 'S' ? "* $Message[159]" : "" ); } #------------------------------------------------------------------------------ # Function: Return Data table footer with sums -# Parameters: string $title, string $config, hash $sums +# Parameters: string $title, string $config, hash $sums, string $averageTitle, int $average # Output: _ # Return: string #------------------------------------------------------------------------------ @@ -13773,11 +13502,11 @@ sub HTMLDataTableFooter { return '' . '' . '' . $sumTitle . '' - . ( ( $config =~ /U/i ) ? HTMLDataCellWithBar('u', 110, $ref_sums{'u'}, 100) : '' ) - . ( ( $config =~ /V/i ) ? HTMLDataCellWithBar('v', 110, $ref_sums{'v'}, 100) : '' ) - . ( ( $config =~ /P/i ) ? HTMLDataCellWithBar('p', 110, $ref_sums{'p'}, 100) : '' ) - . ( ( $config =~ /H/i ) ? HTMLDataCellWithBar('h', 110, $ref_sums{'h'}, 100) : '' ) - . ( ( $config =~ /B/i ) ? HTMLDataCellWithBar('b', 110, $ref_sums{'b'}, 100) : '' ) + . ( ( $config =~ /U/i ) ? HTMLDataCellWithBar('u', 200, $ref_sums{'u'}, 100) : '' ) + . ( ( $config =~ /V/i ) ? HTMLDataCellWithBar('v', 200, $ref_sums{'v'}, 100) : '' ) + . ( ( $config =~ /P/i ) ? HTMLDataCellWithBar('p', 200, $ref_sums{'p'}, 100) : '' ) + . ( ( $config =~ /H/i ) ? HTMLDataCellWithBar('h', 200, $ref_sums{'h'}, 100) : '' ) + . ( ( $config =~ /B/i ) ? HTMLDataCellWithBar('b', 200, $ref_sums{'b'}, 100) : '' ) . '' . '' . '' . $averageTitle . '' @@ -13802,11 +13531,11 @@ sub HTMLDataTableHeader{ return '' . '' . $title . '' - . ( ( $config =~ /U/i ) ? '' . CleanXSS($Message[11]) . '' : '' ) - . ( ( $config =~ /V/i ) ? '' . CleanXSS($Message[10]) . '' : '' ) - . ( ( $config =~ /P/i ) ? '' . CleanXSS($Message[56]) . '' : '' ) - . ( ( $config =~ /H/i ) ? '' . CleanXSS($Message[57]) . '' : '' ) - . ( ( $config =~ /B/i ) ? '' . CleanXSS($Message[75]) . '' : '' ) + . ( ( $config =~ /U/i ) ? '' . CleanXSS($Message[11]) . '' : '' ) + . ( ( $config =~ /V/i ) ? '' . CleanXSS($Message[10]) . '' : '' ) + . ( ( $config =~ /P/i ) ? '' . CleanXSS($Message[56]) . '' : '' ) + . ( ( $config =~ /H/i ) ? '' . CleanXSS($Message[57]) . '' : '' ) + . ( ( $config =~ /B/i ) ? '' . CleanXSS($Message[75]) . '' : '' ) . ''; } @@ -13831,7 +13560,7 @@ sub HTMLMainMonthly{ my $height = 0; my $bars = ''; - my $width = 9; + my $width = 10; my $data = ''; my $tableData = ''; @@ -13958,9 +13687,8 @@ sub HTMLMainMonthly{ $average_h = sprintf( "%.2f", $total_h / $not_empty_months ); $average_k = sprintf( "%.2f", $total_k / $not_empty_months ); - print "$Center 
    \n"; - &tab_head( "$title", 0, 0, 'month' ); - print "\n"; + print " "; + &tab_head( $title ); # Show bars for month if ($graphPlugin == 1) { @@ -14024,13 +13752,12 @@ sub HTMLMainMonthly{ 'b'=> Format_Bytes(int($average_k)) ); - print HTMLDataTableFooter($Message[102], $ShowMonthStats, \%sums, $Message[96], \%averages); + print HTMLDataTableFooter('', $ShowMonthStats, \%sums, $Message[96], \%averages); # body print '' . $tableData . '' . ''; } - print "\n"; &tab_end(); } @@ -14100,7 +13827,7 @@ sub HTMLMainDaily{ ); } - print "$Center 
    \n"; + print " "; &tab_head( "$title", 0, 0, 'daysofmonth' ); print ""; @@ -14163,7 +13890,7 @@ sub HTMLMainDaily{ $bars .= ''; - $tableData .= '' + $tableData .= '' : '>' ) . '' . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ) . $day . ' ' . $MonthNumLib{$MonthRequired} @@ -14287,7 +14014,7 @@ sub HTMLMainDaily{ 'b'=> Format_Bytes(int($average_k)) ); - print HTMLDataTableFooter($Message[102], $ShowDaysOfMonthStats, \%sums, $Message[96], \%averages); + print HTMLDataTableFooter('', $ShowDaysOfMonthStats, \%sums, $Message[96], \%averages); # body print '' . $tableData . ''; @@ -14326,7 +14053,7 @@ sub HTMLMainDaysofWeek{ my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; - print "$Center 
    \n"; + print " "; &tab_head( "$title", 18, 0, 'daysofweek' ); print ""; print ""; @@ -14503,7 +14230,7 @@ sub HTMLMainDownloads{ if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowDownloadStats", 2 ); } my $regext = qr/\.(\w{1,6})$/; - print "$Center 
    \n"; + print " "; my $Totalh = 0; if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined my $title = @@ -14564,11 +14291,11 @@ sub HTMLMainDownloads{ my $total_dls = scalar keys %_downloads; print "$Message[178]: $total_dls"; - if ( $ShowDownloadsStats =~ /H/i ){print "$Message[57]" - ."206 $Message[57]"; } + if ( $ShowDownloadsStats =~ /H/i ){print "$Message[57]" + ."206 $Message[57]"; } if ( $ShowDownloadsStats =~ /B/i ){ - print "$Message[75]"; - print "$Message[106]"; + print "$Message[75]"; + print "$Message[106]"; } print "\n"; my $count = 0; @@ -14622,7 +14349,7 @@ sub HTMLMainHours{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowHoursStats", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[20]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { @@ -14827,7 +14554,7 @@ sub HTMLMainCountries{ my $rest_u = my $rest_v = my $rest_p = my $rest_h = my $rest_k = 0; my $max_u = my $max_p = my $max_h = 1; - print "$Center "; + print " "; my $title = "$Message[25] ($Message[77] $MaxNbOf{'Domain'})   -    
    \n"; + print " "; my $title = "$Message[81] ($Message[77] $MaxNbOf{'HostsShown'})   -   $Message[56]"; } if ( $ShowHostsStats =~ /H/i ) { - print "$Message[57]"; } if ( $ShowHostsStats =~ /B/i ) { - print "$Message[75]"; } @@ -15213,7 +14940,7 @@ sub HTMLMainLogins{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowAuthenticatedUsers", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[94] ($Message[77] $MaxNbOf{'LoginShown'})   -   "; &HTMLShowUserInfo('__title__'); if ( $ShowAuthenticatedUsers =~ /P/i ) { - print "$Message[56]"; } if ( $ShowAuthenticatedUsers =~ /H/i ) { - print "$Message[57]"; } if ( $ShowAuthenticatedUsers =~ /B/i ) { - print "$Message[75]"; } @@ -15350,7 +15077,7 @@ sub HTMLMainRobots{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowRobotStats", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[53] ($Message[77] $MaxNbOf{'RobotShown'})   -   "; if ( $ShowRobotsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowRobotsStats =~ /B/i ) { print - "$Message[75]"; + "$Message[75]"; } if ( $ShowRobotsStats =~ /L/i ) { print "$Message[9]"; @@ -15472,7 +15199,7 @@ sub HTMLMainRobots{ #------------------------------------------------------------------------------ sub HTMLMainWorms{ if ($Debug) { debug( "ShowWormsStats", 2 ); } - print "$Center 
    \n"; + print " "; &tab_head( "$Message[163] ($Message[77] $MaxNbOf{'WormsShown'})", 19, 0, 'worms' ); print ""; @@ -15480,11 +15207,11 @@ sub HTMLMainWorms{ print "$Message[167]"; if ( $ShowWormsStats =~ /H/i ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowWormsStats =~ /B/i ) { print - "$Message[75]"; + "$Message[75]"; } if ( $ShowWormsStats =~ /L/i ) { print "$Message[9]"; @@ -15564,7 +15291,7 @@ sub HTMLMainWorms{ #------------------------------------------------------------------------------ sub HTMLMainSessions{ if ($Debug) { debug( "ShowSessionsStats", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[117]"; &tab_head( $title, 19, 0, 'sessions' ); my $Totals = 0; @@ -15577,7 +15304,7 @@ sub HTMLMainSessions{ else { $average_s = '?'; } print "$Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]\n"; + . ">$Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]\n"; $average_s = 0; my $total_s = 0; my $count = 0; @@ -15630,7 +15357,7 @@ sub HTMLMainPages{ } my $regext = qr/\.(\w{1,6})$/; print -"$Center   
    \n"; +"   "; my $title = "$Message[19] ($Message[77] $MaxNbOf{'PageShown'})   -   ".Format_Number($TotalDifferentPages)." $Message[28]"; if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { print - "$Message[29]"; + "$Message[29]"; } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { print - "$Message[57]"; + "$Message[57]"; } if ( $ShowPagesStats =~ /B/i ) { print - "$Message[106]"; + "$Message[106]"; } if ( $ShowPagesStats =~ /E/i ) { print - "$Message[104]"; + "$Message[104]"; } if ( $ShowPagesStats =~ /X/i ) { print - "$Message[116]"; + "$Message[116]"; } # Call to plugins' function ShowPagesAddField @@ -15863,7 +15590,7 @@ sub HTMLMainOS{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowOSStats", 2 ); } - print "$Center 
    \n"; + print " "; my $Totalh = 0; my $Totalp = 0; my %new_os_h = (); @@ -15954,9 +15681,9 @@ sub HTMLMainOS{ print " $Message[59]"; print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; print -"$Message[57]$Message[15]\n"; +"$Message[57]$Message[15]\n"; my $total_h = 0; my $total_p = 0; my $count = 0; @@ -16031,7 +15758,7 @@ sub HTMLMainBrowsers{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowBrowsersStats", 2 ); } - print "$Center 
    \n"; + print " "; my $Totalh = 0; my $Totalp = 0; my %new_browser_h = (); @@ -16122,7 +15849,7 @@ sub HTMLMainBrowsers{ } } print -" $Message[21]$Message[111]$Message[56]$Message[15]$Message[57]$Message[15]\n"; +" $Message[21]$Message[111]$Message[56]$Message[15]$Message[57]$Message[15]\n"; my $total_h = 0; my $total_p = 0; my $count = 0; @@ -16204,14 +15931,14 @@ sub HTMLMainBrowsers{ #------------------------------------------------------------------------------ sub HTMLMainScreenSize{ if ($Debug) { debug( "ShowScreenSizeStats", 2 ); } - print "$Center 
    \n"; + print " "; my $Totalh = 0; foreach ( keys %_screensize_h ) { $Totalh += $_screensize_h{$_}; } my $title = "$Message[135] ($Message[77] $MaxNbOf{'ScreenSizesShown'})"; &tab_head( "$title", 0, 0, 'screensizes' ); print -"$Message[135]$Message[15]\n"; +"$Message[135]$Message[15]\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'ScreenSizesShown'}, @@ -16262,7 +15989,7 @@ sub HTMLMainReferrers{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowOriginStats", 2 ); } - print "$Center 
    \n"; + print " "; my $Totalp = 0; foreach ( 0 .. 5 ) { $Totalp += @@ -16312,11 +16039,11 @@ sub HTMLMainReferrers{ "$Message[37]"; if ( $ShowOriginStats =~ /P/i ) { print -"$Message[56]$Message[15]"; +"$Message[56]$Message[15]"; } if ( $ShowOriginStats =~ /H/i ) { print -"$Message[57]$Message[15]"; +"$Message[57]$Message[15]"; } print "\n"; @@ -16346,7 +16073,7 @@ sub HTMLMainReferrers{ ? XMLEncode("$AWScript${NewLinkParams}output=refererse") : "$StaticLinks.refererse.$StaticExt" ) - . "\"$NewLinkTarget>$Message[80]
    \n"; + . "\"$NewLinkTarget>$Message[80]"; if ( scalar keys %_se_referrals_h ) { print "\n"; my $total_p = 0; @@ -16418,7 +16145,7 @@ sub HTMLMainReferrers{ ? XMLEncode("$AWScript${NewLinkParams}output=refererpages") : "$StaticLinks.refererpages.$StaticExt" ) - . "\"$NewLinkTarget>$Message[80]
    \n"; + . "\"$NewLinkTarget>$Message[80]"; if ( scalar keys %_pagesrefs_h ) { print "
    \n"; my $total_p = 0; @@ -16540,12 +16267,12 @@ sub HTMLMainKeys{ my $NewLinkTarget = shift; if ($ShowKeyphrasesStats) { - print "$Center "; + print " "; } if ($ShowKeywordsStats) { - print "$Center "; + print " "; } - if ( $ShowKeyphrasesStats || $ShowKeywordsStats ) { print "
    \n"; } + if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { print "
    "; @@ -16572,7 +16299,7 @@ sub HTMLMainKeys{ ); print "\n"; + . ">\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeyphrasesShown'}, @@ -16643,7 +16370,7 @@ sub HTMLMainKeys{ ); print "\n"; + . ">\n"; my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeywordsShown'}, @@ -16702,7 +16429,7 @@ sub HTMLMainKeys{ #------------------------------------------------------------------------------ sub HTMLMainMisc{ if ($Debug) { debug( "ShowMiscStats", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[139]"; &tab_head( "$title", 19, 0, 'misc' ); print @@ -16771,7 +16498,7 @@ sub HTMLMainHTTPStatus{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowHTTPErrorsStats", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[32]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { @@ -16815,7 +16542,7 @@ sub HTMLMainHTTPStatus{ } print -"\n"; +"\n"; my $total_h = 0; my $count = 0; foreach my $key (@keylist) { @@ -16856,11 +16583,11 @@ sub HTMLMainSMTPStatus{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowSMTPErrorsStats", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[147]"; &tab_head( "$title", 19, 0, 'errors' ); print -"\n"; +"\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); @@ -16893,7 +16620,7 @@ sub HTMLMainCluster{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowClusterStats", 2 ); } - print "$Center 
    \n"; + print " "; my $title = "$Message[155]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { @@ -16941,15 +16668,15 @@ sub HTMLMainCluster{ &HTMLShowClusterInfo('__title__'); if ( $ShowClusterStats =~ /P/i ) { print -""; +""; } if ( $ShowClusterStats =~ /H/i ) { print -""; +""; } if ( $ShowClusterStats =~ /B/i ) { print -""; +""; } print "\n"; my $total_p = my $total_h = my $total_k = 0; @@ -17001,7 +16728,7 @@ sub HTMLMainExtra{ my $extranum = shift; if ($Debug) { debug( "ExtraName$extranum", 2 ); } - print "$Center 
    "; + print " "; my $title = $ExtraName[$extranum]; &tab_head( "$title", 19, 0, "extra$extranum" ); print ""; @@ -17028,15 +16755,15 @@ sub HTMLMainExtra{ if ( $ExtraStatTypes[$extranum] =~ m/P/i ) { print - ""; + ""; } if ( $ExtraStatTypes[$extranum] =~ m/H/i ) { print - ""; + ""; } if ( $ExtraStatTypes[$extranum] =~ m/B/i ) { print - ""; + ""; } if ( $ExtraStatTypes[$extranum] =~ m/L/i ) { print ""; @@ -21238,10 +20965,10 @@ sub HTMLMainExtra{ { # to add unique visitors & number of visits, by J Ruano @ CAPSiDE if ( $ShowDomainsStats =~ /U/i ) { - print ""; + print ""; } if ( $ShowDomainsStats =~ /V/i ) { - print ""; + print ""; } my $function = "AddHTMLContentHeader_$pluginname"; @@ -21320,7 +21047,7 @@ sub HTMLMainExtra{ if ( $HTMLOutput{'info'} ) { # TODO Not yet available - print "$Center 
    "; + print " "; &html_end(1); } @@ -21330,7 +21057,7 @@ sub HTMLMainExtra{ foreach my $key ( keys %HTMLOutput ) { $htmloutput = $key; } if ( $htmloutput =~ /^plugin_(\w+)$/ ) { my $pluginname = $1; - print "$Center 
    "; + print " "; my $function = "AddHTMLGraph_$pluginname"; &$function(); &html_end(1); From 79556ab0aab03ab09499b00869f9827199476177 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 02:17:45 +0200 Subject: [PATCH 051/152] Remove parenthesis on ratio summary --- wwwroot/cgi-bin/awstats.pl | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index b788d9547..56e01a545 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -13435,7 +13435,7 @@ sub HTMLMainSummary{ '
    ' . '
    $Message[10]
    " . '
    ' . Format_Number($TotalVisits) . '
    ' - . '(' . $RatioVisits . ' ' . $Message[52] .')' + . '' . $RatioVisits . ' ' . $Message[52] .'' . '
    ' : '' ); @@ -13445,7 +13445,7 @@ sub HTMLMainSummary{ . '
    $Message[56]
    " . '
    ' . '
    ' . Format_Number($TotalPages) . '
    ' - . '(' . $RatioPages . ' ' . $Message[56] . ' / ' . $Message[12] . ')' + . '' . $RatioPages . ' ' . $Message[56] . ' / ' . $Message[12] . '' . '
    ' . '
    ' . Format_Number($TotalNotViewedPages) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' . '' @@ -13457,7 +13457,7 @@ sub HTMLMainSummary{ . '
    $Message[57]
    " . '
    ' . '
    '.Format_Number($TotalHits).'
    ' - . ($LogType eq 'M' ? '' : ' (' . $RatioHits . ' ' . $Message[57] . ' / ' . $Message[12] . ')') + . ($LogType eq 'M' ? '' : ' ' . $RatioHits . ' ' . $Message[57] . ' / ' . $Message[12] . '') . '
    ' . '
    ' . Format_Number($TotalNotViewedHits) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' . '' @@ -13469,18 +13469,16 @@ sub HTMLMainSummary{ . '
    $Message[75]
    " . '
    ' . '
    ' . Format_Bytes( int($TotalBytes) ) . '
    ' - . '(' . $RatioBytes . ' ' . $Message[108] . ' / ' . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] . ')' + . '' . $RatioBytes . ' ' . $Message[108] . ' / ' . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] . '' . '
    ' . '
    ' . Format_Bytes( int($TotalNotViewedBytes) ) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' . '' : '' ); -print '
    ' . ($LogType eq 'W' || $LogType eq 'S' ? "* $Message[159]" : "" ) . '
    '; - print ''; - print ''; + print '
    ' . ($LogType eq 'W' || $LogType eq 'S' ? "* $Message[159]" : "" ) . '
    '; - + print '' . ''; } From 2c4b54ada56264a2765bbbdf0bbaf24c1fceed1d Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 02:36:30 +0200 Subject: [PATCH 052/152] Fix some css - container width - center bars tables - make the world go round :) --- wwwroot/cgi-bin/awstats.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 56e01a545..2a80f29e5 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -942,7 +942,7 @@ sub renderCss { a:hover, a:focus, a:active{ color: var(--a-hover-color); text-decoration: none; } b { font-weight: 700 } small { font-size: 0.9em } -#container { width: clamp(760px, 960px, 80%); margin: auto; display: flex; flex-wrap: wrap; justify-content: center; row-gap: 25px; align-items: flex-start;} +#container { width: clamp(760px, 960px, 85%); margin: auto; display: flex; flex-wrap: wrap; justify-content: center; row-gap: 25px; align-items: flex-start;} #container > header { display: flex; flex-wrap: wrap; column-gap: 20px; } #domain { font-weight: 900; font-size: 2.4em } header select { width : 60px } @@ -968,14 +968,14 @@ sub renderCss { .data-table-sum { font-size : 1.3em } .data-table .title { font-size: 2em } .currentday{ font-weight: 900 } -.bar-table { text-align: center } +.bar-table { margin: auto; text-align: center } .bar-table tr:first-child td { vertical-align: bottom; } .bar{ } .bar-horizontal{ height: 4px } .bar-vertical{ display: inline-block; width: 4px; } .clock{ display: inline-block; vertical-align: bottom; height: 16px; width: 16px; margin: 0 5px; border-radius: 50%; } .hr-1{ rotate: 30deg } .hr-2{ rotate: 60deg } .hr-3{ rotate: 90deg } .hr-4{ rotate: 120deg } .hr-5{ rotate: 150deg } .hr-6{ rotate: 180deg } .hr-7{ rotate: 210deg } .hr-8{ rotate: 240deg } .hr-9{ rotate: 270deg } .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } -#worldmap{ width: 100%; margin-top: 1dvh; background-color: #4477DD; } +#worldmap{ width: 100%; margin-bottom: 1dvh; background-color: #4477DD; border-radius: 225px; overflow: auto; } .title-map{ position:absolute; top: 16px; color: var(--light-color); } .country { text-transform: uppercase; font-weight: 700; } /* colors */ From 73404fa5503f94b047b3d9afe0a483ebdf57f1e9 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 02:50:24 +0200 Subject: [PATCH 053/152] css fix unboldy things --- wwwroot/cgi-bin/awstats.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 2a80f29e5..2f61b43d3 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -950,6 +950,7 @@ sub renderCss { #summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; align-items: flex-start;} #summary-logs div { padding: 2px 4px } .summary-label { margin: 0 9px; } +#summary-logs div[class^="bg-"], .data-table th, .currentday{ font-weight: 900 } button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } section header {border-bottom: 8px solid var(--light-color); width: 100%; text-align: center; font-weight: 900; font-size: 1.4rem; } .multi-data-table { display: flex; column-gap: 5dvw; flex-wrap: wrap; justify-content: center } @@ -963,11 +964,10 @@ sub renderCss { .data-table td:not(:first-child) { padding: 2px 0 } .data-table td div { padding: 3px 4px } .data-table td { text-align: right; font-weight: 700; } -.data-table th, .data-table td:first-child:not(.country) { font-weight: 400 } +.data-table td:first-child:not(.country) { font-weight: 400 } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } .data-table-sum { font-size : 1.3em } .data-table .title { font-size: 2em } -.currentday{ font-weight: 900 } .bar-table { margin: auto; text-align: center } .bar-table tr:first-child td { vertical-align: bottom; } .bar{ } From ef09f6c8c5a3fc28352a93aa8152ba0813af1726 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 05:03:11 +0200 Subject: [PATCH 054/152] visuals --- wwwroot/cgi-bin/awstats.pl | 54 +++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 2f61b43d3..dde5615ea 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -935,6 +935,7 @@ sub renderCss { . '--light-color: hsl(1, 0%, 90%);' . '--a-color: #' . $color_link . ';' . '--a-hover-color: #' . $color_hover . ';' + . '--bar-width: ' . $BarWidth .'px; /* default 125 */' . '}' . < header { display: flex; flex-wrap: wrap; column-gap: 20px; } #domain { font-weight: 900; font-size: 2.4em } header select { width : 60px } nav { height: 17px; background-color: #F9F9F9; width:clamp(760px, 960px, 80%); } #summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; align-items: flex-start;} -#summary-logs div { padding: 2px 4px } +#summary-logs div { padding: 2px 0 } .summary-label { margin: 0 9px; } -#summary-logs div[class^="bg-"], .data-table th, .currentday{ font-weight: 900 } +#summary-logs div[class^="bg-"], .currentday{ width:var(--bar-width); font-weight: 900 } +div[class^="bg-"], th[class^="bg-"] { width: 100px } button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } section header {border-bottom: 8px solid var(--light-color); width: 100%; text-align: center; font-weight: 900; font-size: 1.4rem; } .multi-data-table { display: flex; column-gap: 5dvw; flex-wrap: wrap; justify-content: center } @@ -960,20 +962,24 @@ sub renderCss { .data-table tbody div { opacity: 0.9 } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } .data-table tbody tr:hover { font-weight: 900; background: rgba(0,0,0,0.2); transform: scale(1.1) translateX(2px); } -.data-table th, .data-table td:first-child { padding: 2px 4px } -.data-table td:not(:first-child) { padding: 2px 0 } +.data-table th { font-weight: 900 } +.data-table th, .data-table td:not(:first-child) { padding: 2px 0 } +.data-table td:first-child { padding-right: 4px } .data-table td div { padding: 3px 4px } .data-table td { text-align: right; font-weight: 700; } .data-table td:first-child:not(.country) { font-weight: 400 } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } .data-table-sum { font-size : 1.3em } .data-table .title { font-size: 2em } -.bar-table { margin: auto; text-align: center } +.bar-table { margin: auto; text-align: center; font-size: 10px; } .bar-table tr:first-child td { vertical-align: bottom; } +.bar-table span { font-size: 0.8em } .bar{ } .bar-horizontal{ height: 4px } .bar-vertical{ display: inline-block; width: 4px; } -.clock{ display: inline-block; vertical-align: bottom; height: 16px; width: 16px; margin: 0 5px; border-radius: 50%; } +.clock{ display: inline-block; vertical-align: bottom; margin: 0 5px; border-radius: 50%; } +.bar-table .clock { width: 10px; height: 10px } +.data-table .clock { width: 16px; height: 16px } .hr-1{ rotate: 30deg } .hr-2{ rotate: 60deg } .hr-3{ rotate: 90deg } .hr-4{ rotate: 120deg } .hr-5{ rotate: 150deg } .hr-6{ rotate: 180deg } .hr-7{ rotate: 210deg } .hr-8{ rotate: 240deg } .hr-9{ rotate: 270deg } .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } #worldmap{ width: 100%; margin-bottom: 1dvh; background-color: #4477DD; border-radius: 225px; overflow: auto; } .title-map{ position:absolute; top: 16px; color: var(--light-color); } @@ -13529,11 +13535,11 @@ sub HTMLDataTableHeader{ return '
    ' . '' - . ( ( $config =~ /U/i ) ? '' : '' ) - . ( ( $config =~ /V/i ) ? '' : '' ) - . ( ( $config =~ /P/i ) ? '' : '' ) - . ( ( $config =~ /H/i ) ? '' : '' ) - . ( ( $config =~ /B/i ) ? '' : '' ) + . ( ( $config =~ /U/i ) ? '' : '' ) + . ( ( $config =~ /V/i ) ? '' : '' ) + . ( ( $config =~ /P/i ) ? '' : '' ) + . ( ( $config =~ /H/i ) ? '' : '' ) + . ( ( $config =~ /B/i ) ? '' : '' ) . ''; } @@ -13558,7 +13564,7 @@ sub HTMLMainMonthly{ my $height = 0; my $bars = ''; - my $width = 10; + my $width = 9; my $data = ''; my $tableData = ''; @@ -13715,7 +13721,7 @@ sub HTMLMainMonthly{ print "'; } @@ -13795,7 +13801,7 @@ sub HTMLMainDaily{ my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $max_v = my $max_p = my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 my $height = 0; - my $width = 5; + my $width = 3; my $bars = ''; my $data = ''; my $tableData = ''; @@ -14367,7 +14373,7 @@ sub HTMLMainHours{ &tab_head( "$title", 19, 0, 'hours' ); print "\n"; - my $total_s = 0; - my $count = 0; - foreach my $key (@PayloadRange) { - my $p = 0; - my $f = 0; - if ($Totals) { $p = int($_filesize{$key} / $Totals * 1000) / 10; } - if ($periodo) { $f = $_filesize{$key} / $periodo; } - $total_s += $_filesize{$key} || 0; - print ""; - print ""; - print ""; - print ""; - print "\n"; - $count++; - } - my $rest_s = $TotalVisits-$total_s; - if ($rest_s > 0) { - my $p = 0; - if ($TotalVisits) { $p = int($rest_s / $TotalVisits * 1000) / 10; } - print ""; - print ""; - print ""; - print "\n"; - } + my $inicio = 0; + my $fim = 0; + if ($FirstTime =~ /$regdate/o) { $inicio = Time::Local::timelocal($6, $5, $4, $3, $2-1, $1); } + if ($LastTime =~ /$regdate/o) { $fim = Time::Local::timelocal($6, $5, $4, $3, $2-1, $1); } + my $periodo = $fim - $inicio; + my $number_of_requests = 0; + my $request_frequency_average = 0; + foreach my $key (@PayloadRange) + { + $number_of_requests += $_filesize{$key}; + } + if ($periodo) { $request_frequency_average = $number_of_requests/$periodo;} + else { $request_frequency_average = 0 }; + # print " "; + + my $title = $Message[186]; + &tab_head($title, '', 'filesizes', 19); + + my $Totals = 0; + my $average_s = 0; + foreach (@PayloadRange) + { + $average_s += ( $_filesize{$_} || 0 ) * $PayloadAverage{$_}; + $Totals += $_filesize{$_} || 0; + } + if ($Totals) { $average_s = int($average_s / $Totals); } + else { $average_s = '?'; } + + print '
    $TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]
    $TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]
    $TotalDifferentKeywords $Message[13]$Message[14]$Message[15]
    $TotalDifferentKeywords $Message[13]$Message[14]$Message[15]
    $Message[32]*$Message[57]$Message[15]$Message[75]
    $Message[32]*$Message[57]$Message[15]$Message[75]
    $Message[147]$Message[57]$Message[15]$Message[75]
    $Message[147]$Message[57]$Message[15]$Message[75]
    $Message[56]$Message[15]$Message[56]$Message[15]$Message[57]$Message[15]$Message[57]$Message[15]$Message[75]$Message[15]$Message[75]$Message[15]
    $Message[56]$Message[56]$Message[57]$Message[57]$Message[75]$Message[75]$Message[9]$Message[11]$Message[11]$Message[10]$Message[10]
    ' . $title . '' . CleanXSS($Message[11]) . '' . CleanXSS($Message[10]) . '' . CleanXSS($Message[56]) . '' . CleanXSS($Message[57]) . '' . CleanXSS($Message[75]) . '' . CleanXSS($Message[11]) . '' . CleanXSS($Message[10]) . '' . CleanXSS($Message[56]) . '' . CleanXSS($Message[57]) . '' . CleanXSS($Message[75]) . '
    " . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '') - . "$MonthNumLib{$monthix}
    $YearRequired
    " + . "$MonthNumLib{$monthix}
    $YearRequired
    " . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '
    ' : '' ) . '
    \n"; - my $width = 8; + my $width = 6; my $max_p = my $max_h = my $max_k = 1; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { @@ -14404,24 +14410,12 @@ sub HTMLMainHours{ ); $graphdone=1; } - if (! $graphdone) + if (! $graphdone && $ShowBars == 1) { print ''; print "\n"; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { - my $bredde_h = 0; - my $bredde_k = 0; - - if ( $max_h > 0 ) { - $bredde_h = - int( $BarHeight * $_time_h[$ix] / $max_h ) + 1; - } - if ( $max_k > 0 ) { - $bredde_k = - int( $BarHeight * $_time_k[$ix] / $max_k ) + 1; - } - print '\n" + print '' ; # width=19 instead of 18 to avoid a MacOS browser bug. } print "\n"; From f82848a8440838013aa0d017b3d5f8131666b09f Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 09:52:56 +0200 Subject: [PATCH 055/152] update fr translation --- wwwroot/cgi-bin/lang/awstats-fr.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index 652152e2d..c8a01d681 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -76,7 +76,7 @@ message71=Déc message72=Navigation message73=Types de fichiers message74=Mettre à jour -message75=Bande passante +message75=Data message76=Retour page principale message77=Top message78=dd mmm yyyy - HH:MM From e3b2d53873b821de1cc14e636fe8b63995d29951 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 09:53:57 +0200 Subject: [PATCH 056/152] redesign header + summary --- wwwroot/cgi-bin/awstats.pl | 146 ++++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 68 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index dde5615ea..681fc69e4 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -920,8 +920,8 @@ sub renderCss { my $css = ''; $css .= ':root {' - . '--default-page-color: hsl(1, 0%, 25%);' - . '--default-page-bgcolor: hsl(1, 0%, 95%);' + . '--page-color: hsl(1, 0%, 25%);' + . '--page-bgcolor: hsl(1, 0%, 95%);' . '--aws-color-u: #' . $color_u . ';' . '--aws-color-v: #' . $color_v . ';' . '--aws-color-p: #' . $color_p . ';' @@ -938,30 +938,33 @@ sub renderCss { . '--bar-width: ' . $BarWidth .'px; /* default 125 */' . '}' . < header { display: flex; flex-wrap: wrap; column-gap: 20px; } +#container { display: flex; flex-wrap: wrap; justify-content: center; row-gap: 25px; align-items: flex-start;} +#container > header { position: sticky; top: 0; z-index: 100; width: 100%; background-color: var(--page-bgcolor); display: flex; flex-wrap: wrap; column-gap: 20px; justify-content: center; } #domain { font-weight: 900; font-size: 2.4em } header select { width : 60px } -nav { height: 17px; background-color: #F9F9F9; width:clamp(760px, 960px, 80%); } -#summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; align-items: flex-start;} +nav { width: 100%; height: 17px; margin: 8px 0; background-color: white; text-align: center; } +#about { width: 100%; text-align: center; } +nav { margin-top: 0; } +#summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; align-items: flex-start;} #summary-logs div { padding: 2px 0 } .summary-label { margin: 0 9px; } #summary-logs div[class^="bg-"], .currentday{ width:var(--bar-width); font-weight: 900 } -div[class^="bg-"], th[class^="bg-"] { width: 100px } +div[class^="bg-"], th[class^="bg-"] { width: var(--bar-width) } button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } -section header {border-bottom: 8px solid var(--light-color); width: 100%; text-align: center; font-weight: 900; font-size: 1.4rem; } +h1, section header {border-bottom: 8px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1.4rem; } .multi-data-table { display: flex; column-gap: 5dvw; flex-wrap: wrap; justify-content: center } -.multi-data-table.worldmap{ position: relative; } +.multi-data-table.worldmap{ width: 60%; position: relative; } .data-table { border-spacing: 0 2px; margin: auto; } .data-table tfoot { display: table-header-group } .data-table tbody div { opacity: 0.9 } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } -.data-table tbody tr:hover { font-weight: 900; background: rgba(0,0,0,0.2); transform: scale(1.1) translateX(2px); } +.data-table tbody tr:hover { font-weight: 900; background: var(--neutral-color); transform: scale(1.1) translateX(2px); } .data-table th { font-weight: 900 } .data-table th, .data-table td:not(:first-child) { padding: 2px 0 } .data-table td:first-child { padding-right: 4px } @@ -978,10 +981,10 @@ sub renderCss { .bar-horizontal{ height: 4px } .bar-vertical{ display: inline-block; width: 4px; } .clock{ display: inline-block; vertical-align: bottom; margin: 0 5px; border-radius: 50%; } -.bar-table .clock { width: 10px; height: 10px } +.bar-table .clock { width: 1dvw; height: 1dvw } .data-table .clock { width: 16px; height: 16px } .hr-1{ rotate: 30deg } .hr-2{ rotate: 60deg } .hr-3{ rotate: 90deg } .hr-4{ rotate: 120deg } .hr-5{ rotate: 150deg } .hr-6{ rotate: 180deg } .hr-7{ rotate: 210deg } .hr-8{ rotate: 240deg } .hr-9{ rotate: 270deg } .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } -#worldmap{ width: 100%; margin-bottom: 1dvh; background-color: #4477DD; border-radius: 225px; overflow: auto; } +#worldmap{ width: 56%; margin-bottom: 1dvh; background-color: #4477DD; } .title-map{ position:absolute; top: 16px; color: var(--light-color); } .country { text-transform: uppercase; font-weight: 700; } /* colors */ @@ -995,7 +998,7 @@ sub renderCss { .bg-s{ background-color: var(--aws-color-s) } .clock-night{ background: conic-gradient(rgba(30, 28, 97, 1) 330deg, rgba(244, 240, 144, 1) 30deg); } .clock-day{ background: conic-gradient(rgba(244, 240, 144, 1) 330deg, rgba(30, 28, 97, 1) 30deg); } -.landxx{ fill: rgba(128, 86, 86, 1) !important; transition: fill 0.5s ease-in } +.landxx{ fill: rgba(128, 86, 86, 1) !important; transition: fill 0.3s ease-in } .oceanxx{ fill: #4477DD !important; stroke-width: 0 !important; } .lighted-land{ fill: var(--aws-color-u) !important; fill-rule: evenodd;} .zoomed-land{ fill: var(--aws-color-v) !important;} @@ -8497,7 +8500,7 @@ sub HtmlBar { $height = 1; } - return '
    '; + return '
    '; } #------------------------------------------------------------------------------ @@ -10287,7 +10290,7 @@ sub HTMLShowEmailReceiversChart { sub HTMLTopBanner{ if ($Debug) { debug( "ShowTopBan", 2 ); } - print " \n"; + # print " \n"; my $NewLinkParams = ${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; @@ -10328,7 +10331,7 @@ sub HTMLTopBanner{ $lastUpdateBuild .= ''; } - print '
    ' . $SiteDomain . '
    '. $Message[35] .' : ' . $lastUpdateBuild . '
    ' + print '
    ' . ''; if ( !$StaticLinks ) { Show_Flag_Links($Lang); } @@ -10343,7 +10346,6 @@ sub HTMLTopBanner{ . '' . $Message[187] . '' . ''; - print '
    ' . '' - . ( ( $config =~ /U/i ) ? '' : '' ) + . ( ( $config =~ /U/i ) ? '' : '' ) . ( ( $config =~ /V/i ) ? '' : '' ) . ( ( $config =~ /P/i ) ? '' : '' ) . ( ( $config =~ /H/i ) ? '' : '' ) @@ -13564,7 +13576,7 @@ sub HTMLMainMonthly{ my $height = 0; my $bars = ''; - my $width = 9; + my $width = 8; my $data = ''; my $tableData = ''; @@ -13801,7 +13813,7 @@ sub HTMLMainDaily{ my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $max_v = my $max_p = my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 my $height = 0; - my $width = 3; + my $width = '0.2dvw'; my $bars = ''; my $data = ''; my $tableData = ''; @@ -14373,7 +14385,7 @@ sub HTMLMainHours{ &tab_head( "$title", 19, 0, 'hours' ); print ""; + print ''; } } - print ""; - print ""; - } - else { - print "$Message[81] : " . ( scalar keys %_host_h ) . ""; - } + print '' + . ''; + &HTMLShowHostInfo('__title__'); - if ( $ShowHostsStats =~ /P/i ) { - print ""; - } - if ( $ShowHostsStats =~ /H/i ) { - print ""; - } - if ( $ShowHostsStats =~ /B/i ) { - print ""; - } - if ( $ShowHostsStats =~ /L/i ) { - print ""; - } - print "\n"; + + print (( $ShowHostsStats =~ /P/i ) ? '' : '') + . (( $ShowHostsStats =~ /H/i ) ? '' : '') + . (( $ShowHostsStats =~ /B/i ) ? '' : '') + . (( $ShowHostsStats =~ /L/i ) ? '' : '') + . ''; + my $total_p = my $total_h = my $total_k = 0; my $count = 0; my $regipv4 = qr/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; - if ( $DynamicDNSLookup == 2 ) { - # Use static DNS file - &Read_DNS_Cache( \%MyDNSTable, "$DNSStaticCacheFile", "", 1 ); - } + if ( $DynamicDNSLookup == 2 ) + { # Use static DNS file + &Read_DNS_Cache( \%MyDNSTable, "$DNSStaticCacheFile", "", 1 ); + } - foreach my $key (@keylist) { - print ""; - print "' . ''; - print ""; &HTMLShowHostInfo($key); - if ( $ShowHostsStats =~ /P/i ) { - print ''; - } - if ( $ShowHostsStats =~ /H/i ) { - print ""; - } - if ( $ShowHostsStats =~ /B/i ) { - print ''; - } - if ( $ShowHostsStats =~ /L/i ) { - print ''; - } - print "\n"; + + print (( $ShowHostsStats =~ /P/i ) ? '' : '') + . (( $ShowHostsStats =~ /H/i ) ? '' : '') + . (( $ShowHostsStats =~ /B/i ) ? '' : '') + . (( $ShowHostsStats =~ /L/i ) ? '' : '') + . ''; + $total_p += $_host_p{$key}; $total_h += $_host_h{$key}; $total_k += $_host_k{$key} || 0; $count++; } + my $rest_p = $TotalPages - $total_p; my $rest_h = $TotalHits - $total_h; my $rest_k = $TotalBytes - $total_k; + if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) - { # All other visitors (known or not) - print ""; - print -""; + { # All other visitors (known or not) + print '' + . ''; + &HTMLShowHostInfo(''); - if ( $ShowHostsStats =~ /P/i ) { print ""; } - if ( $ShowHostsStats =~ /H/i ) { print ""; } - if ( $ShowHostsStats =~ /B/i ) { - print ""; - } - if ( $ShowHostsStats =~ /L/i ) { print ""; } - print "\n"; + + print (( $ShowHostsStats =~ /P/i ) ? '' : '') + . (( $ShowHostsStats =~ /H/i ) ? '' : '') + . (( $ShowHostsStats =~ /B/i ) ? '' : '') + . (( $ShowHostsStats =~ /L/i ) ? '' : '') + . ''; } + &tab_end(); } From e8ae652db63cdb1474463a9c74a34aa2276b92a1 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 29 Jul 2024 01:51:41 +0200 Subject: [PATCH 058/152] add fr msg 179 > 188 --- wwwroot/cgi-bin/awstats.pl | 902 ++++++++++++++-------------- wwwroot/cgi-bin/lang/awstats-fr.txt | 12 +- 2 files changed, 452 insertions(+), 462 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index edfd6cff9..81d50809d 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -943,7 +943,7 @@ sub renderCss { a:hover, a:focus, a:active{ color: var(--a-hover-color); text-decoration: none; } b { font-weight: 700 } hr { width: 100%; height: 0; margin: 0; color: transparent; border: none; } -small { font-size: 0.9em } +small { font-size: 0.7rem; font-weight: 400; } #container { display: flex; flex-wrap: wrap; justify-content: center; row-gap: 25px; align-items: flex-start;} #container > header { position: sticky; top: 0; z-index: 100; width: 100%; background-color: var(--page-bgcolor); display: flex; flex-wrap: wrap; column-gap: 20px; justify-content: center; } #domain { font-weight: 900; font-size: 2.4em } @@ -958,7 +958,7 @@ sub renderCss { div[class^="bg-"], th[class^="bg-"] { width: var(--bar-width) } button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } h1, section header {border-bottom: 8px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1.4rem; } -.multi-data-table { display: flex; column-gap: 5dvw; flex-wrap: wrap; justify-content: center } +.multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ width: 60%; position: relative; } .data-table { border-spacing: 0 2px; margin: auto; } .data-table tfoot { display: table-header-group } @@ -1177,11 +1177,13 @@ sub html_end { # Return: None #------------------------------------------------------------------------------ sub tab_head { - my $title = shift; - my $tooltipnb = shift; + my $title = shift; + my $subtitle = shift || ''; + my $anchor = shift || ''; + # my $tooltipnb = shift; - print '
    '; - print '
    ' . $title . '
    '; + print '
    '; + print '
    ' . $title . (($subtitle ne '') ? ' ' . $subtitle . '' : '') . '
    '; # Call to plugins' function TabHeadHTML # my $extra_head_html = ''; @@ -10908,29 +10910,31 @@ sub HTMLMainFileType{ my $NewLinkTarget = shift; if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowFileTypesStatsCompressionStats", 2 ); } - print " \n"; + # print " \n"; my $Totalh = 0; foreach ( keys %_filetypes_h ) { $Totalh += $_filetypes_h{$_}; } my $Totalk = 0; foreach ( keys %_filetypes_k ) { $Totalk += $_filetypes_k{$_}; } - my $title = "$Message[73]"; - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title = "$title   -   $Message[179]"); - } + + my $title = $Message[73]; + my $subtitle = ''; - if ( $ShowFileTypesStats =~ /C/i ) { $title .= " - $Message[98]"; } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle = '' . $Message[179] .''; + } + + if ( $ShowFileTypesStats =~ /C/i ) { $subtitle .= ' - ' . $Message[98]; } # build keylist at top - &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_filetypes_h, - \%_filetypes_h ); + &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_filetypes_h, \%_filetypes_h ); - &tab_head( "$title", 19, 0, 'filetypes' ); + &tab_head($title, $subtitle, 'filetypes', 19); + print '
    ' . (( $ShowHoursStats =~ /P/i ) ? HtmlBar('p', $_time_p[$ix], $_time_p[$ix], $max_p, $Message[56], $width) : '') . (( $ShowHoursStats =~ /H/i ) ? HtmlBar('h', $_time_h[$ix], $_time_h[$ix], $max_h, $Message[57], $width) : '') @@ -14434,7 +14428,7 @@ sub HTMLMainHours{ # Show hour lib print ""; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { - print "$ix' . $ix . '
    ' . $title . '' . CleanXSS($Message[11]) . '' . CleanXSS($Message[18]) . '' . CleanXSS($Message[10]) . '' . CleanXSS($Message[56]) . '' . CleanXSS($Message[57]) . '
    \n"; - my $width = 6; + my $width = '0.4dvw'; my $max_p = my $max_h = my $max_k = 1; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { @@ -20740,7 +20752,7 @@ sub HTMLMainExtra{ # HTMLHeadSection if ( $FrameName ne 'index' && $FrameName ne 'mainleft' ) { - print "\n\n"; + # print "\n\n"; my $newhead = $HTMLHeadSection; $newhead =~ s/\\n/\n/g; print "$newhead\n"; @@ -20753,38 +20765,6 @@ sub HTMLMainExtra{ &$function(); } - # TOP BAN - #--------------------------------------------------------------------- - if ( $ShowMenu || $FrameName eq 'mainleft' ) { - HTMLTopBanner(); - } - - # Call to plugins' function AddHTMLMenuHeader - foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLMenuHeader'} } ) { - my $function = "AddHTMLMenuHeader_$pluginname"; - &$function(); - } - - # MENU (ON LEFT IF FRAME OR TOP) - #--------------------------------------------------------------------- - if ( $ShowMenu || $FrameName eq 'mainleft' ) { - HTMLMenu($NewLinkParams, $NewLinkTarget); - } - - # Call to plugins' function AddHTMLMenuFooter - foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLMenuFooter'} } ) { - my $function = "AddHTMLMenuFooter_$pluginname"; - &$function(); - } - - # Exit if left frame - if ( $FrameName eq 'mainleft' ) { - &html_end(0); - exit 0; - } - - - # TotalVisits TotalUnique TotalPages TotalHits TotalBytes TotalHostsKnown TotalHostsUnknown $TotalUnique = $TotalVisits = $TotalPages = $TotalHits = $TotalBytes = 0; $TotalNotViewedPages = $TotalNotViewedHits = $TotalNotViewedBytes = 0; @@ -20952,6 +20932,36 @@ sub HTMLMainExtra{ ); } + # TOP BAN + #--------------------------------------------------------------------- + if ( $ShowMenu || $FrameName eq 'mainleft' ) { + HTMLTopBanner(); + } + + # Call to plugins' function AddHTMLMenuHeader + foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLMenuHeader'} } ) { + my $function = "AddHTMLMenuHeader_$pluginname"; + &$function(); + } + + # MENU (ON LEFT IF FRAME OR TOP) + #--------------------------------------------------------------------- + # if ( $ShowMenu || $FrameName eq 'mainleft' ) { + # HTMLMenu($NewLinkParams, $NewLinkTarget); + # } + + # Call to plugins' function AddHTMLMenuFooter + foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLMenuFooter'} } ) { + my $function = "AddHTMLMenuFooter_$pluginname"; + &$function(); + } + + # Exit if left frame + if ( $FrameName eq 'mainleft' ) { + &html_end(0); + exit 0; + } + # Call to plugins' function AddHTMLContentHeader foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLContentHeader'} } ) { @@ -21100,9 +21110,9 @@ sub HTMLMainExtra{ # SUMMARY #--------------------------------------------------------------------- - if ($ShowSummary) { - &HTMLMainSummary(); - } + # if ($ShowSummary) { + # &HTMLMainSummary(); + # } # BY MONTH #--------------------------------------------------------------------- From 1d8740e2c1daf42b842364c139078bb56124c6c4 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 28 Jul 2024 23:10:19 +0200 Subject: [PATCH 057/152] cleaning code HTMLMainHosts --- wwwroot/cgi-bin/awstats.pl | 222 +++++++++++++++---------------------- 1 file changed, 90 insertions(+), 132 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 681fc69e4..edfd6cff9 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14749,48 +14749,31 @@ sub HTMLMainHosts{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - if ($Debug) { debug( "ShowHostsStats", 2 ); } - print " "; - my $title = -"$Message[81] ($Message[77] $MaxNbOf{'HostsShown'})   -   $Message[80]   -   $Message[9]   -   $Message[45]"; + if ($Debug) { debug( 'ShowHostsStats', 2 ); } + # print " "; + + my $title = $Message[81] . '(' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')' . ' - ' + . '' + . $Message[80] . ' - ' + . '' + . $Message[9] . ' - ' + . '' + . $Message[45] . ''; - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title = "$title   -   $Message[179]"); - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $title .= ' - ' + . '' + . $Message[179] . ''; + } - &tab_head( "$title", 19, 0, 'visitors' ); + &tab_head( $title, 19, 0, 'visitors' ); - &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, - \%_host_p ); + &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); # Graph the top five in a pie chart - if (scalar @keylist > 1){ + if (scalar @keylist > 1) + { foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); @@ -14800,135 +14783,110 @@ sub HTMLMainHosts{ my $cnt = 0; my $suma = 0; foreach my $key (@keylist) { - $suma=$suma + ( $_host_h{$key}); - $cnt++; - if ($cnt > 4) { last; } + $suma=$suma + ( $_host_h{$key}); + $cnt++; + if ($cnt > 4) { last; } } my $cnt = 0; foreach my $key (@keylist) { - push @valdata, int( $_host_h{$key} / $suma * 1000 ) / 10; - push @blocklabel, "$key"; - $cnt++; - if ($cnt > 4) { last; } + push @valdata, int( $_host_h{$key} / $suma * 1000 ) / 10; + push @blocklabel, "$key"; + $cnt++; + if ($cnt > 4) { last; } } - print "
    "; + print '
    '; my $function = "ShowGraph_$pluginname"; &$function( - "Hosts", "hosts", + "Hosts", "hosts", 0, \@blocklabel, - 0, \@valcolor, - 0, 0, - 0, \@valdata + 0, \@valcolor, + 0, 0, + 0, \@valdata ); - print "
    "; - if ( $MonthRequired ne 'all' ) { - print -"$Message[81] : ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1]
    ".Format_Number($TotalUnique)." $Message[11]
    ' + . $Message[81] . ' : ' + . (( $MonthRequired ne 'all' ) + ? Format_Number($TotalHostsKnown) . ' ' . $Message[82] . ', ' . Format_Number($TotalHostsUnknown) . ' ' . $Message[1]. '
    ' . Format_Number($TotalUnique) . ' ' . $Message[11] + : ( scalar keys %_host_h ) + ) + . '
    $Message[56]$Message[57]$Message[75]$Message[9]
    ' . $Message[56] . '' . $Message[57] . '' . $Message[75] . '' . $Message[9] . '
    $key"; + foreach my $key (@keylist) + { + print '
    ' . $key; + + if ($DynamicDNSLookup && $key =~ /$regipv4/o) + { # Dynamic reverse DNS lookup + my $lookupresult=lc(gethostbyaddr(pack("C4",split(/\./,$key)),AF_INET)); # This may be slow + if (! $lookupresult || $lookupresult =~ /$regipv4/o || ! IsAscii($lookupresult)) + { + if ( $DynamicDNSLookup == 2 ) + { # Check static DNS file + $lookupresult = $MyDNSTable{$key}; + if ($lookupresult) { print " ($lookupresult)"; } + } + } else { print " ($lookupresult)"; } + } - if ($DynamicDNSLookup) { - # Dynamic reverse DNS lookup - if ($key =~ /$regipv4/o) { - my $lookupresult=lc(gethostbyaddr(pack("C4",split(/\./,$key)),AF_INET)); # This may be slow - if (! $lookupresult || $lookupresult =~ /$regipv4/o || ! IsAscii($lookupresult)) { - if ( $DynamicDNSLookup == 2 ) { - # Check static DNS file - $lookupresult = $MyDNSTable{$key}; - if ($lookupresult) { print " ($lookupresult)"; } - else { print ""; } - } - else { print ""; } - } - else { print " ($lookupresult)"; } - } - } + print '' . ( Format_Number($_host_p{$key}) || " " ) . '".Format_Number($_host_h{$key})."' . Format_Bytes( $_host_k{$key} ) . '' - . ( - $_host_l{$key} - ? Format_Date( $_host_l{$key}, 1 ) - : '-' - ) - . '
    ' . ( Format_Number($_host_p{$key}) || " " ) . '' . Format_Number($_host_h{$key}) . '' . Format_Bytes( $_host_k{$key} ) . '' . ( $_host_l{$key} ? Format_Date( $_host_l{$key}, 1 ) : '-' ) . '
    $Message[2]
    ' . $Message[2] . '".Format_Number($rest_p)."".Format_Number($rest_h)."" . Format_Bytes($rest_k) . " 
    ' . Format_Number($rest_p) . '' . Format_Number($rest_h) . '' . Format_Bytes($rest_k) . ' 
    '; + # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) @@ -10958,8 +10962,7 @@ sub HTMLMainFileType{ } } - print -""; + print ""; if ( $ShowFileTypesStats =~ /H/i ) { print "
    $Message[73]
    $Message[73]\n"; } + + print '
    '; + &tab_end(); } @@ -11081,75 +11087,87 @@ sub HTMLMainFileType{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainFileSize{ - if ($Debug) { debug("ShowFileSizesStats",2); } - my $FirstTime = 0; - my $LastTime = 0; - foreach my $key ( keys %FirstTime ) { - my $keyqualified = 0; - if ( $MonthRequired eq 'all' ) { $keyqualified = 1; } - if ( $key =~ /^$YearRequired$MonthRequired/ ) { $keyqualified = 1; } - if ($keyqualified) { - if ( $FirstTime{$key} - && ( $FirstTime == 0 || $FirstTime > $FirstTime{$key} ) ) - { - $FirstTime = $FirstTime{$key}; - } - if ( $LastTime < ( $LastTime{$key} || 0 ) ) { - $LastTime = $LastTime{$key}; - } - } - } + if ($Debug) { debug("ShowFileSizesStats",2); } + my $FirstTime = 0; + my $LastTime = 0; + + foreach my $key ( keys %FirstTime ) + { + my $keyqualified = 0; + if ( $MonthRequired eq 'all' ) { $keyqualified = 1; } + if ( $key =~ /^$YearRequired$MonthRequired/ ) { $keyqualified = 1; } + if ($keyqualified) + { + if ( $FirstTime{$key} && ( $FirstTime == 0 || $FirstTime > $FirstTime{$key} ) ) + { + $FirstTime = $FirstTime{$key}; + } + if ( $LastTime < ( $LastTime{$key} || 0 ) ) { + $LastTime = $LastTime{$key}; + } + } + } - my $inicio = 0; - my $fim = 0; - if ($FirstTime =~ /$regdate/o) { $inicio = Time::Local::timelocal($6, $5, $4, $3, $2-1, $1); } - if ($LastTime =~ /$regdate/o) { $fim = Time::Local::timelocal($6, $5, $4, $3, $2-1, $1); } - my $periodo = $fim - $inicio; - my $number_of_requests = 0; - my $request_frequency_average = 0; - foreach my $key (@PayloadRange) { - $number_of_requests += $_filesize{$key}; - } - if ($periodo) { $request_frequency_average = $number_of_requests/$periodo;} - else { $request_frequency_average = 0 }; - print " "; - my $title = "$Message[186]"; - &tab_head($title, 19, 0, 'filesizes'); - my $Totals = 0; - my $average_s = 0; - foreach (@PayloadRange) { - $average_s += ( $_filesize{$_} || 0 ) * $PayloadAverage{$_}; - $Totals += $_filesize{$_} || 0; - } - if ($Totals) { $average_s = int($average_s / $Totals); } - else { $average_s = '?'; } - print "
    $Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]
    $key".($_filesize{$key}? sprintf("%.5f",$f):" ")."".($_filesize{$key}? $_filesize{$key}:" ")."".($_filesize{$key}? "$p %":" ")."
    $Message[0]$rest_s".($rest_s?"$p %":" ")."
    ' + . "\n"; + my $total_s = 0; + my $count = 0; + foreach my $key (@PayloadRange) + { + my $p = 0; + my $f = 0; + if ($Totals) { $p = int($_filesize{$key} / $Totals * 1000) / 10; } + if ($periodo) { $f = $_filesize{$key} / $periodo; } + $total_s += $_filesize{$key} || 0; + print "" + . "" + . "" + . "" + . "\n"; + $count++; + } + my $rest_s = $TotalVisits-$total_s; + if ($rest_s > 0) + { + my $p = 0; + if ($TotalVisits) { $p = int($rest_s / $TotalVisits * 1000) / 10; } + print "" + . "" + . "" + . "\n"; + } - &tab_end(); + print '
    $Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]
    $key".($_filesize{$key}? sprintf("%.5f",$f):" ")."".($_filesize{$key}? $_filesize{$key}:" ")."".($_filesize{$key}? "$p %":" ")."
    $Message[0]$rest_s".($rest_s?"$p %":" ")."
    '; + + &tab_end(); } #------------------------------------------------------------------------------ @@ -11160,75 +11178,84 @@ sub HTMLMainFileSize{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainRequestTime{ - if ($Debug) { debug("ShowRequestTimesStats", 2); } - my $FirstTime = 0; - my $LastTime = 0; - foreach my $key ( keys %FirstTime ) { - my $keyqualified = 0; - if ( $MonthRequired eq 'all' ) { $keyqualified = 1; } - if ( $key =~ /^$YearRequired$MonthRequired/ ) { $keyqualified = 1; } - if ($keyqualified) { - if ( $FirstTime{$key} - && ( $FirstTime == 0 || $FirstTime > $FirstTime{$key} ) ) - { - $FirstTime = $FirstTime{$key}; - } - if ( $LastTime < ( $LastTime{$key} || 0 ) ) { - $LastTime = $LastTime{$key}; - } - } - } + if ($Debug) { debug("ShowRequestTimesStats", 2); } + + my $FirstTime = 0; + my $LastTime = 0; + + foreach my $key ( keys %FirstTime ) { + my $keyqualified = 0; + if ( $MonthRequired eq 'all' ) { $keyqualified = 1; } + if ( $key =~ /^$YearRequired$MonthRequired/ ) { $keyqualified = 1; } + if ($keyqualified) { + if ( $FirstTime{$key} && ( $FirstTime == 0 || $FirstTime > $FirstTime{$key} ) ) + { + $FirstTime = $FirstTime{$key}; + } + if ( $LastTime < ( $LastTime{$key} || 0 ) ) { + $LastTime = $LastTime{$key}; + } + } + } - my $inicio = 0; - my $fim = 0; - if ($FirstTime =~ /$regdate/o) { $inicio = Time::Local::timelocal($6,$5,$4,$3,$2-1,$1); } - if ($LastTime =~ /$regdate/o) { $fim = Time::Local::timelocal($6,$5,$4,$3,$2-1,$1); } - my $periodo = $fim - $inicio; - my $number_of_requests = 0; - my $request_frequency_average = 0; - foreach my $key (@TimeRange) { - $number_of_requests += $_requesttime{$key}; - } - if ($periodo) { $request_frequency_average = $number_of_requests / $periodo;} - else { $request_frequency_average = 0}; - print " "; - my $title = "$Message[188]"; - &tab_head($title, 19, 0, 'requesttimes'); - my $Totals = 0; - my $average_s = 0; - foreach (@TimeRange) { - $average_s += ($_requesttime{$_} || 0) * $TimeAverage{$_}; - $Totals += $_requesttime{$_} || 0; - } - if ($Totals) { $average_s = int($average_s / $Totals); } - else { $average_s = '?'; } - print "$Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]\n"; - my $total_s = 0; - my $count = 0; - foreach my $key (@TimeRange) { - my $p = 0; - my $f = 0; - if ($Totals) { $p = int($_requesttime{$key} / $Totals * 1000) / 10; } - if ($periodo) { $f = $_requesttime{$key} / $periodo; } - $total_s += $_requesttime{$key} || 0; - print "$key"; - print "".($_requesttime{$key} ? sprintf("%.5f",$f) : " ").""; - print "".($_requesttime{$key} ? $_requesttime{$key} : " ").""; - print "".($_requesttime{$key} ? "$p %" : " ").""; - print "\n"; - $count++; - } - my $rest_s = $TotalVisits - $total_s; - if ($rest_s > 0) { - my $p = 0; - if ($TotalVisits) { $p = int($rest_s / $TotalVisits * 1000) / 10; } - print "$Message[0]"; - print "$rest_s"; - print "".($rest_s?"$p %":" ").""; - print "\n"; - } + my $inicio = 0; + my $fim = 0; + if ($FirstTime =~ /$regdate/o) { $inicio = Time::Local::timelocal($6,$5,$4,$3,$2-1,$1); } + if ($LastTime =~ /$regdate/o) { $fim = Time::Local::timelocal($6,$5,$4,$3,$2-1,$1); } + my $periodo = $fim - $inicio; + my $number_of_requests = 0; + my $request_frequency_average = 0; + foreach my $key (@TimeRange) + { + $number_of_requests += $_requesttime{$key}; + } + if ($periodo) { $request_frequency_average = $number_of_requests / $periodo;} + else { $request_frequency_average = 0}; + # print " "; + + my $title = $Message[188]; + + &tab_head($title, '', 'requesttimes', 19); + + my $Totals = 0; + my $average_s = 0; + foreach (@TimeRange) { + $average_s += ($_requesttime{$_} || 0) * $TimeAverage{$_}; + $Totals += $_requesttime{$_} || 0; + } + if ($Totals) { $average_s = int($average_s / $Totals); } + else { $average_s = '?'; } + + print '' + . "\n"; + my $total_s = 0; + my $count = 0; + foreach my $key (@TimeRange) { + my $p = 0; + my $f = 0; + if ($Totals) { $p = int($_requesttime{$key} / $Totals * 1000) / 10; } + if ($periodo) { $f = $_requesttime{$key} / $periodo; } + $total_s += $_requesttime{$key} || 0; + print ""; + print ""; + print ""; + print ""; + print "\n"; + $count++; + } + my $rest_s = $TotalVisits - $total_s; + if ($rest_s > 0) { + my $p = 0; + if ($TotalVisits) { $p = int($rest_s / $TotalVisits * 1000) / 10; } + print ""; + print ""; + print ""; + print "\n"; + } - &tab_end(); + print '
    $Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]
    $key".($_requesttime{$key} ? sprintf("%.5f",$f) : " ")."".($_requesttime{$key} ? $_requesttime{$key} : " ")."".($_requesttime{$key} ? "$p %" : " ")."
    $Message[0]$rest_s".($rest_s?"$p %":" ")."
    '; + + &tab_end(); } #------------------------------------------------------------------------------ @@ -13703,8 +13730,8 @@ sub HTMLMainMonthly{ $average_h = sprintf( "%.2f", $total_h / $not_empty_months ); $average_k = sprintf( "%.2f", $total_k / $not_empty_months ); - print " "; - &tab_head( $title ); + # print " "; + &tab_head( $title, '', 'month' ); # Show bars for month if ($graphPlugin == 1) { @@ -13843,9 +13870,9 @@ sub HTMLMainDaily{ ); } - print " "; + # print " "; - &tab_head( "$title", 0, 0, 'daysofmonth' ); + &tab_head( $title, '', 'daysofmonth' ); print ""; print "\n"; @@ -14069,8 +14096,8 @@ sub HTMLMainDaysofWeek{ my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; - print " "; - &tab_head( "$title", 18, 0, 'daysofweek' ); + # print " "; + &tab_head( "$title", '', 'daysofweek', 18 ); print ""; print ""; @@ -14365,7 +14392,7 @@ sub HTMLMainHours{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowHoursStats", 2 ); } - print " "; + # print " "; my $title = "$Message[20]"; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { @@ -14382,7 +14409,7 @@ sub HTMLMainHours{ . ( GetTimeZoneTitle_timezone() >= 0 ? "+" : "" ) . int( GetTimeZoneTitle_timezone() ) . ")"; } - &tab_head( "$title", 19, 0, 'hours' ); + &tab_head( $title, '', 'hours', 19 ); print "\n"; my $width = '0.4dvw'; @@ -14558,21 +14585,21 @@ sub HTMLMainCountries{ my $rest_u = my $rest_v = my $rest_p = my $rest_h = my $rest_k = 0; my $max_u = my $max_p = my $max_h = 1; - print " "; + # print " "; - my $title = "$Message[25] ($Message[77] $MaxNbOf{'Domain'})   -   $Message[80]"; + my $title = $Message[25] . '(' . $Message[77] . ' ' . $MaxNbOf{'Domain'} . ')'; + my $subtitle = '' . $Message[80] .''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $title .= "  -   $Message[179]"); + $subtitle .= ' - ' . $Message[179] . ''); } - # &tab_head( "$title", 19, 0, 'countries' ); + &tab_head( $title, $subtitle, 'countries', 19); foreach ( values %_domener_u ) { if ( $_ > $max_u ) { $max_u = $_; } @@ -14628,7 +14655,6 @@ sub HTMLMainCountries{ # print ""; print '
    '; - print '
    ' . $title . '
    '; print '
    '; print ''; @@ -14752,8 +14778,9 @@ sub HTMLMainHosts{ if ($Debug) { debug( 'ShowHostsStats', 2 ); } # print " "; - my $title = $Message[81] . '(' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')' . ' - ' - . '' + my $title = $Message[81] . ' (' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')'; + my $subtitle = + '' . $Message[80] . ' - ' . '' . $Message[9] . ' - ' @@ -14762,15 +14789,17 @@ sub HTMLMainHosts{ if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $title .= ' - ' + $subtitle .= ' - ' . '' . $Message[179] . ''; } - &tab_head( $title, 19, 0, 'visitors' ); + &tab_head( $title, $subtitle, 19); &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); + print '
    '; + # Graph the top five in a pie chart if (scalar @keylist > 1) { @@ -14887,6 +14916,8 @@ sub HTMLMainHosts{ . ''; } + print '
    '; + &tab_end(); } @@ -15039,78 +15070,53 @@ sub HTMLMainRobots{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowRobotStats", 2 ); } - print " "; - - my $title = "$Message[53] ($Message[77] $MaxNbOf{'RobotShown'})   -   $Message[80]   -   $Message[9]"; - - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title = "$title   -   $Message[179]"); - } + # print " "; + + my $title = $Message[53] . ' ('. $Message[77]. ' ' . $MaxNbOf{'RobotShown'} .')'; + + my $subtitle = ' ' . $Message[80] . '' + . ' - ' . $Message[9] . ''; + + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle .= $title . ' - ' . $Message[179] . ''; + } - &tab_head( "$title", 19, 0, 'robots'); + &tab_head($title, $subtitle, 'robots', 19); - print "" - . Format_Number(( scalar keys %_robot_h )) - . " $Message[51]*"; - if ( $ShowRobotsStats =~ /H/i ) { - print - "$Message[57]"; - } - if ( $ShowRobotsStats =~ /B/i ) { - print - "$Message[75]"; - } - if ( $ShowRobotsStats =~ /L/i ) { - print "$Message[9]"; - } - print "\n"; + print '' + . ""; + + print (( $ShowRobotsStats =~ /H/i ) ? '' : '') + . (( $ShowRobotsStats =~ /B/i ) ? '' : '') + . (( $ShowRobotsStats =~ /L/i ) ? '' : '') + . ''; + my $total_p = my $total_h = my $total_k = my $total_r = 0; my $count = 0; - &BuildKeyList( $MaxNbOf{'RobotShown'}, $MinHit{'Robot'}, \%_robot_h, - \%_robot_h ); - foreach my $key (@keylist) { - print ""; - if ( $ShowRobotsStats =~ /H/i ) { - print ""; - } - if ( $ShowRobotsStats =~ /B/i ) { - print ""; - } - if ( $ShowRobotsStats =~ /L/i ) { - print ""; - } - print "\n"; + . ( $PageDir eq 'rtl' ? '' : '' ) . ''; + + print (( $ShowRobotsStats =~ /H/i ) ? '' : '') + . (( $ShowRobotsStats =~ /B/i ) ? '' : '') + . (( $ShowRobotsStats =~ /L/i ) ? '' : '') + . ''; #$total_p += $_robot_p{$key}; $total_h += $_robot_h{$key}; @@ -15120,8 +15126,7 @@ sub HTMLMainRobots{ } # For bots we need to count Totals - my $TotalPagesRobots = - 0; #foreach (values %_robot_p) { $TotalPagesRobots+=$_; } + my $TotalPagesRobots = 0; #foreach (values %_robot_p) { $TotalPagesRobots+=$_; } my $TotalHitsRobots = 0; foreach ( values %_robot_h ) { $TotalHitsRobots += $_; } my $TotalBytesRobots = 0; @@ -15134,22 +15139,17 @@ sub HTMLMainRobots{ my $rest_r = $TotalRRobots - $total_r; if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 || $rest_r > 0 ) - { # All other robots - print -""; - if ( $ShowRobotsStats =~ /H/i ) { - print ""; - } - if ( $ShowRobotsStats =~ /B/i ) { - print ""; - } - if ( $ShowRobotsStats =~ /L/i ) { print ""; } - print "\n"; + { # All other robots + print '' + . (( $ShowRobotsStats =~ /H/i ) ? '' : '') + . (( $ShowRobotsStats =~ /B/i ) ? '' : '') + . (( $ShowRobotsStats =~ /L/i ) ? '' : '') + . ''; } - &tab_end( - "* $Message[156]" . ( $TotalRRobots ? " $Message[157]" : "" ) ); + + print '
    " + . Format_Number(( scalar keys %_robot_h )) + . " $Message[51]*' . $Message[57] . '' . $Message[75] . '' . $Message[9] . '
    " - . ( $PageDir eq 'rtl' ? "" : "" ) + + &BuildKeyList( $MaxNbOf{'RobotShown'}, $MinHit{'Robot'}, \%_robot_h, \%_robot_h ); + + foreach my $key (@keylist) + { + print '
    ' + . ( $PageDir eq 'rtl' ? '' : '' ) . ( $RobotsHashIDLib{$key} ? $RobotsHashIDLib{$key} : $key ) - . ( $PageDir eq 'rtl' ? "" : "" ) . "" - . Format_Number(( $_robot_h{$key} - $_robot_r{$key} )) - . ( $_robot_r{$key} ? "+$_robot_r{$key}" : "" ) . "" . Format_Bytes( $_robot_k{$key} ) . "" - . ( - $_robot_l{$key} - ? Format_Date( $_robot_l{$key}, 1 ) - : '-' - ) - . "
    ' . Format_Number(( $_robot_h{$key} - $_robot_r{$key} )) . ( $_robot_r{$key} ? "+$_robot_r{$key}" : "" ) . '' . Format_Bytes( $_robot_k{$key} ) . '' . ($_robot_l{$key} ? Format_Date( $_robot_l{$key}, 1 ) : '-' ) . '
    $Message[2]" - . Format_Number(( $rest_h - $rest_r )) - . ( $rest_r ? "+$rest_r" : "" ) . "" . ( Format_Bytes($rest_k) ) . " 
    ' . $Message[2] . '' . Format_Number( $rest_h - $rest_r ) . ( $rest_r ? "+$rest_r" : '' ) . '' . Format_Bytes($rest_k) . ' 
    '; + + &tab_end("* $Message[156]" . ( $TotalRRobots ? " $Message[157]" : "" ) ); } #------------------------------------------------------------------------------ @@ -15161,12 +15161,15 @@ sub HTMLMainRobots{ #------------------------------------------------------------------------------ sub HTMLMainWorms{ if ($Debug) { debug( "ShowWormsStats", 2 ); } - print " "; - &tab_head( "$Message[163] ($Message[77] $MaxNbOf{'WormsShown'})", - 19, 0, 'worms' ); - print ""; - print "" . Format_Number(( scalar keys %_worm_h )) . " $Message[164]*"; - print "$Message[167]"; + + # print " "; + &tab_head( $Message[163] . ' (' . $Message[77] . $MaxNbOf{'WormsShown'} . ')', '', 'worms', 19 ); + + print '' + . "" + . "" + . ""; + if ( $ShowWormsStats =~ /H/i ) { print ""; @@ -15241,6 +15244,8 @@ sub HTMLMainWorms{ if ( $ShowWormsStats =~ /L/i ) { print ""; } print "\n"; } + + print '
    " . Format_Number(( scalar keys %_worm_h )) . " $Message[164]*$Message[167]$Message[57] 
    '; &tab_end("* $Message[158]"); } @@ -15253,9 +15258,10 @@ sub HTMLMainWorms{ #------------------------------------------------------------------------------ sub HTMLMainSessions{ if ($Debug) { debug( "ShowSessionsStats", 2 ); } - print " "; - my $title = "$Message[117]"; - &tab_head( $title, 19, 0, 'sessions' ); + # print " "; + my $title = $Message[117]; + &tab_head( $title, '', 'sessions', 19); + my $Totals = 0; my $average_s = 0; foreach (@SessionsRange) { @@ -15264,9 +15270,10 @@ sub HTMLMainSessions{ } if ($Totals) { $average_s = int( $average_s / $Totals ); } else { $average_s = '?'; } - print "$Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]\n"; + + print '' + . "" + . "\n"; $average_s = 0; my $total_s = 0; my $count = 0; @@ -15297,6 +15304,9 @@ sub HTMLMainSessions{ print ""; print "\n"; } + + print '
    $Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]
    " . ( $rest_s ? "$p %" : " " ) . "
    '; + &tab_end(); } @@ -15552,7 +15562,7 @@ sub HTMLMainOS{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowOSStats", 2 ); } - print " "; + # print " "; my $Totalh = 0; my $Totalp = 0; my %new_os_h = (); @@ -15570,37 +15580,29 @@ sub HTMLMainOS{ $new_os_h{$key} += $_os_h{$key}; $new_os_p{$key} += $_os_p{$key}; } - my $title = -"$Message[59] ($Message[77] $MaxNbOf{'OsShown'})   -   $Message[80]/$Message[58]   -   $Message[0]"; + + my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; + my $subtitle = ' ' . $Message[80] . '/' . $Message[58] .'' + . ' - ' . $Message[0] . ''; - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title .= "   -   $Message[179]"); - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle .= ' - ' . $Message[179] . ''; + } - &tab_head( "$title", 19, 0, 'os' ); + &tab_head($title, $subtitle, 'os', 19); &BuildKeyList( $MaxNbOf{'OsShown'}, $MinHit{'Os'}, \%new_os_h, \%new_os_p ); + print '
    '; + # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) @@ -15640,12 +15642,9 @@ sub HTMLMainOS{ } } - print -""; - print -""; - print -"\n"; + print "" + . "" + . "\n"; my $total_h = 0; my $total_p = 0; my $count = 0; @@ -15699,12 +15698,14 @@ sub HTMLMainOS{ my $p_h; if ($Totalh) { $p_h = int( $rest_h / $Totalh * 1000 ) / 10; } if ($Totalp) { $p_p = int( $rest_p / $Totalp * 1000 ) / 10; } - print ""; - print ""; - print -""; - print "\n"; + print "" + . "" + . "" + . "\n"; } + + print '
     $Message[59]$Message[56]$Message[15]$Message[57]$Message[15]
     $Message[59]$Message[56]$Message[15]$Message[57]$Message[15]
     $Message[2]".Format_Number($rest_p)."$p_p %".Format_Number($rest_h)."$p_h %
     $Message[2]".Format_Number($rest_p)."$p_p %".Format_Number($rest_h)."$p_h %
    '; + &tab_end(); } @@ -15720,7 +15721,7 @@ sub HTMLMainBrowsers{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowBrowsersStats", 2 ); } - print " "; + # print " "; my $Totalh = 0; my $Totalp = 0; my %new_browser_h = (); @@ -15738,40 +15739,30 @@ sub HTMLMainBrowsers{ $new_browser_h{$key} += $_browser_h{$key}; $new_browser_p{$key} += $_browser_p{$key}; } - my $title = -"$Message[21] ($Message[77] $MaxNbOf{'BrowsersShown'})   -   $Message[80]/$Message[58]   -   $Message[0]"; + my $title = $Message[21] . ' (' . $Message[77] . ' ' . $MaxNbOf{'BrowsersShown'} .')'; + my $subtitle = '' . $Message[80] . '/' . $Message[58] . '' + . ' - ' . $Message[0] . ''; - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $title .= "   -   $Message[179]"); + $subtitle .= ' - ' . $Message[179] . ''; } - &tab_head( "$title", 19, 0, 'browsers' ); + &tab_head($title, $subtitle, 'browsers', 19); &BuildKeyList( $MaxNbOf{'BrowsersShown'}, $MinHit{'Browser'}, \%new_browser_h, \%new_browser_p ); + print ''; + # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) @@ -15881,6 +15872,9 @@ sub HTMLMainBrowsers{ ""; print "\n"; } + + print '
    $Message[2] $rest_p$p_p %$rest_h$p_h %
    '; + &tab_end(); } @@ -15893,14 +15887,16 @@ sub HTMLMainBrowsers{ #------------------------------------------------------------------------------ sub HTMLMainScreenSize{ if ($Debug) { debug( "ShowScreenSizeStats", 2 ); } - print " "; + # print " "; my $Totalh = 0; foreach ( keys %_screensize_h ) { $Totalh += $_screensize_h{$_}; } - my $title = - "$Message[135] ($Message[77] $MaxNbOf{'ScreenSizesShown'})"; - &tab_head( "$title", 0, 0, 'screensizes' ); - print -"\n"; + + my $title = $Message[135] . ' (' . $Message[77] . ' ' . $MaxNbOf{'ScreenSizesShown'} . ')'; + + &tab_head($title, '', 'screensizes'); + + print '
    $Message[135]$Message[15]
    ' + . "\n"; my $total_h = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'ScreenSizesShown'}, @@ -15936,6 +15932,9 @@ sub HTMLMainScreenSize{ print ""; print "\n"; } + + print '
    $Message[135]$Message[15]
    " . ( $rest_h ? "$p %" : " " ) . "
    '; + &tab_end(); } @@ -15951,34 +15950,30 @@ sub HTMLMainReferrers{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowOriginStats", 2 ); } - print " "; + # print " "; my $Totalp = 0; - foreach ( 0 .. 5 ) { - $Totalp += - ( $_ != 4 || $IncludeInternalLinksInOriginSection ) - ? $_from_p[$_] - : 0; + foreach ( 0 .. 5 ) + { + $Totalp += ( $_ != 4 || $IncludeInternalLinksInOriginSection ) ? $_from_p[$_] : 0; } + my $Totalh = 0; foreach ( 0 .. 5 ) { - $Totalh += - ( $_ != 4 || $IncludeInternalLinksInOriginSection ) - ? $_from_h[$_] - : 0; + $Totalh += ( $_ != 4 || $IncludeInternalLinksInOriginSection ) ? $_from_h[$_] : 0; } - my $title = "$Message[36]"; + my $title = $Message[36]; + my $subtitle = ''; - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title .= "   -   $Message[179]"); - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle = '' . $Message[179] . ''; + } - &tab_head( $title, 19, 0, 'referer' ); + &tab_head($title, $subtitle, 'referer', 19); + my @p_p = ( 0, 0, 0, 0, 0, 0 ); if ( $Totalp > 0 ) { $p_p[0] = int( $_from_p[0] / $Totalp * 1000 ) / 10; @@ -15997,15 +15992,13 @@ sub HTMLMainReferrers{ $p_h[4] = int( $_from_h[4] / $Totalh * 1000 ) / 10; $p_h[5] = int( $_from_h[5] / $Totalh * 1000 ) / 10; } - print - "$Message[37]"; + print '' + . ""; if ( $ShowOriginStats =~ /P/i ) { - print -""; + print ""; } if ( $ShowOriginStats =~ /H/i ) { - print -""; + print ""; } print "\n"; @@ -16206,7 +16199,9 @@ sub HTMLMainReferrers{ . ""; } - print "\n"; + + print '
    $Message[37]$Message[56]$Message[15]$Message[56]$Message[15]$Message[57]$Message[15]$Message[57]$Message[15]
    " . ( $_from_h[1] ? "$p_h[1] %" : " " ) . "
    '; + &tab_end(); # 0: Direct @@ -16228,40 +16223,29 @@ sub HTMLMainKeys{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - if ($ShowKeyphrasesStats) { - print " "; - } - if ($ShowKeywordsStats) { - print " "; - } + # print " "; + # print " "; - if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print - ""; - } - if ($ShowKeyphrasesStats) { - - # By Keyphrases - if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print "\n"; + + $title = $Message[120] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeyphrasesShown'} . ')'; + $subtitle = '' . $Message[80] . ''; + + &tab_head($title, $subtitle, 'keyphrases', 19, ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70); + + print '
    \n"; - } + my $title = ''; + my $subtitle = ''; + + + if ($ShowKeyphrasesStats) + { if ($Debug) { debug( "ShowKeyphrasesStats", 2 ); } - &tab_head( -"$Message[120] ($Message[77] $MaxNbOf{'KeyphrasesShown'})
    $Message[80]", - 19, - ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70, - 'keyphrases' - ); - print "
    $TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]
    ' + . "\n"; + my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeyphrasesShown'}, @@ -16298,41 +16282,30 @@ sub HTMLMainKeys{ if ($TotalKeyphrases) { $p = int( $rest_s / $TotalKeyphrases * 1000 ) / 10; } - print -""; + print ""; print "\n"; } + + print '
    $TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]
    $Message[124]$rest_s
    $Message[124]$rest_s$p %
    '; &tab_end(); - if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print "\n"; - } } - if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print "   "; - } - if ($ShowKeywordsStats) { - # By Keywords - if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print "\n"; - } + if ($ShowKeywordsStats) + { if ($Debug) { debug( "ShowKeywordsStats", 2 ); } - &tab_head( -"$Message[121] ($Message[77] $MaxNbOf{'KeywordsShown'})
    $Message[80]", - 19, - ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70, - 'keywords' - ); - print "$TotalDifferentKeywords $Message[13]$Message[14]$Message[15]\n"; + + $title = $Message[121] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeywordsShown'} . ')'; + $subtitle = '' . $Message[80] . ''; + + &tab_head($title , $subtitle, 'keywords', 19); + + print '' + . "\n"; + my $total_s = 0; my $count = 0; &BuildKeyList( $MaxNbOf{'KeywordsShown'}, @@ -16368,17 +16341,13 @@ sub HTMLMainKeys{ if ($TotalKeywords) { $p = int( $rest_s / $TotalKeywords * 1000 ) / 10; } - print -""; + print ""; print "\n"; } + + print '
    $TotalDifferentKeywords $Message[13]$Message[14]$Message[15]
    $Message[30]$rest_s
    $Message[30]$rest_s$p %
    '; + &tab_end(); - if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print "\n"; - } - } - if ( $ShowKeyphrasesStats && $ShowKeywordsStats ) { - print "\n"; } } @@ -16391,14 +16360,18 @@ sub HTMLMainKeys{ #------------------------------------------------------------------------------ sub HTMLMainMisc{ if ($Debug) { debug( "ShowMiscStats", 2 ); } - print " "; - my $title = "$Message[139]"; - &tab_head( "$title", 19, 0, 'misc' ); - print - "$Message[139]"; - print " "; - print " "; - print "\n"; + # print " "; + + my $title = $Message[139]; + + &tab_head($title, '', 'misc', 19); + + print '' + . '' + . '' + . '' + . ''; + my %label = ( 'AddToFavourites' => $Message[137], 'JavascriptDisabled' => $Message[168], @@ -16445,6 +16418,9 @@ sub HTMLMainMisc{ print ""; print "\n"; } + + print '
    ' . $Message[139] . '  
    " . ( $total ? "$p %" : " " ) . "
    '; + &tab_end(); } @@ -16460,22 +16436,24 @@ sub HTMLMainHTTPStatus{ my $NewLinkTarget = shift; if ($Debug) { debug( "ShowHTTPErrorsStats", 2 ); } - print " "; - my $title = "$Message[32]"; - - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title .= "   -   $Message[179]"); - } + # print " "; + my $title = $Message[32]; + my $subtitle = ''; + + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle = '' . $Message[179] . ''; + } - &tab_head( "$title", 19, 0, 'errors' ); + &tab_head($title, $subtitle, 'errors', 19); &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); - + + + print ''; + # Graph the top five in a pie chart if (scalar @keylist > 1){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) @@ -16503,8 +16481,7 @@ sub HTMLMainHTTPStatus{ } } - print -"\n"; + print "\n"; my $total_h = 0; my $count = 0; foreach my $key (@keylist) { @@ -16530,6 +16507,9 @@ sub HTMLMainHTTPStatus{ $total_h += $_errors_h{$key}; $count++; } + + print '
    $Message[32]*$Message[57]$Message[15]$Message[75]
    $Message[32]*$Message[57]$Message[15]$Message[75]
    '; + &tab_end("* $Message[154]"); } @@ -21078,7 +21058,7 @@ sub HTMLMainExtra{ &HTMLMainMonthly(); } - print "\n \n\n"; + #print "\n \n\n"; # BY DAY OF MONTH #--------------------------------------------------------------------- diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index c8a01d681..36a10145e 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -179,4 +179,14 @@ message174=Versions Safari message175=Versions Chrome message176=Versions Konqueror message177= -message178=Téléchargements \ No newline at end of file +message178=Téléchargements +message179=Export CSV +message180=TB +message181=Frequence[/s] +message182=Nombre de requêtes +message183=Periode +message184=s +message185=Fréquence moyenne de requête [/s] +message186=Taille de la requête +message187=Heure +message188=Request time \ No newline at end of file From bd5685b47bd22c5c0707c32c346bb4fa811191df Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 29 Jul 2024 02:05:58 +0200 Subject: [PATCH 059/152] downloads table --- wwwroot/cgi-bin/awstats.pl | 39 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 81d50809d..a1850f8d3 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14273,35 +14273,33 @@ sub HTMLMainDownloads{ if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowDownloadStats", 2 ); } my $regext = qr/\.(\w{1,6})$/; - print " "; + # print " "; my $Totalh = 0; if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined - my $title = - "$Message[178] ($Message[77] $MaxNbOf{'DownloadsShown'})   -   $Message[80]"; + + my $title = $Message[178] . ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')'; + my $subtitle = '' . $Message[80] . ''; - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title = "$title   -   $Message[179]"); - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle .= '' . $Message[179] . ''; + } - &tab_head( "$title", 0, 0, 'downloads' ); + &tab_head($title, '', 'downloads'); + my $cnt=0; for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ $Totalh += $_downloads{$u}->{'AWSTATS_HITS'}; $cnt++; if ($cnt > 4){last;} } + + print '
    '; + # Graph the top five in a pie chart if (($Totalh > 0) and (scalar keys %_downloads > 1)){ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) @@ -14377,6 +14375,9 @@ sub HTMLMainDownloads{ $count++; if ($count >= $MaxNbOf{'DownloadsShown'}){last;} } + + print '
    '; + &tab_end(); } From 9aae35b9a37ece8caef5fd2582afc3ee15d95ca2 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 29 Jul 2024 02:29:29 +0200 Subject: [PATCH 060/152] insert data-tables --- wwwroot/cgi-bin/awstats.pl | 122 ++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 71 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index a1850f8d3..46f5fec1d 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -10933,7 +10933,7 @@ sub HTMLMainFileType{ &tab_head($title, $subtitle, 'filetypes', 19); - print ''; + print '
    '; # Graph the top five in a pie chart if (scalar @keylist > 1){ @@ -11136,7 +11136,7 @@ sub HTMLMainFileSize{ if ($Totals) { $average_s = int($average_s / $Totals); } else { $average_s = '?'; } - print '
    ' + print '
    ' . "\n"; my $total_s = 0; my $count = 0; @@ -11226,7 +11226,7 @@ sub HTMLMainRequestTime{ if ($Totals) { $average_s = int($average_s / $Totals); } else { $average_s = '?'; } - print '
    $Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]
    ' + print '
    ' . "\n"; my $total_s = 0; my $count = 0; @@ -14298,7 +14298,7 @@ sub HTMLMainDownloads{ if ($cnt > 4){last;} } - print '
    $Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]
    '; + print '
    '; # Graph the top five in a pie chart if (($Totalh > 0) and (scalar keys %_downloads > 1)){ @@ -14799,7 +14799,7 @@ sub HTMLMainHosts{ &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); - print '
    '; + print '
    '; # Graph the top five in a pie chart if (scalar @keylist > 1) @@ -15091,7 +15091,7 @@ sub HTMLMainRobots{ &tab_head($title, $subtitle, 'robots', 19); - print '
    ' + print '
    ' . "
    " . Format_Number(( scalar keys %_robot_h )) @@ -15166,7 +15166,7 @@ sub HTMLMainWorms{ # print " "; &tab_head( $Message[163] . ' (' . $Message[77] . $MaxNbOf{'WormsShown'} . ')', '', 'worms', 19 ); - print '' + print '
    ' . "" . "" . ""; @@ -15272,7 +15272,7 @@ sub HTMLMainSessions{ if ($Totals) { $average_s = int( $average_s / $Totals ); } else { $average_s = '?'; } - print '
    " . Format_Number(( scalar keys %_worm_h )) . " $Message[164]*$Message[167]
    ' + print '
    ' . "" . "\n"; $average_s = 0; @@ -15322,76 +15322,56 @@ sub HTMLMainPages{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - if ($Debug) { - debug( -"ShowPagesStats (MaxNbOf{'PageShown'}=$MaxNbOf{'PageShown'} TotalDifferentPages=$TotalDifferentPages)", - 2 - ); - } + if ($Debug) {debug("ShowPagesStats (MaxNbOf{'PageShown'}=$MaxNbOf{'PageShown'} TotalDifferentPages=$TotalDifferentPages)", 2);} my $regext = qr/\.(\w{1,6})$/; - print -"   "; - my $title = -"$Message[19] ($Message[77] $MaxNbOf{'PageShown'})   -   $Message[80]"; - if ( $ShowPagesStats =~ /E/i ) { - $title .= "   -   $Message[104]"; + # print "   "; + + my $title = $Message[19] . ' (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); + my $subtitle = '' . $Message[80] . ''; + + if ( $ShowPagesStats =~ /E/i ) + { + $subtitle .= ' - ' . $Message[104] . ''; } - if ( $ShowPagesStats =~ /X/i ) { - $title .= "   -   $Message[116]"; } - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title .= "   -   $Message[179]"); - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle .= ' - ' . $Message[179] . ''; + } - &tab_head( "$title", 19, 0, 'urls' ); - print -""; + &tab_head($title, $subtitle, 'urls', 19); + + print '
    $Message[10]: ".Format_Number($TotalVisits)." - $Message[96]: ".Format_Number($average_s)." s$Message[10]$Message[15]
    ".Format_Number($TotalDifferentPages)." $Message[28]
    ' + . ""; if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { - print - ""; + print ""; } if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { - print - ""; + print ""; } if ( $ShowPagesStats =~ /B/i ) { - print - ""; + print ""; } if ( $ShowPagesStats =~ /E/i ) { - print - ""; + print ""; } if ( $ShowPagesStats =~ /X/i ) { - print - ""; + print ""; } # Call to plugins' function ShowPagesAddField @@ -15602,7 +15582,7 @@ sub HTMLMainOS{ &BuildKeyList( $MaxNbOf{'OsShown'}, $MinHit{'Os'}, \%new_os_h, \%new_os_p ); - print '
    ".Format_Number($TotalDifferentPages)." $Message[28]$Message[29]$Message[29]$Message[57]$Message[57]$Message[106]$Message[106]$Message[104]$Message[104]$Message[116]$Message[116]
    '; + print '
    '; # Graph the top five in a pie chart if (scalar @keylist > 1){ @@ -15762,7 +15742,7 @@ sub HTMLMainBrowsers{ \%new_browser_h, \%new_browser_p ); - print '
    '; + print '
    '; # Graph the top five in a pie chart if (scalar @keylist > 1){ @@ -15896,7 +15876,7 @@ sub HTMLMainScreenSize{ &tab_head($title, '', 'screensizes'); - print '
    ' + print '
    ' . "\n"; my $total_h = 0; my $count = 0; @@ -15993,7 +15973,7 @@ sub HTMLMainReferrers{ $p_h[4] = int( $_from_h[4] / $Totalh * 1000 ) / 10; $p_h[5] = int( $_from_h[5] / $Totalh * 1000 ) / 10; } - print '
    $Message[135]$Message[15]
    ' + print '
    ' . ""; if ( $ShowOriginStats =~ /P/i ) { print ""; @@ -16242,7 +16222,7 @@ sub HTMLMainKeys{ &tab_head($title, $subtitle, 'keyphrases', 19, ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70); - print '
    $Message[37]$Message[56]$Message[15]
    ' + print '
    ' . "\n"; @@ -16302,7 +16282,7 @@ sub HTMLMainKeys{ &tab_head($title , $subtitle, 'keywords', 19); - print '
    $TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]
    ' + print '
    ' . "\n"; @@ -16367,7 +16347,7 @@ sub HTMLMainMisc{ &tab_head($title, '', 'misc', 19); - print '
    $TotalDifferentKeywords $Message[13]$Message[14]$Message[15]
    ' + print '
    ' . '' . '' . '' @@ -16453,7 +16433,7 @@ sub HTMLMainHTTPStatus{ &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); - print '
    ' . $Message[139] . '  
    '; + print '
    '; # Graph the top five in a pie chart if (scalar @keylist > 1){ From e6300a309e58f93f3d6a646d9cc473c95ea71fb5 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 29 Jul 2024 02:48:59 +0200 Subject: [PATCH 061/152] reduce "links" size --- wwwroot/cgi-bin/awstats.pl | 62 +++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 46f5fec1d..4ed8d7f6c 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14278,8 +14278,10 @@ sub HTMLMainDownloads{ if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined my $title = $Message[178] . ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); my $subtitle = '' . $Message[80] . ''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) @@ -14389,28 +14391,29 @@ sub HTMLMainDownloads{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainHours{ - my $NewLinkParams = shift; - my $NewLinkTarget = shift; + my $NewLinkParams = shift; + my $NewLinkTarget = shift; - if ($Debug) { debug( "ShowHoursStats", 2 ); } + if ($Debug) { debug( "ShowHoursStats", 2 ); } # print " "; - my $title = "$Message[20]"; + my $title = $Message[20]; + my $subtitle = ''; - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $title = "$title   -   $Message[179]"); - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle = ' - ' . $Message[179] . ''; + } if ( $PluginsLoaded{'GetTimeZoneTitle'}{'timezone'} ) { $title .= " (GMT " . ( GetTimeZoneTitle_timezone() >= 0 ? "+" : "" ) . int( GetTimeZoneTitle_timezone() ) . ")"; } + &tab_head( $title, '', 'hours', 19 ); + print "'; $tableData .= ''; - } # render Graph Plugin @@ -14085,7 +14103,7 @@ sub HTMLMainDaysofWeek{ my $NewLinkTarget = shift; my $title = "$Message[91]"; - my $width = 15; + my $width = 'var(--bar-v-width-weekday)'; my $max_p = my $max_h = my $max_k = 0; my @avg_dayofweek_nb = (); @@ -14260,129 +14278,6 @@ sub HTMLMainDaysofWeek{ &tab_end(); } -#------------------------------------------------------------------------------ -# Function: Prints the Downloads chart and table -# Parameters: - -# Input: $NewLinkParams, $NewLinkTarget -# Output: HTML -# Return: - -#------------------------------------------------------------------------------ -sub HTMLMainDownloads{ - my $NewLinkParams = shift; - my $NewLinkTarget = shift; - if (!$LevelForFileTypesDetection > 0){return;} - if ($Debug) { debug( "ShowDownloadStats", 2 ); } - my $regext = qr/\.(\w{1,6})$/; - # print " "; - my $Totalh = 0; - if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined - - my $title = $Message[178] . ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')'; - - my $link = XMLEncode($AWScript . ${NewLinkParams}); - my $subtitle = '' . $Message[80] . ''; - - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) - { # extend the title to include the added link - $subtitle .= '' . $Message[179] . ''; - } - - &tab_head($title, '', 'downloads'); - - my $cnt=0; - for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ - $Totalh += $_downloads{$u}->{'AWSTATS_HITS'}; - $cnt++; - if ($cnt > 4){last;} - } - - print '
    \n"; my $width = '0.4dvw'; @@ -14589,8 +14592,10 @@ sub HTMLMainCountries{ # print " "; my $title = $Message[25] . '(' . $Message[77] . ' ' . $MaxNbOf{'Domain'} . ')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); my $subtitle = '' . $Message[80] .''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { @@ -14780,12 +14785,14 @@ sub HTMLMainHosts{ # print " "; my $title = $Message[81] . ' (' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); my $subtitle = - '' + '' . $Message[80] . ' - ' - . '' + . '' . $Message[9] . ' - ' - . '' + . '' . $Message[45] . ''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) @@ -15075,11 +15082,12 @@ sub HTMLMainRobots{ my $title = $Message[53] . ' ('. $Message[77]. ' ' . $MaxNbOf{'RobotShown'} .')'; + my $link = XMLEncode($AWScript . ${NewLinkParams}); my $subtitle = ' ' . $Message[80] . '' . ' - ' . $Message[9] . ''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) @@ -15563,11 +15571,13 @@ sub HTMLMainOS{ } my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); my $subtitle = ' ' . $Message[80] . '/' . $Message[58] .'' . ' - ' . $Message[0] . ''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) @@ -15721,11 +15731,13 @@ sub HTMLMainBrowsers{ $new_browser_p{$key} += $_browser_p{$key}; } my $title = $Message[21] . ' (' . $Message[77] . ' ' . $MaxNbOf{'BrowsersShown'} .')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); my $subtitle = '' . $Message[80] . '/' . $Message[58] . '' . ' - ' . $Message[0] . ''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { @@ -16216,8 +16228,10 @@ sub HTMLMainKeys{ if ($Debug) { debug( "ShowKeyphrasesStats", 2 ); } $title = $Message[120] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeyphrasesShown'} . ')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); $subtitle = '' . $Message[80] . ''; &tab_head($title, $subtitle, 'keyphrases', 19, ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70); From 4332b51b1d2eb5eaf8f4744ed418bcee2cf48beb Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 29 Jul 2024 05:44:35 +0200 Subject: [PATCH 062/152] Bars grow on hover + some css work to be more responsive + optimize space, reduce header and tables heights + moving HTMLMainDownloads to be in order of table on the page (practical if you must repeat things) --- wwwroot/cgi-bin/awstats.pl | 379 +++++++++++++++++++------------------ 1 file changed, 199 insertions(+), 180 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 4ed8d7f6c..72b90b8ef 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -936,6 +936,12 @@ sub renderCss { . '--a-color: #' . $color_link . ';' . '--a-hover-color: #' . $color_hover . ';' . '--bar-width: ' . $BarWidth .'px; /* default 125 */' + . '--bar-v-height: 20; /* default 75 */' + . '--bar-v-grow: 1;' + . '--bar-v-width-month: 0.44dvw;' + . '--bar-v-width-daily: 0.17dvw;' + . '--bar-v-width-weekday: 0.75dvw;' + . '--bar-v-width-hours: 0.23dvw;' . '}' . < header { position: sticky; top: 0; z-index: 100; width: 100%; background-color: var(--page-bgcolor); display: flex; flex-wrap: wrap; column-gap: 20px; justify-content: center; } +#container { display: flex; flex-wrap: wrap; justify-content: center; gap: 25px; align-items: flex-start;} +#container > header { position: sticky; top: 0; z-index: 100; width: 100%; background-color: var(--page-bgcolor); display: flex; flex-wrap: wrap; column-gap: 20px; justify-content: center; text-align: center; } #domain { font-weight: 900; font-size: 2.4em } header select { width : 60px } +#logo { height: 40px; } nav { width: 100%; height: 17px; margin: 8px 0; background-color: white; text-align: center; } #about { width: 100%; text-align: center; } nav { margin-top: 0; } -#summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; align-items: flex-start;} +#summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;} #summary-logs div { padding: 2px 0 } .summary-label { margin: 0 9px; } #summary-logs div[class^="bg-"], .currentday{ width:var(--bar-width); font-weight: 900 } div[class^="bg-"], th[class^="bg-"] { width: var(--bar-width) } button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } -h1, section header {border-bottom: 8px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1.4rem; } +h1, section header {border-bottom: 6px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1rem; } .multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } -.multi-data-table.worldmap{ width: 60%; position: relative; } +.multi-data-table.worldmap{ position: relative; } .data-table { border-spacing: 0 2px; margin: auto; } .data-table tfoot { display: table-header-group } .data-table tbody div { opacity: 0.9 } @@ -968,23 +975,19 @@ sub renderCss { .data-table th { font-weight: 900 } .data-table th, .data-table td:not(:first-child) { padding: 2px 0 } .data-table td:first-child { padding-right: 4px } -.data-table td div { padding: 3px 4px } +.data-table td div { padding: 0 4px } .data-table td { text-align: right; font-weight: 700; } .data-table td:first-child:not(.country) { font-weight: 400 } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } .data-table-sum { font-size : 1.3em } -.data-table .title { font-size: 2em } -.bar-table { margin: auto; text-align: center; font-size: 10px; } +.bar-table { margin: auto; text-align: center; font-size: 10px; border-bottom: 6px solid var(--light-color);} .bar-table tr:first-child td { vertical-align: bottom; } .bar-table span { font-size: 0.8em } .bar{ } .bar-horizontal{ height: 4px } -.bar-vertical{ display: inline-block; width: 4px; } -.clock{ display: inline-block; vertical-align: bottom; margin: 0 5px; border-radius: 50%; } -.bar-table .clock { width: 1dvw; height: 1dvw } -.data-table .clock { width: 16px; height: 16px } +.bar-vertical{ display: inline-block; transition: height 0.5s ease-out; } .hr-1{ rotate: 30deg } .hr-2{ rotate: 60deg } .hr-3{ rotate: 90deg } .hr-4{ rotate: 120deg } .hr-5{ rotate: 150deg } .hr-6{ rotate: 180deg } .hr-7{ rotate: 210deg } .hr-8{ rotate: 240deg } .hr-9{ rotate: 270deg } .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } -#worldmap{ width: 56%; margin-bottom: 1dvh; background-color: #4477DD; } +#worldmap{ width: 100%; margin-bottom: 1dvh; background-color: #4477DD; } .title-map{ position:absolute; top: 16px; color: var(--light-color); } .country { text-transform: uppercase; font-weight: 700; } /* colors */ @@ -996,8 +999,11 @@ sub renderCss { .bg-e{ background-color: var(--aws-color-e) } .bg-x{ background-color: var(--aws-color-x) } .bg-s{ background-color: var(--aws-color-s) } +.clock{ display: inline-block; vertical-align: bottom; margin: 0 5px; border-radius: 50%; } .clock-night{ background: conic-gradient(rgba(30, 28, 97, 1) 330deg, rgba(244, 240, 144, 1) 30deg); } .clock-day{ background: conic-gradient(rgba(244, 240, 144, 1) 330deg, rgba(30, 28, 97, 1) 30deg); } +.bar-table .clock { width: 0.15dvw; height: 0.15dvw } +.data-table .clock { width: 16px; height: 16px } .landxx{ fill: rgba(128, 86, 86, 1) !important; transition: fill 0.3s ease-in } .oceanxx{ fill: #4477DD !important; stroke-width: 0 !important; } .lighted-land{ fill: var(--aws-color-u) !important; fill-rule: evenodd;} @@ -1034,7 +1040,21 @@ sub renderJavascript { .map(letter => letter.charCodeAt(0) % 32 + 0x1F1E5) .map(emojiCode => String.fromCodePoint(emojiCode)) .join(''); - }); + }); + + [...document.querySelectorAll('.bar-table')].forEach(el => { + el.addEventListener("mouseenter", (e) => { + [...el.querySelectorAll('.bar')].forEach(bar => { + bar.style.setProperty('--bar-v-grow', 4); + }); + }); + + el.addEventListener("mouseleave", (e) => { + [...el.querySelectorAll('.bar')].forEach(bar => { + bar.style.setProperty('--bar-v-grow', 1); + }); + }); + }); let worldmap = document.getElementById('worldmap'); @@ -8496,13 +8516,13 @@ sub HtmlBar { my $max = shift; my $title = shift; my $width = shift || 4; - my $height = ($max > 0) ? int( ( ( $data || 0 ) / $max ) * $BarHeight ): 0; + my $height = ($max > 0) ? int( ( $data || 0 ) * 100 / $max ) : 0; if($data > 0 && $height < 1){ $height = 1; } - return '
    '; + return '
    '; } #------------------------------------------------------------------------------ @@ -10334,7 +10354,7 @@ sub HTMLTopBanner{ } print '
    ' - . ''; + . ''; if ( !$StaticLinks ) { Show_Flag_Links($Lang); } @@ -13461,12 +13481,12 @@ sub HTMLMainSummary{ print '
    '; print '
    '; - print '

    ' . ($MonthRequired eq 'all' ? $YearRequired : $MonthNumLib{$MonthRequired} . ' ' . $YearRequired) . '

    '; + # print '

    ' . ($MonthRequired eq 'all' ? $YearRequired : $MonthNumLib{$MonthRequired} . ' ' . $YearRequired) . '

    '; # Show first/last print '
    ' - # . '' . $Message[133] . ' ' . ($MonthRequired eq 'all' ? $YearRequired : $MonthNumLib{$MonthRequired} . ' ' . $YearRequired) . '' - . '' . $Message[8] . ' ' . ($FirstTime ? Format_Date($FirstTime, 0) : 'N/A') . ' - ' + . '' . $Message[8] . ' ' . ($FirstTime ? Format_Date($FirstTime, 0) : 'N/A') . '' + . ' - ' . ($MonthRequired eq 'all' ? $YearRequired : $MonthNumLib{$MonthRequired} . ' ' . $YearRequired) . ' - ' . '' . $Message[9] . ' ' . ($LastTime ? Format_Date( $LastTime, 0 ) : "NA" ) . '' . '
    '; @@ -13603,7 +13623,7 @@ sub HTMLMainMonthly{ my $height = 0; my $bars = ''; - my $width = 8; + my $width = 'var(--bar-v-width-month)'; my $data = ''; my $tableData = ''; @@ -13840,7 +13860,7 @@ sub HTMLMainDaily{ my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $max_v = my $max_p = my $max_h = my $max_k = 0; # Start from 0 because can be lower than 1 my $height = 0; - my $width = '0.2dvw'; + my $width = 'var(--bar-v-width-daily)'; my $bars = ''; my $data = ''; my $tableData = ''; @@ -13928,7 +13948,6 @@ sub HTMLMainDaily{ $valdata[ $xx++ ] = $DayPages{ $date } || 0; $valdata[ $xx++ ] = $DayHits{ $date } || 0; $valdata[ $xx++ ] = $DayBytes{ $date } || 0; - } $bars .= '
    '; @@ -13976,7 +13995,6 @@ sub HTMLMainDaily{ $bars .= '
    '; - - # Graph the top five in a pie chart - if (($Totalh > 0) and (scalar keys %_downloads > 1)){ - foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) - { - my @blocklabel = (); - my @valdata = (); - my @valcolor = ($color_p); - my $cnt = 0; - for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ - push @valdata, ($_downloads{$u}->{'AWSTATS_HITS'} / $Totalh * 1000 ) / 10; - push @blocklabel, Get_Filename($u); - $cnt++; - if ($cnt > 4) { last; } - } - my $columns = 2; - if ($ShowDownloadsStats =~ /H/i){$columns += length($ShowDownloadsStats)+1;} - else{$columns += length($ShowDownloadsStats);} - print ""; - } - } - - my $total_dls = scalar keys %_downloads; - print ""; - if ( $ShowDownloadsStats =~ /H/i ){print "" - .""; } - if ( $ShowDownloadsStats =~ /B/i ){ - print ""; - print ""; - } - print "\n"; - my $count = 0; - for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ - print ""; - my $ext = Get_Extension($regext, $u); - if ( !$ext) { - print ""; - } - else { - my $nameicon = $MimeHashLib{$ext}[0] || "notavailable"; - my $nametype = $MimeHashFamily{$MimeHashLib{$ext}[0]} || " "; - print ""; - } - print ""; - if ( $ShowDownloadsStats =~ /H/i ){ - print ""; - print ""; - } - if ( $ShowDownloadsStats =~ /B/i ){ - print ""; - print ""; - } - print "\n"; - $count++; - if ($count >= $MaxNbOf{'DownloadsShown'}){last;} - } - - print '
    "; - my $function = "ShowGraph_$pluginname"; - &$function( - "$Message[80]", "downloads", - 0, \@blocklabel, - 0, \@valcolor, - 0, 0, - 0, \@valdata - ); - print "
    $Message[178]: $total_dls$Message[57]206 $Message[57]$Message[75]$Message[106]
    "; - &HTMLShowURLInfo($u); - print "".Format_Number($_downloads{$u}->{'AWSTATS_HITS'})."".Format_Number($_downloads{$u}->{'AWSTATS_206'})."".Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'})."".Format_Bytes(($_downloads{$u}->{'AWSTATS_SIZE'}/ - ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'})))."
    '; - - &tab_end(); -} - #------------------------------------------------------------------------------ # Function: Prints the hours chart and table # Parameters: $NewLinkParams, $NewLinkTarget @@ -14414,9 +14309,7 @@ sub HTMLMainHours{ &tab_head( $title, '', 'hours', 19 ); - print "
    \n"; - - my $width = '0.4dvw'; + my $width = 'var(--bar-v-width-hours)'; my $max_p = my $max_h = my $max_k = 1; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { @@ -14453,10 +14346,11 @@ sub HTMLMainHours{ ); $graphdone=1; } + if (! $graphdone && $ShowBars == 1) { print ''; - print "\n"; + print ''; for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { print '
    ' @@ -14500,7 +14394,7 @@ sub HTMLMainHours{ print HTMLDataTableHeader('', $ShowHoursStats); #body - for ( my $ix = 0 ; $ix <= 11 ; $ix++ ) { + for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { my $monthix = ( $ix < 10 ? "0$ix" : "$ix" ); @@ -14527,48 +14421,47 @@ sub HTMLMainHours{ } print '
    '; - print ''; + # print '
    '; - #header - print HTMLDataTableHeader('', $ShowHoursStats); + # #header + # print HTMLDataTableHeader('', $ShowHoursStats); - #body - print ''; + # #body + # print ''; - for ( my $ix = 12 ; $ix <= 23 ; $ix++ ) { + # for ( my $ix = 12 ; $ix <= 23 ; $ix++ ) { - my $monthix = $ix; + # my $monthix = $ix; - print ''; + # print ''; - print ''; + # print ''; - if ( $ShowHoursStats =~ /P/i ) { - $data = $_time_p[$monthix] ? $_time_p[$monthix] : '0'; - print HTMLDataCellWithBar('p', $data , Format_Number($data), $max_p); - } - - if ( $ShowHoursStats =~ /H/i ) { - $data = $_time_h[$monthix] ? $_time_h[$monthix] : '0'; - print HTMLDataCellWithBar('h', $data , Format_Number($data), $max_h); - } + # if ( $ShowHoursStats =~ /P/i ) { + # $data = $_time_p[$monthix] ? $_time_p[$monthix] : '0'; + # print HTMLDataCellWithBar('p', $data , Format_Number($data), $max_p); + # } + + # if ( $ShowHoursStats =~ /H/i ) { + # $data = $_time_h[$monthix] ? $_time_h[$monthix] : '0'; + # print HTMLDataCellWithBar('h', $data , Format_Number($data), $max_h); + # } - if ( $ShowHoursStats =~ /B/i ) { - $data = $_time_k[$monthix] ? $_time_k[$monthix] : '0'; - print HTMLDataCellWithBar('b', $data , Format_Bytes($data), $max_k); - } + # if ( $ShowHoursStats =~ /B/i ) { + # $data = $_time_k[$monthix] ? $_time_k[$monthix] : '0'; + # print HTMLDataCellWithBar('b', $data , Format_Bytes($data), $max_k); + # } - print ''; - } + # print ''; + # } - print '
    ' . $monthix . '' . $monthix . '
    '; + # print '
    '; print '
    '; print "\n"; } - print "\n"; &tab_end(); } @@ -14770,6 +14663,129 @@ sub HTMLMainCountries{ &tab_end(); } +#------------------------------------------------------------------------------ +# Function: Prints the Downloads chart and table +# Parameters: - +# Input: $NewLinkParams, $NewLinkTarget +# Output: HTML +# Return: - +#------------------------------------------------------------------------------ +sub HTMLMainDownloads{ + my $NewLinkParams = shift; + my $NewLinkTarget = shift; + if (!$LevelForFileTypesDetection > 0){return;} + if ($Debug) { debug( "ShowDownloadStats", 2 ); } + my $regext = qr/\.(\w{1,6})$/; + # print " "; + my $Totalh = 0; + if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined + + my $title = $Message[178] . ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')'; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); + my $subtitle = '' . $Message[80] . ''; + + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + $subtitle .= '' . $Message[179] . ''; + } + + &tab_head($title, '', 'downloads'); + + my $cnt=0; + for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ + $Totalh += $_downloads{$u}->{'AWSTATS_HITS'}; + $cnt++; + if ($cnt > 4){last;} + } + + print ''; + + # Graph the top five in a pie chart + if (($Totalh > 0) and (scalar keys %_downloads > 1)){ + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) + { + my @blocklabel = (); + my @valdata = (); + my @valcolor = ($color_p); + my $cnt = 0; + for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ + push @valdata, ($_downloads{$u}->{'AWSTATS_HITS'} / $Totalh * 1000 ) / 10; + push @blocklabel, Get_Filename($u); + $cnt++; + if ($cnt > 4) { last; } + } + my $columns = 2; + if ($ShowDownloadsStats =~ /H/i){$columns += length($ShowDownloadsStats)+1;} + else{$columns += length($ShowDownloadsStats);} + print ""; + } + } + + my $total_dls = scalar keys %_downloads; + print ""; + if ( $ShowDownloadsStats =~ /H/i ){print "" + .""; } + if ( $ShowDownloadsStats =~ /B/i ){ + print ""; + print ""; + } + print "\n"; + my $count = 0; + for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ + print ""; + my $ext = Get_Extension($regext, $u); + if ( !$ext) { + print ""; + } + else { + my $nameicon = $MimeHashLib{$ext}[0] || "notavailable"; + my $nametype = $MimeHashFamily{$MimeHashLib{$ext}[0]} || " "; + print ""; + } + print ""; + if ( $ShowDownloadsStats =~ /H/i ){ + print ""; + print ""; + } + if ( $ShowDownloadsStats =~ /B/i ){ + print ""; + print ""; + } + print "\n"; + $count++; + if ($count >= $MaxNbOf{'DownloadsShown'}){last;} + } + + print '
    "; + my $function = "ShowGraph_$pluginname"; + &$function( + "$Message[80]", "downloads", + 0, \@blocklabel, + 0, \@valcolor, + 0, 0, + 0, \@valdata + ); + print "
    $Message[178]: $total_dls$Message[57]206 $Message[57]$Message[75]$Message[106]
    "; + &HTMLShowURLInfo($u); + print "".Format_Number($_downloads{$u}->{'AWSTATS_HITS'})."".Format_Number($_downloads{$u}->{'AWSTATS_206'})."".Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'})."".Format_Bytes(($_downloads{$u}->{'AWSTATS_SIZE'}/ + ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'})))."
    '; + + &tab_end(); +} + #------------------------------------------------------------------------------ # Function: Prints the hosts chart and table # Parameters: $NewLinkParams, $NewLinkTarget @@ -21074,7 +21090,8 @@ sub HTMLMainExtra{ &HTMLMainHours($NewLinkParams, $NewLinkTarget); } - print "\n \n\n"; + # print "\n \n\n"; + print '
    '; # BY COUNTRY/DOMAIN #--------------------------- @@ -21082,6 +21099,8 @@ sub HTMLMainExtra{ &HTMLMainCountries($NewLinkParams, $NewLinkTarget); } + print '
    '; + # BY HOST/VISITOR #-------------------------- if ($ShowHostsStats) { From 4e93d9b9d27240a3eb159ff7d4448a0860a3ed15 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 29 Jul 2024 15:08:55 +0200 Subject: [PATCH 063/152] re-active extra_head_html & tooltips on tab_head. move analysis date to save height. --- wwwroot/cgi-bin/awstats.pl | 46 +++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 72b90b8ef..be024a5cb 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -951,7 +951,7 @@ sub renderCss { hr { width: 100%; height: 0; margin: 0; color: transparent; border: none; } small { font-size: 0.7rem; font-weight: 400; } #container { display: flex; flex-wrap: wrap; justify-content: center; gap: 25px; align-items: flex-start;} -#container > header { position: sticky; top: 0; z-index: 100; width: 100%; background-color: var(--page-bgcolor); display: flex; flex-wrap: wrap; column-gap: 20px; justify-content: center; text-align: center; } +#container > header { position: sticky; top: 0; z-index: 100; width: 100%; background-color: var(--page-bgcolor); display: flex; flex-wrap: wrap; column-gap: 20px; justify-content: center; text-align: center; } #domain { font-weight: 900; font-size: 2.4em } header select { width : 60px } #logo { height: 40px; } @@ -1200,28 +1200,26 @@ sub tab_head { my $title = shift; my $subtitle = shift || ''; my $anchor = shift || ''; - # my $tooltipnb = shift; + my $tooltipnb = shift || ''; print '
    '; - print '
    ' . $title . (($subtitle ne '') ? ' ' . $subtitle . '' : '') . '
    '; + print '
    ' + . $title . (($subtitle ne '') ? ' ' . $subtitle . '' : ''); # Call to plugins' function TabHeadHTML - # my $extra_head_html = ''; - # foreach my $pluginname ( keys %{ $PluginsLoaded{'TabHeadHTML'} } ) { - # my $function = "TabHeadHTML_$pluginname"; - # $extra_head_html .= &$function($title); - # } + my $extra_head_html = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'TabHeadHTML'} } ) { + my $function = "TabHeadHTML_$pluginname"; + $extra_head_html .= &$function($title); + } - # if ($tooltipnb) { - # print "$title " - # . $extra_head_html . ""; - # } - # else { - # print "$title " - # . $extra_head_html . ""; - # } + print $extra_head_html; + + if ($tooltipnb) { + print ' ? '; + } + + print '
    '; # print "\n"; # if ( $width == 70 && $QueryString =~ /buildpdf/i ) { @@ -1243,12 +1241,7 @@ sub tab_head { #------------------------------------------------------------------------------ sub tab_end { my $string = shift; - # print ""; - if ($string) { - print "
    $string
    "; - } - - print '
    '; + print (($string) ? "
    $string
    " : '') . ''; } #------------------------------------------------------------------------------ @@ -13481,7 +13474,6 @@ sub HTMLMainSummary{ print '
    '; print '
    '; - # print '

    ' . ($MonthRequired eq 'all' ? $YearRequired : $MonthNumLib{$MonthRequired} . ' ' . $YearRequired) . '

    '; # Show first/last print '
    ' @@ -15172,9 +15164,11 @@ sub HTMLMainRobots{ . ''; } + print '* ' . $Message[156] . ' ' . ( $TotalRRobots ? $Message[157] : '' ) . ''; + print ''; - &tab_end("* $Message[156]" . ( $TotalRRobots ? " $Message[157]" : "" ) ); + &tab_end(); } #------------------------------------------------------------------------------ From 633b83e321aed07907e52ab4ad22ca42eb45e7d6 Mon Sep 17 00:00:00 2001 From: bouks Date: Mon, 29 Jul 2024 21:42:29 +0200 Subject: [PATCH 064/152] New tooltip system, plugin updates without javascript --- wwwroot/cgi-bin/awstats.pl | 334 ++++++++++++++---- .../cgi-bin/lang/tooltips_w/awstats-tt-al.txt | 126 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-ba.txt | 103 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-bg.txt | 126 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-br.txt | 203 ++++------- .../cgi-bin/lang/tooltips_w/awstats-tt-ca.txt | 125 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-cn.txt | 99 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-cz.txt | 134 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-de.txt | 118 +++---- .../cgi-bin/lang/tooltips_w/awstats-tt-dk.txt | 135 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-en.txt | 136 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-es.txt | 125 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-fi.txt | 126 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-fr.txt | 136 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-gl.txt | 129 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-gr.txt | 131 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-hu.txt | 129 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-is.txt | 133 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-it.txt | 135 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-jp.txt | 112 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-kr.txt | 111 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-nb.txt | 117 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-nl.txt | 103 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-nn.txt | 125 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-pl.txt | 125 ++++--- .../cgi-bin/lang/tooltips_w/awstats-tt-ro.txt | 137 +++---- .../cgi-bin/lang/tooltips_w/awstats-tt-ru.txt | 102 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-se.txt | 118 +++---- .../cgi-bin/lang/tooltips_w/awstats-tt-sk.txt | 103 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-sr.txt | 121 +++---- .../cgi-bin/lang/tooltips_w/awstats-tt-tr.txt | 101 +++--- .../cgi-bin/lang/tooltips_w/awstats-tt-tw.txt | 98 ++--- .../cgi-bin/lang/tooltips_w/awstats-tt-ua.txt | 138 ++++---- wwwroot/cgi-bin/plugins/tooltips.pm | 102 +----- 34 files changed, 2098 insertions(+), 2298 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index be024a5cb..5a6f04237 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -965,6 +965,9 @@ sub renderCss { div[class^="bg-"], th[class^="bg-"] { width: var(--bar-width) } button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } h1, section header {border-bottom: 6px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1rem; } +section header { position: relative } +.tooltip { visibility: hidden; opacity: 0; position: absolute; bottom: -357%; left: 25%; z-index: 10; font-size: 0.7rem; width: 320px; background-color: var(--dark-color); color: var(--light-color); padding: 4px; border-radius: 5px; } +section header:hover .tooltip { visibility: visible; opacity: 1; } .multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ position: relative; } .data-table { border-spacing: 0 2px; margin: auto; } @@ -1013,11 +1016,11 @@ sub renderCss { EOF # Call to plugins' function AddHTMLStyles - foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLStyles'} } ) - { - my $function = "AddHTMLStyles_$pluginname"; - $css .= &$function(); - } + foreach my $pluginname (keys %{ $PluginsLoaded{'AddHTMLStyles'} }) + { + my $function = "AddHTMLStyles_$pluginname"; + $css .= &$function(); + } return ''; } @@ -1030,7 +1033,7 @@ sub renderCss { # Return: string #------------------------------------------------------------------------------ sub renderJavascript { -return < document.addEventListener("DOMContentLoaded", (d) => { @@ -1134,6 +1137,16 @@ sub renderJavascript { }); EOF + + # # Call to plugins' function AddHTMLJavascript + # foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLJavascript'} } ) + # { + # my $function = "AddHTMLJavascript_$pluginname"; + # $js .= &$function(); + # } + + return $js; + } #------------------------------------------------------------------------------ @@ -1200,7 +1213,8 @@ sub tab_head { my $title = shift; my $subtitle = shift || ''; my $anchor = shift || ''; - my $tooltipnb = shift || ''; + my $tooltip = shift || 0; + my $msg = shift || 0; print '
    '; print '
    ' @@ -1213,10 +1227,14 @@ sub tab_head { $extra_head_html .= &$function($title); } - print $extra_head_html; + print ' ' . $extra_head_html; - if ($tooltipnb) { - print ' ? '; + if ($tooltip) { + print '' . $tooltip . ''; + } + + if ($msg) { + print '
    ' . $msg . '
    '; } print '
    '; @@ -10943,8 +10961,15 @@ sub HTMLMainFileType{ # build keylist at top &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_filetypes_h, \%_filetypes_h ); - - &tab_head($title, $subtitle, 'filetypes', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'filetypes', $tooltip); print ''; @@ -11137,7 +11162,15 @@ sub HTMLMainFileSize{ # print " "; my $title = $Message[186]; - &tab_head($title, '', 'filesizes', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, '', 'filesizes', $tooltip); my $Totals = 0; my $average_s = 0; @@ -11228,7 +11261,14 @@ sub HTMLMainRequestTime{ my $title = $Message[188]; - &tab_head($title, '', 'requesttimes', 19); + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, '', 'requesttimes', $tooltip); my $Totals = 0; my $average_s = 0; @@ -11281,8 +11321,18 @@ sub HTMLMainRequestTime{ sub HTMLShowBrowserDetail{ # Show browsers versions print " "; + my $title = "$Message[21]"; - &tab_head( "$title", 19, 0, 'browsersversions' ); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, '', 'browsersversions', $tooltip); + print ""; print @@ -13825,7 +13875,7 @@ sub HTMLMainMonthly{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainDaily{ - if ($Debug) { debug( "ShowDaysOfMonthStats", 2 ); } + if ($Debug) { debug( 'ShowDaysOfMonthStats', 2 ); } my $firstdaytocountaverage = shift; my $lastdaytocountaverage = shift; @@ -13866,14 +13916,15 @@ sub HTMLMainDaily{ my $xx = 0; my @vallabel = ("$Message[10]", "$Message[56]", "$Message[57]", "$Message[75]"); - if ( $FrameName eq 'mainright' ) { - $NewLinkTarget = " target=\"_parent\""; + if ( $FrameName eq 'mainright' ) + { + $NewLinkTarget = ' target="_parent"'; } my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; - if ($AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link + if ($AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link $title = "$title   -    "; &tab_head( $title, '', 'daysofmonth' ); - print ""; - print "' . ''; - if ( $ShowDaysOfMonthStats =~ /V/i ) { + if ( $ShowDaysOfMonthStats =~ /V/i ) + { $data = int($DayVisits{ $date } || 0 ); $bars .= HtmlBar('v', $data, Format_Number($data), $max_v, $Message[10], $width); @@ -13959,7 +14011,8 @@ sub HTMLMainDaily{ $tableData .= HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); } - if ( $ShowDaysOfMonthStats =~ /P/i ) { + if ( $ShowDaysOfMonthStats =~ /P/i ) + { $data = int($DayPages{ $date } || 0 ); $bars .= HtmlBar('p', $data, Format_Number($data), $max_p, $Message[56], $width); @@ -13967,8 +14020,8 @@ sub HTMLMainDaily{ $tableData .= HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); } - if ( $ShowDaysOfMonthStats =~ /H/i ) { - + if ( $ShowDaysOfMonthStats =~ /H/i ) + { $data = int($DayHits{ $date } || 0 ); $bars .= HtmlBar('h', $data, Format_Number($data), $max_h, $Message[57], $width); @@ -13976,8 +14029,8 @@ sub HTMLMainDaily{ $tableData .= HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); } - if ( $ShowDaysOfMonthStats =~ /B/i ) { - + if ( $ShowDaysOfMonthStats =~ /B/i ) + { $data = int($DayBytes{ $date } || 0 ); $bars .= HtmlBar('b', $data, Format_Bytes($data), $max_k, $Message[75], $width); @@ -13990,8 +14043,8 @@ sub HTMLMainDaily{ } # render Graph Plugin - if ($graphPlugin == 1) { - + if ($graphPlugin == 1) + { foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my $function = "ShowGraph_$pluginname"; @@ -14044,8 +14097,8 @@ sub HTMLMainDaily{ } # Show data array for days - if ($AddDataArrayShowDaysOfMonthStats) { - + if ($AddDataArrayShowDaysOfMonthStats) + { print '
    $Message[58]
    \n"; + + print '
    '; foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { @@ -13931,8 +13982,8 @@ sub HTMLMainDaily{ my $dayofweekcursor = DayOfWeek( $day, $month, $year ); - if ($graphPlugin == 1) { - + if ($graphPlugin == 1) + { my $bold = ($day == $nowday && $month == $nowmonth && $year == $nowyear) ? ':' : ''; my $weekend = ($dayofweekcursor =~ /[06]/) ? '!' : '' ; push @blocklabel, "$day\n$MonthNumLib{$month}$weekend$bold"; @@ -13951,7 +14002,8 @@ sub HTMLMainDaily{ . ( !$StaticLinks && $day == $nowday && $month == $nowmonth && $year == $nowyear ? '' : '' ) . '
    '; #header @@ -14094,7 +14147,7 @@ sub HTMLMainDaysofWeek{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $title = "$Message[91]"; + my $title = $Message[91]; my $width = 'var(--bar-v-width-weekday)'; my $max_p = my $max_h = my $max_k = 0; @@ -14105,11 +14158,18 @@ sub HTMLMainDaysofWeek{ my $graphPlugin = (%{ $PluginsLoaded{'ShowGraph'} }) ? 1 : 0; - + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(18); + } + # print " "; - &tab_head( "$title", '', 'daysofweek', 18 ); - print ""; - print "' . '
    "; + &tab_head($title, '', 'daysofweek', $tooltip ); + + print '
    '; foreach my $daycursor ($firstdaytocountaverage .. $lastdaytocountaverage ) { @@ -14299,7 +14359,14 @@ sub HTMLMainHours{ . int( GetTimeZoneTitle_timezone() ) . ")"; } - &tab_head( $title, '', 'hours', 19 ); + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head( $title, '', 'hours', $tooltip ); my $width = 'var(--bar-v-width-hours)'; my $max_p = my $max_h = my $max_k = 1; @@ -14489,8 +14556,15 @@ sub HTMLMainCountries{ . (XMLEncode($AddLinkToExternalCGIWrapper . '?section=DOMAIN&baseName=' . $DirData/$PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" '. $NewLinkTarget . '>' . $Message[179] . ''); } + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } - &tab_head( $title, $subtitle, 'countries', 19); + &tab_head( $title, $subtitle, 'countries', $tooltip); foreach ( values %_domener_u ) { if ( $_ > $max_u ) { $max_u = $_; } @@ -14809,8 +14883,15 @@ sub HTMLMainHosts{ . '' . $Message[179] . ''; } + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } - &tab_head( $title, $subtitle, 19); + &tab_head( $title, $subtitle, 'hosts', $tooltip); &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); @@ -15104,8 +15185,18 @@ sub HTMLMainRobots{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=ROBOT&baseName=' . $DirData .'/'. $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''; } + + my $TotalRRobots = 0; + foreach ( values %_robot_r ) { $TotalRRobots += $_; } + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } - &tab_head($title, $subtitle, 'robots', 19); + &tab_head($title, $subtitle, 'robots', $tooltip, '* ' . $Message[156] . ' ' . ( $TotalRRobots ? $Message[157] : '' )); print '' . "'; } - print ''; - print '
    * ' . $Message[156] . ' ' . ( $TotalRRobots ? $Message[157] : '' ) . '
    '; &tab_end(); @@ -15182,7 +15270,15 @@ sub HTMLMainWorms{ if ($Debug) { debug( "ShowWormsStats", 2 ); } # print " "; - &tab_head( $Message[163] . ' (' . $Message[77] . $MaxNbOf{'WormsShown'} . ')', '', 'worms', 19 ); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head( $Message[163] . ' (' . $Message[77] . $MaxNbOf{'WormsShown'} . ')', '', 'worms', $tooltip, '*' . $Message[158] ); print '' . "" @@ -15265,7 +15361,7 @@ sub HTMLMainWorms{ } print '
    '; - &tab_end("* $Message[158]"); + &tab_end(); } #------------------------------------------------------------------------------ @@ -15279,7 +15375,15 @@ sub HTMLMainSessions{ if ($Debug) { debug( "ShowSessionsStats", 2 ); } # print " "; my $title = $Message[117]; - &tab_head( $title, '', 'sessions', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head( $title, '', 'sessions', $tooltip); my $Totals = 0; my $average_s = 0; @@ -15371,8 +15475,15 @@ sub HTMLMainPages{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=SIDER&baseName=' . $DirData . '/' . $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''; } - - &tab_head($title, $subtitle, 'urls', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'urls', $tooltip); print '' . ""; @@ -15596,8 +15707,15 @@ sub HTMLMainOS{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=OS&baseName=' . $DirData . '/' . $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''; } - - &tab_head($title, $subtitle, 'os', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'os', $tooltip); &BuildKeyList( $MaxNbOf{'OsShown'}, $MinHit{'Os'}, \%new_os_h, \%new_os_p ); @@ -15756,8 +15874,15 @@ sub HTMLMainBrowsers{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=BROWSER&baseName=' . $DirData . '/' . $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''; } - - &tab_head($title, $subtitle, 'browsers', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'browsers', $tooltip); &BuildKeyList( $MaxNbOf{'BrowsersShown'}, $MinHit{'Browser'}, @@ -15974,8 +16099,15 @@ sub HTMLMainReferrers{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=ORIGIN&baseName=' . $DirData . '/' . $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''; } - - &tab_head($title, $subtitle, 'referer', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'referer', $tooltip); my @p_p = ( 0, 0, 0, 0, 0, 0 ); if ( $Totalp > 0 ) { @@ -16244,7 +16376,14 @@ sub HTMLMainKeys{ . ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? $link . 'output=keyphrases' : $StaticLinks . '.keyphrases.' . $StaticExt) . '" ' . $NewLinkTarget . '>' . $Message[80] . ''; - &tab_head($title, $subtitle, 'keyphrases', 19, ( $ShowKeyphrasesStats && $ShowKeywordsStats ) ? 95 : 70); + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'keyphrases', $tooltip); print '
    ".Format_Number($TotalDifferentPages)." $Message[28]
    ' . "' . $Message[80] . ''; - &tab_head($title , $subtitle, 'keywords', 19); + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'keywords', $tooltip); print '
    ' . "' . '' @@ -16451,8 +16604,15 @@ sub HTMLMainHTTPStatus{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=ERRORS&baseName=' . $DirData . '/' . $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''; } - - &tab_head($title, $subtitle, 'errors', 19); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, $subtitle, 'errors', $tooltip, '*' . $Message[154]); &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); @@ -16515,7 +16675,7 @@ sub HTMLMainHTTPStatus{ print '
    ' . $Message[139] . '
    '; - &tab_end("* $Message[154]"); + &tab_end(); } #------------------------------------------------------------------------------ @@ -16532,7 +16692,16 @@ sub HTMLMainSMTPStatus{ if ($Debug) { debug( "ShowSMTPErrorsStats", 2 ); } print " "; my $title = "$Message[147]"; - &tab_head( "$title", 19, 0, 'errors' ); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, '', 'errors', $tooltip ); + print "\n"; my $total_h = 0; @@ -16578,8 +16747,15 @@ sub HTMLMainCluster{ . "&siteConfig=$SiteConfig" ) . "\"$NewLinkTarget>$Message[179]"); } - - &tab_head( "$title", 19, 0, 'clusters' ); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, '', 'clusters', $tooltip); &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_cluster_p, \%_cluster_p ); @@ -16675,9 +16851,19 @@ sub HTMLMainExtra{ my $extranum = shift; if ($Debug) { debug( "ExtraName$extranum", 2 ); } - print " "; + # print " "; + my $title = $ExtraName[$extranum]; - &tab_head( "$title", 19, 0, "extra$extranum" ); + + my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } + + &tab_head($title, 'extra' . $extranum, '', $tooltip); + print ""; print "
    $Message[147]$Message[57]$Message[15]$Message[75]
    " . $ExtraFirstColumnTitle[$extranum]; print "  -   -
    -Vizita është përkufizuar si vizitor risi (Shfletimin apo Shiqimin e faqes) të cilët nuk e kan vizituar faqen që nga #VisitTimeOut# min. -
    -
    -Numri i klientëve strehues (IP adresa) të cilët erdhën ta vizitojnë faqen (dhe që shfletuan se paku një faqe).
    -Këto t'dhëna tregojnë numrin e personave të ndryshëm fizikë të cilët arritën faqen në çdo ditë. -
    -
    -Hera e faqeve që është shiquar (Shuma e të gjitha vizitave).
    -Kjo pjes e t'dhënave ndryshon nga "Hyrjet" në atë mënyr i numron vetëm faqet HTML kundër atyre për figur dhe të tjera. -
    -
    -Hera e faqes, figurës, vargut që është shiquar ose shkarkuar nga dikush.
    -Këto t'dhëna janë ofruar vetëm si referencë, pasi që numri i shiqimeve "Faqe" është menduar për qëllime tregtie. -
    -
    -Kjo informatë trtegon sasinë e t'dhënave shkarkuar nga të gjitha faqet, figurat dhe vargjet mbrenda një Faqësie.
    -Njesitë janë në KB, MB ose GB (KiloBajt, MegaBajta or GigaBajta) -
    -
    -#PROG# e njeh çdo lidhje në faqe search nga #SearchEnginesArray# Makinat Kërkuese në Internet më të popullarizuara si dhe Tregues (si Yahoo, Altavista, Lycos, Google, Voila, etj...). -
    -
    -Lista e të gjitha faqeve jashta faqës që nyjëzuan (dhe hyrje) te faqja e juaj (Vetëm #MaxNbOfRefererShown# faqe më të shpeshta). -Nyjet që janë përdor nga rezultatet e makinave kërkuese janë përjashtu këtu sepse ato përfshi në rreshtat e tabelave. -
    -
    -Kjo tabelë tregon kryefrazat dhe kryefjalitë më të shpeshta që janë përdorur ta gjejnë faqen tënde nga Makinat Kërkuese dhe tregues në Internet. -(kryefjalë nga #SearchEnginesArray# Makinat Kërkuese dhe Treguest më të popullarizuar janë njohur nga #PROG#, si Yahoo, Altavista, Lycos, Google, Voila, etj...).
    -Vështri se shuma e kryefalive mund të jet më i madh se sa shume për kryefraza (numri real i kërkesave) sepse ndoshta dy fjali janë përdor në të njejtin Kërkues, kërkuese është numruar dy herë për fjali (një herë për çdo fjalë). -
    -
    -Robotat (rrallë emruar si Marimanga) janë vizita automatike kompjuterike përdorur nga shumë Makina Kërkuese që e Shiqon faqen tënga për tregues dhe radhitje, grumbullon statistika në Faqet e Internetit dhe/ose shiqon nëse faqja e juajështë ende në linje.
    -#PROG# Ka mundësi që t'i njohë #RobotArray# robota. -
    -
    -Të gjitha vizitat janë bazuar nga koha reale e Shërbyesit. -
    -
    -Këtu, t'dhënat e raportuara janë: valutat mesatare (llogaritur nga t'dhëant ndërmjet vizites së parë dhe të fundit) -
    -
    -Këtu, t'dhënat e raportuara janë: Shuma grumbulluese (llogaritur nga t'dhëant ndërmjet vizites së parë dhe të fundit) -
    -
    -Disa zgjatje të vizitave janë 'panjohur' sepse gjithmonë ato nuk mund të llogariten. Kjo është arsya kryesore për këtë:
    -- vizita nuk ishte përfundur kur 'freskimi' ndodhi.
    -- vizita filloi në orën e fundit (pas 23:00) te fundi i ditës së muajit (Një arsye teknike parandalon #PROG# për llogaritjen e një zgjatje të një mbledhje të tillë) -
    - -
    Nuk ka përshkrim për këtë gabim.
    -
    Kërkesa është kuptuar nga shërbyesi por do të kryesohet më vonë.
    -
    Shërbyesi ka kryesuar mirpo atje nuk ka dokument për ta dërguar.
    -
    Përmbajtje gjysore.
    -
    Dokumenti i kërkuar ishte larguar dhe tani një adres tjetër është përgjigj.
    -
    Nuk ka përshkrim për këtë gabim.
    -
    Gabim sintaksor, shërbyesi nuk e ka kuptuar kërkesen.
    -
    Provoi që ta arrij një URL ku një hyrje/parullë është nevojitur.
    Numri i madh në këtë gjë d.m.th. se (si psh. Grepi) është duke provuar që ta then, ose për të hyr në faqen tënde të siguruar (si shembull, duke shpresuar se duke provu parulla të ndryshme mund të hynë në hapsiren e siguruar).
    -
    Provoi që ta arrij një URL pa trajtur për arritje, edhe me parullë (për shembull, një URL mbrenda Treguesit jo e përkufizuar si "shfletuese".).
    -
    Provoi që ta arrij një URL joekzistuese. Ky gabim shpesh dmth një nyje pavlerë diku në faqen tënde ekziston ose vizitori e ka gabuar një URL të caktuar.
    -
    Shërbyesi shfrytëzoi shumë kohë ti përgjigjet kërkesës. Ky gabim shpesh përfshin skriptat (CGI, PHP) e ngadalshëm që shërbyesi është detyru që ta zhduk Faqe shërbyesin jashtëzakonisht të dyndur.
    -
    Gabim i mbrendshëm. Ky gabim shpesh shkaktohet nga një program CGI që përfundoi parregull (psh trajtim i keq).
    -
    Kërkes e panjohur.
    -
    Kodi i kthyer nga një shërbyes HTTP që punon si portë prokurie kur realisht, shërbyesi shenjuar nuk përgjigjet sukseshëm te kërkesat e klientëve.
    -
    Gabim mbrenda shërbyesit.
    -
    Parta tejkaloi kohën.
    -
    Botimi i HTTP Nuk është i Përkrahur
    +tt1=Vizita është përkufizuar si vizitor risi (Shfletimin apo Shiqimin e faqes) të cilët nuk e kan vizituar faqen që nga #VisitTimeOut# min. + +tt2=Numri i klientëve strehues (IP adresa) të cilët erdhën ta vizitojnë faqen (dhe që shfletuan se paku një faqe).
    Këto t'dhëna tregojnë numrin e personave të ndryshëm fizikë të cilët arritën faqen në çdo ditë. + +tt3=Hera e faqeve që është shiquar (Shuma e të gjitha vizitave).
    Kjo pjes e t'dhënave ndryshon nga "Hyrjet" në atë mënyr i numron vetëm faqet HTML kundër atyre për figur dhe të tjera. + +tt4=Hera e faqes, figurës, vargut që është shiquar ose shkarkuar nga dikush.
    Këto t'dhëna janë ofruar vetëm si referencë, pasi që numri i shiqimeve "Faqe" është menduar për qëllime tregtie. + +tt5=Kjo informatë trtegon sasinë e t'dhënave shkarkuar nga të gjitha faqet, figurat dhe vargjet mbrenda një Faqësie.
    Njesitë janë në KB, MB ose GB (KiloBajt, MegaBajta or GigaBajta) + +tt13=#PROG# e njeh çdo lidhje në faqe search nga #SearchEnginesArray# Makinat Kërkuese në Internet më të popullarizuara si dhe Tregues (si Yahoo, Altavista, Lycos, Google, Voila, etj...). + +tt14=Lista e të gjitha faqeve jashta faqës që nyjëzuan (dhe hyrje) te faqja e juaj (Vetëm #MaxNbOfRefererShown# faqe më të shpeshta).Nyjet që janë përdor nga rezultatet e makinave kërkuese janë përjashtu këtu sepse ato përfshi në rreshtat e tabelave. + +tt15=Kjo tabelë tregon kryefrazat dhe kryefjalitë më të shpeshta që janë përdorur ta gjejnë faqen tënde nga Makinat Kërkuese dhe tregues në Internet. (kryefjalë nga #SearchEnginesArray# Makinat Kërkuese dhe Treguest më të popullarizuar janë njohur nga #PROG#, si Yahoo, Altavista, Lycos, Google, Voila, etj...).
    Vështri se shuma e kryefalive mund të jet më i madh se sa shume për kryefraza (numri real i kërkesave) sepse ndoshta dy fjali janë përdor në të njejtin Kërkues, kërkuese është numruar dy herë për fjali (një herë për çdo fjalë). + +tt16=Robotat (rrallë emruar si Marimanga) janë vizita automatike kompjuterike përdorur nga shumë Makina Kërkuese që e Shiqon faqen tënga për tregues dhe radhitje, grumbullon statistika në Faqet e Internetit dhe/ose shiqon nëse faqja e juajështë ende në linje.
    #PROG# Ka mundësi që t'i njohë #RobotArray# robota. + +tt17=Të gjitha vizitat janë bazuar nga koha reale e Shërbyesit. + +tt18=Këtu, t'dhënat e raportuara janë: valutat mesatare (llogaritur nga t'dhëant ndërmjet vizites së parë dhe të fundit) + +tt19=Këtu, t'dhënat e raportuara janë: Shuma grumbulluese (llogaritur nga t'dhëant ndërmjet vizites së parë dhe të fundit) + +tt20=Disa zgjatje të vizitave janë 'panjohur' sepse gjithmonë ato nuk mund të llogariten. Kjo është arsya kryesore për këtë:
    - vizita nuk ishte përfundur kur 'freskimi' ndodhi.
    - vizita filloi në orën e fundit (pas 23:00) te fundi i ditës së muajit (Një arsye teknike parandalon #PROG# për llogaritjen e një zgjatje të një mbledhje të tillë) + +tt201= Nuk ka përshkrim për këtë gabim. + +tt202= Kërkesa është kuptuar nga shërbyesi por do të kryesohet më vonë. + +tt204= Shërbyesi ka kryesuar mirpo atje nuk ka dokument për ta dërguar. + +tt206= Përmbajtje gjysore. + +tt301= Dokumenti i kërkuar ishte larguar dhe tani një adres tjetër është përgjigj. + +tt302= Nuk ka përshkrim për këtë gabim. + +tt400= Gabim sintaksor, shërbyesi nuk e ka kuptuar kërkesen. + +tt401= Provoi që ta arrij një URL ku një hyrje/parullë është nevojitur.
    Numri i madh në këtë gjë d.m.th. se (si psh. Grepi) është duke provuar që ta then, ose për të hyr në faqen tënde të siguruar (si shembull, duke shpresuar se duke provu parulla të ndryshme mund të hynë në hapsiren e siguruar). + +tt403= Provoi që ta arrij një URL pa trajtur për arritje, edhe me parullë (për shembull, një URL mbrenda Treguesit jo e përkufizuar si "shfletuese".). + +tt404= Provoi që ta arrij një URL joekzistuese. Ky gabim shpesh dmth një nyje pavlerë diku në faqen tënde ekziston ose vizitori e ka gabuar një URL të caktuar. + +tt408= Shërbyesi shfrytëzoi shumë kohë ti përgjigjet kërkesës. Ky gabim shpesh përfshin skriptat (CGI, PHP) e ngadalshëm që shërbyesi është detyru që ta zhduk Faqe shërbyesin jashtëzakonisht të dyndur. + +tt500= Gabim i mbrendshëm. Ky gabim shpesh shkaktohet nga një program CGI që përfundoi parregull (psh trajtim i keq). + +tt501= Kërkes e panjohur. + +tt502= Kodi i kthyer nga një shërbyes HTTP që punon si portë prokurie kur realisht, shërbyesi shenjuar nuk përgjigjet sukseshëm te kërkesat e klientëve. + +tt503= Gabim mbrenda shërbyesit. + +tt504= Parta tejkaloi kohën. + +tt505= Botimi i HTTP Nuk është i Përkrahur diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ba.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ba.txt index db20cc5ac..6dd15b34e 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ba.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ba.txt @@ -1,54 +1,53 @@ -
    -Novi posjet se definie kao svaki novi dolazei posjetitelj (koji pregleda stranicu) koji se nije konektovao na va sajt u toku posljednjih #VisitTimeOut# minuta. -
    -
    -Broj korisnikih raunara (IP adresa) koji su posjeivali sajt (i vidjeli najmanje jednu stranicu).
    -Ovaj podatak govori o broju fiziki razliitih osoba koji su posjetili sajt tokom jednog dana. -
    -
    -Koliko puta je jedna stranica sajta bila pregledana (Suma za sve posjetitelje tokom svih posjeta).
    -Ovaj podatak se razlikuje od "pogodaka" po tome to broji samo HTML stranice za razliku od slika i drugih datoteka. -
    -
    -Koliko puta je jedna stranica, slika, datoteka sajta bila pregledana ili downloadovana od strane nekoga.
    -Ovaj podatak slui samo kao referenca, poto je broj "stranica" znatno korisniji za razne marketinke potrebe. -
    -
    -Ova informacija govori o koliini downloadiranih podataka za sve stranice, slike i datoteke u okviru vaeg sajta.
    -Jedinice su Kb, Mb ili Gb (kilobajti, megabajti ili gigabajti). Ovaj podatak je koristan kako biste pratili ostvareni transfer sa vae stranice. -
    -
    -#PROG# prepoznaje svaki pristup vaem sajtu nakon pretrage pomou #SearchEnginesArray# najpopularnijih Internet pretraivaa i direktorija (kao to su Yahoo, Altavista, Lycos, Google, Voila, itd...). -
    -
    -Lista svih vanjskih stranica na kojima se nalazi link koji je korisnik upotrijebio da bi doao na vau stranicu (Samo #MaxNbOfRefererShown# najeih linkova je prikazano). -Linkovi koji su rezultat pretraivaa su iskljueni jer smo ih ve prikazali u prethodnom redu ove tabele. -
    -
    -Ova tabela prikazuje listu kljunih rijei koje se najee koriste za pronalaenje vaeg sajta pomou Internet pretraivaa ili direktorija. -(#PROG# prepoznaje kljune rijei #SearchEnginesArray# najeih pretraivaa i direktorija, meu kojima su i Yahoo, Altavista, Lycos, Google, Voila, itd...). -
    -
    -Roboti (koji se ponekad nazivaju Spideri) su raunarski programi koje koriste mnogi pretraivai kako bi analizirali vau stranicu i time (1) indeksirali i rangirali vau stranicu, (2) prikupili statistike o Web stranicama i/ili (3) provjerili da li je va sajt jo uvijek online.
    -#PROG# moe prepoznati do #RobotArray# robota. -
    - -
    Nema opisa za ovu greku.
    -
    Server je razumio zahtjev, ali e ga obraditi kasnije.
    -
    Server je obradio zahtjev ali nema ta da poalje korisniku.
    -
    Djelomian sadraj (korisnik je prekinuo otvaranje stranice).
    -
    Traeni dokument je premjeten na novo mjesto i nova adresa je data korisniku (redirekcija).
    -
    Traeni dokument je premjeten na novo mjesto i nova adresa je data korisniku (redirekcija).
    -
    Sintaksna greka, server nije razumio zahtjev.
    -
    Korisnik je pokuao otvoriti URL za koji je potrebno dati login/ifru.
    Veliki broj pod ovom stavkom moe znaiti da neko (npr. hacker) pokuava provaliti u va sajt (npr. isprobavajui razne kombinacije logina/ifre za ulazak).
    -
    Korisnik je pokuao otvoriti URL koji je podeen da mu se ne moe pristupiti, ak ni sa loginom/ifrom (npr. URL unutar direktorija koji nije definisan kao pristupaan.).
    -
    Korisnik je pokuao pristupiti nepostojeem URLu. Ova greka obino znai da negdje na vaem sajtu postoji neispravan link ili da je korisnik neispravno ukucao odreeni URL.
    -
    Serveru je trebalo previe vremena da odgovori na zahtjev. Kod ove greke se obino radi ili o sporoj CGI skripti koju je server morao prekinuti, o sporoj konekciji korisnika ili o ekstremnom zaguenju saobraaja na web serveru.
    -
    Interna greka. Ovu greku uzrokuje CGI program koji sadri neku greku te je prekinuo rad abnormalno.
    -
    Zahtjevana je nepoznata akcija.
    -
    Ovaj kod vraa HTTP server koji radi kao proxy ili gateway, i to ako stvarni server ne odgovori uspjeno na zahtjev klijenta.
    -
    Interna greka na serveru.
    -
    Ovaj kod vraa HTTP server koji radi kao gateway, i to ako prilikom kontaktiranja stvarnog servera istekne predvieno vrijeme (gateway timeout).
    -
    Klijent zahtjeva verziju HTTPa koja nije podrana.
    +tt1=Novi posjet se definie kao svaki novi dolazei posjetitelj (koji pregleda stranicu) koji se nije konektovao na va sajt u toku posljednjih #VisitTimeOut# minuta. + +tt2=Broj korisnikih raunara (IP adresa) koji su posjeivali sajt (i vidjeli najmanje jednu stranicu).
    Ovaj podatak govori o broju fiziki razliitih osoba koji su posjetili sajt tokom jednog dana. + +tt3=Koliko puta je jedna stranica sajta bila pregledana (Suma za sve posjetitelje tokom svih posjeta).
    Ovaj podatak se razlikuje od "pogodaka" po tome to broji samo HTML stranice za razliku od slika i drugih datoteka. + +tt4=Koliko puta je jedna stranica, slika, datoteka sajta bila pregledana ili downloadovana od strane nekoga.
    Ovaj podatak slui samo kao referenca, poto je broj "stranica" znatno korisniji za razne marketinke potrebe. + +tt5=Ova informacija govori o koliini downloadiranih podataka za sve stranice, slike i datoteke u okviru vaeg sajta.
    Jedinice su Kb, Mb ili Gb (kilobajti, megabajti ili gigabajti). Ovaj podatak je koristan kako biste pratili ostvareni transfer sa vae stranice. + +tt13=#PROG# prepoznaje svaki pristup vaem sajtu nakon pretrage pomou #SearchEnginesArray# najpopularnijih Internet pretraivaa i direktorija (kao to su Yahoo, Altavista, Lycos, Google, Voila, itd...). + +tt14=Lista svih vanjskih stranica na kojima se nalazi link koji je korisnik upotrijebio da bi doao na vau stranicu (Samo #MaxNbOfRefererShown# najeih linkova je prikazano). Linkovi koji su rezultat pretraivaa su iskljueni jer smo ih ve prikazali u prethodnom redu ove tabele. + +tt15=Ova tabela prikazuje listu kljunih rijei koje se najee koriste za pronalaenje vaeg sajta pomou Internet pretraivaa ili direktorija. (#PROG# prepoznaje kljune rijei #SearchEnginesArray# najeih pretraivaa i direktorija, meu kojima su i Yahoo, Altavista, Lycos, Google, Voila, itd...). + +tt16=Roboti (koji se ponekad nazivaju Spideri) su raunarski programi koje koriste mnogi pretraivai kako bi analizirali vau stranicu i time (1) indeksirali i rangirali vau stranicu, (2) prikupili statistike o Web stranicama i/ili (3) provjerili da li je va sajt jo uvijek online.
    #PROG# moe prepoznati do #RobotArray# robota. + +tt201= Nema opisa za ovu greku. + +tt202= Server je razumio zahtjev, ali e ga obraditi kasnije. + +tt204= Server je obradio zahtjev ali nema ta da poalje korisniku. + +tt206= Djelomian sadraj (korisnik je prekinuo otvaranje stranice). + +tt301= Traeni dokument je premjeten na novo mjesto i nova adresa je data korisniku (redirekcija). + +tt302= Traeni dokument je premjeten na novo mjesto i nova adresa je data korisniku (redirekcija). + +tt400= Sintaksna greka, server nije razumio zahtjev. + +tt401= Korisnik je pokuao otvoriti URL za koji je potrebno dati login/ifru.
    Veliki broj pod ovom stavkom moe znaiti da neko (npr. hacker) pokuava provaliti u va sajt (npr. isprobavajui razne kombinacije logina/ifre za ulazak). + +tt403= Korisnik je pokuao otvoriti URL koji je podeen da mu se ne moe pristupiti, ak ni sa loginom/ifrom (npr. URL unutar direktorija koji nije definisan kao pristupaan.). + +tt404= Korisnik je pokuao pristupiti nepostojeem URLu. Ova greka obino znai da negdje na vaem sajtu postoji neispravan link ili da je korisnik neispravno ukucao odreeni URL. + +tt408= Serveru je trebalo previe vremena da odgovori na zahtjev. Kod ove greke se obino radi ili o sporoj CGI skripti koju je server morao prekinuti, o sporoj konekciji korisnika ili o ekstremnom zaguenju saobraaja na web serveru. + +tt500= Interna greka. Ovu greku uzrokuje CGI program koji sadri neku greku te je prekinuo rad abnormalno. + +tt501= Zahtjevana je nepoznata akcija. + +tt502= Ovaj kod vraa HTTP server koji radi kao proxy ili gateway, i to ako stvarni server ne odgovori uspjeno na zahtjev klijenta. + +tt503= Interna greka na serveru. + +tt504= Ovaj kod vraa HTTP server koji radi kao gateway, i to ako prilikom kontaktiranja stvarnog servera istekne predvieno vrijeme (gateway timeout). + +tt505= Klijent zahtjeva verziju HTTPa koja nije podrana. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-bg.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-bg.txt index 45171aea7..695a18b85 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-bg.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-bg.txt @@ -1,69 +1,61 @@ -
    -Ново посещение се отчита при всеки нов входящ посетител (разглеждащ страница), който не е посещавал през последните #VisitTimeOut# min. -
    -
    -Броят на клиентските хостове (IP адреси), които са посетили сайта (и са разгледали поне една страница).
    -Тези данни показват броя на различните физически лица, посетили сайта във всеки един ден. -
    -
    -Колко пъти тази страница от сайта е разгледана (Общо за всички посетители за всички посещения).
    -Тези данни се различават от "хитове" по това, че отброяват само HTML страници (без картинките и другите видове файлове). -
    -
    -Колко пъти страница, картинка или друг файл от сайта е разгледан или свален от посетител.
    -Тези данни са само справочни, тъй като броя на разгледаните "страници" често са обект на маркетингова политика. -
    -
    -Тази информация се отнася до количеството данни свалени с всички страници, картинки и файлове във вашият сайт.
    -Мерните единици са в KB, MB или GB (Килобайти, Мегабайти или Гигабайти) -
    -
    -#PROG# разпознава всеки достъп до вашия сайт след претърсване от #SearchEnginesArray# популярните търсачки (като Yahoo, Altavista, Lycos, Google, Voila, и т.н....). -
    -
    -Списък на всички външни страници използвани за връзка (и вход) към вашият сайт (Само #MaxNbOfRefererShown#-те най-често използвани външни страници са показани). -Връзките, използвани като резултат от търсачките са изключени, т.к. вече са показани в предишния ред от тази таблица. -
    -
    -Таблицата показва списък с най-често използваните ключови фрази или думи използвани за намиране на вашият сайт с помощта на интернет търсачки. -(Ключовите думи от #SearchEnginesArray# най-популярните търсачки са разпознати от #PROG#, като Yahoo, Altavista, Lycos, Google, Voila, и т.н...).
    -Заб.: общият брой на търсенията по ключови думи може да превишава броя на търсенията по ключови фрази (истинският брой на търсенията), защото ако се използват 2 кл. думи при едно и също търсене се отброяват 2 търсения по думи (по веднъж за всяка дума). -
    -
    -Роботите (известни и като Паяци) са автоматизирани компютърни посетители използвани от търсачките да сканират сайта ви за индексиране и класифициране: те събират информация за Уеб сайтовете и/или проверяват дали сайтът ви е онлайн.
    -#PROG# може да разпознае до #RobotArray# робота. -
    -
    -Всички времеви статистики са базирани на часовото време на сървъра. -
    -
    -Докладваните данни са: приблизителни стойности (изчислени от всички данни между началното и последното посещение) -
    -
    -Докладваните данни са: нарастващи суми (изчислени от всички данни между началното и последното посещение) -
    -
    -Някои стойности на Продължителност на посещенията са 'неизвестни' защото невинаги могат да бъдат изчислени. Основната причина за това е:
    -- Посещението още не е приключило, когато е предизвикано 'обновяване'.
    -- Посещението е започнало в последният час (след 23:00) от последният ден на месеца (по технически причини #PROG# е възпрепятстван да изчисли продължителността на такива сесии). -
    - -
    Няма описание на тази грешка.
    -
    Заявката ще бъде обработена по-късно от сървъра.
    -
    Сървърът обработи заявката, но тя не съдържа нищо.
    -
    Частично съдържание
    -
    В отговора на заявката можете да видите новият адрес на поисканият документ.
    -
    Няма описание на тази грешка.
    -
    Синтактична грешка, сървърът не разбира вашата заявка.
    -
    Опитвате се да достигнете URL защитен с име/парола.
    Многократни такива съобщения могат да означават опит за неоторизиран и/или злонамерен достъп до вашият сайт.
    -
    Опитвате се да достигнете URL недостъпен и за оторизирани потребители (например, URL адрес в директория, която не е дефинирана за "преглед".).
    -
    Опитвате се да достигнете несъществуващ URL. Това показва съществуването на невалидна връзка в сайта или погрешно написан от посетителя URL адрес.
    -
    Сървърът е отделил твърде много време за да отговори на заявката. Тази грешка обикновено означава или бавен CGI скрипт, който сървърът се е принудил да прекрати или извънредно претоварен със заявки сървър.
    -
    Вътрешна грешка. Тази грешка обикновено е причинена от CGI програма която е прекратила действието си абнормално(coredump например).
    -
    Исканото действие е непознато.
    -
    Код за грешка, върнат от HTTP сървър, работещ като прокси или gateway, когато сървърът-цел не е отговорил успешна на клиентската заявка.
    -
    Вътрешна грешка на сървъра.
    -
    Портално(Gateway) прекъсване.
    -
    HTTP версията не се поддържа.
    +tt1=Ново посещение се отчита при всеки нов входящ посетител (разглеждащ страница), който не е посещавал през последните #VisitTimeOut# min. + +tt2=Броят на клиентските хостове (IP адреси), които са посетили сайта (и са разгледали поне една страница).
    Тези данни показват броя на различните физически лица, посетили сайта във всеки един ден. + +tt3=Колко пъти тази страница от сайта е разгледана (Общо за всички посетители за всички посещения).
    Тези данни се различават от "хитове" по това, че отброяват само HTML страници (без картинките и другите видове файлове). + +tt4=Колко пъти страница, картинка или друг файл от сайта е разгледан или свален от посетител.
    Тези данни са само справочни, тъй като броя на разгледаните "страници" често са обект на маркетингова политика. + +tt5=Тази информация се отнася до количеството данни свалени с всички страници, картинки и файлове във вашият сайт.
    Мерните единици са в KB, MB или GB (Килобайти, Мегабайти или Гигабайти) + +tt13=#PROG# разпознава всеки достъп до вашия сайт след претърсване от #SearchEnginesArray# популярните търсачки (като Yahoo, Altavista, Lycos, Google, Voila, и т.н....). + +tt14=Списък на всички външни страници използвани за връзка (и вход) към вашият сайт (Само #MaxNbOfRefererShown#-те най-често използвани външни страници са показани). Връзките, използвани като резултат от търсачките са изключени, т.к. вече са показани в предишния ред от тази таблица. + +tt15=Таблицата показва списък с най-често използваните ключови фрази или думи използвани за намиране на вашият сайт с помощта на интернет търсачки. (Ключовите думи от #SearchEnginesArray# най-популярните търсачки са разпознати от #PROG#, като Yahoo, Altavista, Lycos, Google, Voila, и т.н...).
    Заб.: общият брой на търсенията по ключови думи може да превишава броя на търсенията по ключови фрази (истинският брой на търсенията), защото ако се използват 2 кл. думи при едно и също търсене се отброяват 2 търсения по думи (по веднъж за всяка дума). + +tt16=Роботите (известни и като Паяци) са автоматизирани компютърни посетители използвани от търсачките да сканират сайта ви за индексиране и класифициране: те събират информация за Уеб сайтовете и/или проверяват дали сайтът ви е онлайн.
    #PROG# може да разпознае до #RobotArray# робота. + +tt17=Всички времеви статистики са базирани на часовото време на сървъра. + +tt18=Докладваните данни са: приблизителни стойности (изчислени от всички данни между началното и последното посещение) + +tt19=Докладваните данни са: нарастващи суми (изчислени от всички данни между началното и последното посещение) + +tt20=Някои стойности на Продължителност на посещенията са 'неизвестни' защото невинаги могат да бъдат изчислени. Основната причина за това е:
    - Посещението още не е приключило, когато е предизвикано 'обновяване'.
    - Посещението е започнало в последният час (след 23:00) от последният ден на месеца (по технически причини #PROG# е възпрепятстван да изчисли продължителността на такива сесии). + +tt201= Няма описание на тази грешка. + +tt202= Заявката ще бъде обработена по-късно от сървъра. + +tt204= Сървърът обработи заявката, но тя не съдържа нищо. + +tt206= Частично съдържание + +tt301= В отговора на заявката можете да видите новият адрес на поисканият документ. + +tt302= Няма описание на тази грешка. + +tt400= Синтактична грешка, сървърът не разбира вашата заявка. + +tt401= Опитвате се да достигнете URL защитен с име/парола.
    Многократни такива съобщения могат да означават опит за неоторизиран и/или злонамерен достъп до вашият сайт. + +tt403= Опитвате се да достигнете URL недостъпен и за оторизирани потребители (например, URL адрес в директория, която не е дефинирана за "преглед".). + +tt404= Опитвате се да достигнете несъществуващ URL. Това показва съществуването на невалидна връзка в сайта или погрешно написан от посетителя URL адрес. + +tt408= Сървърът е отделил твърде много време за да отговори на заявката. Тази грешка обикновено означава или бавен CGI скрипт, който сървърът се е принудил да прекрати или извънредно претоварен със заявки сървър. + +tt500= Вътрешна грешка. Тази грешка обикновено е причинена от CGI програма която е прекратила действието си абнормално(coredump например). + +tt501= Исканото действие е непознато. + +tt502= Код за грешка, върнат от HTTP сървър, работещ като прокси или gateway, когато сървърът-цел не е отговорил успешна на клиентската заявка. + +tt503= Вътрешна грешка на сървъра. + +tt504= Портално(Gateway) прекъсване. + +tt505= HTTP версията не се поддържа. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-br.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-br.txt index b4af595ec..671ed9c7b 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-br.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-br.txt @@ -1,141 +1,66 @@ -
    -Uma nova visita é definida como cada novo visitante entrando -(vendo ou navegando por uma página) que não estava conectado a -seu site pelos últimos #VisitTimeOut# minutos. -
    -
    -Número de hosts clientes (endereços IP) que vieram -visitar o site (e que viram pelo menos uma página).
    -Estes dados se referem ao número de pessoas físicas -diferentes que chegaram no site. -
    -
    -Número de vezes que uma página do site é -vista (Soma de todos os visitantes e todas visitas).
    -Estes dados diferem dos "hits" pois somente conta a exibição de -páginas HTML, enquanto os "hits" contam também imagens e outros -arquivos. -
    -
    -Número de vezes uma página, imagem, ou arquivo do site -é visto ou recebido por alguém.
    -Estes dados são fornecidos apenas como referência, já que -o número de "páginas" visto é freqüentemente -preferido para fins de marketing. -
    -
    -Esta parte de informação refere-se à quantidade de dados -recebidos de todas páginas, imagens e arquivos de -seu site.
    -Unidades estão em KB, MB ou GB (KiloBytes, MegaBytes ou GigaBytes) -
    -
    -#PROG# reconhece cada accesso ao seu site após uma busca a -partir das #SearchEnginesArray# mais populares Ferramentas de Busca da -Internet e Diretórios (como Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Lista de todas páginas externas que foram utilizadas como origem -de acesso (e entrada) ao seu (Somente as #MaxNbOfRefererShown# -páginas externas mais freqüentemente utilizadas são -exibidas). -Links utilizados pelos resultados de ferramentas de busca não -são incluídos aqui pois já foram incluídos na -linha anterior desta tabela. -
    -
    -Esta tabela mostra a lista das mais freqüentes palavras-chave ou frases -usadas para encontrar seu site a partir de Ferramentas de Busca da Internet e -Diretórios. -(Palavras-chave das #SearchEnginesArray# mais populares Ferramentas de -Busca e Diretórios são reconhecidas pelo #PROG#, como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    -Note que o número total de buscas por palavras-chave pode ser maior que -o número total de buscas por frases (número real de buscas) -porque quando 2 palavras-chave são usadas em uma mesma busca, a busca -é contada em dobro para palavras-chave (uma para cada palavra). -
    -
    -Robots (também chamados de Spiders) são computadores -visitantes automáticos utilizados por várias ferramentas de -busca que podem rastrear seu web site para indexá-lo e -classificá-lo, coletar estatisticas em Web sites da Internet e/ou -verificar se seu site ainda está disponível.
    -#PROG# é capaz de reconhecer até #RobotArray# robots. -
    -
    -Todas as estatíticas de tempo relatadas são baseadas no -horário do servidor. -
    -
    -Aqui os dados reportados são: valores médios (calculados -a partir de todos os dados entre a primeira e última visitas no -intervalo analisado) -
    -
    -Aqui os dados reportados são: somas cumulativas (calculadas a -partir de todos os dados entre a primeira e última visitas no intervalo -analisado) -
    -
    -Some Duraçãoes de visitas são 'desconhecidas' -porque não podem ser sempre calculadas. Esta é a principal -razão para isso:
    -- A Visita não tinha sido encerrada quando a - 'atualização' ocorreu.
    -- Visitas iniciadas na última hora (depois de 23:00) do último - dia do mês (Uma razão técnica previne #PROG# de calcular -as durações destas sessões) -
    -
    -Worms (vermes) são visitas automáticas de computadores que na -realidade são servidores externos, infectados por um vírus, que -tenta realizar hits específicos em seu site para infectá-lo. Na -maioria dos casos, estes "vermes" exploram defeitos ("bugs") de servidores. Se -o seu sistema não é o alvo sensível do -worm, você pode simplesmente ignorar estes hits.
    -Existem poucos 'vermes de servidor' no mundo, mas eles costumam ser muito -ativos às vezes. -#PROG# é capaz de reconhecer #WormsArray# assinaturas conhecidas -de vermes (nimda,code red,...). -
    - -
    Erro sem descrição.
    -
    Requisição foi entendida pelo -servidor, mas será processada depois.
    -
    O servidor processou a -requisição, mas não há documento a ser enviado.
    -
    Conteúdo parcial.
    -
    O documento requisitado foi movido e -está agora em outro endereço fornecido como resposta.
    -
    Erro sem descrição.
    -
    erro de sintaxe, o servidor não -entendeu a requisição.
    -
    Tentou alcançar uma URL em que um -par usuário/senha foi requisitado.
    Um grande número -neste item pode significar que alguém (como um hacker) está -tentando quebrar, ou entrar em seu site (esperando entrar em uma área -segura tentando diferentes pares de usuários/senhas, por exemplo).
    -
    Tentou alcançar uma URL não -configurada como acessível, mesmo com um par userio/senha (por -exemplo, uma URL com um diretório não definido como -"navegável".).
    -
    Tentou alcançar uma URL -inexistente. Este erro freqüentemente significa que há um link -inválido em algum ponto de seu site ou que um visitante errou a -digitaço de uma URL.
    -
    O servidor levou muito tempo para -responder a requisição. Este erro freqüentemente indica ou -um script CGI lento que o servidor teve que interromper ou um servidor Web -extremamente congestionado.
    -
    Erro interno. Este erro é -freqüentemente causado por um programa CGI que terminou de forma anormal -(por exemplo um coredump).
    -
    Ação requisitada desconhecida.
    -
    Código retornado pelo servidor HTTP -que trabalha como proxy ou gateway quando um servidor real algo não -respondeu com sucesso à requisição do cliente.
    -
    Erro interno do servidor.
    -
    Tempo esgotado no Gateway.
    -
    Versão de HTTP Não Suportada.
    +tt1=Uma nova visita é definida como cada novo visitante entrando (vendo ou navegando por uma página) que não estava conectado a seu site pelos últimos #VisitTimeOut# minutos. + +tt2=Número de hosts clientes (endereços IP) que vieram visitar o site (e que viram pelo menos uma página).
    Estes dados se referem ao número de pessoas físicas diferentes que chegaram no site. + +tt3=Número de vezes que uma página do site é vista (Soma de todos os visitantes e todas visitas).
    Estes dados diferem dos "hits" pois somente conta a exibição de páginas HTML, enquanto os "hits" contam também imagens e outros arquivos. + +tt4=Número de vezes uma página, imagem, ou arquivo do site é visto ou recebido por alguém.
    Estes dados são fornecidos apenas como referência, já que o número de "páginas" visto é freqüentemente preferido para fins de marketing. + +tt5=Esta parte de informação refere-se à quantidade de dados recebidos de todas páginas, imagens e arquivos de +seu site.
    Unidades estão em KB, MB ou GB (KiloBytes, MegaBytes ou GigaBytes) + +tt13=#PROG# reconhece cada accesso ao seu site após uma busca a partir das #SearchEnginesArray# mais populares Ferramentas de Busca da Internet e Diretórios (como Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=Lista de todas páginas externas que foram utilizadas como origem de acesso (e entrada) ao seu (Somente as #MaxNbOfRefererShown# páginas externas mais freqüentemente utilizadas são exibidas). Links utilizados pelos resultados de ferramentas de busca não são incluídos aqui pois já foram incluídos na linha anterior desta tabela. + +tt15=Esta tabela mostra a lista das mais freqüentes palavras-chave ou frases usadas para encontrar seu site a partir de Ferramentas de Busca da Internet e +Diretórios. (Palavras-chave das #SearchEnginesArray# mais populares Ferramentas de Busca e Diretórios são reconhecidas pelo #PROG#, como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Note que o número total de buscas por palavras-chave pode ser maior que o número total de buscas por frases (número real de buscas) porque quando 2 palavras-chave são usadas em uma mesma busca, a busca é contada em dobro para palavras-chave (uma para cada palavra). + +tt16=Robots (também chamados de Spiders) são computadores visitantes automáticos utilizados por várias ferramentas de busca que podem rastrear seu web site para indexá-lo e classificá-lo, coletar estatisticas em Web sites da Internet e/ou verificar se seu site ainda está disponível.
    #PROG# é capaz de reconhecer até #RobotArray# robots. + +tt17=Todas as estatíticas de tempo relatadas são baseadas no horário do servidor. + +tt18=Aqui os dados reportados são: valores médios (calculados a partir de todos os dados entre a primeira e última visitas no intervalo analisado) + +tt19=Aqui os dados reportados são: somas cumulativas (calculadas a partir de todos os dados entre a primeira e última visitas no intervalo analisado) + +tt20=Some Duraçãoes de visitas são 'desconhecidas' porque não podem ser sempre calculadas. Esta é a principal razão para isso:
    - A Visita não tinha sido encerrada quando a 'atualização' ocorreu.
    - Visitas iniciadas na última hora (depois de 23:00) do último dia do mês (Uma razão técnica previne #PROG# de calcular as durações destas sessões) + +tt21=Worms (vermes) são visitas automáticas de computadores que na realidade são servidores externos, infectados por um vírus, que tenta realizar hits específicos em seu site para infectá-lo. Na maioria dos casos, estes "vermes" exploram defeitos ("bugs") de servidores. Se o seu sistema não é o alvo sensível do worm, você pode simplesmente ignorar estes hits.
    Existem poucos 'vermes de servidor' no mundo, mas eles costumam ser muito +ativos às vezes. #PROG# é capaz de reconhecer #WormsArray# assinaturas conhecidas de vermes (nimda,code red,...). + +tt201=Erro sem descrição. + +tt202=Requisição foi entendida pelo servidor, mas será processada depois. + +tt204=O servidor processou a requisição, mas não há documento a ser enviado. + +tt206=Conteúdo parcial. + +tt301=O documento requisitado foi movido e está agora em outro endereço fornecido como resposta. + +tt302=Erro sem descrição. + +tt400=erro de sintaxe, o servidor não entendeu a requisição. + +tt401=Tentou alcançar uma URL em que um par usuário/senha foi requisitado.
    Um grande número neste item pode significar que alguém (como um hacker) está tentando quebrar, ou entrar em seu site (esperando entrar em uma área segura tentando diferentes pares de usuários/senhas, por exemplo). + +tt403=Tentou alcançar uma URL não configurada como acessível, mesmo com um par userio/senha (por exemplo, uma URL com um diretório não definido como "navegável".). + +tt404=Tentou alcançar uma URL inexistente. Este erro freqüentemente significa que há um link inválido em algum ponto de seu site ou que um visitante errou a digitaço de uma URL. + +tt408=O servidor levou muito tempo para responder a requisição. Este erro freqüentemente indica ou um script CGI lento que o servidor teve que interromper ou um servidor Web extremamente congestionado. + +tt500=Erro interno. Este erro é freqüentemente causado por um programa CGI que terminou de forma anormal (por exemplo um coredump). + +tt501=Ação requisitada desconhecida. + +tt502=Código retornado pelo servidor HTTP que trabalha como proxy ou gateway quando um servidor real algo não respondeu com sucesso à requisição do cliente. + +tt503=Erro interno do servidor. + +tt504=Tempo esgotado no Gateway. + +tt505=Versão de HTTP Não Suportada. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ca.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ca.txt index 0c6c9734f..f1eed0eeb 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ca.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ca.txt @@ -1,68 +1,61 @@ -
    -Es considera una nova visita per cada nou visitant que consulta una pgina i que hagi accedit al lloc en els ltims #VisitTimeOut# mins.. -
    -
    -Nombre de clients (adreces IP) que entren a un lloc (i que com a mnim visiten una pgina).
    -Aquesta xifra reflecteix el nombre de persones fsiques diferents que han accedit al lloc en un dia. -
    -
    -Nombre de vegades que una pgina del lloc ha estat visualitzada (La suma de tots els visitants inclouen visites mltiples).
    -Aquest comptador es distingeix de "hits" perqu noms conta les pgines HTML, i no pas els grfics o altres arxius o fitxers. -
    -
    -El nombre de vegades que una pgina, imatge, arxiu o fitxer d'un lloc s visualitzat o descarregat per visitant.
    -Aquest comptador serveix de referncia, per el comptador de "pgines" representa una dada mercadotcnica generalment ms til, i per tant, ms recomanada. -
    -
    -El nombre de kilo bytes descagarregats pels visitants del lloc.
    -Es refereix al volum de dades descarregades per totes les pgines, imatges i arxius o fitxers mesurats en bytes. -
    -
    -El programa #PROG# s capa de reconixer una visita a un lloc desprs de cadascuna de les cerques des de qualsevol dels #SearchEnginesArray# motors de cerca i directoris Internet ms populars (Yahoo, Altavista, Lycos, Google, Terra, etc...). -
    -
    -Llista de pgines de llocs externs utilitzades para accedir o enllaar-se amb el seu lloc (Noms les #MaxNbOfRefererShown# pgines ms utilitzades es troben numerades). -Els enllaos emprats pels motors de cerca o directoris sn exclosos perqu ja han estat comptabilitzats a l'anterior apartat. -
    -
    -Aquesta taula mostra la llista de les paraules clau ms utilitzades en els motors de cerca i directoris Internet per trobar el seu lloc. -(El programa #PROG# reconeix paraules claus util.litzades en els #SearchEnginesArray# motors de cerca ms populars, com Yahoo, Altavista, Lycos, Google, Voila, Terra etc...). -
    -
    -Els Robots son visitants automtics que escanejan o viatgen pel seu lloc per a indexar-lo, o jerarquitzar-lo, per tal de recollir estadstiques de llocs Web, o per verificar si el seu lloc es troba connectat a la Xarxa.
    -El programa #PROG# reconeix fins a #RobotArray# robots. -
    -
    -Els temps relacionats amb les estadstiques estan basats en temps de servidor. -
    -
    -Aqu, les dates reportades son: valors medis (calculat desde totes les dates entre les primeres y les ultimes visites en la franja analitzada) -
    -
    -Aqu, les dates reportades son: sumes acumulatives (calculat desde totes les dates entre les primeres y les ultimes visites en la franja analitzada) -
    -
    -Algunes Duracions de les visites son 'desconegudes' perqu no poden ser calculades sempre. La ra principal d'ax es:
    -- La visita no va acab quan es va fer 'l'actualizaci'.
    -- La visita va comenar en la hora anterior (desprs de les 23:00) del passat dia de un mes (la ra tcnica de prevenir a #PROG# de la duraci calculada de tales sessions) -
    - -
    Error sense descripci.
    -
    La petici ha estat computada per el servidor la processar ms tard.
    -
    El servidor ha processat la petici per no existeixen documents per enviar.
    -
    Contingut parcial.
    -
    El document sollicitat ha estat reubicat i es troba en una URL proporcionada en la mateixa resposta.
    -
    Error sense descripci.
    -
    Error de sintaxis, el servidor no ha ents la seva petici.
    -
    Nombre d'intents per accedir a una URL que exigeix una combinaci usuari/contrasenya que ha estat invlida..
    Un nombre d'intents molt elevat pot suggerir la possibilitat que un hacker (o pirata) ha intentat entrar a una zona restringida del lloc (p.e., intentant mltiples combinacions de usuari/contrasenya).
    -
    Nombre d'intents per accedir a una URL configurada per a no ser accessible ni amb una combinaci usuari/contrasenya (p.e., una URL prviament definida com a "no navegable").
    -
    Nombre d'intents per accedir a una URL inexistent. Sovint, aquests es refereixen a un enlla (link) no vlid o a un error mecanogrfic quan el visitant tecleja una URL errnia.
    -
    El servidor ha trigat massa temps a respondre a una petici. Sovint, s degut a un programa CGI molt lent, el qual ha estat abandonat pel servidor, o b per un servidor molt saturat.
    -
    Error intern. Aquest error generalment s provocat per una terminaci anormal o prematura d'un programa CGI (p.e., un CGI corromput o malms).
    -
    Petici desconeguda pel servidor.
    -
    Codi retornat per un servidor de protocol HTTP que funciona com a proxy o pont (gateway) quan el servidor objectiu no funciona o no interpreta correctament la petici del client (o visitant).
    -
    Error intern del servidor.
    -
    Passarella fora de lnia.
    -
    Versi de protocol HTTP no suportada.
    \ No newline at end of file +tt1=Es considera una nova visita per cada nou visitant que consulta una pgina i que hagi accedit al lloc en els ltims #VisitTimeOut# mins.. + +tt2=Nombre de clients (adreces IP) que entren a un lloc (i que com a mnim visiten una pgina).
    Aquesta xifra reflecteix el nombre de persones fsiques diferents que han accedit al lloc en un dia. + +tt3=Nombre de vegades que una pgina del lloc ha estat visualitzada (La suma de tots els visitants inclouen visites mltiples).
    Aquest comptador es distingeix de "hits" perqu noms conta les pgines HTML, i no pas els grfics o altres arxius o fitxers. + +tt4=El nombre de vegades que una pgina, imatge, arxiu o fitxer d'un lloc s visualitzat o descarregat per visitant.
    Aquest comptador serveix de referncia, per el comptador de "pgines" representa una dada mercadotcnica generalment ms til, i per tant, ms recomanada. + +tt5=El nombre de kilo bytes descagarregats pels visitants del lloc.
    Es refereix al volum de dades descarregades per totes les pgines, imatges i arxius o fitxers mesurats en bytes. + +tt13=El programa #PROG# s capa de reconixer una visita a un lloc desprs de cadascuna de les cerques des de qualsevol dels #SearchEnginesArray# motors de cerca i directoris Internet ms populars (Yahoo, Altavista, Lycos, Google, Terra, etc...). + +tt14=Llista de pgines de llocs externs utilitzades para accedir o enllaar-se amb el seu lloc (Noms les #MaxNbOfRefererShown# pgines ms utilitzades es troben numerades). Els enllaos emprats pels motors de cerca o directoris sn exclosos perqu ja han estat comptabilitzats a l'anterior apartat. + +tt15=Aquesta taula mostra la llista de les paraules clau ms utilitzades en els motors de cerca i directoris Internet per trobar el seu lloc. (El programa #PROG# reconeix paraules claus util.litzades en els #SearchEnginesArray# motors de cerca ms populars, com Yahoo, Altavista, Lycos, Google, Voila, Terra etc...). + +tt16=Els Robots son visitants automtics que escanejan o viatgen pel seu lloc per a indexar-lo, o jerarquitzar-lo, per tal de recollir estadstiques de llocs Web, o per verificar si el seu lloc es troba connectat a la Xarxa.
    El programa #PROG# reconeix fins a #RobotArray# robots. + +tt17=Els temps relacionats amb les estadstiques estan basats en temps de servidor. + +tt18=Aqu, les dates reportades son: valors medis (calculat desde totes les dates entre les primeres y les ultimes visites en la franja analitzada) + +tt19=Aqu, les dates reportades son: sumes acumulatives (calculat desde totes les dates entre les primeres y les ultimes visites en la franja analitzada) + +tt20=Algunes Duracions de les visites son 'desconegudes' perqu no poden ser calculades sempre. La ra principal d'ax es:
    - La visita no va acab quan es va fer 'l'actualizaci'.
    - La visita va comenar en la hora anterior (desprs de les 23:00) del passat dia de un mes (la ra tcnica de prevenir a #PROG# de la duraci calculada de tales sessions) + +tt201= Error sense descripci. + +tt202= La petici ha estat computada per el servidor la processar ms tard. + +tt204= El servidor ha processat la petici per no existeixen documents per enviar. + +tt206= Contingut parcial. + +tt301= El document sollicitat ha estat reubicat i es troba en una URL proporcionada en la mateixa resposta. + +tt302= Error sense descripci. + +tt400= Error de sintaxis, el servidor no ha ents la seva petici. + +tt401= Nombre d'intents per accedir a una URL que exigeix una combinaci usuari/contrasenya que ha estat invlida..
    Un nombre d'intents molt elevat pot suggerir la possibilitat que un hacker (o pirata) ha intentat entrar a una zona restringida del lloc (p.e., intentant mltiples combinacions de usuari/contrasenya). + +tt403= Nombre d'intents per accedir a una URL configurada per a no ser accessible ni amb una combinaci usuari/contrasenya (p.e., una URL prviament definida com a "no navegable"). + +tt404= Nombre d'intents per accedir a una URL inexistent. Sovint, aquests es refereixen a un enlla (link) no vlid o a un error mecanogrfic quan el visitant tecleja una URL errnia. + +tt408= El servidor ha trigat massa temps a respondre a una petici. Sovint, s degut a un programa CGI molt lent, el qual ha estat abandonat pel servidor, o b per un servidor molt saturat. + +tt500= Error intern. Aquest error generalment s provocat per una terminaci anormal o prematura d'un programa CGI (p.e., un CGI corromput o malms). + +tt501= Petici desconeguda pel servidor. + +tt502= Codi retornat per un servidor de protocol HTTP que funciona com a proxy o pont (gateway) quan el servidor objectiu no funciona o no interpreta correctament la petici del client (o visitant). + +tt503= Error intern del servidor. + +tt504= Passarella fora de lnia. + +tt505= Versi de protocol HTTP no suportada. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cn.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cn.txt index ad75c9bce..50eb7d882 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cn.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cn.txt @@ -1,49 +1,52 @@ -
    -ֶΪιվ˴Σַͬվʱ#VisitTimeOut#ӲŻټ¼һΡ -
    -
    -ֶΪιվԴӲͬļIPվĸվ -
    -
    -ֶΪвιвιҳʵֻܴ¼ҳ(.htmlͼƬCSSļ)ķʴ -
    -
    -ֶΪȡܴҳļͼƬļӰļȡ
    -Щݽοҳ Page Viewҵ -
    -
    -ֶΪļݵҳļͼƬļӰļȡ -
    -
    -ֶΪ¼ʹߴЩѰվվ#PROG# Զʹõ#SearchEnginesArray#棬(Yahoo! Google...) -
    -
    -ʾվҳվҳб -ϵͳгϳǰ#MaxNbOfRefererShown#ҳַ -
    -
    -ʾʹѰվнϳʹõĹؼվϵͳ¼ʹõ#SearchEnginesArray#Ѱվؼʡ -
    -
    -ѰվĻ(Robots)ԶѰվڵݡ
    -#PROG#¼ϳʹõ#RobotArray#Ѱվļ¼ -
    - -
    ûй
    -
    ҳ˽ʹߵ
    -
    ҳĴʹߵ󣬵ȴûļͳ
    -
    ҳݶȡȫ
    -
    ѰҳѾƵطѾѰ
    -
    ҳԭҲѾڱĵطҵ
    -
    ﷨ҳ˽ʹߵ
    -
    ҳַ
    -
    δҳַ
    -
    ڵҳַ
    -
    ҳ̫ʱ䴦
    -
    ڲһ CGI
    -
    ˽
    -
    طҳûгɹظͻ
    -
    ڲ
    -
    ͨѶʱ
    -
    HTTP İ汾û֧
    +tt1=ֶΪιվ˴Σַͬվʱ#VisitTimeOut#ӲŻټ¼һΡ + +tt2=ֶΪιվԴӲͬļIPվĸվ + +tt3=ֶΪвιвιҳʵֻܴ¼ҳ(.htmlͼƬCSSļ)ķʴ + +tt4=ֶΪȡܴҳļͼƬļӰļȡ
    Щݽοҳ Page Viewҵ + +tt5=ֶΪļݵҳļͼƬļӰļȡ + +tt13=ֶΪ¼ʹߴЩѰվվ#PROG# Զʹõ#SearchEnginesArray#棬(Yahoo! Google...) + +tt14=ʾվҳվҳб ϵͳгϳǰ#MaxNbOfRefererShown#ҳַ + +tt15=ʾʹѰվнϳʹõĹؼվϵͳ¼ʹõ#SearchEnginesArray#Ѱվؼʡ + +tt16=ѰվĻ(Robots)ԶѰվڵݡ
    #PROG#¼ϳʹõ#RobotArray#Ѱվļ¼ + +tt201= ûй + +tt202= ҳ˽ʹߵ + +tt204= ҳĴʹߵ󣬵ȴûļͳ + +tt206= ҳݶȡȫ + +tt301= ѰҳѾƵطѾѰ + +tt302= ҳԭҲѾڱĵطҵ + +tt400= ﷨ҳ˽ʹߵ + +tt401= ҳַ + +tt403= δҳַ + +tt404= ڵҳַ + +tt408= ҳ̫ʱ䴦 + +tt500= ڲһ CGI + +tt501= ˽ + +tt502= طҳûгɹظͻ + +tt503= ڲ + +tt504= ͨѶʱ + +tt505= HTTP İ汾û֧ diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cz.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cz.txt index 1bf378fa1..c23508421 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cz.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-cz.txt @@ -1,75 +1,63 @@ -
    -Za novou návštěvu se považuje každý přístup návštěvníka, který nebyl připojen na serveru v průběhu předchozích #VisitTimeOut# minut. -
    -
    -Počet počítačů (IP adres), které se připojily na server (a stáhly alespoň jednu stránku).
    -To zhruba odpovídá počtu různých osob, které navštívily stránky. -
    -
    -Celkový počet zhlédnutí jednotlivých stránek (součet za všechny návštěvy všech návštěvníků).
    -Toto číslo se liší od „hitů“ tím, že sem jsou započítávány pouze stažení HTML stránek, a nikoli obrázků a jiných souborů. -
    -
    -Celkový počet zhlédnutí nebo stažení jednotlivých stránek, obrázků, či souborů.
    -Tento údaj je udáván spíše pro zajímavost, neboť počet zhlédnutých „stránek“ má obecně větší vypovídací hodnotu pro marketingové účely. -
    -
    -Celkový objem dat přenesených při návštěvách vašich stránek.
    -Tento údaj zahrnuje jak zobrazené stránky, tak stažené obrázky a soubory. -
    -
    -#PROG# umí rozpoznat přístupy na server z #SearchEnginesArray# nejznámějších internetových vyhledávačů a adresářů (např. Yahoo, Altavista, Lycos, Google, Voila). -
    -
    -Seznam externích stránek obsahujících odkazy na vaše stránky, přes které přišli někteří návštěvníci. (Zobrazuje se pouze #MaxNbOfRefererShown# nejčastěji použitých). -Odkazy z internetových vyhledávačů jsou uvedeny v samostatné tabulce, a proto zde nejsou zahrnuty. -
    -
    -Tato tabulka obsahuje nejčastější výrazy a slovní spojení použité ve vyhledávačích a internetových adresářích pro vyhledání těchto stránek. -(#PROG# podporuje #SearchEnginesArray# nejpopulárnějších vyhledávačů a adresářů, jako Yahoo, Altavista, Lycos, Google, Voila a další.)
    -Všimněte si, že celkový počet vyhledání všech výrazů může být vyšší než součet vyhledání slovních spojení, neboť každé víceslovné vyhledávání je započítáno právě jednou do slovních spojení, ale vícenásobně do výrazů (jednou pro každé obsažené slovo). -
    -
    -Roboty jsou automatizovaní počítačoví návštěvníci používaní pro skenování a indexování obsahu World Wide Webu a pro kontrolu, zda jsou jednotlivé stránky stále dostupné.
    -#PROG# dokáže rozpoznat #RobotArray# robotů. -
    -
    -Všechny časové statistiky vycházejí z času na serveru. -
    -
    -Zde zobrazené údaje jsou průměrné hodnoty (počítané ze všech návštěv ve sledovaném období). -
    -
    -Zde zobrazené údaje jsou celkové součty (počítané ze všech návštěv ve sledovaném období). -
    -
    -Některé délky návštěv jsou uvedeny jako „neznámé“, neboť je nelze vždy přesně určit. Hlavními důvody k tomu jsou:
    -• Návštěva nebyla dokončena v okamžiku, kdy probíhala aktualizace statistik. (Délka bude doplněna při následné aktualizaci.)
    -• Návštěva začala v poslední hodině (po 23:00) posledního dne v měsíci. (Z technických důvodů #PROG# nedokáže určit délku takovýchto návštěv.) -
    -
    -Červy jsou počítačové programy napadající počítače na síti, které pak dále využívají pro své další šíření. Ve většině případů se červy snaží využít chyb -v neaktualizovaných komerčních aplikacích. Pokud váš systém není mezi zranitelnými cíly červu, můžete takovou zátěž jednoduše ignorovat.
    -Existuje jen velice málo internetových červů; přesto ale bývají ve své době velice rozšíření. -#PROG# umí rozlišit stopy #WormsArray# známých červů (Nimda, Code Red aj.). -
    - -
    Požadavek byl splněn a nový objekt byl vytvořen.
    -
    Požadavek byl přijat, ale bude zpracován později.
    -
    Server úspěšně zpracoval požadavek, nicméně nebylo třeba vrátit žádný obsah.
    -
    Server na přání klienta vrátil pouze část obsahu.
    -
    Požadovaný dokument byl trvale přemístěn na jiné URI.
    -
    Požadovaný dokument byl dočasně přemístěn na jiné URI.
    -
    Požadavek je syntakticky chybný.
    -
    Neúspěšná autentikace pro URL vyžadující jméno a heslo.
    Vysoký počet těchto chyb značí, že se někdo opakovaně pokoušel uhodnout správné jméno a heslo.
    -
    Požadavek na URL, které nelze zobrazit (např. v URL v rámci adresáře, jehož obsah není určen k prohlížení).
    -
    Požadavek na neexistující URL. Tato chyba zpravidla značí, že se někde vyskytuje neplatný odkaz, anebo uživatel špatně napsal požadované URL.
    -
    Klient neodeslal svůj požadavek serveru ve stanoveném čase (chyba klienta, přetíženého serveru, anebo pomalého CGI skriptu).
    -
    Vnitřní chyba serveru (často způsobena chybným zpracováním skriptu).
    -
    Server nepodporuje funkce potřebné k vyřízení požadavku.
    -
    Chyba vracená serverem HTTP, který funguje jako brána nebo proxy, když cílový server vrací chybovou odpověď na klientův požadavek.
    -
    Služba je momentálně nedostupná z důvodu přetížení, či probíhající údržby serveru.
    -
    Chyba vracená serverem HTTP, který funguje jako brána nebo proxy, když cílový server neodpoví ve stanoveném časovém limitu.
    -
    Nepodporovaná verze protokolu HTTP.
    +tt1=Za novou návštěvu se považuje každý přístup návštěvníka, který nebyl připojen na serveru v průběhu předchozích #VisitTimeOut# minut. + +tt2=Počet počítačů (IP adres), které se připojily na server (a stáhly alespoň jednu stránku).
    To zhruba odpovídá počtu různých osob, které navštívily stránky. + +tt3=Celkový počet zhlédnutí jednotlivých stránek (součet za všechny návštěvy všech návštěvníků).
    Toto číslo se liší od „hitů“ tím, že sem jsou započítávány pouze stažení HTML stránek, a nikoli obrázků a jiných souborů. + +tt4=Celkový počet zhlédnutí nebo stažení jednotlivých stránek, obrázků, či souborů.
    Tento údaj je udáván spíše pro zajímavost, neboť počet zhlédnutých „stránek“ má obecně větší vypovídací hodnotu pro marketingové účely. + +tt5=Celkový objem dat přenesených při návštěvách vašich stránek.
    Tento údaj zahrnuje jak zobrazené stránky, tak stažené obrázky a soubory. + +tt13=#PROG# umí rozpoznat přístupy na server z #SearchEnginesArray# nejznámějších internetových vyhledávačů a adresářů (např. Yahoo, Altavista, Lycos, Google, Voila). + +tt14=Seznam externích stránek obsahujících odkazy na vaše stránky, přes které přišli někteří návštěvníci. (Zobrazuje se pouze #MaxNbOfRefererShown# nejčastěji použitých).Odkazy z internetových vyhledávačů jsou uvedeny v samostatné tabulce, a proto zde nejsou zahrnuty. + +tt15=Tato tabulka obsahuje nejčastější výrazy a slovní spojení použité ve vyhledávačích a internetových adresářích pro vyhledání těchto stránek. (#PROG# podporuje #SearchEnginesArray# nejpopulárnějších vyhledávačů a adresářů, jako Yahoo, Altavista, Lycos, Google, Voila a další.)
    Všimněte si, že celkový počet vyhledání všech výrazů může být vyšší než součet vyhledání slovních spojení, neboť každé víceslovné vyhledávání je započítáno právě jednou do slovních spojení, ale vícenásobně do výrazů (jednou pro každé obsažené slovo). + +tt16=Roboty jsou automatizovaní počítačoví návštěvníci používaní pro skenování a indexování obsahu World Wide Webu a pro kontrolu, zda jsou jednotlivé stránky stále dostupné.
    #PROG# dokáže rozpoznat #RobotArray# robotů. + +tt17=Všechny časové statistiky vycházejí z času na serveru. + +tt18=Zde zobrazené údaje jsou průměrné hodnoty (počítané ze všech návštěv ve sledovaném období). + +tt19=Zde zobrazené údaje jsou celkové součty (počítané ze všech návštěv ve sledovaném období). + +tt20=Některé délky návštěv jsou uvedeny jako „neznámé“, neboť je nelze vždy přesně určit. Hlavními důvody k tomu jsou:
    • Návštěva nebyla dokončena v okamžiku, kdy probíhala aktualizace statistik. (Délka bude doplněna při následné aktualizaci.)
    • Návštěva začala v poslední hodině (po 23:00) posledního dne v měsíci. (Z technických důvodů #PROG# nedokáže určit délku takovýchto návštěv.) + +tt21=Červy jsou počítačové programy napadající počítače na síti, které pak dále využívají pro své další šíření. Ve většině případů se červy snaží využít chyb v neaktualizovaných komerčních aplikacích. Pokud váš systém není mezi zranitelnými cíly červu, můžete takovou zátěž jednoduše ignorovat.
    Existuje jen velice málo internetových červů; přesto ale bývají ve své době velice rozšíření. #PROG# umí rozlišit stopy #WormsArray# známých červů (Nimda, Code Red aj.). + +tt201=Požadavek byl splněn a nový objekt byl vytvořen. + +tt202=Požadavek byl přijat, ale bude zpracován později. + +tt204=Server úspěšně zpracoval požadavek, nicméně nebylo třeba vrátit žádný obsah. + +tt206=Server na přání klienta vrátil pouze část obsahu. + +tt301=Požadovaný dokument byl trvale přemístěn na jiné URI. + +tt302=Požadovaný dokument byl dočasně přemístěn na jiné URI. + +tt400=Požadavek je syntakticky chybný. + +tt401=Neúspěšná autentikace pro URL vyžadující jméno a heslo.
    Vysoký počet těchto chyb značí, že se někdo opakovaně pokoušel uhodnout správné jméno a heslo. + +tt403=Požadavek na URL, které nelze zobrazit (např. v URL v rámci adresáře, jehož obsah není určen k prohlížení). + +tt404=Požadavek na neexistující URL. Tato chyba zpravidla značí, že se někde vyskytuje neplatný odkaz, anebo uživatel špatně napsal požadované URL. + +tt408=Klient neodeslal svůj požadavek serveru ve stanoveném čase (chyba klienta, přetíženého serveru, anebo pomalého CGI skriptu). + +tt500=Vnitřní chyba serveru (často způsobena chybným zpracováním skriptu). + +tt501=Server nepodporuje funkce potřebné k vyřízení požadavku. + +tt502=Chyba vracená serverem HTTP, který funguje jako brána nebo proxy, když cílový server vrací chybovou odpověď na klientův požadavek. + +tt503=Služba je momentálně nedostupná z důvodu přetížení, či probíhající údržby serveru. + +tt504=Chyba vracená serverem HTTP, který funguje jako brána nebo proxy, když cílový server neodpoví ve stanoveném časovém limitu. + +tt505=Nepodporovaná verze protokolu HTTP. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-de.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-de.txt index 8b363eb17..0f566b9ac 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-de.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-de.txt @@ -1,62 +1,58 @@ -
    -Ein neuer Besucher wird definiert als jeder neue Besucher, der eine Seite abgerufen hat und der auf Ihre Web Site in den letzten #VisitTimeOut# min. nicht zugegriffen hat. -
    -
    -Anzahl der Rechner (IP-Adressen), die Ihre Web Site besuchten und mindestens eine Seite aufgerufen haben.
    -Diese Anzahl entspricht der Zahl an unterschiedlichen physikalischen Personen, die Ihre Web Site an irgendeinem Tag besuchten. -
    -
    -Anzahl der insgesamt angezeigten Seiten Ihrer Web Site (Summe aller Zugriffe von allen Besuchern).
    -Diese Zahl unterscheidet sich von den "Zugriffen", da nur HTML Seiten und keine Grafiken oder andere Dateien gezählt werden. -
    -
    -Anzahl der insgesamt angezeigten oder heruntergeladenen Seiten, Grafiken, Dateien Ihrer Web Site.
    -Diese Zahl wird nur als Referenz angegeben, da meistens die Anzahl der angezeigten "Seiten" für Marketingzwecke bevorzugt wird. -
    -
    -Dieser Wert entspricht der Menge an Daten, die aufgrund aller Seiten, Grafiken und Dateien Ihrer Web Site übertragen worden sind.
    -Einheiten sind in Kb, Mb oder Gb (KiloBytes, MegaBytes oder GigaBytes) -
    -
    -#PROG# erkennt jeden Zugriff auf Ihre Web Site aufgrund einer Suche von einer der #SearchEnginesArray# beliebtesten Internet-Suchmaschinen und -Verzeichnisse (wie z.B. Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Eine Liste aller externen Seiten, von denen ein Verweis auf Ihre Web Site erfolgte (nur die #MaxNbOfRefererShown# am häufigsten aufgetretenen externen Seiten werden angezeigt). -Verweise aufgrund eines Suchergebnisses einer Suchmaschine werden hier nicht aufgeführt, da diese bereits in der vorherigen Tabellenzeile angegeben worden sind. -
    -
    -Diese Tabelle zeigt die Liste der am häufigsten verwendeten Schlüsselwörter, um Ihre Web Site mit einer Internet-Suchmaschine bzw. -Verzeichnis zu finden. -(#PROG# erkennt die Schlüsselwörter der #SearchEnginesArray# beliebtesten Internet-Suchmaschinen und -Verzeichnisse, wie z.B. Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Robots (manchmal auch als Spider bezeichnet) sind automatische Computerbesucher, die von vielen Suchmaschinen eingesetzt werden, um Ihre Web Seite aufzunehmen und auszuwerten.
    -#PROG# ist in der Lage, bis zu #RobotArray# Robots zu erkennen. -
    -
    -Alle zeitbezogenen Statistiken basieren auf der Serverzeit. -
    -
    -Die angezeigten Werte sind Durchschnittswerte (berechnet aus allen Werten zwischen dem ersten und letzten Besuch). -
    -
    -Die angezeigten Werte sind Summenwerte (berechnet aus allen Werten zwischen dem ersten und letzten Besuch). -
    - -
    Für diesen Fehler liegt keine Beschreibung vor.
    -
    Die Anfrage wurde vom Server akzeptiert, aber sie wird erst später verarbeitet.
    -
    Der Server hat die Anfrage verarbeitet, aber es wurde kein Ergebnis übertragen.
    -
    Unvollständiger Inhalt.
    -
    Das angeforderte Dokument wurde verschoben und ist nun unter der angegebenen Adresse erreichbar.
    -
    Die angeforderten Daten wurden vorübergehend zu einem anderen URI verschoben.
    -
    Syntaxfehler, der Server kann die Anfrage nicht verarbeiten.
    -
    Es wurde versucht, auf eine URL zuzugreifen, für die eine Authentifizierung notwendig war.
    Eine hohe Anzahl kann darauf hindeuten, daß jemand (z.B. ein Hacker) vesucht, sich unerlaubten Zugang zu Ihrer Web Site zu verschaffen, indem er z.B. verschiedene Login/Passwort Kombinationen durchprobiert.
    -
    Es wurde versucht, auf eine unerreichbare URL zuzugreifen, für die selbst eine Authentifizierung nicht ausreicht
    (z.B. eine URL innerhalb eines für Browserzugriffe gesperrten Verzeichnisses).
    -
    Es wurde versucht, auf eine ungültige URL zuzugreifen. Dieser Fehler bedeutet meistens, daß es einen
    ungültigen Link irgendwo in Ihrer Web Site gibt oder daß ein Besucher einen Schreibfehler bei einer URL gemacht hat.
    -
    Der Server benötigte zu viel Zeit, um auf eine Anfrage zu reagieren. Dieser Fehler bezieht sich meistens auf ein
    langsam arbeitendes CGI-Skript, welches durch den Server vorzeitig abgebrochen werden mußte, oder einen überlasteten Web Server.
    -
    Interner Fehler. Dieser Fehler wird meist durch ein CGI-Skript verursacht, das z.B. durch einen Programmfehler unerwarteterweise beendet worden ist.
    -
    Unbekannte Art der Anfrage.
    -
    Dieser Fehler wird von einem HTTP-Server gemeldet, der als ein Proxy oder Gateway fungiert, wenn der eigentliche Zielserver auf
    die Anfrage nicht erfolgreich geantwortet hat.
    -
    Interner Serverfehler.
    -
    Gateway Zeitüberschreitung.
    -
    HTTP-Version wird nicht unterstützt.
    \ No newline at end of file +tt1=Ein neuer Besucher wird definiert als jeder neue Besucher, der eine Seite abgerufen hat und der auf Ihre Web Site in den letzten #VisitTimeOut# min. nicht zugegriffen hat. + +tt2=Anzahl der Rechner (IP-Adressen), die Ihre Web Site besuchten und mindestens eine Seite aufgerufen haben.
    Diese Anzahl entspricht der Zahl an unterschiedlichen physikalischen Personen, die Ihre Web Site an irgendeinem Tag besuchten. + +tt3=Anzahl der insgesamt angezeigten Seiten Ihrer Web Site (Summe aller Zugriffe von allen Besuchern).
    Diese Zahl unterscheidet sich von den "Zugriffen", da nur HTML Seiten und keine Grafiken oder andere Dateien gezählt werden. + +tt4=Anzahl der insgesamt angezeigten oder heruntergeladenen Seiten, Grafiken, Dateien Ihrer Web Site.
    Diese Zahl wird nur als Referenz angegeben, da meistens die Anzahl der angezeigten "Seiten" für Marketingzwecke bevorzugt wird. + +tt5=Dieser Wert entspricht der Menge an Daten, die aufgrund aller Seiten, Grafiken und Dateien Ihrer Web Site übertragen worden sind.
    Einheiten sind in Kb, Mb oder Gb (KiloBytes, MegaBytes oder GigaBytes) + +tt13=#PROG# erkennt jeden Zugriff auf Ihre Web Site aufgrund einer Suche von einer der #SearchEnginesArray# beliebtesten Internet-Suchmaschinen und -Verzeichnisse (wie z.B. Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=Eine Liste aller externen Seiten, von denen ein Verweis auf Ihre Web Site erfolgte (nur die #MaxNbOfRefererShown# am häufigsten aufgetretenen externen Seiten werden angezeigt). Verweise aufgrund eines Suchergebnisses einer Suchmaschine werden hier nicht aufgeführt, da diese bereits in der vorherigen Tabellenzeile angegeben worden sind. + +tt15=Diese Tabelle zeigt die Liste der am häufigsten verwendeten Schlüsselwörter, um Ihre Web Site mit einer Internet-Suchmaschine bzw. -Verzeichnis zu finden. (#PROG# erkennt die Schlüsselwörter der #SearchEnginesArray# beliebtesten Internet-Suchmaschinen und -Verzeichnisse, wie z.B. Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt16=Robots (manchmal auch als Spider bezeichnet) sind automatische Computerbesucher, die von vielen Suchmaschinen eingesetzt werden, um Ihre Web Seite aufzunehmen und auszuwerten.
    #PROG# ist in der Lage, bis zu #RobotArray# Robots zu erkennen. + +tt17=Alle zeitbezogenen Statistiken basieren auf der Serverzeit. + +tt18=Die angezeigten Werte sind Durchschnittswerte (berechnet aus allen Werten zwischen dem ersten und letzten Besuch). + +tt19=Die angezeigten Werte sind Summenwerte (berechnet aus allen Werten zwischen dem ersten und letzten Besuch). + +tt201=Für diesen Fehler liegt keine Beschreibung vor. + +tt202=Die Anfrage wurde vom Server akzeptiert, aber sie wird erst später verarbeitet. + +tt204=Der Server hat die Anfrage verarbeitet, aber es wurde kein Ergebnis übertragen. + +tt206=Unvollständiger Inhalt. + +tt301=Das angeforderte Dokument wurde verschoben und ist nun unter der angegebenen Adresse erreichbar. + +tt302=Die angeforderten Daten wurden vorübergehend zu einem anderen URI verschoben. + +tt400=Syntaxfehler, der Server kann die Anfrage nicht verarbeiten. + +tt401=Es wurde versucht, auf eine URL zuzugreifen, für die eine Authentifizierung notwendig war.
    Eine hohe Anzahl kann darauf hindeuten, daß jemand (z.B. ein Hacker) vesucht, sich unerlaubten Zugang zu Ihrer Web Site zu verschaffen, indem er z.B. verschiedene Login/Passwort Kombinationen durchprobiert. + +tt403=Es wurde versucht, auf eine unerreichbare URL zuzugreifen, für die selbst eine Authentifizierung nicht ausreicht
    (z.B. eine URL innerhalb eines für Browserzugriffe gesperrten Verzeichnisses). + +tt404=Es wurde versucht, auf eine ungültige URL zuzugreifen. Dieser Fehler bedeutet meistens, daß es einen
    ungültigen Link irgendwo in Ihrer Web Site gibt oder daß ein Besucher einen Schreibfehler bei einer URL gemacht hat. + +tt408=Der Server benötigte zu viel Zeit, um auf eine Anfrage zu reagieren. Dieser Fehler bezieht sich meistens auf ein
    langsam arbeitendes CGI-Skript, welches durch den Server vorzeitig abgebrochen werden mußte, oder einen überlasteten Web Server. + +tt500=Interner Fehler. Dieser Fehler wird meist durch ein CGI-Skript verursacht, das z.B. durch einen Programmfehler unerwarteterweise beendet worden ist. + +tt501=Unbekannte Art der Anfrage. + +tt502=Dieser Fehler wird von einem HTTP-Server gemeldet, der als ein Proxy oder Gateway fungiert, wenn der eigentliche Zielserver auf
    die Anfrage nicht erfolgreich geantwortet hat. + +tt503=Interner Serverfehler. + +tt504=Gateway Zeitüberschreitung. + +tt505=HTTP-Version wird nicht unterstützt. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-dk.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-dk.txt index a389b89c1..ec886a3f8 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-dk.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-dk.txt @@ -1,75 +1,64 @@ -
    -Et nyt besøg defineres som hver ny indkommende besøger, der ser eller browser en side, og ikke har været inde på hjemmesiden i #VisitTimeOut# minutter. -
    -
    -Antal besøgende (IP-adresser), som har besøgt hjemmesiden (og som har fået vist mindst en side).
    -Dette refererer til antallet af forskellige, fysiske personer, der har fået vist siden. -
    -
    -Antal gange en side på hjemmesiden har været vist. (Summen af alle sider for alle besøgende).
    -Sider adskiller sig fra hits, idet det kun er html-sider, men ikke billeder eller andre filer, der tæller. -
    -
    -Antal gange en side, fil eller et billede på hjemmesiden er blevet vist eller hentet af nogen.
    -Hits er kun med som reference, idet det oftest er Sider eller Besøg (eller Unikke besøg), man reelt ønsker statistik for. -
    -
    -Dette er mængden af data hentet (sider, billeder og filer) fra hjemmesiden.
    -Enhederne er KB, MB eller GB (KiloBytes, MegaBytes eller GigaBytes) -
    -
    -#PROG# kan se, hvis en besøgende har fundet hjemmesiden gennem en søgning fra en af de #SearchEnginesArray# mest brugte Internet søgemaskiner eller kataloger (så som Google, Yahoo, Altavista, Lycos, Voila etc.). -
    -
    -En liste med alle eksterne sider, der linker til (og er blevet brugt til at komme ind på) din hjemmeside (kun de #MaxNbOfRefererShown# mest anvendte eksterne sider vises).
    -Links fra søgemaskiner er ikke medregnet, da de er medtaget for sig selv i en separat tabel. -
    -
    -Denne tabel viser de mest benyttede søgesætninger og søgeord, som anvendes for at finde din hjemmeside gennem søgemaskiner og kataloger. -(søgeord fra de #SearchEnginesArray# mest populære søgemaskiner og kataloger genkendes af #PROG#, så som Google, Yahoo, Altavista, Lycos, Voila etc.).
    -Bemærk at det samlede antal søgninger ud fra søgeord kan være større end det samlede antal søgninger ud fra søgesætninger (det reelle antal søgninger), da to søgeord brugt i samme søgning tæller to gange (en gang for hvert ord). -
    -
    -Robotter (også kaldet Spiders) er automatiske computerbesøgende, som anvendes af mange søgemaskiner. De scanner hjemmesider for at indeksere og rangordne dem, samle statistik om hjemmesider og/eller se om din hjemmeside eksisterer endnu.
    -#PROG# genkender op til #RobotArray# søgerobotter. -
    -
    -Al tidsrelateret statistik baseres på servertiden (OBS: ved IIS-servere er klokkeslætsangivelser normalt altid baseret på UTC-tid). -
    -
    -Her vises gennemsnit (beregnet ud fra alle data mellem første og sidste besøg i det analyserede udsnit). -
    -
    -Her vises sammenlagte summer (beregnet ud fra alle data mellem første og sidste besøg i det analyserede udsnit). -
    -
    -Besøgenes længde er undertiden 'ukendt', fordi de ikke altid kan beregnes. Følgende er hovedårsagerne til dette:
    -- Besøget var ikke afsluttet, da 'opdateringen' fandt sted.
    -- Besøget startede den sidste time (efter kl. 23:00) på den sidste dag i måneden (En teknisk årsag forhindrer #PROG# i at beregne varigheden af sådanne besøg). -
    -
    -Orme er automatiske computerbesøgende, der i virkeligheden består af eksterne servere, der er inficeret med en virus, som forsøger at lave et specifikt hit på din server for at inficere den også. -I de fleste tilfælde udnytter sådanne orme huller i kommercielle eller ikke-opdaterede servere. Hvis dit system ikke er defineret som et sårbart system i forhold til ormen, kan du normalt bare ignorere disse hits.
    -Der er kun meget få 'server orme' i verden, men de er meget aktive til tider. -#PROG# er i stand til at genkende #WormsArray# kendte orme-signaturer (Nimda, Code Red osv.). -
    - -
    Ingen beskrivelse af denne fejl.
    -
    Serveren forstod forespørgslen, som udføres senere.
    -
    Serveren har udført forespørgslen, men der er ikke noget dokument at sende.
    -
    Partielt indhold.
    -
    Sider er flyttet og den nye URL er givet i svaret.
    -
    Ingen beskrivelse af denne fejl.
    -
    Syntaksfejl, serveren forstod ikke forespørgslen.
    -
    Der er blevet forespurgt en URL hvor brugernavn/kode var krævet.
    Et højt antal her kan betyde, at nogen (måske en hacker) forsøger at komme ind på dit site (f.eks. ved at prøve forskellige kombinationer af brugernavne/koder).
    -
    Der er blevet forespurgt en URL der er opsat ikke tilgængelig, selv med et korrekt brugernavn/kode (for eksempel en URL i et bibliotek, der er defineret som ikke 'browsable'.).
    -
    Der er blevet forespurgt en ikke eksisterende URL. Denne fejl skyldes ofte, at der er en forkert link på hjemmesiden, eller at en besøgende har tastet en forkert URL.
    -
    Serveren har taget for lang tid om at besvare forespørgslen. Dette skyldes ofte et langsomt cgi-script, eller at serveren er overbelastet.
    -
    Intern fejl. Dette skyldes ofte, at et cgi-script er afsluttet unormalt (med coredump f.eks.).
    -
    Ukendt forespørgsel.
    -
    Kode returneret af en HTTP server, der fungerer som proxy eller gateway, når den rigtige destinationsserver ikke svarer rigtigt på en klientforespørgsel.
    -
    Intern serverfejl.
    -
    Gateway timeout
    -
    HTTP-version understøttes ikke.
    +tt1=Et nyt besøg defineres som hver ny indkommende besøger, der ser eller browser en side, og ikke har været inde på hjemmesiden i #VisitTimeOut# minutter. + +tt2=Antal besøgende (IP-adresser), som har besøgt hjemmesiden (og som har fået vist mindst en side).
    Dette refererer til antallet af forskellige, fysiske personer, der har fået vist siden. + +tt3=Antal gange en side på hjemmesiden har været vist. (Summen af alle sider for alle besøgende).
    Sider adskiller sig fra hits, idet det kun er html-sider, men ikke billeder eller andre filer, der tæller. + +tt4=Antal gange en side, fil eller et billede på hjemmesiden er blevet vist eller hentet af nogen.
    Hits er kun med som reference, idet det oftest er Sider eller Besøg (eller Unikke besøg), man reelt ønsker statistik for. + +tt5=Dette er mængden af data hentet (sider, billeder og filer) fra hjemmesiden.
    Enhederne er KB, MB eller GB (KiloBytes, MegaBytes eller GigaBytes) + +tt13=#PROG# kan se, hvis en besøgende har fundet hjemmesiden gennem en søgning fra en af de #SearchEnginesArray# mest brugte Internet søgemaskiner eller kataloger (så som Google, Yahoo, Altavista, Lycos, Voila etc.). + +tt14=En liste med alle eksterne sider, der linker til (og er blevet brugt til at komme ind på) din hjemmeside (kun de #MaxNbOfRefererShown# mest anvendte eksterne sider vises).
    Links fra søgemaskiner er ikke medregnet, da de er medtaget for sig selv i en separat tabel. + +tt15=Denne tabel viser de mest benyttede søgesætninger og søgeord, som anvendes for at finde din hjemmeside gennem søgemaskiner og kataloger. +(søgeord fra de #SearchEnginesArray# mest populære søgemaskiner og kataloger genkendes af #PROG#, så som Google, Yahoo, Altavista, Lycos, Voila etc.).
    Bemærk at det samlede antal søgninger ud fra søgeord kan være større end det samlede antal søgninger ud fra søgesætninger (det reelle antal søgninger), da to søgeord brugt i samme søgning tæller to gange (en gang for hvert ord). + +tt16=Robotter (også kaldet Spiders) er automatiske computerbesøgende, som anvendes af mange søgemaskiner. De scanner hjemmesider for at indeksere og rangordne dem, samle statistik om hjemmesider og/eller se om din hjemmeside eksisterer endnu.
    #PROG# genkender op til #RobotArray# søgerobotter. + +tt17=Al tidsrelateret statistik baseres på servertiden (OBS: ved IIS-servere er klokkeslætsangivelser normalt altid baseret på UTC-tid). + +tt18=Her vises gennemsnit (beregnet ud fra alle data mellem første og sidste besøg i det analyserede udsnit). + +tt19=Her vises sammenlagte summer (beregnet ud fra alle data mellem første og sidste besøg i det analyserede udsnit). + +tt20=Besøgenes længde er undertiden 'ukendt', fordi de ikke altid kan beregnes. Følgende er hovedårsagerne til dette:
    - Besøget var ikke afsluttet, da 'opdateringen' fandt sted.
    - Besøget startede den sidste time (efter kl. 23:00) på den sidste dag i måneden (En teknisk årsag forhindrer #PROG# i at beregne varigheden af sådanne besøg). + +tt21=Orme er automatiske computerbesøgende, der i virkeligheden består af eksterne servere, der er inficeret med en virus, som forsøger at lave et specifikt hit på din server for at inficere den også. I de fleste tilfælde udnytter sådanne orme huller i kommercielle eller ikke-opdaterede servere. Hvis dit system ikke er defineret som et sårbart system i forhold til ormen, kan du normalt bare ignorere disse hits.
    Der er kun meget få 'server orme' i verden, men de er meget aktive til tider. #PROG# er i stand til at genkende #WormsArray# kendte orme-signaturer (Nimda, Code Red osv.). + +tt201=Ingen beskrivelse af denne fejl. + +tt202=Serveren forstod forespørgslen, som udføres senere. + +tt204=Serveren har udført forespørgslen, men der er ikke noget dokument at sende. + +tt206=Partielt indhold. + +tt301=Sider er flyttet og den nye URL er givet i svaret. + +tt302=Ingen beskrivelse af denne fejl. + +tt400=Syntaksfejl, serveren forstod ikke forespørgslen. + +tt401=Der er blevet forespurgt en URL hvor brugernavn/kode var krævet.
    Et højt antal her kan betyde, at nogen (måske en hacker) forsøger at komme ind på dit site (f.eks. ved at prøve forskellige kombinationer af brugernavne/koder). + +tt403=Der er blevet forespurgt en URL der er opsat ikke tilgængelig, selv med et korrekt brugernavn/kode (for eksempel en URL i et bibliotek, der er defineret som ikke 'browsable'.). + +tt404=Der er blevet forespurgt en ikke eksisterende URL. Denne fejl skyldes ofte, at der er en forkert link på hjemmesiden, eller at en besøgende har tastet en forkert URL. + +tt408=Serveren har taget for lang tid om at besvare forespørgslen. Dette skyldes ofte et langsomt cgi-script, eller at serveren er overbelastet. + +tt500=Intern fejl. Dette skyldes ofte, at et cgi-script er afsluttet unormalt (med coredump f.eks.). + +tt501=Ukendt forespørgsel. + +tt502=Kode returneret af en HTTP server, der fungerer som proxy eller gateway, når den rigtige destinationsserver ikke svarer rigtigt på en klientforespørgsel. + +tt503=Intern serverfejl. + +tt504=Gateway timeout + +tt505=HTTP-version understøttes ikke. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-en.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-en.txt index 9d6c933d3..c618c22be 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-en.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-en.txt @@ -1,76 +1,64 @@ -
    -A new visits is defined as each new incoming visitor (viewing or browsing a page) who was not connected to your site during last #VisitTimeOut# mn. -
    -
    -Number of client hosts (IP address) who came to visit the site (and who viewed at least one page).
    -This data refers to the number of different physical persons who had reached the site. -
    -
    -Number of times a page of the site is viewed (Sum for all visitors for all visits).
    -This piece of data differs from "hits" in that it counts only HTML pages as oppose to images and other files. -
    -
    -Number of times a page, image, file of the site is viewed or downloaded by someone.
    -This piece of data is provided as a reference only, since the number of "pages" viewed is often prefered for marketing purposes. -
    -
    -This piece of information refers to the amount of data downloaded by all pages, images and files within your site.
    -Units are in KB, MB or GB (KiloBytes, MegaBytes or GigaBytes) -
    -
    -#PROG# recognizes each access to your site after a search from the #SearchEnginesArray# most popular Internet Search Engines and Directories (such as Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -List of all external pages which were used to link (and enter) to your site (Only the #MaxNbOfRefererShown# most often used external pages are shown). -Links used by the results of the search engines are excluded here because they have already been included on the previous line within this table. -
    -
    -This table shows the list of the most frequent keyphrases or keywords used to find your site from Internet Search Engines and Directories. -(Keywords from the #SearchEnginesArray# most popular Search Engines and Directories are recognized by #PROG#, such as Yahoo, Altavista, Lycos, Google, Voila, etc...).
    -Note that total number of searches for keywords might be greater than total number of searches for keyphrases (real number of searches) because when 2 keywords were used on same search, search is counted twice for keywords (once for each word). -
    -
    -Robots (sometimes refer to Spiders) are automatic computer visitors used by many search engines that scan your web site to index it and rank it, collect statistics on Internet Web sites and/or see if your site is still online.
    -#PROG# is able to recognize up to #RobotArray# robots. -
    -
    -All time related statistics are based on server time. -
    -
    -Here, reported data are: average values (calculated from all data between the first and last visit in analyzed range). -
    -
    -Here, reported data are: cumulative sums (calculated from all data between the first and last visit in analyzed range). -
    -
    -Some Visits durations are 'unknown' because they can't always be calculated. This is the major reason for this:
    -- Visit was not finished when 'update' occured.
    -- Visit started the last hour (after 23:00) of the last day of a month (A technical reason prevents #PROG# from calculating duration of such sessions) -
    -
    -Worms are automatic computer visitors that are in fact external servers, infected by a virus, that try -to make particular hits on your server to infect it. In most cases, such worms exploit some bugs of not up to date -or commercial servers. If your system is not the sensitive target of the worm, you can simply ignore those hits.
    -There is very few 'server worms' in the world but they are very active at some times. -#PROG# is able to recognize #WormsArray# known worm's signatures (nimda,code red,...). -
    - -
    No description for this error.
    -
    Request was understood by server but will be processed later.
    -
    Server has processed the request but there is no document to send.
    -
    Partial content.
    -
    Requested document was moved and is now at another address given in answer.
    -
    No description for this error.
    -
    Syntax error, server didn't understand request.
    -
    Tried to reach an URL where a login/password pair was required.
    A high number within this item could mean that someone (such as a hacker) is attempting to crack, or enter into your site (hoping to enter a secured area by trying different login/password pairs, for instance).
    -
    Tried to reach an URL not configured to be reachable, even with an login/password pair (for example, an URL within a directory not defined as "browsable".).
    -
    Tried to reach a non existing URL. This error often means that there is an invalid link somewhere in your site or that a visitor mistyped a certain URL.
    -
    Server has taken too much time to respond to a request. This error frequently involves either a slow CGI script which the server was required to kill or an extremely congested web server.
    -
    Internal error. This error is often caused by a CGI program that had finished abnormally (coredump for example).
    -
    Unknown requested action.
    -
    Code returned by a HTTP server that works as a proxy or gateway when a real, targeted server doesn't answer successfully to the client's request.
    -
    Internal server error.
    -
    Gateway Time-out.
    -
    HTTP Version Not Supported.
    +tt1=A new visits is defined as each new incoming visitor (viewing or browsing a page) who was not connected to your site during last #VisitTimeOut# mn. + +tt2=Number of client hosts (IP address) who came to visit the site (and who viewed at least one page).
    This data refers to the number of different physical persons who had reached the site. + +tt3=Number of times a page of the site is viewed (Sum for all visitors for all visits).
    This piece of data differs from "hits" in that it counts only HTML pages as oppose to images and other files. + +tt4=Number of times a page, image, file of the site is viewed or downloaded by someone.
    This piece of data is provided as a reference only, since the number of "pages" viewed is often prefered for marketing purposes. + +tt5=This piece of information refers to the amount of data downloaded by all pages, images and files within your site.
    Units are in KB, MB or GB (KiloBytes, MegaBytes or GigaBytes) + +tt13=#PROG# recognizes each access to your site after a search from the #SearchEnginesArray# most popular Internet Search Engines and Directories (such as Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=List of all external pages which were used to link (and enter) to your site (Only the #MaxNbOfRefererShown# most often used external pages are shown). Links used by the results of the search engines are excluded here because they have already been included on the previous line within this table. + +tt15=This table shows the list of the most frequent keyphrases or keywords used to find your site from Internet Search Engines and Directories. +(Keywords from the #SearchEnginesArray# most popular Search Engines and Directories are recognized by #PROG#, such as Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Note that total number of searches for keywords might be greater than total number of searches for keyphrases (real number of searches) because when 2 keywords were used on same search, search is counted twice for keywords (once for each word). + +tt16=Robots (sometimes refer to Spiders) are automatic computer visitors used by many search engines that scan your web site to index it and rank it, collect statistics on Internet Web sites and/or see if your site is still online.
    #PROG# is able to recognize up to #RobotArray# robots. + +tt17=All time related statistics are based on server time. + +tt18=Here, reported data are: average values (calculated from all data between the first and last visit in analyzed range). + +tt19=Here, reported data are: cumulative sums (calculated from all data between the first and last visit in analyzed range). + +tt20=Some Visits durations are 'unknown' because they can't always be calculated. This is the major reason for this:
    - Visit was not finished when 'update' occured.
    - Visit started the last hour (after 23:00) of the last day of a month (A technical reason prevents #PROG# from calculating duration of such sessions) + +tt21=Worms are automatic computer visitors that are in fact external servers, infected by a virus, that try to make particular hits on your server to infect it. In most cases, such worms exploit some bugs of not up to date or commercial servers. If your system is not the sensitive target of the worm, you can simply ignore those hits.
    There is very few 'server worms' in the world but they are very active at some times. #PROG# is able to recognize #WormsArray# known worm's signatures (nimda,code red,...). + +tt201=No description for this error. + +tt202=Request was understood by server but will be processed later. + +tt204=Server has processed the request but there is no document to send. + +tt206=Partial content. + +tt301=Requested document was moved and is now at another address given in answer. + +tt302=No description for this error. + +tt400=Syntax error, server didn't understand request. + +tt401=Tried to reach an URL where a login/password pair was required.
    A high number within this item could mean that someone (such as a hacker) is attempting to crack, or enter into your site (hoping to enter a secured area by trying different login/password pairs, for instance). + +tt403=Tried to reach an URL not configured to be reachable, even with an login/password pair (for example, an URL within a directory not defined as "browsable".). + +tt404=Tried to reach a non existing URL. This error often means that there is an invalid link somewhere in your site or that a visitor mistyped a certain URL. + +tt408=Server has taken too much time to respond to a request. This error frequently involves either a slow CGI script which the server was required to kill or an extremely congested web server. + +tt500=Internal error. This error is often caused by a CGI program that had finished abnormally (coredump for example). + +tt501=Unknown requested action. + +tt502=Code returned by a HTTP server that works as a proxy or gateway when a real, targeted server doesn't answer successfully to the client's request. + +tt503=Internal server error. + +tt504=Gateway Time-out. + +tt505=HTTP Version Not Supported. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-es.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-es.txt index d4002b8a7..69f46b6bb 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-es.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-es.txt @@ -1,68 +1,61 @@ -
    -Se considera un nueva vista por cada nuevo visitante que consulta una página y que no haya accedido al sitio en los últimos #VisitTimeOut# mins.. -
    -
    -Número de Servidores (direcciones IP) que entran a un sitio (y que por lo menos visitan una página).
    -Esta cifra refleja el número de personas físicas diferentes que hayan accedido al sitio en un día. -
    -
    -Número de ocasiones que una página del sitio ha sido vista (La suma de todos los visitantes incluyendo múltiples visitas).
    -Este contador se distingue de "hits" porque cuenta sólo las páginas HTML y no los gráficos u otros archivos o ficheros. -
    -
    -El número de ocasiones que una página, imagen, archivo o fichero de un sitio es visto o descargado por un visitante.
    -Este contador sirve de referencia, pero el contador de "páginas" representa un dato mercadotécnico generalmente más útil y por lo tanto se recomienda. -
    -
    -El número de kilo bytes descargados por los visitantes del sitio.
    -Se refiere al volumen de datos descargados por todas las páginas, imágenes y archivos o ficheros medidos en kilo bytes. -
    -
    -El programa #PROG# es capaz de reconocer una visita a su sitio luego de cada búsqueda desde cualquiera de los #SearchEnginesArray# motores de búsqueda y directorios Internet más populares (Yahoo, Altavista, Lycos, Google, Terra, etc...). -
    -
    -Lista de páginas de sitios externos utilizadas para acceder o enlazarse con su sitio (Sólo las #MaxNbOfRefererShown# páginas más utilizadas se encuentras enumeradas). -Los enlaces utilizados por los motores de búsqueda o directorios son excluidos porque ya han sido contabilizados en el rubro anterior. -
    -
    -Esta tabla muestra la lista de las palabras clave más utilizadas en los motores de búsqueda y directorios Internet para encontrar su sitio. -(El programa #PROG# reconoce palabras clave usadas en los #SearchEnginesArray# motores de búsqueda más populares, tales como Yahoo, Altavista, Lycos, Google, Voila, Terra etc...). -
    -
    -Los Robots son visitantes automáticos que escanean o viajan por su sitio para indexarlo, o jerarquizarlo, para recopilar estadísticas de sitios Web, o para verificar si su sitio se encuentra conectado a la Red.
    -El programa #PROG# reconoce hasta #RobotArray# robots. -
    -
    -Todos los tiempos relacionados con las estadísticas están basados en tiempos de servidor. -
    -
    -Aquí, las fechas reportadas son: valores medios (calculado desde todos los datos entre las primeras y los ultimas visitas en el rango analizado) -
    -
    -Aquí, las fechas reportadas son: sumas acumulativas (calculado desde todos los datos entre las primeras y los ultimas visitas en el rango analizado) -
    -
    -Algunas Duraciones de las visitas son 'desconocidas' porque no pueden ser calculadas siempre. La razón principal de esto es:
    -- La visita no fue acabada cuando ocurrió la 'actualización'.
    -- La visita comenzó en la hora anterior (después de las 23:00) del pasado día de un mes (la razón técnica de previene a #PROG# de la duración calculada de tales sesiones) -
    - -
    Error sin descripción.
    -
    La solicitud ha sido computada pero el servidor la procesará más tarde.
    -
    El servidor ha procesado la solicitud pero no existen documentos para enviar.
    -
    Contenido parcial.
    -
    El documento solicitado ha sido reubicado y se encuentra en un URL proporcionado en la misma respuesta.
    -
    Error sin descripción.
    -
    Error de sintaxis, el servidor no ha comprendido su solicitud.
    -
    Número de intentos por acceder un URL que exige una combinación usuario/contraseña que ha sido invalida..
    Un número de intentos muy elevado pudiera sugerir la posibilidad de que un hacker (o pirata) ha intentado entrar a una zona restringida del sitio (p.e., intentando múltiples combinaciones de usuario/contraseña).
    -
    Número de intentos por acceder un URL configurado para no ser accesible, aún con una combinación usuario/contraseña (p.e., un URL previamente definido como "no navegable").
    -
    Número de intentos por acceder un URL inexistente. Frecuentemente, éstos se refieren ya sea a un enlace (link) inválido o a un error mecanográfico cuando el visitante tecleó el URL equivocado.
    -
    El servidor ha tardado demasiado tiempo para responder a una solicitud. Frecuentemente se debe ya sea a un programa CGI muy lento, el cual tuvo que ser abandonado por el servidor, o bien por un servidor sobre-saturado.
    -
    Error interno. Este error generalmente es causado por una terminación anormal o prematura de un programa CGI (p.e., un CGI corrompido o dañado).
    -
    Solicitud desconocida por el servidor.
    -
    Código retornado por un servidor de protocolo HTTP el cual funciona como proxy o puente (gateway) cuando el servidor objetivo no funciona o no interpreta adecuadamente la solicitud del cliente (o visitante).
    -
    Error interno del servidor.
    -
    Pasarela fuera de linea.
    -
    Versión de protocolo HTTP no soportada.
    +tt1=Se considera un nueva vista por cada nuevo visitante que consulta una página y que no haya accedido al sitio en los últimos #VisitTimeOut# mins.. + +tt2=Número de Servidores (direcciones IP) que entran a un sitio (y que por lo menos visitan una página).
    Esta cifra refleja el número de personas físicas diferentes que hayan accedido al sitio en un día. + +tt3=Número de ocasiones que una página del sitio ha sido vista (La suma de todos los visitantes incluyendo múltiples visitas).
    Este contador se distingue de "hits" porque cuenta sólo las páginas HTML y no los gráficos u otros archivos o ficheros. + +tt4=El número de ocasiones que una página, imagen, archivo o fichero de un sitio es visto o descargado por un visitante.
    Este contador sirve de referencia, pero el contador de "páginas" representa un dato mercadotécnico generalmente más útil y por lo tanto se recomienda. + +tt5=El número de kilo bytes descargados por los visitantes del sitio.
    Se refiere al volumen de datos descargados por todas las páginas, imágenes y archivos o ficheros medidos en kilo bytes. + +tt13=El programa #PROG# es capaz de reconocer una visita a su sitio luego de cada búsqueda desde cualquiera de los #SearchEnginesArray# motores de búsqueda y directorios Internet más populares (Yahoo, Altavista, Lycos, Google, Terra, etc...). + +tt14=Lista de páginas de sitios externos utilizadas para acceder o enlazarse con su sitio (Sólo las #MaxNbOfRefererShown# páginas más utilizadas se encuentras enumeradas). Los enlaces utilizados por los motores de búsqueda o directorios son excluidos porque ya han sido contabilizados en el rubro anterior. + +tt15=Esta tabla muestra la lista de las palabras clave más utilizadas en los motores de búsqueda y directorios Internet para encontrar su sitio. (El programa #PROG# reconoce palabras clave usadas en los #SearchEnginesArray# motores de búsqueda más populares, tales como Yahoo, Altavista, Lycos, Google, Voila, Terra etc...). + +tt16=Los Robots son visitantes automáticos que escanean o viajan por su sitio para indexarlo, o jerarquizarlo, para recopilar estadísticas de sitios Web, o para verificar si su sitio se encuentra conectado a la Red.
    El programa #PROG# reconoce hasta #RobotArray# robots. + +tt17=Todos los tiempos relacionados con las estadísticas están basados en tiempos de servidor. + +tt18=Aquí, las fechas reportadas son: valores medios (calculado desde todos los datos entre las primeras y los ultimas visitas en el rango analizado) + +tt19=Aquí, las fechas reportadas son: sumas acumulativas (calculado desde todos los datos entre las primeras y los ultimas visitas en el rango analizado) + +tt20=Algunas Duraciones de las visitas son 'desconocidas' porque no pueden ser calculadas siempre. La razón principal de esto es:
    - La visita no fue acabada cuando ocurrió la 'actualización'.
    - La visita comenzó en la hora anterior (después de las 23:00) del pasado día de un mes (la razón técnica de previene a #PROG# de la duración calculada de tales sesiones) + +tt201= Error sin descripción. + +tt202= La solicitud ha sido computada pero el servidor la procesará más tarde. + +tt204= El servidor ha procesado la solicitud pero no existen documentos para enviar. + +tt206= Contenido parcial. + +tt301= El documento solicitado ha sido reubicado y se encuentra en un URL proporcionado en la misma respuesta. + +tt302= Error sin descripción. + +tt400= Error de sintaxis, el servidor no ha comprendido su solicitud. + +tt401= Número de intentos por acceder un URL que exige una combinación usuario/contraseña que ha sido invalida..
    Un número de intentos muy elevado pudiera sugerir la posibilidad de que un hacker (o pirata) ha intentado entrar a una zona restringida del sitio (p.e., intentando múltiples combinaciones de usuario/contraseña). + +tt403= Número de intentos por acceder un URL configurado para no ser accesible, aún con una combinación usuario/contraseña (p.e., un URL previamente definido como "no navegable"). + +tt404= Número de intentos por acceder un URL inexistente. Frecuentemente, éstos se refieren ya sea a un enlace (link) inválido o a un error mecanográfico cuando el visitante tecleó el URL equivocado. + +tt408= El servidor ha tardado demasiado tiempo para responder a una solicitud. Frecuentemente se debe ya sea a un programa CGI muy lento, el cual tuvo que ser abandonado por el servidor, o bien por un servidor sobre-saturado. + +tt500= Error interno. Este error generalmente es causado por una terminación anormal o prematura de un programa CGI (p.e., un CGI corrompido o dañado). + +tt501= Solicitud desconocida por el servidor. + +tt502= Código retornado por un servidor de protocolo HTTP el cual funciona como proxy o puente (gateway) cuando el servidor objetivo no funciona o no interpreta adecuadamente la solicitud del cliente (o visitante). + +tt503= Error interno del servidor. + +tt504= Pasarela fuera de linea. + +tt505= Versión de protocolo HTTP no soportada. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fi.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fi.txt index 90839c2b0..6df523596 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fi.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fi.txt @@ -1,69 +1,61 @@ -
    -Tss uudeksi vierailuksi on laskettu sivustolle saapunut vierailija (sivuja selannut), joka ei ole ollut yhteydess sivustoon viimeisen #VisitTimeOut# minuutin aikana. -
    -
    -Asiakaskoneiden (IP-osoitteiden) mr, jotka ovat kyneet sivustoilla (ja selanneet ainakin yht sivua).
    -Tm tieto viittaa eri fyysisten henkiliden mrn, jotka ovat kyneet sivustolla. -
    -
    -Nytettyjen sivujen mr. (kaikkien vierailujen aikana nytettyjen sivujen yhteismr).
    -Tm tieto eroaa kohdasta "osumat" siin, ett mukaan lasketaan ainoastaan HTML-sivut, ei kuvia tai muita tiedostoja. -
    -
    -Nytettyjen tai ladattujen sivujen, kuvien ja tiedostojen yhteismr.
    -Tm tieto tarjotaan ainoastaan viitteeksi, koska markkinointitarkoituksissa suositaan yleens nytettyjen "sivujen" mr. -
    -
    -Tm tieto viittaa sivustoltasi sivujen, kuvien ja tiedostojen muodossa ladatun datan mrn.
    -Yksikkn Kt, Mt tai Gt (Kilotavu, Megatavu tai Gigatavu) -
    -
    -#PROG# tunnistaa #SearchEnginesArray# suosituimman hakukoneen (kuten Yahoo, Altavista, Lycos, Google, Voila, jne...) hakutulosten avulla sivustolle lytneet. -
    -
    -Luettelo ulkopuolisista sivuista, joilta lytyy linkki (jota on seurattu) sivustollesi (Nkyviss ainoastaan #MaxNbOfRefererShown# useimmin kytetty ulkopuolista sivua). -Hakukoneiden hakutuloksista lytyvi linkkej ei ole sisllytetty mukaan, koska nm nkyvt jo tmn taulukon edellisell rivill. -
    -
    -Tst taulukosta nhdn luettelo yleisimmist hakulauseista tai hakusanoista, joiden avulla sivustoillesi on lydetty Internetin hakukoneiden ja hakemistojen avulla. -(#PROG# tunnistaa hakusanat #SearchEnginesArray#:sta suosituimmasta hakukoneesta ja hakemistosta, kuten Yahoo, Altavista, Lycos, Google, Voila, jne...).
    -Huomaa, ett hakusanojen kokonaismr voi olla suurempi kuin hakulauseiden (todellinen hakujen mr), koska silloin kun kahta hakusanaa on kytetty samassa haussa, lasketaan tm hakusana-tilastossa kahdesti (jokainen hakusana erikseen). -
    -
    -Robotit (kytetn joskus mys nimityst "Spider") ovat automaattisia tietokonevierailijoita, joita useat hakukoneet kyttvt indeksoidakseen, arvostellakseen ja kertkseen tilastoa sivustoista ja/tai tutkiakseen vielk sivustot ovat saatavilla.
    -#PROG# tunnistaa jopa #RobotArray# robottia. -
    -
    -Kaikki kelloaikoihin liittyvt tilastot perustuvat palvelimen kelloon. -
    -
    -Tss kerrotut tiedot ovat: keskimrisi arvoja (laskettu kaikkien ensimmisen ja viimeisimmn vierailun vlisten tietojen perusteella) -
    -
    -Tss kerrotut tiedot ovat: kumulatiivisia summia (laskettu kaikkien ensimmisen ja viimeisimmn vierailun vlisten tietojen perusteella) -
    -
    -Jotkut Vierailujen kestot ovat 'tuntemattomia', koska niit ei aina voida laskea. Pasiallinen syy tlle on:
    -- Vierailu ei ollut loppunut 'pivityksen' tapahtuessa.
    -- Vierailu alkoi kuukauden viimeisen vuorokauden viimesen tunnin aikana (klo 23:00 jlkeen) (Tekniset syyt estvt laskutoimituksen tllaisessa tapauksessa) -
    - -
    Tlle virheelle ei ole kuvausta.
    -
    Palvelin on ymmrtnyt palvelupyynnn, mutta se ksitelln myhemmin.
    -
    Palvelin on ksitellyt pyynnn, mutta lhetettvksi ei ole mitn tietoa.
    -
    Osittainen sislt.
    -
    Pyydetty tiedosto on siirretty toiseen, vastauksessa kerrottuun osoitteeseen.
    -
    Tlle virheelle ei ole kuvausta.
    -
    Kielioppivirhe. Palvelin ei ymmrtnyt palvelupyynt.
    -
    Pyydetty URL, johon tarvitaan tunnus/salasana -kaksikko.
    Suuri mr nit virheit saattaa tarkoittaa sit, ett joku (kuten hakkeri) yritt murtautua, tai pst sivustoille (toivoen ptyvns suojatulle alueelle kokeilemalla eri tunnus/salasana -pareja, esimerkiksi).
    -
    Tried to reach an URL not configured to be reachable, even with an login/password pair (for example, an URL within a directory not defined as "browsable".).
    -
    Pyydetty URL, jota ei ole olemassa. Tm virhe tarkoittaa usein sit, ett jossakin sivustollasi on virheellinen linkki, tai ett vierailija on kirjoittanut URL:n vrin.
    -
    Server has taken too much time to respond to a request. This error frequently involves either a slow CGI script which the server was required to kill or an extremely congested web server.
    -
    Sisinen virhe. Tm virhe on usein epnormaalisti keskeytyneen CGI-ohjelman aiheuttama (tuloksena esim. coredump).
    -
    Pyydetty toiminto tuntematon.
    -
    Vlityspalvelimena tai yhdyskytvn toimivan HTTP-palvelimen palauttama koodi, kun todellinen kohteena ollut palvelin ei vastannut palvelupyyntn hyvksyttvsti.
    -
    Palvelimen sisinen virhe.
    -
    Yhdyskytvn aikaraja tyttynyt.
    -
    HTTP-versio ei tuettu.
    +tt1=Tss uudeksi vierailuksi on laskettu sivustolle saapunut vierailija (sivuja selannut), joka ei ole ollut yhteydess sivustoon viimeisen #VisitTimeOut# minuutin aikana. + +tt2=Asiakaskoneiden (IP-osoitteiden) mr, jotka ovat kyneet sivustoilla (ja selanneet ainakin yht sivua).
    Tm tieto viittaa eri fyysisten henkiliden mrn, jotka ovat kyneet sivustolla. + +tt3=Nytettyjen sivujen mr. (kaikkien vierailujen aikana nytettyjen sivujen yhteismr).
    Tm tieto eroaa kohdasta "osumat" siin, ett mukaan lasketaan ainoastaan HTML-sivut, ei kuvia tai muita tiedostoja. + +tt4=Nytettyjen tai ladattujen sivujen, kuvien ja tiedostojen yhteismr.
    Tm tieto tarjotaan ainoastaan viitteeksi, koska markkinointitarkoituksissa suositaan yleens nytettyjen "sivujen" mr. + +tt5=Tm tieto viittaa sivustoltasi sivujen, kuvien ja tiedostojen muodossa ladatun datan mrn.
    Yksikkn Kt, Mt tai Gt (Kilotavu, Megatavu tai Gigatavu) + +tt13=#PROG# tunnistaa #SearchEnginesArray# suosituimman hakukoneen (kuten Yahoo, Altavista, Lycos, Google, Voila, jne...) hakutulosten avulla sivustolle lytneet. + +tt14=Luettelo ulkopuolisista sivuista, joilta lytyy linkki (jota on seurattu) sivustollesi (Nkyviss ainoastaan #MaxNbOfRefererShown# useimmin kytetty ulkopuolista sivua). Hakukoneiden hakutuloksista lytyvi linkkej ei ole sisllytetty mukaan, koska nm nkyvt jo tmn taulukon edellisell rivill. + +tt15=Tst taulukosta nhdn luettelo yleisimmist hakulauseista tai hakusanoista, joiden avulla sivustoillesi on lydetty Internetin hakukoneiden ja hakemistojen avulla. (#PROG# tunnistaa hakusanat #SearchEnginesArray#:sta suosituimmasta hakukoneesta ja hakemistosta, kuten Yahoo, Altavista, Lycos, Google, Voila, jne...).
    Huomaa, ett hakusanojen kokonaismr voi olla suurempi kuin hakulauseiden (todellinen hakujen mr), koska silloin kun kahta hakusanaa on kytetty samassa haussa, lasketaan tm hakusana-tilastossa kahdesti (jokainen hakusana erikseen). + +tt16=Robotit (kytetn joskus mys nimityst "Spider") ovat automaattisia tietokonevierailijoita, joita useat hakukoneet kyttvt indeksoidakseen, arvostellakseen ja kertkseen tilastoa sivustoista ja/tai tutkiakseen vielk sivustot ovat saatavilla.
    #PROG# tunnistaa jopa #RobotArray# robottia. + +tt17=Kaikki kelloaikoihin liittyvt tilastot perustuvat palvelimen kelloon. + +tt18=Tss kerrotut tiedot ovat: keskimrisi arvoja (laskettu kaikkien ensimmisen ja viimeisimmn vierailun vlisten tietojen perusteella) + +tt19=Tss kerrotut tiedot ovat: kumulatiivisia summia (laskettu kaikkien ensimmisen ja viimeisimmn vierailun vlisten tietojen perusteella) + +tt20=Jotkut Vierailujen kestot ovat 'tuntemattomia', koska niit ei aina voida laskea. Pasiallinen syy tlle on:
    - Vierailu ei ollut loppunut 'pivityksen' tapahtuessa.
    - Vierailu alkoi kuukauden viimeisen vuorokauden viimesen tunnin aikana (klo 23:00 jlkeen) (Tekniset syyt estvt laskutoimituksen tllaisessa tapauksessa) + +tt201= Tlle virheelle ei ole kuvausta. + +tt202= Palvelin on ymmrtnyt palvelupyynnn, mutta se ksitelln myhemmin. + +tt204= Palvelin on ksitellyt pyynnn, mutta lhetettvksi ei ole mitn tietoa. + +tt206= Osittainen sislt. + +tt301= Pyydetty tiedosto on siirretty toiseen, vastauksessa kerrottuun osoitteeseen. + +tt302= Tlle virheelle ei ole kuvausta. + +tt400= Kielioppivirhe. Palvelin ei ymmrtnyt palvelupyynt. + +tt401= Pyydetty URL, johon tarvitaan tunnus/salasana -kaksikko.
    Suuri mr nit virheit saattaa tarkoittaa sit, ett joku (kuten hakkeri) yritt murtautua, tai pst sivustoille (toivoen ptyvns suojatulle alueelle kokeilemalla eri tunnus/salasana -pareja, esimerkiksi). + +tt403= Tried to reach an URL not configured to be reachable, even with an login/password pair (for example, an URL within a directory not defined as "browsable".). + +tt404= Pyydetty URL, jota ei ole olemassa. Tm virhe tarkoittaa usein sit, ett jossakin sivustollasi on virheellinen linkki, tai ett vierailija on kirjoittanut URL:n vrin. + +tt408= Server has taken too much time to respond to a request. This error frequently involves either a slow CGI script which the server was required to kill or an extremely congested web server. + +tt500= Sisinen virhe. Tm virhe on usein epnormaalisti keskeytyneen CGI-ohjelman aiheuttama (tuloksena esim. coredump). + +tt501= Pyydetty toiminto tuntematon. + +tt502= Vlityspalvelimena tai yhdyskytvn toimivan HTTP-palvelimen palauttama koodi, kun todellinen kohteena ollut palvelin ei vastannut palvelupyyntn hyvksyttvsti. + +tt503= Palvelimen sisinen virhe. + +tt504= Yhdyskytvn aikaraja tyttynyt. + +tt505= HTTP-versio ei tuettu. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fr.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fr.txt index 6637f2b16..4c2885ba7 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fr.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-fr.txt @@ -1,77 +1,63 @@ -
    -On considère une nouvelle visite pour chaque arrivée d'un visiteur consultant une page et ne s'étant pas connecté dans les dernières #VisitTimeOut# mn. -
    -
    -Nombre de hotes (adresse IP) utilisés pour accéder au site (et voir au moins une page).
    -Ce chiffre reflète le nombre de personnes physiques différentes ayant un jour accédées au site. -
    -
    -Nombre de fois qu une page du site est vue (Cumul de tout visiteur, toute visite).
    -Ce compteur différe des "hits" car il ne comptabilise que les pages HTML et non les images ou autres fichiers. -
    -
    -Nombre de fois qu une page, image, fichier du site est vu ou téléchargé par un visiteur.
    -Ce compteur est donné à titre indicatif, le compteur "pages" etant préféré. -
    -
    -Nombre d'octets téléchargés lors des visites du site.
    -Il s'agit aussi bien du volume de données du au chargement des pages et images que des fichiers téléchargés. -
    -
    -#PROG# est capable de reconnaitre l'acces au site issu d'une recherche depuis les #SearchEnginesArray# moteurs de recherche Internet les plus connus (Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Liste des pages de sites externes contenant un lien suivi pour accéder à ce site (Seules les #MaxNbOfRefererShown# pages externes les plus utilisées sont affichées). -Les liens issus du résultat d'un moteur de recherche connu n'apparaissent pas ici, car comptabilisés à part sur la ligne juste au-dessus. -
    -
    -Ce tableau offre la liste des phrases ou mots clés les plus souvent utilisés pour retrouver et accéder au site depuis -un moteur de recherche Internet (Les recherches depuis #SearchEnginesArray# moteurs de recherche parmi les plus populaires sont reconnues, comme Yahoo, Altavista, Lycos, Google, Voila, etc...).
    -Notez que le nombre total de recherche de mots clés peut être supérieur au nombre total de recherche de phrases clés (nombre réel de recherche) dans la mesure où une recherche est comptée 2 fois (1 pour chaque mot) si 2 mots furent utilisés comme critères. -
    -
    -Les robots sont des automates visiteurs scannant le site dans le but de l'indexer, d'obtenir des statistiques sur les sites Web Internet ou de vérifier sa disponibilié.
    -#PROG# reconnait #RobotArray# robots. -
    -
    -Toutes les statistiques en rapport avec le temps sont basées sur les heures du serveur. -
    -
    -Ici les données rapportées sont des: valeurs moyennes (calculées à partir des données entre la première et dernière visite de la période analysée). -
    -
    -Ici les données rapportées sont des: sommes cumulées (calculées à partir des données entre la première et dernière visite de la période analysée). -
    -
    -Certaines Durée de visites sont 'inconnues' car elles ne peuvent pas toujours etre calculées. En voici les raisons principales:
    -- La visite n'étaient pas terminée lorsque la mise à jour eut lieu (Sera comptée à la prochaine mise à jour).
    -- La visite a commencé la derniere heure (après 23:00) du dernier jour du mois (Un raison technique empêche #PROG# de calculer la durée des visites de telles sessions). -
    -
    -Les Vers (Worms) sont des visiteurs automatiques qui sont en fait des serveurs externes infectés par un virus, -réalisant des hits particuliers sur votre serveur afin de l'infecter à son tour. Dans la plupart des cas, de telles -attacks exploitent des bugs des serveurs commerciaux et non à jour. -Si votre system n'est pas celui indiqué comme cible sensible du vers, vous pouvez ignorer de tel hits.
    -Il existe très peu de 'vers serveur' mais il sont très actifs à certaines période. -#PROG# reconnait #WormsArray# signatures de vers connus (nimda,code red,...). -
    - -
    Contenu partiel renvoyé.
    -
    La requête a été enregistrée par le serveur mais sera exécutée plus tard.
    -
    Le serveur a traité la demande mais il n'existe aucun document à renvoyer.
    -
    Contenu partiel renvoyé.
    -
    Le document réclamé a été déplacé et se trouve maintenant à une autre adresse mentionnée dans la réponse.
    -
    Aucun descriptif pour cette erreur.
    -
    Erreur de syntaxe, le serveur n'a pas compris la requête.
    -
    Tentatives d'accès à une URL nécessitant identification avec un login/mot de passe invalide.
    Un nombre trop élévé peut mettre en évidence une tentative de crackage brute du site (par accès répété de différents logins/mots de passe).
    -
    Tentatives d'accès à une URL non configurée pour etre accessible, même avec une identification (par exemple, une URL d'un répertoire non défini comme étant "listable").
    -
    Tentatives d'accès à une URL inexistante. Il s'agit donc d'un lien invalide sur le site ou d'une faute de frappe d'un visiteur qui a saisie une mauvaise URL directement.
    -
    Le serveur mis un temps trop important pour répondre à la requête. Il peut s'agir d'un script CGI trop lent sur le serveur forcé d'abandonner le traitement ou d'une saturation du site.
    -
    Erreur interne au serveur. Cette erreur est le plus souvant renvoyé lors de l'arrêt anormal d'un script CGI (par exemple suite à un coredump du CGI).
    -
    Le serveur ne prend pas en charge l'action demandée.
    -
    Code renvoyé par un serveur HTTP qui fonctionne comme proxy ou gateway lorsque le serveur réel consulté ne réagit pas avec succès à la demande du client.
    -
    Erreur interne au serveur.
    -
    Gateway Time-out.
    -
    Version HTTP non supporté.
    +tt1=On considère une nouvelle visite pour chaque arrivée d'un visiteur consultant une page et ne s'étant pas connecté dans les dernières #VisitTimeOut# mn. + +tt2=Nombre de hotes (adresse IP) utilisés pour accéder au site (et voir au moins une page).
    Ce chiffre reflète le nombre de personnes physiques différentes ayant un jour accédées au site. + +tt3=Nombre de fois qu une page du site est vue (Cumul de tout visiteur, toute visite).
    Ce compteur différe des "hits" car il ne comptabilise que les pages HTML et non les images ou autres fichiers. + +tt4=Nombre de fois qu une page, image, fichier du site est vu ou téléchargé par un visiteur.
    Ce compteur est donné à titre indicatif, le compteur "pages" etant préféré. + +tt5=Nombre d'octets téléchargés lors des visites du site.
    Il s'agit aussi bien du volume de données du au chargement des pages et images que des fichiers téléchargés. + +tt13=#PROG# est capable de reconnaitre l'acces au site issu d'une recherche depuis les #SearchEnginesArray# moteurs de recherche Internet les plus connus (Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=Liste des pages de sites externes contenant un lien suivi pour accéder à ce site (Seules les #MaxNbOfRefererShown# pages externes les plus utilisées sont affichées).Les liens issus du résultat d'un moteur de recherche connu n'apparaissent pas ici, car comptabilisés à part sur la ligne juste au-dessus. + +tt15=Ce tableau offre la liste des phrases ou mots clés les plus souvent utilisés pour retrouver et accéder au site depuis un moteur de recherche Internet (Les recherches depuis #SearchEnginesArray# moteurs de recherche parmi les plus populaires sont reconnues, comme Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Notez que le nombre total de recherche de mots clés peut être supérieur au nombre total de recherche de phrases clés (nombre réel de recherche) dans la mesure où une recherche est comptée 2 fois (1 pour chaque mot) si 2 mots furent utilisés comme critères. + +tt16=Les robots sont des automates visiteurs scannant le site dans le but de l'indexer, d'obtenir des statistiques sur les sites Web Internet ou de vérifier sa disponibilié.
    #PROG# reconnait #RobotArray# robots. + +tt17=Toutes les statistiques en rapport avec le temps sont basées sur les heures du serveur. + +tt18=Ici les données rapportées sont des: valeurs moyennes (calculées à partir des données entre la première et dernière visite de la période analysée). + +tt19=Ici les données rapportées sont des: sommes cumulées (calculées à partir des données entre la première et dernière visite de la période analysée). + +tt20=Certaines Durée de visites sont 'inconnues' car elles ne peuvent pas toujours etre calculées. En voici les raisons principales:
    - La visite n'étaient pas terminée lorsque la mise à jour eut lieu (Sera comptée à la prochaine mise à jour).
    - La visite a commencé la derniere heure (après 23:00) du dernier jour du mois (Un raison technique empêche #PROG# de calculer la durée des visites de telles sessions). + +tt21=Les Vers (Worms) sont des visiteurs automatiques qui sont en fait des serveurs externes infectés par un virus,réalisant des hits particuliers sur votre serveur afin de l'infecter à son tour. Dans la plupart des cas, de telles attaques exploitent des bugs des serveurs commerciaux et non à jour. Si votre system n'est pas celui indiqué comme cible sensible du vers, vous pouvez ignorer de tel hits.
    Il existe très peu de 'vers serveur' mais il sont très actifs à certaines période. #PROG# reconnait #WormsArray# signatures de vers connus (nimda,code red,...). + +tt201=Contenu partiel renvoyé. + +tt202=La requête a été enregistrée par le serveur mais sera exécutée plus tard. + +tt204=Le serveur a traité la demande mais il n'existe aucun document à renvoyer. + +tt206=Contenu partiel renvoyé. + +tt301=Le document réclamé a été déplacé et se trouve maintenant à une autre adresse mentionnée dans la réponse. + +tt302=Aucun descriptif pour cette erreur. + +tt400=Erreur de syntaxe, le serveur n'a pas compris la requête. + +tt401=Tentatives d'accès à une URL nécessitant identification avec un login/mot de passe invalide.
    Un nombre trop élévé peut mettre en évidence une tentative de crackage brute du site (par accès répété de différents logins/mots de passe). + +tt403=Tentatives d'accès à une URL non configurée pour etre accessible, même avec une identification (par exemple, une URL d'un répertoire non défini comme étant "listable"). + +tt404=Tentatives d'accès à une URL inexistante. Il s'agit donc d'un lien invalide sur le site ou d'une faute de frappe d'un visiteur qui a saisie une mauvaise URL directement. + +tt408=Le serveur mis un temps trop important pour répondre à la requête. Il peut s'agir d'un script CGI trop lent sur le serveur forcé d'abandonner le traitement ou d'une saturation du site. + +tt500=Erreur interne au serveur. Cette erreur est le plus souvant renvoyé lors de l'arrêt anormal d'un script CGI (par exemple suite à un coredump du CGI). + +tt501=Le serveur ne prend pas en charge l'action demandée. + +tt502=Code renvoyé par un serveur HTTP qui fonctionne comme proxy ou gateway lorsque le serveur réel consulté ne réagit pas avec succès à la demande du client. + +tt503=Erreur interne au serveur. + +tt504=Gateway Time-out. + +tt505=Version HTTP non supporté. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gl.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gl.txt index 0d77b0645..4c97112a3 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gl.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gl.txt @@ -1,74 +1,63 @@ -
    -Unha nova visita defínese por cada novo visitante entrante (accedendo a unha páxina) que non estivera conectado ó sitio durante os últimos #VisitTimeOut# mins.. -
    -
    -Número de máquinas cliente (enderezos IP) que viñeron a visitar o sitio (e que miraron polo menos unha páxina).
    -Este dato refire o número de diferentes persoas físicas que accederan o sitio. -
    -
    -Número de veces que unha páxina deste sitio é vista (Suma de tódolos visitantes para tódalas visitas).
    -Esta dato difire de "accesos" en que somente conta páxinas HTML e non imaxes e outros ficheiros. -
    -
    -Número de veces que unha páxina, imaxe ou ficheiro do sitio e vista ou descargada por alguén.
    -Este dato provese como referencia somente, dado que o número de "páxinas" vistas -é a miudo preferido para propósitos de mercadotecnia. -
    -
    -Este dato refírese á cantidade de datos descargados de tódalas páxinas, imaxes e ficheiros no sitio.
    -As unidades están en KB, MB ou GB (Kilooctetos, Megaoctetos ou Gigaoctetos) -
    -
    -#PROG# recoñece cada acceso ó sitio feito despois dunha procura dende os #SearchEnginesArray# Procuradores e Directorios mais populares da Interrede (como Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Lista de tódalas páxinas externas que foron usadas para enlazar (e entrar) ó sitio (Somente as #MaxNbOfRefererShown# páxinas externas máis frecuentemente usadas son amosadas). -Os enlaces usados polos resultados dos procuradores son excluídos aquí porque xa foron incluídos na liña anterior desta táboa. -
    -
    -Esta táboa amosa a lista de mais frecuentes palabras ou frases clave usadas para atopa-lo sitio dende Procuradores e Directorios da Interrede. (Palabras clave dos #SearchEnginesArray# Procuradores e Directorios mais populares son recoñecidas por #PROG#, como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    -Decátese de que o número total de procuras por palabras clave pode ser maior co número total de procuras por frases clave (número real de procuras) porque cando dúas palabras clave sexan usadas na mesma procura, a procura e contada dúas veces por palabras clave (unha vez por cada palabra). -
    -
    -Os Robots (ás veces refírese a Arañas) son ordenadores automáticos visitantes usados por moitos procuradores que exploran o sitio web para indicalo e clasificalo, recoller estatísticas sobre sitios web da Interrede e/ou mirar se o sitio de vostede está aínda en liña.
    -#PROG# é capaz de recoñecer ata #RobotArray# robots. -
    -
    -Tódalas estadísticas feitas en relación ó tempo están baseadas na hora do servidor. -
    -
    -Aquí, os datos expostos son valores medios (calculados a partir de tódolos datos entre a primeira e última visita no rango analizado) -
    -
    -Aquí, os datos expostos son sumas acumulativas (calculados a partir de tódolos datos entre a primeira e última visita en un rango analizado) -
    -
    -Algunhas Duracións de visitas son 'descoñecidas' porque non sempre poden ser calculadas. As principais razóns disto son:
    -- A visita non rematara cando a 'actualización' ocurríu.
    -- A visita escomenzóu na derradeira hora (despois das 23:00) do derradeiro día dun mes (Unha razón técnica evita que #PROG# calcule a duración de tales sesións) -
    -
    -Os Gusanos son ordenadores automáticos visitantes que son de feito servidores externos, infectados por un virus, que intentan realizar accesos particulares no servidor para infectalo. Na maioría dos casos, ditos gusanos explotan algúns erros de servidores sen actualizar ou comerciais. Se o sistema non é o obxectivo sensible do gusano, pódese sinxelamente ignorar estes accesos.
    -Hai moi poucos 'gusanos de servidor' no mundo pero están moi activos ás veces. #PROG# é capaz de recoñecer #WormsArray# sinaturas de gusanos coñecidos (nimda, code red, ...). -
    -
    Error sen descripción.
    -
    A petición foi comprendida polo servidor pero se procesará máis tarde.
    -
    O servidor procesóu a petición pero non hai documento para enviar.
    -
    Contido parcial.
    -
    O documento pedido foi reubicado e está agora noutro enderezo amosado na resposta.
    -
    Error sen descripción.
    -
    Error de sintaxe, o servidor non comprendéu a petición.
    -
    Intentos de acceder un URL onde un par identificador/contrasinal foi requirido.
    Un número alto neste apartado podería significar que alguén (como un intruso) está intentando romper ou introducirse no sitio (esperando entrar nunha área segura probando diferentes pares identificador/contrasinal, por exemplo).
    -
    Intentos de acceder a un URL non configurado para ser accesible, nin siquera con un par identificador/contrasinal (por exemplo, un URL nun directorio non definido como "navegable").
    -
    Intentos de acceder un URL non existente. Este erro a miúdo significa que hai un enlace inválido nalgures no sitio ou que un visitante escribíu mal un certo URL
    -
    O servidor tardóu demasiado tempo para responder unha petición. Este erro frecuentemente implica ben un lento guión (script) CGI que o servidor foi requirido para matar ou ben un servidor web extremadamente conxestionado.
    -
    Erro interno. Este erro é a miúdo causado por un programa CGI que finalizóu anormalmente (volcado de núcleo, por exemplo).
    -
    Acción requirida descoñecida
    -
    Código retornado por un servidor HTTP que funciona como atallo ou pasarela cando un servidor real destinatario non responde axeitadamente á petición do cliente
    -
    Erro interno do servidor.
    -
    A pasarela non responde.
    -
    Versión de HTTP non soportada.
    +tt1=Unha nova visita defínese por cada novo visitante entrante (accedendo a unha páxina) que non estivera conectado ó sitio durante os últimos #VisitTimeOut# mins.. +tt2=Número de máquinas cliente (enderezos IP) que viñeron a visitar o sitio (e que miraron polo menos unha páxina).
    Este dato refire o número de diferentes persoas físicas que accederan o sitio. +tt3=Número de veces que unha páxina deste sitio é vista (Suma de tódolos visitantes para tódalas visitas).
    Esta dato difire de "accesos" en que somente conta páxinas HTML e non imaxes e outros ficheiros. + +tt4=Número de veces que unha páxina, imaxe ou ficheiro do sitio e vista ou descargada por alguén.
    Este dato provese como referencia somente, dado que o número de "páxinas" vistas é a miudo preferido para propósitos de mercadotecnia. + +tt5=Este dato refírese á cantidade de datos descargados de tódalas páxinas, imaxes e ficheiros no sitio.
    As unidades están en KB, MB ou GB (Kilooctetos, Megaoctetos ou Gigaoctetos) + +tt13=#PROG# recoñece cada acceso ó sitio feito despois dunha procura dende os #SearchEnginesArray# Procuradores e Directorios mais populares da Interrede (como Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=Lista de tódalas páxinas externas que foron usadas para enlazar (e entrar) ó sitio (Somente as #MaxNbOfRefererShown# páxinas externas máis frecuentemente usadas son amosadas). Os enlaces usados polos resultados dos procuradores son excluídos aquí porque xa foron incluídos na liña anterior desta táboa. + +tt15=Esta táboa amosa a lista de mais frecuentes palabras ou frases clave usadas para atopa-lo sitio dende Procuradores e Directorios da Interrede. (Palabras clave dos #SearchEnginesArray# Procuradores e Directorios mais populares son recoñecidas por #PROG#, como Yahoo, Altavista, Lycos, Google, Voila, etc...).
    Decátese de que o número total de procuras por palabras clave pode ser maior co número total de procuras por frases clave (número real de procuras) porque cando dúas palabras clave sexan usadas na mesma procura, a procura e contada dúas veces por palabras clave (unha vez por cada palabra). + +tt16=Os Robots (ás veces refírese a Arañas) son ordenadores automáticos visitantes usados por moitos procuradores que exploran o sitio web para indicalo e clasificalo, recoller estatísticas sobre sitios web da Interrede e/ou mirar se o sitio de vostede está aínda en liña.
    #PROG# é capaz de recoñecer ata #RobotArray# robots. + +tt17=Tódalas estadísticas feitas en relación ó tempo están baseadas na hora do servidor. + +tt18=Aquí, os datos expostos son valores medios (calculados a partir de tódolos datos entre a primeira e última visita no rango analizado) + +tt19=Aquí, os datos expostos son sumas acumulativas (calculados a partir de tódolos datos entre a primeira e última visita en un rango analizado) + +tt20=Algunhas Duracións de visitas son 'descoñecidas' porque non sempre poden ser calculadas. As principais razóns disto son:
    - A visita non rematara cando a 'actualización' ocurríu.
    - A visita escomenzóu na derradeira hora (despois das 23:00) do derradeiro día dun mes (Unha razón técnica evita que #PROG# calcule a duración de tales sesións) + +tt21=Os Gusanos son ordenadores automáticos visitantes que son de feito servidores externos, infectados por un virus, que intentan realizar accesos particulares no servidor para infectalo. Na maioría dos casos, ditos gusanos explotan algúns erros de servidores sen actualizar ou comerciais. Se o sistema non é o obxectivo sensible do gusano, pódese sinxelamente ignorar estes accesos.
    Hai moi poucos 'gusanos de servidor' no mundo pero están moi activos ás veces. #PROG# é capaz de recoñecer #WormsArray# sinaturas de gusanos coñecidos (nimda, code red, ...). + +tt201=Error sen descripción. + +tt202=A petición foi comprendida polo servidor pero se procesará máis tarde. + +tt204=O servidor procesóu a petición pero non hai documento para enviar. + +tt206=Contido parcial. + +tt301=O documento pedido foi reubicado e está agora noutro enderezo amosado na resposta. + +tt302=Error sen descripción. + +tt400=Error de sintaxe, o servidor non comprendéu a petición. + +tt401=Intentos de acceder un URL onde un par identificador/contrasinal foi requirido.
    Un número alto neste apartado podería significar que alguén (como un intruso) está intentando romper ou introducirse no sitio (esperando entrar nunha área segura probando diferentes pares identificador/contrasinal, por exemplo). + +tt403=Intentos de acceder a un URL non configurado para ser accesible, nin siquera con un par identificador/contrasinal (por exemplo, un URL nun directorio non definido como "navegable"). + +tt404=Intentos de acceder un URL non existente. Este erro a miúdo significa que hai un enlace inválido nalgures no sitio ou que un visitante escribíu mal un certo URL + +tt408=O servidor tardóu demasiado tempo para responder unha petición. Este erro frecuentemente implica ben un lento guión (script) CGI que o servidor foi requirido para matar ou ben un servidor web extremadamente conxestionado. + +tt500=Erro interno. Este erro é a miúdo causado por un programa CGI que finalizóu anormalmente (volcado de núcleo, por exemplo). + +tt501=Acción requirida descoñecida + +tt502=Código retornado por un servidor HTTP que funciona como atallo ou pasarela cando un servidor real destinatario non responde axeitadamente á petición do cliente + +tt503=Erro interno do servidor. + +tt504=A pasarela non responde. + +tt505=Versión de HTTP non soportada. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gr.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gr.txt index 896881f86..5c11068ba 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gr.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-gr.txt @@ -1,74 +1,61 @@ +tt1=Ως νέα επίσκεψη ορίζεται η προβολή μιας σελίδας από έναν εισερχόμενος επισκέπτης ο οποιός δεν είχε συνδεθεί στο site κατά τα τελευταία #VisitTimeOut# λεπτά. +tt2=Αριθμός τον πελατών (IP διευθύνσεις) που επισκέφθηκαν το site (και που πρόβαλλαν τουλάχιστον μια σελίδα).
    Τα δεδομένα αυτά αναφέρονται στον αριθμό των διαφορετικών φυσικών προσώπων που είχαν πρόσβαση στο site. -
    -Ως νέα επίσκεψη ορίζεται η προβολή μιας σελίδας από έναν εισερχόμενος επισκέπτης ο οποιός δεν είχε συνδεθεί στο site κατά τα τελευταία #VisitTimeOut# λεπτά. -
    -
    -Αριθμός τον πελατών (IP διευθύνσεις) που επισκέφθηκαν το site (και που πρόβαλλαν τουλάχιστον μια σελίδα).
    -Τα δεδομένα αυτά αναφέρονται στον αριθμό των διαφορετικών φυσικών προσώπων που είχαν πρόσβαση στο site. -
    -
    -Αριθμός προβολών μιας σελίδας του site (Σύνολο για όλους τους επισκέπτες και για όλες τις επισκέψεις).
    -Αυτό το κομμάτι των δεδομένων διαφέρει από τα "χτυπήματα" στο ότι μετράει μόνο τις HTML σελίδες σε αντίθεση με εικόνες και άλλα αρχεία. -
    -
    -Αριθμός προβολών ή λήψεων μιας σελίδας, εικόνας ή αρχείου του site από κάποιον επισκέπτη.
    -Αυτό το κομμάτι των δεδομένων δίνεται ως αναφορά μόνο, αφού ο αριθμός των "σελίδων" που προβάλλονται είναι συνήθως προτιμότερος για λόγους marketing. -
    -
    -Αυτό το κομμάτι των δεδομένων αναφέρεται στην ποσότητα των δεδομένων που λαμβάνονται από όλες τις σελίδες, εικόνες και αρχεία μέσα στο site.
    -Οι μονάδες είναι σε KB, MB ή GB (KiloBytes, MegaBytes ή GigaBytes) -
    -
    -#PROG# αναγνωρίζει κάθε πρόσβαση στο site μετά από μια αναζήτηση από τις #SearchEnginesArray# πιο δημοφιλείς Μηχανές Αναζήτησης και Καταλόγους στο Internet (όπως Yahoo, Altavista, Lycos, Google, Voila, κτλ...). -
    -
    -Λίστα από όλους τους εξωτερικούς συνδέσμους που χρησιμοποιήθηκαν για να συνδέθούν (και να εισαχθούν) στο site (Μόνο οι #MaxNbOfRefererShown# πιο συχνά χρησιμοποιημένες εξωτερικές σελίδες εμφανίζονται). -Οι συνδέσμοι που χρησιμοποιούνται από τα αποτελέσματα των μηχανών αναζήτησης δεν συμπεριλαμβάνονται εδώ αφού έχουν ήδη συμπεριληφθεί στην προηγούμενη γραμμή στον πίνακα αυτό. -
    -
    -Αυτός ο πίνακας εμφανίζει την λίστα από τις πιο συχνά χρησιμοποιούμενες εκφράσεις και λέξεις-κλειδιά για τον εντοπισμό του site από τις Μηχανές Αναζήτησης και τους Καταλόγους στο Internet. -(Λέξεις-κλειδιά από #SearchEnginesArray# πιο δημοφιλείς Μηχανές Αναζήτησης και Καταλόγους στο Internet αναγνωρίζονται από #PROG#, όπως Yahoo, Altavista, Lycos, Google, Voila, κτλ...).
    -Σημειώνεται ότι ο συνολικός αριθμός αναζητήσεων για λέξεις-κλειδιά πιθανόν να είναι μεγαλύτερος από τον συνολικό αριθμό αναζητήσεων για εκφράσεις (πραγματικό αριθμό αναζητήσεων) γιατί όταν 2 λέξεις-κλειδιά χρησιμοποιούνται στην ίδια αναζήτηση, η αναζήτηση μετράει δύο φορές (μία για κάθε λέξη). -
    -
    -Τα Robot (κάποιες φορές αναφέρονται ως Αράχνες (Spiders)) είναι αυτόματοι επισκέπτες που χρησιμοποιούνται από πολλές μηχανές αναζήτησης που σαρώνουν το site σας για να το προσθέσουν στην βάση τους και να βαθμολογήσουν την θέση του, ή που συλλέγουν στατιστικά ή ελέγχουν εάν το site σας είναι ακόμα ενεργό.
    -#PROG# είναι ικανό να αναγνωρίσει έως #RobotArray# robots. -
    -
    -Όλα τα στατιστικά που συσχετίζονται με χρόνο είναι βάση της ώρας του διακομιστή. -
    -
    -Εδώ, τα δεδομένα που αναφέρονται είναι: μέσος όρος τιμών (έχουν υπολογιστεί από όλα τα δεδομένα μεταξύ του πρώτου και του τελευταίου e-mail στο εύρος της ανάλυσης) -
    -
    -Εδώ, τα δεδομένα που αναφέρονται είναι: συγκεντρωτικά σύνολα (έχουν υπολογιστεί από όλα τα δεδομένα μεταξύ του πρώτου και του τελευταίου e-mail στο εύρος της ανάλυσης) -
    -
    -Κάποιες διάρκειες Επισκέψεων είναι 'άγνωστες' αφού δεν μπορούν πάντα να υπολογιστούν. Αυτός είναι ο βασικός λόγος για αυτό:
    -- Η επίσκεψη δεν ολοκληρώθηκε όταν συνέβει ή 'ανανέωση'.
    -- Η επίσκεψη ξεκίνησε την τελευταία ώρα (μετά τις 23:00) της τελευταίας μέρας ενός μήνα (Ένα τεχνικό ζήτημα αποτρέπει το #PROG# από τον υπολογισμό διάρκειας τέτοιων συνεδριών) -
    -
    -Τα Σκουλήκια (Worms) είναι αυτόματοι επισκέπτες που στην πραγματικότητα προήλθαν από εξωτερικούς διακομιστές, που προσβλήθηκαν από ιό, που προσπαθεί να κάνει συγκεκριμένα χτυπήματα-επισκέψεις στον διακομιστή σας ώστε να τον προσβάλλει με τον ιό. Στις περισσότερες των περιπτώσεων, τέτοια σκουλήκια εκμεταλλεύονται bugs από εμπορικούς διακομιστές που δεν έχουν ενημερωθεί με τις τελευταίες αναβαθμίσεις. Εάν το σύστημά σας δεν είναι ο ευαίσθητος στόχος του σκουληκιού, μπορείτε απλά να αγνοήσετε τέτοιες επισκέψεις.
    -Εμφανίζονται ελαχιστα 'σκουλήκια διακομιστών' στον κόσμο αλλά είναι πολύ ενεργά κατά διαστήματα. -#PROG# είναι ικανό να αναγνωρίσει #WormsArray# γνωστές υπογραφές σκουληκιών (nimda,code red,...). -
    - -
    Καμία περιγραφή για αυτό το σφάλμα.
    -
    Η αίτηση αναγνωρίστηκε από τον διακομιστή αλλά θα επεξεργαστεί αργότερα.
    -
    Ο διακομιστής επεξεργάστηκε την αίτηση αλλά δεν υπάρχει κανένα έγγραφο προς αποστολή.
    -
    Μερικό περιεχόμενο.
    -
    Το έγγραφο για το οποίο έγινε η αίτηση μετακινήθηκε και βρίσκεται τώρα σε μια άλλη διεύθυνση που αναφέρεται στην απάντηση.
    -
    Καμία περιγραφή για αυτό το σφάλμα.
    -
    Συντακτικό σφάλμα, ο διακομιστής δεν κατανόησε το αίτημα.
    -
    Προσπάθεια πρόσβασης σε ένα URL όπου χρειάζεται όνομα χρήστη και κωδικός.
    Μια υψηλή τιμή στο στοιχείο αυτό θα μπορούσε να σημαίνει ότι κάποιος (όπως ένας hacker) προσπαθεί να σπάσει, ή να εισέλθει στο site σας (προσπαθώντας να εισέλθει σε μια ασφαλή περιοχή δοκιμάζοντας για παράδειγμα διαφορετικά ονόματα χρήστη/κωδικούς).
    -
    Προσπάθεια πρόσβασης ενός URL που δεν έχει ρυθμιστεί να είναι προσβάσιμο, ακόμα και με ένα όνομα χρήστη/κωδικό (για παράδειγμα, ένα URL μεσα σε ένα φάκελο που δεν έχει οριστεί ως "πλοηγήσιμος".).
    -
    Προσπάθεια πρόσβασης σε ένα URL που δεν υπάρχει. Αυτό το σφάλμα συνήθως σημαίνει ότι υπάρχει κάποιος άκυρος σύνδεσμος κάπου στο site σας ή ότι κάποιος επισκέπτης πληκτρολόγησε λανθασμένα κάποιο URL.
    -
    Ο διακομιστής έκανα υπερβολικά μεγάλο χρονικό διάστημα να αποκριθεί σε μία αίτηση. Αυτό το σφάλμα συνήθως εμπεριέχει είτε κάποιο αργό CGI script που ο διακομιστής χρειάστηκε να τερματίσει είτε υπερβολικά πολύ κίνηση στον διακομιστή.
    -
    Εσωτερικό σφάλμα. Αυτό το σφάλμα συνήθως προκαλείται από ένα πρόγραμμα CGI που τερματίστηκε ανώμαλα (coredump για παράδειγμα).
    -
    Άγνωστο αίτημα ενέργειας.
    -
    Κώδικας που επιστρέφεται από έναν HTTP διακομιστή που λειτουργεί ως μεσολαβητής ή δρομολογητής όταν ένας πραγματικός, διακομιστής προορισμού δεν αποκρίνεται με επιτυχία στο αίτημα του πελάτη.
    -
    Εσωτερικό σφάλμα διακομιστή.
    -
    Τέλος χρόνου διακομιστή πύλης.
    -
    Η HTTP έκδοση δεν υποστηρίζεται.
    +tt3=Αριθμός προβολών μιας σελίδας του site (Σύνολο για όλους τους επισκέπτες και για όλες τις επισκέψεις).
    Αυτό το κομμάτι των δεδομένων διαφέρει από τα "χτυπήματα" στο ότι μετράει μόνο τις HTML σελίδες σε αντίθεση με εικόνες και άλλα αρχεία. + +tt4=Αριθμός προβολών ή λήψεων μιας σελίδας, εικόνας ή αρχείου του site από κάποιον επισκέπτη.
    Αυτό το κομμάτι των δεδομένων δίνεται ως αναφορά μόνο, αφού ο αριθμός των "σελίδων" που προβάλλονται είναι συνήθως προτιμότερος για λόγους marketing. + +tt5=Αυτό το κομμάτι των δεδομένων αναφέρεται στην ποσότητα των δεδομένων που λαμβάνονται από όλες τις σελίδες, εικόνες και αρχεία μέσα στο site.
    Οι μονάδες είναι σε KB, MB ή GB (KiloBytes, MegaBytes ή GigaBytes) + +tt13=#PROG# αναγνωρίζει κάθε πρόσβαση στο site μετά από μια αναζήτηση από τις #SearchEnginesArray# πιο δημοφιλείς Μηχανές Αναζήτησης και Καταλόγους στο Internet (όπως Yahoo, Altavista, Lycos, Google, Voila, κτλ...). + +tt14=Λίστα από όλους τους εξωτερικούς συνδέσμους που χρησιμοποιήθηκαν για να συνδέθούν (και να εισαχθούν) στο site (Μόνο οι #MaxNbOfRefererShown# πιο συχνά χρησιμοποιημένες εξωτερικές σελίδες εμφανίζονται). Οι συνδέσμοι που χρησιμοποιούνται από τα αποτελέσματα των μηχανών αναζήτησης δεν συμπεριλαμβάνονται εδώ αφού έχουν ήδη συμπεριληφθεί στην προηγούμενη γραμμή στον πίνακα αυτό. + +tt15=Αυτός ο πίνακας εμφανίζει την λίστα από τις πιο συχνά χρησιμοποιούμενες εκφράσεις και λέξεις-κλειδιά για τον εντοπισμό του site από τις Μηχανές Αναζήτησης και τους Καταλόγους στο Internet. (Λέξεις-κλειδιά από #SearchEnginesArray# πιο δημοφιλείς Μηχανές Αναζήτησης και Καταλόγους στο Internet αναγνωρίζονται από #PROG#, όπως Yahoo, Altavista, Lycos, Google, Voila, κτλ...).
    Σημειώνεται ότι ο συνολικός αριθμός αναζητήσεων για λέξεις-κλειδιά πιθανόν να είναι μεγαλύτερος από τον συνολικό αριθμό αναζητήσεων για εκφράσεις (πραγματικό αριθμό αναζητήσεων) γιατί όταν 2 λέξεις-κλειδιά χρησιμοποιούνται στην ίδια αναζήτηση, η αναζήτηση μετράει δύο φορές (μία για κάθε λέξη). + +tt16=Τα Robot (κάποιες φορές αναφέρονται ως Αράχνες (Spiders)) είναι αυτόματοι επισκέπτες που χρησιμοποιούνται από πολλές μηχανές αναζήτησης που σαρώνουν το site σας για να το προσθέσουν στην βάση τους και να βαθμολογήσουν την θέση του, ή που συλλέγουν στατιστικά ή ελέγχουν εάν το site σας είναι ακόμα ενεργό.
    #PROG# είναι ικανό να αναγνωρίσει έως #RobotArray# robots. + +tt17=Όλα τα στατιστικά που συσχετίζονται με χρόνο είναι βάση της ώρας του διακομιστή. + +tt18=Εδώ, τα δεδομένα που αναφέρονται είναι: μέσος όρος τιμών (έχουν υπολογιστεί από όλα τα δεδομένα μεταξύ του πρώτου και του τελευταίου e-mail στο εύρος της ανάλυσης) + +tt19=Εδώ, τα δεδομένα που αναφέρονται είναι: συγκεντρωτικά σύνολα (έχουν υπολογιστεί από όλα τα δεδομένα μεταξύ του πρώτου και του τελευταίου e-mail στο εύρος της ανάλυσης) + +tt20=Κάποιες διάρκειες Επισκέψεων είναι 'άγνωστες' αφού δεν μπορούν πάντα να υπολογιστούν. Αυτός είναι ο βασικός λόγος για αυτό:
    - Η επίσκεψη δεν ολοκληρώθηκε όταν συνέβει ή 'ανανέωση'.
    - Η επίσκεψη ξεκίνησε την τελευταία ώρα (μετά τις 23:00) της τελευταίας μέρας ενός μήνα (Ένα τεχνικό ζήτημα αποτρέπει το #PROG# από τον υπολογισμό διάρκειας τέτοιων συνεδριών) + +tt21=Τα Σκουλήκια (Worms) είναι αυτόματοι επισκέπτες που στην πραγματικότητα προήλθαν από εξωτερικούς διακομιστές, που προσβλήθηκαν από ιό, που προσπαθεί να κάνει συγκεκριμένα χτυπήματα-επισκέψεις στον διακομιστή σας ώστε να τον προσβάλλει με τον ιό. Στις περισσότερες των περιπτώσεων, τέτοια σκουλήκια εκμεταλλεύονται bugs από εμπορικούς διακομιστές που δεν έχουν ενημερωθεί με τις τελευταίες αναβαθμίσεις. Εάν το σύστημά σας δεν είναι ο ευαίσθητος στόχος του σκουληκιού, μπορείτε απλά να αγνοήσετε τέτοιες επισκέψεις.
    Εμφανίζονται ελαχιστα 'σκουλήκια διακομιστών' στον κόσμο αλλά είναι πολύ ενεργά κατά διαστήματα. #PROG# είναι ικανό να αναγνωρίσει #WormsArray# γνωστές υπογραφές σκουληκιών (nimda,code red,...). + +tt201=Καμία περιγραφή για αυτό το σφάλμα. + +tt202=Η αίτηση αναγνωρίστηκε από τον διακομιστή αλλά θα επεξεργαστεί αργότερα. + +tt204=Ο διακομιστής επεξεργάστηκε την αίτηση αλλά δεν υπάρχει κανένα έγγραφο προς αποστολή. + +tt206=Μερικό περιεχόμενο. + +tt301=Το έγγραφο για το οποίο έγινε η αίτηση μετακινήθηκε και βρίσκεται τώρα σε μια άλλη διεύθυνση που αναφέρεται στην απάντηση. + +tt302=Καμία περιγραφή για αυτό το σφάλμα. + +tt400=Συντακτικό σφάλμα, ο διακομιστής δεν κατανόησε το αίτημα. + +tt401=Προσπάθεια πρόσβασης σε ένα URL όπου χρειάζεται όνομα χρήστη και κωδικός.
    Μια υψηλή τιμή στο στοιχείο αυτό θα μπορούσε να σημαίνει ότι κάποιος (όπως ένας hacker) προσπαθεί να σπάσει, ή να εισέλθει στο site σας (προσπαθώντας να εισέλθει σε μια ασφαλή περιοχή δοκιμάζοντας για παράδειγμα διαφορετικά ονόματα χρήστη/κωδικούς). + +tt403=Προσπάθεια πρόσβασης ενός URL που δεν έχει ρυθμιστεί να είναι προσβάσιμο, ακόμα και με ένα όνομα χρήστη/κωδικό (για παράδειγμα, ένα URL μεσα σε ένα φάκελο που δεν έχει οριστεί ως "πλοηγήσιμος".). + +tt404=Προσπάθεια πρόσβασης σε ένα URL που δεν υπάρχει. Αυτό το σφάλμα συνήθως σημαίνει ότι υπάρχει κάποιος άκυρος σύνδεσμος κάπου στο site σας ή ότι κάποιος επισκέπτης πληκτρολόγησε λανθασμένα κάποιο URL. + +tt408=Ο διακομιστής έκανα υπερβολικά μεγάλο χρονικό διάστημα να αποκριθεί σε μία αίτηση. Αυτό το σφάλμα συνήθως εμπεριέχει είτε κάποιο αργό CGI script που ο διακομιστής χρειάστηκε να τερματίσει είτε υπερβολικά πολύ κίνηση στον διακομιστή. + +tt500=Εσωτερικό σφάλμα. Αυτό το σφάλμα συνήθως προκαλείται από ένα πρόγραμμα CGI που τερματίστηκε ανώμαλα (coredump για παράδειγμα). + +tt501=Άγνωστο αίτημα ενέργειας. + +tt502=Κώδικας που επιστρέφεται από έναν HTTP διακομιστή που λειτουργεί ως μεσολαβητής ή δρομολογητής όταν ένας πραγματικός, διακομιστής προορισμού δεν αποκρίνεται με επιτυχία στο αίτημα του πελάτη. + +tt503=Εσωτερικό σφάλμα διακομιστή. + +tt504=Τέλος χρόνου διακομιστή πύλης. + +tt505=Η HTTP έκδοση δεν υποστηρίζεται. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-hu.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-hu.txt index 6200ba437..24a3d8537 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-hu.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-hu.txt @@ -1,71 +1,62 @@ -
    -j ltogatsnak szmt minden olyan j berkezett ltogat aki megtekint egy oldalt s a legutols ltogatsa ta eltelt legalbb #VisitTimeOut# perc. -
    -
    -Azon egyedi szmtgpek szma (IP cmek) akik az oldalon jrtak (s legalbb egy oldalt megnztek).
    -Ez az adat a fizikailag klnbz gpekre vonatkozik ahonnan az oldalt ltogattk brmelyik nap. -
    -
    -Az oldal sszestett tallatai (sszes ltogat sszes ltogatsa).
    -Ez annyiban klnbzik a "tallatok"-tl, hogy csak a HTML oldalak tallatait sszesti, a kpeket s egyb fjlokat nem. -
    -
    -Oldalak, kpek, fjlok sszestett tallatai s letltsei.
    -Ez az sszests csak referencia clokat szolgl, hiszen marketing szempontbl az "oldalak tallatai" adat az rdekesebb. -
    -
    -Ez az adat az sszes letlttt adatmennyisget jelzi belertve az sszes oldalt, kpet s fjlt -kilobjt, megabjt illetve gigabjt-ban (Kb, Mb, Gb). -
    -
    -Az #PROG# felismeri, ha az oldalakat a #SearchEnginesArray# legismertebb keresprogramok egyikn keresztl rtk el (pldul Yahoo, Altavista, Lycos, Google, Voila, stb...). -
    -
    -Az olyan kls oldalak listja, amely erre a honlapra mutat, vagy rajtuk keresztl rkezett a krs (Csak a leggyakoribb #MaxNbOfRefererShown# kls oldal). -A kereskn keresztl rkezett tallatok itt nincsenek listzva, azok az elz rszben tallhatak. -
    -
    -Ebben a tblzatban tallhatak a keresprogramokban leggyakrabban hasznlt kulcsszavak s kifejezsek amelyeken keresztl ezen honlapot megtalltk. -(Az #PROG# a #SearchEnginesArray# leggyakoribb keresmotort ismeri. Pldul Yahoo, Altavista, Lycos, Google, Voila, stb...).
    -Az sszes keresett kulcssz szma nagyobb mint a keresett kifejezsek (azaz az igazi keressek szm) mert -2 keresett kulcssz esetn a keress ktszer szmt (egyszer-egyszer mindkt szra). -
    -
    -A robot-ok (spider-nek vagy webcrawler-nek is mondjk) automatikus szmtgp ltogatk melyet szmos keresprogram hasznl arra hogy az oldalt tnzze, index-elje s kategorizlja, statisztikt gyjtsn a weboldalakrl s/vagy megnzze, hogy a honlap mg mindig elrhet-e.
    -Az #PROG# #RobotArray# klnbz robotot ismer fel. -
    -
    -Minden itt feltntetett idnek a szerverid szolglt alapul. -
    -
    -Az itteni adat tlagos rtk (az els s az utols ltogats kztti idszakra) -
    -
    -Az itteni adat sszegzett adat (az els s az utols ltogats kztti idszakra) -
    -
    -Nha a ltogatsi idszak "ismeretlen"-nek ltszik, mert nem mindig kisz -mthat. Ennek f okai:
    -- A ltogats nem fejezdtt be a frisstskor.
    -- A ltogats a hnap utols napjnak utols rjban kezddtt (23:00 utn). -
    - -
    Nincs hibalers.
    -
    A krst felismerte a szerver, de csak a ksbbiekben feldolgozva vgre.
    -
    A szerver feldolgozta a krst, de az nem eredmnyezett kimeneti dokumentumot.
    -
    Rsztartalom.
    -
    A krt dokumentum helye megvltozott, j cm a vlaszban.
    -
    Nincs hibalers.
    -
    Szintaktikai hiba, a szerver nem rtette a krst.
    -
    Jelszvdett tartalom sikertelen elrse.
    Nagyszm ilyen hiba jelentheti azt, hogy valaki (egy hacker) megprbl elrni egy jelszvdett oldalt felhasznli nevek s jelszavak folyamatos prblgatsval.
    -
    Nem tallzhat knyvtr (mg felhasznl azonost s jelsz ismeretben sem) (pldul egy knyvtron belli "tallzsra" nem engedlyezett link).
    -
    Nem ltez oldal (URL). rvnytelen link, mely lehet az oldalon bell, ms kls oldalon, vagy csak a ltogat vtett hibt a bers kzben.
    -
    A szerver tl sokig nem vlaszolt. ltalban lass CGI program vagy nagyon leterhelt szerver esetn fordul el.
    -
    Bels hiba. ltalban CGI program abnormlis futsa utn keletkezik (pl. coredump).
    -
    Ismeretlen krstpus.
    -
    Proxy szerver hibakd, melyet a tvoli szerver sikeres vlasznak hinyban kld a krst kld kliensnek.
    -
    Bels szerverhiba.
    -
    Gateway idtllps.
    -
    Nem tmogatott verzij HTTP krs.
    +tt1=j ltogatsnak szmt minden olyan j berkezett ltogat aki megtekint egy oldalt s a legutols ltogatsa ta eltelt legalbb #VisitTimeOut# perc. + +tt2=Azon egyedi szmtgpek szma (IP cmek) akik az oldalon jrtak (s legalbb egy oldalt megnztek).
    Ez az adat a fizikailag klnbz gpekre vonatkozik ahonnan az oldalt ltogattk brmelyik nap. + +tt3=Az oldal sszestett tallatai (sszes ltogat sszes ltogatsa).
    Ez annyiban klnbzik a "tallatok"-tl, hogy csak a HTML oldalak tallatait sszesti, a kpeket s egyb fjlokat nem. + +tt4=Oldalak, kpek, fjlok sszestett tallatai s letltsei.
    Ez az sszests csak referencia clokat szolgl, hiszen marketing szempontbl az "oldalak tallatai" adat az rdekesebb. + +tt5=Ez az adat az sszes letlttt adatmennyisget jelzi belertve az sszes oldalt, kpet s fjlt kilobjt, megabjt illetve gigabjt-ban (Kb, Mb, Gb). + +tt13=Az #PROG# felismeri, ha az oldalakat a #SearchEnginesArray# legismertebb keresprogramok egyikn keresztl rtk el (pldul Yahoo, Altavista, Lycos, Google, Voila, stb...). + +tt14=Az olyan kls oldalak listja, amely erre a honlapra mutat, vagy rajtuk keresztl rkezett a krs (Csak a leggyakoribb #MaxNbOfRefererShown# kls oldal). A kereskn keresztl rkezett tallatok itt nincsenek listzva, azok az elz rszben tallhatak. + +tt15=Ebben a tblzatban tallhatak a keresprogramokban leggyakrabban hasznlt kulcsszavak s kifejezsek amelyeken keresztl ezen honlapot megtalltk. (Az #PROG# a #SearchEnginesArray# leggyakoribb keresmotort ismeri. Pldul Yahoo, Altavista, Lycos, Google, Voila, stb...).
    Az sszes keresett kulcssz szma nagyobb mint a keresett kifejezsek (azaz az igazi keressek szm) mert 2 keresett kulcssz esetn a keress ktszer szmt (egyszer-egyszer mindkt szra). + +tt16=A robot-ok (spider-nek vagy webcrawler-nek is mondjk) automatikus szmtgp ltogatk melyet szmos keresprogram hasznl arra hogy az oldalt tnzze, index-elje s kategorizlja, statisztikt gyjtsn a weboldalakrl s/vagy megnzze, hogy a honlap mg mindig elrhet-e.
    Az #PROG# #RobotArray# klnbz robotot ismer fel. + +tt17=Minden itt feltntetett idnek a szerverid szolglt alapul. + +tt18=Az itteni adat tlagos rtk (az els s az utols ltogats kztti idszakra) + +tt19=Az itteni adat sszegzett adat (az els s az utols ltogats kztti idszakra) + +tt20=Nha a ltogatsi idszak "ismeretlen"-nek ltszik, mert nem mindig kisz +mthat. Ennek f okai:
    - A ltogats nem fejezdtt be a frisstskor.
    - A ltogats a hnap utols napjnak utols rjban kezddtt (23:00 utn). + +tt201= Nincs hibalers. + +tt202= A krst felismerte a szerver, de csak a ksbbiekben feldolgozva vgre. + +tt204= A szerver feldolgozta a krst, de az nem eredmnyezett kimeneti dokumentumot. + +tt206= Rsztartalom. + +tt301= A krt dokumentum helye megvltozott, j cm a vlaszban. + +tt302= Nincs hibalers. + +tt400= Szintaktikai hiba, a szerver nem rtette a krst. + +tt401= Jelszvdett tartalom sikertelen elrse.
    Nagyszm ilyen hiba jelentheti azt, hogy valaki (egy hacker) megprbl elrni egy jelszvdett oldalt felhasznli nevek s jelszavak folyamatos prblgatsval. + +tt403= Nem tallzhat knyvtr (mg felhasznl azonost s jelsz ismeretben sem) (pldul egy knyvtron belli "tallzsra" nem engedlyezett link). + +tt404= Nem ltez oldal (URL). rvnytelen link, mely lehet az oldalon bell, ms kls oldalon, vagy csak a ltogat vtett hibt a bers kzben. + +tt408= A szerver tl sokig nem vlaszolt. ltalban lass CGI program vagy nagyon leterhelt szerver esetn fordul el. + +tt500= Bels hiba. ltalban CGI program abnormlis futsa utn keletkezik (pl. coredump). + +tt501= Ismeretlen krstpus. + +tt502= Proxy szerver hibakd, melyet a tvoli szerver sikeres vlasznak hinyban kld a krst kld kliensnek. + +tt503= Bels szerverhiba. + +tt504= Gateway idtllps. + +tt505= Nem tmogatott verzij HTTP krs. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-is.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-is.txt index 2505085a0..60a167f85 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-is.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-is.txt @@ -1,74 +1,63 @@ -
    -Ntt innlit er skilgreint sem hver nr gestur (sem skoar su) sem var ekki tengdur vi vefsvi itt sustu #VisitTimeOut# mnturnar -
    -
    -Fjldi vla (IP-vistfanga) sem litu inn vefinn (og sttu a lgmarki eina su.
    -Ggnin gefa til kynna fjlda einstakra gesta sem litu inn suna. -
    -
    -Fjldi skipta sem b>sa essu vefsvi var skou (Samtlur allra gesta fyrir ll innlit).
    -Munurinn essum ggnum og "skrr" liggur v a eingngu eru taldar HTML sur en ekki myndir ea annars konar skrr. -
    -
    -Fjldi skipta sem sa, mynd ea skr vefsvinu var skou ea stt af einhverju(m).
    -essi ggn eru einungis hf me til hlisjnar, ar sem fjldi "sna" sem skoaar voru eru oft talin vera betri markasggn. -
    -
    -essar upplsingar gefa mynd af v gagnamagni sem stt var af vefnum, sum, myndum og skrm.
    -Einingar eru KB, MB ea GB (Klbti, MegaBti ea GgaBti) -
    -
    -#PROG# greinir hvert innlit vefinn eftir leit #SearchEnginesArray# vinslustu leitarvlunum (Yahoo, Altavista, Lycos, Google, Voila, o.s.frv.). -
    -
    -Listi yfir allar tilvsanir utan essa vefsvis sem notaar voru til a vsa til vefsvis ns (Einungis #MaxNbOfRefererShown# oftast notuu tilvsanirnar eru birtar hr). -Links used by the results of the search engines are excluded here because they have already been included on the previous line within this table. -Tilvsunum fr niurstusum leitarvla er sleppt hr ar sem r hafa n egar veri notaar lnunni hr fyrir ofan. -
    -
    -Taflan snir au leitaror og setningar sem oftast hafa veri notu leitarvlum til a finna vefsvi itt. -(Leitaror fr #SearchEnginesArray# algengustu leitarvlunum sem #PROG# ekkir, svo sem Yahoo, Altavista, Lycos, Google, Voila, o.s.frv.).
    -Athugi a heildarfjldi leita me leitarorum gti veri hrri en heildarfjldi leita eftir leitarsetningum (rttur fjldi leita) v a ef notu eru 2 leitaror smu leitinni er leitin talin tvisvar sem oraleit en einu sinni sem setningaleit. -
    -
    -Leitarormar ("robots" og "spiders") eru 'sjlfvirkir gestir' notair af mrgum leitarvlum sem skoa, skrsetja og flokka innihald vefsins, safna tlulegum upplsingum um tilvsanir og/ea hvort vefsvi s enn nettengt.
    -#PROG# ekkir allt a #RobotArray# leitarorma. -
    -
    -ll tmatengd tlfri er bygg klukku netjns. -
    -
    -Ggn essari skrslu eru: mealgildi (reiknu t fr llum ggnum milli fyrsta og sasta innlits greindu tmabili) -
    -
    -Ggn essari skrslu eru: samtlur (reiknu t fr llum ggnum milli fyrsta og sasta innlits greindu tmabili) -
    -
    -Ekki er alltaf hgt a reikna t Lengd innlita. Helstu stur ess eru eftirfarandi:
    -- Innliti var ekki loki egar tlfrin var reiknu t.
    -- Innlit byrjai sasta klukkutma (eftir kl 23:00) slarhrings sasta dags mnaar (Tknileg sta #PROG# hindrar treikning slkra innlita) -
    -
    -Ormar eru 'sjlfvirkir gestir'/b> sem eru raun arir netjnar sem sktir eru af vrusi, sem reyna a framkvma kvenar heimsknir vefjn inn til a skja hann. flestum tilfellum nta slkir ormar sr ryggisholur gmlum vefjnum. Ef kerfi itt er ekki skjanlegt af essum ormi getur hunsa essi innlit.
    -a eru mjg fir 'netjnaormar' til heiminum en eir eru mjg virkir kvenum tmum. -#PROG# getur ekkt #WormsArray# mismunandi orma (Nimda, Code Red...). -
    -
    Engin lsing er til essari villu.
    -
    jnninn skildi beinina en afgreiir hana sar.
    -
    jnninn hefur afgreitt beinina en a vantar skrna sem a senda.
    -
    Einungis hluti skrar afgreiddur.
    -
    Umbein skr hefur veri fr ntt veffang sem sent var me svarinu.
    -
    Engin lsing er til essari villu.
    -
    Stlvilla, jnninn skildi ekki beinina.
    -
    Bei var um vefsl ar sem notandanafns er krafist.
    Ef miki er um etta getur a bent til ess a tilraunir su gerar til a brjtast inn su me mrgum samsetningum af notendanfnum og lykilorum (til a f agang a ggnum sem eru h agangsstringu).
    -
    Bei var um afgreislu vefsl sem ekki a vera agengileg jafnvel tt rtt notendanafn og lykilor hafi veri nota) (Gti veri mappa sem ekki er merkt "vafranleg".).
    -
    Bei var um vefsl sem ekki er til. essi villa kemur oft upp egar tengill vefsu inniheldur villu ea gestur slr vitlausa sl vafrann sinn.
    -
    jnninn hefur teki of langan tma afgreislu beininnar. essi villa gefur oft til kynna hga CGI skriftu sem jnninn neyddist til a drepa ea mjg upptekinn vefjn.
    -
    Innri villa hefur komi upp jni. essi villa kemur oft upp ef CGI forrit hefur loki keyrslu elilegan htt.
    -
    Beini er ekki ekkt.
    -
    Villubo sem skila er af vefjni sem jnar sem vefsel ea gtt egar umbein jnustuvl svarar ekki fyrirspurnum fr gestum.
    -
    Innri villa kom upp jni.
    -
    Samband rofnai vi gtt.
    -
    HTTP tgfa er ekki studd.
    +tt1=Ntt innlit er skilgreint sem hver nr gestur (sem skoar su) sem var ekki tengdur vi vefsvi itt sustu #VisitTimeOut# mnturnar + +tt2=Fjldi vla (
    IP-vistfanga) sem litu inn vefinn (og sttu a lgmarki eina su.
    Ggnin gefa til kynna fjlda einstakra gesta sem litu inn suna. + +tt3=Fjldi skipta sem b>sa essu vefsvi var skou (Samtlur allra gesta fyrir ll innlit).
    Munurinn essum ggnum og "skrr" liggur v a eingngu eru taldar HTML sur en ekki myndir ea annars konar skrr. + +tt4=Fjldi skipta sem sa, mynd ea skr vefsvinu var skou ea stt af einhverju(m).
    essi ggn eru einungis hf me til hlisjnar, ar sem fjldi "sna" sem skoaar voru eru oft talin vera betri markasggn. + +tt5=essar upplsingar gefa mynd af v gagnamagni sem stt var af vefnum, sum, myndum og skrm.
    Einingar eru KB, MB ea GB (Klbti, MegaBti ea GgaBti) + +tt13=#PROG# greinir hvert innlit vefinn eftir leit #SearchEnginesArray# vinslustu leitarvlunum (Yahoo, Altavista, Lycos, Google, Voila, o.s.frv.). + +tt14=Listi yfir allar tilvsanir utan essa vefsvis sem notaar voru til a vsa til vefsvis ns (Einungis #MaxNbOfRefererShown# oftast notuu tilvsanirnar eru birtar hr). Links used by the results of the search engines are excluded here because they have already been included on the previous line within this table. Tilvsunum fr niurstusum leitarvla er sleppt hr ar sem r hafa n egar veri notaar lnunni hr fyrir ofan. + +tt15=Taflan snir au leitaror og setningar sem oftast hafa veri notu leitarvlum til a finna vefsvi itt. (Leitaror fr #SearchEnginesArray# algengustu leitarvlunum sem #PROG# ekkir, svo sem Yahoo, Altavista, Lycos, Google, Voila, o.s.frv.).
    Athugi a heildarfjldi leita me leitarorum gti veri hrri en heildarfjldi leita eftir leitarsetningum (rttur fjldi leita) v a ef notu eru 2 leitaror smu leitinni er leitin talin tvisvar sem oraleit en einu sinni sem setningaleit. + +tt16=Leitarormar ("robots" og "spiders") eru 'sjlfvirkir gestir' notair af mrgum leitarvlum sem skoa, skrsetja og flokka innihald vefsins, safna tlulegum upplsingum um tilvsanir og/ea hvort vefsvi s enn nettengt.
    #PROG# ekkir allt a #RobotArray# leitarorma. + +tt17=ll tmatengd tlfri er bygg klukku netjns. + +tt18=Ggn essari skrslu eru: mealgildi (reiknu t fr llum ggnum milli fyrsta og sasta innlits greindu tmabili) + +tt19=Ggn essari skrslu eru: samtlur (reiknu t fr llum ggnum milli fyrsta og sasta innlits greindu tmabili) + +tt20=Ekki er alltaf hgt a reikna t Lengd innlita. Helstu stur ess eru eftirfarandi:
    - Innliti var ekki loki egar tlfrin var reiknu t.
    - Innlit byrjai sasta klukkutma (eftir kl 23:00) slarhrings sasta dags mnaar (Tknileg sta #PROG# hindrar treikning slkra innlita) + +tt21=Ormar eru 'sjlfvirkir gestir'/b> sem eru raun arir netjnar sem sktir eru af vrusi, sem reyna a framkvma kvenar heimsknir vefjn inn til a skja hann. flestum tilfellum nta slkir ormar sr ryggisholur gmlum vefjnum. Ef kerfi itt er ekki skjanlegt af essum ormi getur hunsa essi innlit.
    a eru mjg fir 'netjnaormar' til heiminum en eir eru mjg virkir kvenum tmum. #PROG# getur ekkt #WormsArray# mismunandi orma (Nimda, Code Red...). + +tt201=Engin lsing er til essari villu. + +tt202=jnninn skildi beinina en afgreiir hana sar. + +tt204=jnninn hefur afgreitt beinina en a vantar skrna sem a senda. + +tt206=Einungis hluti skrar afgreiddur. + +tt301=Umbein skr hefur veri fr ntt veffang sem sent var me svarinu. + +tt302=Engin lsing er til essari villu. + +tt400=Stlvilla, jnninn skildi ekki beinina. + +tt401=Bei var um vefsl ar sem notandanafns er krafist.
    Ef miki er um etta getur a bent til ess a tilraunir su gerar til a brjtast inn su me mrgum samsetningum af notendanfnum og lykilorum (til a f agang a ggnum sem eru h agangsstringu). + +tt403=Bei var um afgreislu vefsl sem ekki a vera agengileg jafnvel tt rtt notendanafn og lykilor hafi veri nota) (Gti veri mappa sem ekki er merkt "vafranleg".). + +tt404=Bei var um vefsl sem ekki er til. essi villa kemur oft upp egar tengill vefsu inniheldur villu ea gestur slr vitlausa sl vafrann sinn. + +tt408=jnninn hefur teki of langan tma afgreislu beininnar. essi villa gefur oft til kynna hga CGI skriftu sem jnninn neyddist til a drepa ea mjg upptekinn vefjn. + +tt500=Innri villa hefur komi upp jni. essi villa kemur oft upp ef CGI forrit hefur loki keyrslu elilegan htt. + +tt501=Beini er ekki ekkt. + +tt502=Villubo sem skila er af vefjni sem jnar sem vefsel ea gtt egar umbein jnustuvl svarar ekki fyrirspurnum fr gestum. + +tt503=Innri villa kom upp jni. + +tt504=Samband rofnai vi gtt. + +tt505=HTTP tgfa er ekki studd. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-it.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-it.txt index b560ce355..7911f23a9 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-it.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-it.txt @@ -1,76 +1,63 @@ -
    -Per nuova visita si intende ogni nuovo visitatore che visualizza o consulta una pagina e non si connesso al sito negli ultimi #VisitTimeOut# minuti. -
    -
    -Numero di client host (indirizzi IP) che hanno visitato il sito (e visualizzato almeno una pagina).
    -Questa cifra riflette il numero di persone fisiche diverse che si sono collegate al sito. -
    -
    -Numero di volte in cui una pagina del sito stata visualizzata (somma di tutti i visitatori, per tutte le visite).
    -Questo valore diverso dagli "accessi" perch considera solamente le pagine HTML e non le immagini o gli altri elementi. -
    -
    -Numero di volte in cui una pagina, una immagine o un elemento stato visualizzato o scaricato da qualcuno.
    -Questo valore viene fornito solo per completezza in quanto il numero delle "pagine" visualizzate spesso preferibile ai fini commerciali. -
    -
    -Questo valore indica la quantit di dati scaricati per tutte le pagine, le immagini e i file presenti sul sito.
    -Le unit di misura sono espresse in KB, MB o GB (KiloByte, MegaByte o GigaByte) -
    -
    -#PROG# in grado di riconoscere gli accessi al sito provenienti dalle ricerche sui #SearchEnginesArray# motori di ricerca pi famosi (come Yahoo, Altavista, Lycos, Google, Voila, ecc.). -
    -
    -Elenco delle pagine di siti esterni contenenti un link che stato seguito per accedere a questo sito (solo le #MaxNbOfRefererShown# pagine esterne pi utilizzate sono visualizzate). -I link presenti nelle pagine dei motori di ricerca sono esclusi in quanto gi conteggiati nel riquadro soprastante. -
    -
    -Questa tabella offre l'elenco delle parole o frasi chiave utilizzate pi spesso per trovare il sito sui motori di ricerca. -(#PROG# in grado di riconoscere le ricerche sui #SearchEnginesArray# motori di ricerca pi famosi come Yahoo, Altavista, Lycos, Google, Voila, ecc.).
    -Notare che il totale delle ricerche sulle parole chiave potrebbe essere maggiore di quello sulle frasi chiave (il numero reale di ricerche) perch quando 2 parole chiavi sono presenti sulla stessa ricerca questa viene conteggiata due volte (una per ciascuna parola). -
    -
    -I robot (noti anche col nome di spider) sono dei visitatori automatici utilizzati da molti motori di ricerca per analizzare il sito al fine di indicizzarlo, generare statistiche sui siti Web in Internet e/o verificare che sia ancora in linea.
    -#PROG# in grado di riconoscere #RobotArray# robot. -
    -
    -Gli orari visualizzati sono basati sul fuso orario del server. -
    -
    -I dati qui riportati sono valori medi (calcolati su tutti i dati tra la prima e l'ultima visita nel periodo di tempo analizzato) -
    -
    -I dati qui riportati sono somme cumulative (calcolate su tutti i dati tra la prima e l'ultima visita nel periodo di tempo analizzato) -
    -
    -Alcune Durate delle visite sono 'sconosciute' perch non possono essere sempre calcolate. Questi sono i casi pi ricorrenti:
    -- La visita non era ancora conclusa quando sono state aggiornate (funzione 'update') le statistiche.
    -- La visita iniziata durante l'ultima ora (dopo le 23:00) dell'ultimo giorno del mese (Una ragione tecnica impedisce ad #PROG# di calcolare la durata di queste sessioni) -
    -
    -I Worm sono dei visitatori automatici provenienti da server esterni, infettati da un virus, che provano ad -effettuare particolari visite al server del sito al fine di infettarlo. In molti casi questi worm sfruttano i bug -di alcuni server non aggiornati o di tipo commerciale. Se il vostro server non l'obiettivo sensibile del worm potete -tranquillamente ignorare queste visite.
    Ci sono pochissimi 'server worm' al mondo ma questi talvolta dimostrano di essere -veramente efficaci. #PROG# in grado di riconoscere #WormsArray# firme di worm noti (nimda, code red, ecc.). -
    - -
    Nessuna descrizione per questo errore.
    -
    Il server ha processato la richiesta ma verr eseguita pi tardi.
    -
    Il server ha processato la richiesta ma non ci sono documenti da visualizzare.
    -
    Contenuto parziale.
    -
    Il documento richiesto stato spostato e si trova al momento ad un altro indirizzo, indicato nella risposta.
    -
    Nessuna descrizione per questo errore.
    -
    Errore di sintassi, il server non ha compreso la richiesta.
    -
    Tentativo di accesso a un URL che richiede un'autenticazione tramite login e password.
    Un numero troppo elevato pu significare che qualcuno (es. un hacker) sta cercando di forzare l'accesso al sito (ad esempio provando diverse combinazioni di login e password).
    -
    Tentativo di accesso a un URL non configurato per essere accessibile, neppure tramite autenticazione (ad esempio l'URL di una cartella il cui contenuto non pu essere sfogliato).
    -
    Tentativo di accesso a un URL inesistente. Si tratta di un link non valido sul sito o di un errore di battitura del visitatore che ha indicato un URL non corretto.
    -
    Il server ha impiegato troppo tempo per rispondere alla richiesta. Pu trattarsi di uno script CGI troppo lento obbligato ad abbandonare la richiesta oppure di un timeout dato dalla saturazione del sito.
    -
    Errore interno del server. Questo errore quello restituito pi di frequente durante la terminazione anormale di uno script CGI (per esempio a seguito di un coredump).
    -
    Azione richiesta di tipo sconosciuto.
    -
    Codice ritornato da un server HTTP che funge da proxy o da gateway quando il vero server destinatario non risponde alla richiesta del client.
    -
    Errore interno del server.
    -
    Time-out del gateway.
    -
    Versione HTTP non supportata.
    +tt1=Per nuova visita si intende ogni nuovo visitatore che visualizza o consulta una pagina e non si connesso al sito negli ultimi #VisitTimeOut# minuti. + +tt2=Numero di client host (indirizzi IP) che hanno visitato il sito (e visualizzato almeno una pagina).
    Questa cifra riflette il numero di persone fisiche diverse che si sono collegate al sito. + +tt3=Numero di volte in cui una pagina del sito stata visualizzata (somma di tutti i visitatori, per tutte le visite).
    Questo valore diverso dagli "accessi" perch considera solamente le pagine HTML e non le immagini o gli altri elementi. + +tt4=Numero di volte in cui una pagina, una immagine o un elemento stato visualizzato o scaricato da qualcuno.
    Questo valore viene fornito solo per completezza in quanto il numero delle "pagine" visualizzate spesso preferibile ai fini commerciali. + +tt5=Questo valore indica la quantit di dati scaricati per tutte le pagine, le immagini e i file presenti sul sito.
    Le unit di misura sono espresse in KB, MB o GB (KiloByte, MegaByte o GigaByte) + +tt13=#PROG# in grado di riconoscere gli accessi al sito provenienti dalle ricerche sui #SearchEnginesArray# motori di ricerca pi famosi (come Yahoo, Altavista, Lycos, Google, Voila, ecc.). + +tt14=Elenco delle pagine di siti esterni contenenti un link che stato seguito per accedere a questo sito (solo le #MaxNbOfRefererShown# pagine esterne pi utilizzate sono visualizzate). I link presenti nelle pagine dei motori di ricerca sono esclusi in quanto gi conteggiati nel riquadro soprastante. + +tt15=Questa tabella offre l'elenco delle parole o frasi chiave utilizzate pi spesso per trovare il sito sui motori di ricerca. (#PROG# in grado di riconoscere le ricerche sui #SearchEnginesArray# motori di ricerca pi famosi come Yahoo, Altavista, Lycos, Google, Voila, ecc.).
    Notare che il totale delle ricerche sulle parole chiave potrebbe essere maggiore di quello sulle frasi chiave (il numero reale di ricerche) perch quando 2 parole chiavi sono presenti sulla stessa ricerca questa viene conteggiata due volte (una per ciascuna parola). + +tt16=I robot (noti anche col nome di spider) sono dei visitatori automatici utilizzati da molti motori di ricerca per analizzare il sito al fine di indicizzarlo, generare statistiche sui siti Web in Internet e/o verificare che sia ancora in linea.
    #PROG# in grado di riconoscere #RobotArray# robot. + +tt17=Gli orari visualizzati sono basati sul fuso orario del server. + +tt18=I dati qui riportati sono valori medi (calcolati su tutti i dati tra la prima e l'ultima visita nel periodo di tempo analizzato) + +tt19=I dati qui riportati sono somme cumulative (calcolate su tutti i dati tra la prima e l'ultima visita nel periodo di tempo analizzato) + +tt20=Alcune Durate delle visite sono 'sconosciute' perch non possono essere sempre calcolate. Questi sono i casi pi ricorrenti:
    - La visita non era ancora conclusa quando sono state aggiornate (funzione 'update') le statistiche.
    - La visita iniziata durante l'ultima ora (dopo le 23:00) dell'ultimo giorno del mese (Una ragione tecnica impedisce ad #PROG# di calcolare la durata di queste sessioni) + +tt21=I Worm sono dei visitatori automatici provenienti da server esterni, infettati da un virus, che provano ad effettuare particolari visite al server del sito al fine di infettarlo. In molti casi questi worm sfruttano i bug di alcuni server non aggiornati o di tipo commerciale. Se il vostro server non l'obiettivo sensibile del worm potete tranquillamente ignorare queste visite.
    Ci sono pochissimi 'server worm' al mondo ma questi talvolta dimostrano di essere veramente efficaci. #PROG# in grado di riconoscere #WormsArray# firme di worm noti (nimda, code red, ecc.). + +tt201= Nessuna descrizione per questo errore. + +tt202= Il server ha processato la richiesta ma verr eseguita pi tardi. + +tt204= Il server ha processato la richiesta ma non ci sono documenti da visualizzare. + +tt206= Contenuto parziale. + +tt301= Il documento richiesto stato spostato e si trova al momento ad un altro indirizzo, indicato nella risposta. + +tt302= Nessuna descrizione per questo errore. + +tt400= Errore di sintassi, il server non ha compreso la richiesta. + +tt401= Tentativo di accesso a un URL che richiede un'autenticazione tramite login e password.
    Un numero troppo elevato pu significare che qualcuno (es. un hacker) sta cercando di forzare l'accesso al sito (ad esempio provando diverse combinazioni di login e password). + +tt403= Tentativo di accesso a un URL non configurato per essere accessibile, neppure tramite autenticazione (ad esempio l'URL di una cartella il cui contenuto non pu essere sfogliato). + +tt404= Tentativo di accesso a un URL inesistente. Si tratta di un link non valido sul sito o di un errore di battitura del visitatore che ha indicato un URL non corretto. + +tt408= Il server ha impiegato troppo tempo per rispondere alla richiesta. Pu trattarsi di uno script CGI troppo lento obbligato ad abbandonare la richiesta oppure di un timeout dato dalla saturazione del sito. + +tt500= Errore interno del server. Questo errore quello restituito pi di frequente durante la terminazione anormale di uno script CGI (per esempio a seguito di un coredump). + +tt501= Azione richiesta di tipo sconosciuto. + +tt502= Codice ritornato da un server HTTP che funge da proxy o da gateway quando il vero server destinatario non risponde alla richiesta del client. + +tt503= Errore interno del server. + +tt504= Time-out del gateway. + +tt505= Versione HTTP non supportata. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-jp.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-jp.txt index 0433b9dc3..fccfc1bae 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-jp.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-jp.txt @@ -1,63 +1,59 @@ -
    -#VisitTimeOut# 分前までの訪問数。 -
    -
    -最低1ページを訪問したクライアントホスト(IPアドレス)。
    -これは訪問者の実数です。 -
    -
    -
    -ページが表示された回数(すべての訪問者と訪問の合計)。
    -このデータは「件数」とは違い、HTMLファイルのみが入っています。 -
    -
    -ページ、画像、ファイルが表示された回数。
    -参照程度にお使いください。 -
    -
    -すべてのページ、画像、ファイルのダウンロードによるデータ転送量。
    -単位は KB 、MB または GB 。 -
    -
    -人気のある検索エンジン(Yahoo、Altavista、Lycos、Google、Voilaなど)での検索によるアクセス。 -
    -
    -ユーザー(コンピュータ)がこのサイトについての情報を得た外部ページ。 -
    -
    -このサイトにアクセスするために検索エンジンで入力されたキーワードのリスト。 -
    -
    -ロボット(別名スパイダー)とは、ウェブ中を動き回って全てのコンテンツを中央サーバー上に保存するコンピューター・プログラム。
    -
    -これらのデータはサーバー時間に基づいています。 -
    -
    -最初から最後までの訪問で集めたデータによって計算した平均数。 -
    -
    -最初から最後までの訪問で集めたデータによって計算した総数。 -
    - -
    POST が成功。またはPUT が新しいオブジェクトを作成。
    -
    要求は、受付たが、処理未完了。
    -
    サーバーは要求を受付けたが、返す情報がない。
    -
    サーバーは、情報の一部を得た。
    -
    要求された情報は、恒久的に移動した。
    -
    要求された情報は、一時的に移動した。
    -
    要求を実行できない。(構文が不正)
    -
    情報の要求に認証を必要とする。または、認証の拒否。
    -
    要求の拒否。認証が不完全。
    -
    要求された情報(ファイル)がない。
    -
    サーバーが待機時間内にクライアントが要求を送れなかった。
    -
    予期しないサーバーエラーのため、要求を実行できなかった。
    -
    サーバーは、要求された機能をサポートしていない。
    -
    クライアントより見て、ゲートウエイまたはプロキシーサーバの接続先サーバの応答が妥当でないことを示す。
    -
    サービス(サーバー)が高負荷。Retry-Afterヘッダに示す時間後には緩和される。応答文中にRetry-Afterヘッダがなければ、クライアントは応答を500番と同等に扱う必要がある。
    -
    ゲートウエイまたはプロキシの応答がゲートウエイの指定時間内に得られない。
    -
    HTTP バージョンをサポートしていない。
    +tt1=#VisitTimeOut# 分前までの訪問数。 +tt2=最低1ページを訪問したクライアントホスト(IPアドレス)。
    これは訪問者の実数です。 +tt3=ページが表示された回数(すべての訪問者と訪問の合計)。
    このデータは「件数」とは違い、HTMLファイルのみが入っています。 +tt4=ページ、画像、ファイルが表示された回数。
    参照程度にお使いください。 + +tt5=すべてのページ、画像、ファイルのダウンロードによるデータ転送量。
    単位は KB 、MB または GB 。 + +tt13=人気のある検索エンジン(Yahoo、Altavista、Lycos、Google、Voilaなど)での検索によるアクセス。 + +tt14=ユーザー(コンピュータ)がこのサイトについての情報を得た外部ページ。 + +tt15=このサイトにアクセスするために検索エンジンで入力されたキーワードのリスト。 + +tt16=ロボット(別名スパイダー)とは、ウェブ中を動き回って全てのコンテンツを中央サーバー上に保存するコンピューター・プログラム。 + +tt17=これらのデータはサーバー時間に基づいています。 + +tt18=最初から最後までの訪問で集めたデータによって計算した平均数。 + +tt19=最初から最後までの訪問で集めたデータによって計算した総数。 + +tt201= POST が成功。またはPUT が新しいオブジェクトを作成。 + +tt202= 要求は、受付たが、処理未完了。 + +tt204= サーバーは要求を受付けたが、返す情報がない。 + +tt206= サーバーは、情報の一部を得た。 + +tt301= 要求された情報は、恒久的に移動した。 + +tt302= 要求された情報は、一時的に移動した。 + +tt400= 要求を実行できない。(構文が不正) + +tt401= 情報の要求に認証を必要とする。または、認証の拒否。 + +tt403= 要求の拒否。認証が不完全。 + +tt404= 要求された情報(ファイル)がない。 + +tt408= サーバーが待機時間内にクライアントが要求を送れなかった。 + +tt500= 予期しないサーバーエラーのため、要求を実行できなかった。 + +tt501= サーバーは、要求された機能をサポートしていない。 + +tt502= クライアントより見て、ゲートウエイまたはプロキシーサーバの接続先サーバの応答が妥当でないことを示す。 + +tt503= サービス(サーバー)が高負荷。Retry-Afterヘッダに示す時間後には緩和される。応答文中にRetry-Afterヘッダがなければ、クライアントは応答を500番と同等に扱う必要がある。 + +tt504= ゲートウエイまたはプロキシの応答がゲートウエイの指定時間内に得られない。 + +tt505= HTTP バージョンをサポートしていない。 diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-kr.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-kr.txt index a01dedd63..cb67d4c43 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-kr.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-kr.txt @@ -1,62 +1,53 @@ -
    -ο 湮 (#VisitTimeOut# ̳) - Ʈ (ų ¡ ) ο - Ÿϴ. -
    -
    -Ŭ̾Ʈ ȣƮ (IP ּ) 湮 Ʈ Ÿϴ.(ּ Ʈ)
    - ڷ Ϻ ٸ Ÿϴ. -
    -
    (view) ȸ Ÿϴ. -( 湮 )
    - ڷ ̹, ϰ ޸ HTML "ȸ(hit)"ʹ ٸϴ. -
    -
    -, ̹, ų ٿε ȸ Ÿϴ.
    - ڷ θ ˴ϴ. ֳϸ "" ֱ Դϴ. -
    -
    - ٿε , ̹, Kb Ÿϴ. -
    -
    -#PROG# #SearchEnginesArray# ˻ Ʈ ĺ ֽϴ. -
    -
    - Ʈ ũ ܺ
    -(#MaxNbOfRefererShown# Ǵ ܺ Ÿϴ.) - ˻ ũ ⿡ ܵ˴ϴ. - ( ̺ ̹ ֽϴ.) -
    -
    - ̺ Ʈ Ǵ Ű ݴϴ. - ( ȣϴ ˻ Yahoo, Altavista, Lycos, Google, Voila -#SearchEnginesArray# Ű带 #PROG# ĺ ֽϴ. -
    -
    -κƮ (δ ̴ ) ˻ Ǵ -ڵȭ Դϴ. (1) Ʈ ȭϰ - οϰ (2) ͳ Ʈ 踦 ϰ (3) -Ʈ 밡 մϴ.
    -#PROG# #RobotArray# κƮ ĺ ֽϴ. -
    - -
    ϴ.
    -
    û ̻ ϴ.
    -
    û ó ϴ.
    -
    Ϻ .
    -
    û Ű ٸ ּҸ մϴ.
    -
    ϴ.
    -
    , û ϴ.
    -
    URL ؼ α/н ʿմϴ.
    ׸ ְ ũ õϰų Ʈ õϰ ִ (ٸ α/н带 Ͽ õϴ°) ǹմϴ.
    -
    밡ϰ Ǿ ʴ URL ӽõ Դϴ. ( , 丮Դ "¡" ǵ Դϴ.)
    -
    ʴ URL õ Դϴ. Ʈ 򰡿 ߸ ũ ־ 湮ڵ ߸ URL ϴ 쿡 ߻մϴ.
    -
    û ʹ ð 䱸մϴ. CGI ũƮ ̰ų 뷮 쿡 ߻մϴ.
    -
    . CGIα׷ Ǿ ߻մϴ.
    -
    û ˼ ϴ.
    -
    HTTP ݼ۵ ڵ尡 ó Ʈ̷ մϴ. Ŭ̾Ʈ û Ȯϰ մϴ.
    -
    .
    -
    Ʈ ðʰ.
    -
    HTTP ʽϴ.
    +tt1=ο 湮 (#VisitTimeOut# ̳) Ʈ (ų ¡ ) ο Ÿϴ. + +tt2=Ŭ̾Ʈ ȣƮ (IP ּ) 湮 Ʈ Ÿϴ.(ּ Ʈ)
    ڷ Ϻ ٸ Ÿϴ. + +tt3=Ʈ (view) ȸ Ÿϴ. ( 湮 )
    ڷ ̹, ϰ ޸ HTML "ȸ(hit)"ʹ ٸϴ. + +tt4=, ̹, ų ٿε ȸ Ÿϴ.
    ڷ θ ˴ϴ. ֳϸ "" ֱ Դϴ. + +tt5= ٿε , ̹, Kb Ÿϴ. + +tt13=#PROG# #SearchEnginesArray# ˻ Ʈ ĺ ֽϴ. + +tt14= Ʈ ũ ܺ
    (#MaxNbOfRefererShown# Ǵ ܺ Ÿϴ.) ˻ ũ ⿡ ܵ˴ϴ. ( ̺ ̹ ֽϴ.) + +tt15= ̺ Ʈ Ǵ Ű ݴϴ. ( ȣϴ ˻ Yahoo, Altavista, Lycos, Google, Voila #SearchEnginesArray# Ű带 #PROG# ĺ ֽϴ. + +tt16=κƮ (δ ̴ ) ˻ Ǵ ڵȭ Դϴ. (1) Ʈ ȭϰ οϰ (2) ͳ Ʈ 踦 ϰ (3) Ʈ 밡 մϴ.
    #PROG# #RobotArray# κƮ ĺ ֽϴ. + +tt201= ϴ. + +tt202= û ̻ ϴ. + +tt204= û ó ϴ. + +tt206= Ϻ . + +tt301= û Ű ٸ ּҸ մϴ. + +tt302= ϴ. + +tt400= , û ϴ. + +tt401= URL ؼ α/н ʿմϴ.
    ׸ ְ ũ õϰų Ʈ õϰ ִ (ٸ α/н带 Ͽ õϴ°) ǹմϴ. + +tt403= 밡ϰ Ǿ ʴ URL ӽõ Դϴ. ( , 丮Դ "¡" ǵ Դϴ.) + +tt404= ʴ URL õ Դϴ. Ʈ 򰡿 ߸ ũ ־ 湮ڵ ߸ URL ϴ 쿡 ߻մϴ. + +tt408= û ʹ ð 䱸մϴ. CGI ũƮ ̰ų 뷮 쿡 ߻մϴ. + +tt500= . CGIα׷ Ǿ ߻մϴ. + +tt501= û ˼ ϴ. + +tt502= HTTP ݼ۵ ڵ尡 ó Ʈ̷ մϴ. Ŭ̾Ʈ û Ȯϰ մϴ. + +tt503= . + +tt504= Ʈ ðʰ. + +tt505= HTTP ʽϴ. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nb.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nb.txt index 4bb651f91..3b7bbe762 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nb.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nb.txt @@ -1,62 +1,59 @@ -
    -Ett nytt besk er en ny gjest som ikke har vrt tilkoplet nettstedet siste #VisitTimeOut# min. -
    -
    -Antall klientverter (IP-adresser) som har beskt nettstedet, og har sett minst en side).
    -Denne informasjonen gjelder antallet forskjellige personer som har beskt siden. -
    -
    -Antall ganger en side p nettstedet har blitt vist.
    -Denne informasjonen skiller seg fra treff ved bare telle HTML-sider, og ikke bilder og andre filer. -
    -
    -Antall ganger en side, et bilde eller en fil p nettstedet har blitt vist eller lastet ned. -
    -
    -Denne informasjonen viser hvor mye data som har blitt lastet ned totalt (sider, bilder eller andre filer).
    -Enhetene er KB, MB eller GB (kilobyte, megabyte eller gigabyte) -
    -
    -#PROG# kan se nr et besk p nettstedet ditt kommer fra et sk p de #SearchEnginesArray# mest populre skemotorene og emnekatalogane (f.eks. Yahoo, Altavista, Lycos, Google og Kvasir). -
    -
    -Liste over alle eksterne sider som har lenker til nettstedet ditt (bare de #MaxNbOfRefererShown# mest brukte eksterne sider blir vist). -Lenker fra skemotorer er ikke inkludert her, siden disse allerede er oppfrt i forrige del av denne tabellen. -
    -
    -Denne tabellen viser de mest brukte skeordene brukt til finna nettstedet ditt i skemotorer og emnekataloger. -(Skeord fra de #SearchEnginesArray# mest populre skemotorene og emnekatalogene kan leses av #PROG#, f.eks. Yahoo, Altavista, Lycos, Google, og Kvasir). -
    -
    -Roboter blir brukt av mange skemotorer som besker nettstedet ditt for indeksere og rangere det, samle statistikk om nettsteder, og/eller se om nettstedet fremdeles er tilgjengelig.
    -#PROG# kjenner til #RobotArray# roboter. -
    -
    -All tidsrelatert statistikk er basert p tjenertid. -
    -
    -Rapporterte tall er gjennomsnittsverdier (regnet ut fra alle data mellom frste og siste besk) -
    -
    -Rapporterte tall er kumulative summer (regnet ut fra alle data mellom frste og siste besk) -
    - -
    Ingen beskrivelse av denne feilen.
    -
    Foresprselen var forsttt av tjeneren men vil bli prosessert senere.
    -
    Tjeneren har prosessert foresprselen men har ikke noe innhold sende.
    -
    Delvis innhold.
    -
    Det forespurte dokumentet er flyttet, og finnes n p en annen side. Brukeren blir automatisk videresendt til den nye adressen.
    -
    Ingen beskrivelse av denne feilen.
    -
    Syntaksfeil. Tjeneren forsto ikke foresprselen.
    -
    Prvde hente en side som var passordbeskyttet.
    Mange slike feilmeldinger kan bety at noen prver bryte seg inn p nettstedet ditt.
    -
    Prvde hente en side som er utilgjengelig (selv med passord) (for eksempel en katalog som er definert som ikke lesbar).
    -
    Prvde hente en ikke-eksisterende side. Denne feilen betyr oftest at det er en lenke en eller annen plass p nettstedet ditt (eller p en ekstern side) som ikke fungerer, og som m oppdateres.
    -
    Tjeneren har brukt for mye tid p svare p en foresprsel. Denne feilen gjelder enten et tregt CGI-skript tjenaren mtte avslutte, eller tungt trafikkert tjenar.
    -
    Intern feil. Denne feilen kommer ofte av CGI-skript som har blitt avsluttet unormalt.
    -
    Ukjent foresprsel.
    -
    Kode returnert av ein HTTP-tjener som fungerer som proxy eller systemport nr en ekte tjener ikke svarer p foresprselen.
    -
    Intern tjenerfeil.
    -
    Systemport tidsavbrutt.
    -
    Sttter ikke HTTP-versjonen.
    +tt1=Ett nytt besk er en ny gjest som ikke har vrt tilkoplet nettstedet siste #VisitTimeOut# min. + +tt2=Antall klientverter (IP-adresser) som har beskt nettstedet, og har sett minst en side).
    Denne informasjonen gjelder antallet forskjellige personer som har beskt siden. + +tt3=Antall ganger en side p nettstedet har blitt vist.
    Denne informasjonen skiller seg fra treff ved bare telle HTML-sider, og ikke bilder og andre filer. + +tt4=Antall ganger en side, et bilde eller en fil p nettstedet har blitt vist eller lastet ned. + +tt5=Denne informasjonen viser hvor mye data som har blitt lastet ned totalt (sider, bilder eller andre filer).
    Enhetene er KB, MB eller GB (kilobyte, megabyte eller gigabyte) + +tt13=#PROG# kan se nr et besk p nettstedet ditt kommer fra et sk p de #SearchEnginesArray# mest populre skemotorene og emnekatalogane (f.eks. Yahoo, Altavista, Lycos, Google og Kvasir). + +tt14=Liste over alle eksterne sider som har lenker til nettstedet ditt (bare de #MaxNbOfRefererShown# mest brukte eksterne sider blir vist). Lenker fra skemotorer er ikke inkludert her, siden disse allerede er oppfrt i forrige del av denne tabellen. + +tt15=Denne tabellen viser de mest brukte skeordene brukt til finna nettstedet ditt i skemotorer og emnekataloger. (Skeord fra de #SearchEnginesArray# mest populre skemotorene og emnekatalogene kan leses av #PROG#, f.eks. Yahoo, Altavista, Lycos, Google, og Kvasir). + +tt16=Roboter blir brukt av mange skemotorer som besker nettstedet ditt for indeksere og rangere det, samle statistikk om nettsteder, og/eller se om nettstedet fremdeles er tilgjengelig.
    #PROG# kjenner til #RobotArray# roboter. + +tt17=All tidsrelatert statistikk er basert p tjenertid. + +tt18=Rapporterte tall er gjennomsnittsverdier (regnet ut fra alle data mellom frste og siste besk) + +tt19=Rapporterte tall er kumulative summer (regnet ut fra alle data mellom frste og siste besk) + +tt201= Ingen beskrivelse av denne feilen. + +tt202= Foresprselen var forsttt av tjeneren men vil bli prosessert senere. + +tt204= Tjeneren har prosessert foresprselen men har ikke noe innhold sende. + +tt206= Delvis innhold. + +tt301= Det forespurte dokumentet er flyttet, og finnes n p en annen side. Brukeren blir automatisk videresendt til den nye adressen. + +tt302= Ingen beskrivelse av denne feilen. + +tt400= Syntaksfeil. Tjeneren forsto ikke foresprselen. + +tt401= Prvde hente en side som var passordbeskyttet.
    Mange slike feilmeldinger kan bety at noen prver bryte seg inn p nettstedet ditt. + +tt403= Prvde hente en side som er utilgjengelig (selv med passord) (for eksempel en katalog som er definert som ikke lesbar). + +tt404= Prvde hente en ikke-eksisterende side. Denne feilen betyr oftest at det er en lenke en eller annen plass p nettstedet ditt (eller p en ekstern side) som ikke fungerer, og som m oppdateres. + +tt408= Tjeneren har brukt for mye tid p svare p en foresprsel. Denne feilen gjelder enten et tregt CGI-skript tjenaren mtte avslutte, eller tungt trafikkert tjenar. + +tt500= Intern feil. Denne feilen kommer ofte av CGI-skript som har blitt avsluttet unormalt. + +tt501= Ukjent foresprsel. + +tt502= Kode returnert av ein HTTP-tjener som fungerer som proxy eller systemport nr en ekte tjener ikke svarer p foresprselen. + +tt503= Intern tjenerfeil. + +tt504= Systemport tidsavbrutt. + +tt505= Sttter ikke HTTP-versjonen. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nl.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nl.txt index 31f62ea78..721dcdbc1 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nl.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nl.txt @@ -1,53 +1,52 @@ -
    -Een nieuw bezoek is elke binnenkomende bezoeker (die een pagina bekijkt) die de laatste #VisitTimeOut# mn niet met uw site verbonden was. -
    -
    -Aantal client hosts (IP adres) die de site bezochten (en minimaal een pagina bekeken).
    -Dit geeft aan hoeveel verschillende fysieke personen de site op een bepaalde dag bezocht hebben. -
    -
    -Aantal malen dat een pagina van de site bekeken is (Som voor alle bezoekers voor alle bezoeken).
    -Dit onderdeel verschilt van "hits" in het feit dat het alleen HTML pagina's telt, in tegenstelling tot plaatjes en andere bestanden. -
    -
    -Aantal malen dat een pagina, plaatje of bestand op de site door iemand is bekeken of gedownload.
    -Dit onderdeel is alleen als referentie gegeven, omdat het aantal bekeken "pagina's" voor marketingdoeleinden de voorkeur heeft. -
    -
    -Aantal door uw bezoekers gedownloade kibibytes.
    -Dit onderdeel geeft de hoeveelheid gedownloade gegevens in alle pagina's, plaatjes en bestanden van uw site, gemeten in KiBs. -
    -
    -Dit programma, #PROG#, herkent elke benadering van uw site na een zoekopdracht van de #SearchEnginesArray# meest populaire Internet zoekmachines (zoals Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Lijst van alle externe pagina's die zijn gebruikt om naar uw site te linken (of deze te benaderen) (Alleen de #MaxNbOfRefererShown# meest gebruikte externe pagina's zijn getoond. -Links gebruikt door de resultaten van zoekmachines worden hiet niet getoond omdat deze al zijn opgenomen in de vorige regel van deze tabel. -
    -
    -Deze tabel toont de lijst van keywords die het meest zijn gebruikt om uw site te vindein in Internet zoekmachines. -(Keywords van de #SearchEnginesArray# meest populaire zoekmachines worden door #PROG# herkend, zoals Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Robots (soms Spiders genoemd) zijn automatische bezoekcomputers die door veel zoekmachines worden gebruikt om uw site te scannen om (1) deze te indexeren, (2) statistieken over Internet sites te verzamelen en/of (3) te kijken of site nog steeds on-line is.
    -Dit programma, #PROG#, is in staat maximaal #RobotArray# robots te herkennen
    . -
    - -
    Geen beschrijving voor deze foutmelding.
    -
    De server heeft het verzoek begrepen, maar zal deze later behandelen.
    -
    De server heeft het verzoek verwerkt, maar er is geen document om te verzenden.
    -
    Gedeeltelijke inhoud.
    -
    Het aangevraagde document is verplaatst en is nu op een andere locatie die in het antwoord gegeven is.
    -
    Geen beschrijving voor deze foutmelding.
    -
    "Taalfout", de server begreep het verzoek niet.
    -
    Er is gepoogd een URL waarvoor een usernaam/wachtwoord noodzakelijk is te benaderen.
    Een hoog aantal van deze meldingen kan betekenen dat iemand (zoals een hacker) probeert uw site te kraken, of uw site binnen te komen (pogend een beveiligd onderdeel van uw site te benaderen door verschillende usernamen/wachtwoorden te proberen, bijvoorbeeld).
    -
    Er is gepoogd een URL die is ingesteld om niet benaderbaar te zijn, zelfs met usernaam/wachtwoord te benaderen (bijvoorbeeld, een URL in een directory die niet "doorbladerbaar" is).
    -
    Er is gepoogd een niet bestaande URL te benaderen. Deze fout betekent vaak dat er een ongeldige link in uw site zit of dat een bezoeker een URL foutief heeft ingevoerd.
    -
    De server heeft er te lang over gedaan om een antwoord op een aanvraag te geven. Het kan een CGI script zijn dat zo traag is dat de server hem heeft moeten afbreken of een overbelaste web server.
    -
    Interne fout. Deze error wordt vaak veroorzaakt door een CGI programma dat abnormaal is beeindigd (een core dump, bijvoorbeeld).
    -
    Onbekende actie aangevraagd.
    -
    Melding die door een proxy of gateway HTTP server wordt gegeven als een echte doelserver niet succesvol op de aanvraag van een client antwoordt.
    -
    Interne server fout.
    -
    Gateway time-out.
    -
    HTTP versie niet ondersteund.
    +tt1=Een nieuw bezoek is elke binnenkomende bezoeker (die een pagina bekijkt) die de laatste #VisitTimeOut# mn niet met uw site verbonden was. + +tt2=Aantal client hosts (IP adres) die de site bezochten (en minimaal een pagina bekeken).
    Dit geeft aan hoeveel verschillende fysieke personen de site op een bepaalde dag bezocht hebben. + +tt3=Aantal malen dat een pagina van de site bekeken is (Som voor alle bezoekers voor alle bezoeken).
    Dit onderdeel verschilt van "hits" in het feit dat het alleen HTML pagina's telt, in tegenstelling tot plaatjes en andere bestanden. + +tt4=Aantal malen dat een pagina, plaatje of bestand op de site door iemand is bekeken of gedownload.
    Dit onderdeel is alleen als referentie gegeven, omdat het aantal bekeken "pagina's" voor marketingdoeleinden de voorkeur heeft. + +tt5=Aantal door uw bezoekers gedownloade kibibytes.
    Dit onderdeel geeft de hoeveelheid gedownloade gegevens in alle pagina's, plaatjes en bestanden van uw site, gemeten in KiBs. + +tt13=Dit programma, #PROG#, herkent elke benadering van uw site na een zoekopdracht van de #SearchEnginesArray# meest populaire Internet zoekmachines (zoals Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=Lijst van alle externe pagina's die zijn gebruikt om naar uw site te linken (of deze te benaderen) (Alleen de #MaxNbOfRefererShown# meest gebruikte externe pagina's zijn getoond. Links gebruikt door de resultaten van zoekmachines worden hiet niet getoond omdat deze al zijn opgenomen in de vorige regel van deze tabel. + +tt15=Deze tabel toont de lijst van keywords die het meest zijn gebruikt om uw site te vindein in Internet zoekmachines. (Keywords van de #SearchEnginesArray# meest populaire zoekmachines worden door #PROG# herkend, zoals Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt16=Robots (soms Spiders genoemd) zijn automatische bezoekcomputers die door veel zoekmachines worden gebruikt om uw site te scannen om (1) deze te indexeren, (2) statistieken over Internet sites te verzamelen en/of (3) te kijken of site nog steeds on-line is.
    Dit programma, #PROG#, is in staat maximaal #RobotArray# robots te herkennen. + +tt201= Geen beschrijving voor deze foutmelding. + +tt202= De server heeft het verzoek begrepen, maar zal deze later behandelen. + +tt204= De server heeft het verzoek verwerkt, maar er is geen document om te verzenden. + +tt206= Gedeeltelijke inhoud. + +tt301= Het aangevraagde document is verplaatst en is nu op een andere locatie die in het antwoord gegeven is. + +tt302= Geen beschrijving voor deze foutmelding. + +tt400= "Taalfout", de server begreep het verzoek niet. + +tt401= Er is gepoogd een URL waarvoor een usernaam/wachtwoord noodzakelijk is te benaderen.
    Een hoog aantal van deze meldingen kan betekenen dat iemand (zoals een hacker) probeert uw site te kraken, of uw site binnen te komen (pogend een beveiligd onderdeel van uw site te benaderen door verschillende usernamen/wachtwoorden te proberen, bijvoorbeeld). + +tt403= Er is gepoogd een URL die is ingesteld om niet benaderbaar te zijn, zelfs met usernaam/wachtwoord te benaderen (bijvoorbeeld, een URL in een directory die niet "doorbladerbaar" is). + +tt404= Er is gepoogd een niet bestaande URL te benaderen. Deze fout betekent vaak dat er een ongeldige link in uw site zit of dat een bezoeker een URL foutief heeft ingevoerd. + +tt408= De server heeft er te lang over gedaan om een antwoord op een aanvraag te geven. Het kan een CGI script zijn dat zo traag is dat de server hem heeft moeten afbreken of een overbelaste web server. + +tt500= Interne fout. Deze error wordt vaak veroorzaakt door een CGI programma dat abnormaal is beeindigd (een core dump, bijvoorbeeld). + +tt501= Onbekende actie aangevraagd. + +tt502= Melding die door een proxy of gateway HTTP server wordt gegeven als een echte doelserver niet succesvol op de aanvraag van een client antwoordt. + +tt503= Interne server fout. + +tt504= Gateway time-out. + +tt505= HTTP versie niet ondersteund. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nn.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nn.txt index e9c5936fe..8d7bc2aa7 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nn.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-nn.txt @@ -1,68 +1,61 @@ -
    -Eit nytt besk er ein ny gjest som ikkje har vore tilkopla nettstaden siste #VisitTimeOut# minutt. -
    -
    -Talet p klientvertar (IP-adresser) som har beskt nettstaden, og har sett minst i side).
    -Denne informasjonen gjeld talet p forskjellige personar som har beskt sida. -
    -
    -Talet p gongar ei side p nettstaden har blitt vist.
    -Denne informasjonen skil seg fr treff ved berre telja HTML-sider, og ikkje bilde og andre filer. -
    -
    -Talet p gongar ei side, eit bilde eller ei fil p nettstaden har blitt vist eller lasta ned. -
    -
    -Denne informasjonen viser kor mykje data som har blitt lasta ned totalt (sider, bilde eller andre filer).
    -Einingane er KiB, MiB eller GiB (kibibyte, mebibyte eller gibibyte) -
    -
    -#PROG# kan sj nr eit besk p nettstaden din kjem fr eit sk p dei #SearchEnginesArray# mest populre skjemotorane og emnekatalogane (f.eks. Yahoo, Altavista, Lycos, Google og Kvasir). -
    -
    -Liste over alle eksterne sider som har lenkjer til nettstaden din (berre dei #MaxNbOfRefererShown# mest brukte eksterne sider blir vist). -Lenkjer fr skjemotorar er ikkje tatt med her, d desse allereie er oppfrt i tidlegare i tabellen. -
    -
    -Denne tabellen viser dei mest brukte skjeorda og skjeuttrykka brukt til finna nettstaden i skjemotorar og emnekatalogar. -(Skjeord fr dei #SearchEnginesArray# mest populre skjemotorane og emnekatalogane kan lesast av #PROG#, f.eks. Yahoo, Altavista, Lycos, Google, og Kvasir).
    -Merk at talet p skjeord kan vera hgare enn talet p skjeuttrykk, for nr to eller fleire skjeord blir brukt i same sk, vil kvart ord telja med i oversikta over skjeord. -
    -
    -Robotar blir brukt av mange skjemotorar som beskjer nettstaden din for indeksera og rangera han, samla statistikk om nettstader, og/eller sj om nettstaden framleis er tilgjengeleg.
    -#PROG# kjenner til #RobotArray# robotar. -
    -
    -All tidsrelatert statistikk er basert p tenartida. -
    -
    -Rapporterte tal er gjennomsnittsverdiar (rekna ut fr all data mellom frste og siste besk i analyseperioden) -
    -
    -Rapporterte tal er kumulative summar (rekna ut fr all data mellom frste og siste besk i analyseperioden) -
    -
    -Nokre beskslengder er ukjente fordi dei ikkje kan reknast ut. Hovudgrunnane for dette er:
    -– Besket er ikkje ferdig nr rapportoppdateringa skjer.
    -– Besket starta etter klokka 23:00 p den siste dagen i mnaden. (Tekniske grunnar hindrar AWStats rekna ut beskslengda i desse tilfella.) -
    - -
    Inga beskriving av denne feilen.
    -
    Frespurnaden vart forsttt av tenaren men vil bli prosessert seinare.
    -
    Tenaren har prosessert frespurnaden men har ikkje noko innhald senda.
    -
    Delvis innhald.
    -
    Det frespurte dokumentet er flytta, og finst no p ei anna sida. Brukaren blir auomatisk vidaresendt til den nye adressa.
    -
    Inga beskriving av denne feilen.
    -
    Syntaksfeil. Tenaren forsto ikkje frespurnaden.
    -
    Prvde henta ei side som var passordsikra.
    Mange slike feilmeldingar kan tyda p at nokon prver bryta seg inn p nettstaden din.
    -
    Prvde henta side som er utilgjengeleg (sjlv med passord) (for eksempel ein katalog som er definert som ikkje lesbar).
    -
    Prvde henta ei ikkje-eksisterande side. Denne feilen tyder oftast at det er ei lenkje ein eller annan plass p nettstaden din (eller p ei ekstern side) som ikkje fungerer, og som m oppdaterast.
    -
    Tenaren har brukt for mykje tid p svara p ein frespurnad. Denne feilen gjeld enten eit treigt CGI-skript tenaren mtte avslutta, eller tungt trafikkert tenar.
    -
    Intern feil. Denne feiled kjem ofte av CGI-skript som har blitt avslutta unormalt.
    -
    Ukjent frespurnad.
    -
    Kode returnert av ein HTTP-tenar som fungerer som proxy eller systemport nr ein ekte tenar ikkje svarer p frespurnaden.
    -
    Intern tenarfeil.
    -
    Systemport tidsavbroten.
    -
    Stttar ikkje HTTP-versjonen.
    +tt1=Eit nytt besk er ein ny gjest som ikkje har vore tilkopla nettstaden siste #VisitTimeOut# minutt. + +tt2=Talet p klientvertar (IP-adresser) som har beskt nettstaden, og har sett minst i side).
    Denne informasjonen gjeld talet p forskjellige personar som har beskt sida. + +tt3=Talet p gongar ei side p nettstaden har blitt vist.
    Denne informasjonen skil seg fr treff ved berre telja HTML-sider, og ikkje bilde og andre filer. + +tt4=Talet p gongar ei side, eit bilde eller ei fil p nettstaden har blitt vist eller lasta ned. + +tt5=Denne informasjonen viser kor mykje data som har blitt lasta ned totalt (sider, bilde eller andre filer).
    Einingane er KiB, MiB eller GiB (kibibyte, mebibyte eller gibibyte) + +tt13=#PROG# kan sj nr eit besk p nettstaden din kjem fr eit sk p dei #SearchEnginesArray# mest populre skjemotorane og emnekatalogane (f.eks. Yahoo, Altavista, Lycos, Google og Kvasir). + +tt14=Liste over alle eksterne sider som har lenkjer til nettstaden din (berre dei #MaxNbOfRefererShown# mest brukte eksterne sider blir vist). Lenkjer fr skjemotorar er ikkje tatt med her, d desse allereie er oppfrt i tidlegare i tabellen. + +tt15=Denne tabellen viser dei mest brukte skjeorda og skjeuttrykka brukt til finna nettstaden i skjemotorar og emnekatalogar. (Skjeord fr dei #SearchEnginesArray# mest populre skjemotorane og emnekatalogane kan lesast av #PROG#, f.eks. Yahoo, Altavista, Lycos, Google, og Kvasir).
    Merk at talet p skjeord kan vera hgare enn talet p skjeuttrykk, for nr to eller fleire skjeord blir brukt i same sk, vil kvart ord telja med i oversikta over skjeord. + +tt16=Robotar blir brukt av mange skjemotorar som beskjer nettstaden din for indeksera og rangera han, samla statistikk om nettstader, og/eller sj om nettstaden framleis er tilgjengeleg.
    #PROG# kjenner til #RobotArray# robotar. + +tt17=All tidsrelatert statistikk er basert p tenartida. + +tt18=Rapporterte tal er gjennomsnittsverdiar (rekna ut fr all data mellom frste og siste besk i analyseperioden) + +tt19=Rapporterte tal er kumulative summar (rekna ut fr all data mellom frste og siste besk i analyseperioden) + +tt20=Nokre beskslengder er ukjente fordi dei ikkje kan reknast ut. Hovudgrunnane for dette er:
    – Besket er ikkje ferdig nr rapportoppdateringa skjer.
    – Besket starta etter klokka 23:00 p den siste dagen i mnaden. (Tekniske grunnar hindrar AWStats rekna ut beskslengda i desse tilfella.) + +tt201= Inga beskriving av denne feilen. + +tt202= Frespurnaden vart forsttt av tenaren men vil bli prosessert seinare. + +tt204= Tenaren har prosessert frespurnaden men har ikkje noko innhald senda. + +tt206= Delvis innhald. + +tt301= Det frespurte dokumentet er flytta, og finst no p ei anna sida. Brukaren blir auomatisk vidaresendt til den nye adressa. + +tt302= Inga beskriving av denne feilen. + +tt400= Syntaksfeil. Tenaren forsto ikkje frespurnaden. + +tt401= Prvde henta ei side som var passordsikra.
    Mange slike feilmeldingar kan tyda p at nokon prver bryta seg inn p nettstaden din. + +tt403= Prvde henta side som er utilgjengeleg (sjlv med passord) (for eksempel ein katalog som er definert som ikkje lesbar). + +tt404= Prvde henta ei ikkje-eksisterande side. Denne feilen tyder oftast at det er ei lenkje ein eller annan plass p nettstaden din (eller p ei ekstern side) som ikkje fungerer, og som m oppdaterast. + +tt408= Tenaren har brukt for mykje tid p svara p ein frespurnad. Denne feilen gjeld enten eit treigt CGI-skript tenaren mtte avslutta, eller tungt trafikkert tenar. + +tt500= Intern feil. Denne feiled kjem ofte av CGI-skript som har blitt avslutta unormalt. + +tt501= Ukjent frespurnad. + +tt502= Kode returnert av ein HTTP-tenar som fungerer som proxy eller systemport nr ein ekte tenar ikkje svarer p frespurnaden. + +tt503= Intern tenarfeil. + +tt504= Systemport tidsavbroten. + +tt505= Stttar ikkje HTTP-versjonen. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-pl.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-pl.txt index 62a001db2..d6a658d0b 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-pl.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-pl.txt @@ -1,68 +1,61 @@ -
    -Wizyty kadego nowego gocia, ktry oglda stron i nie czy si z ni przez ostatnie #VisitTimeOut# mn. -
    -
    -Adres numeryczny hosta klienta (tzw. adres IP) odwiedzajcego t stron.
    -Ten numer moe by identyczny dla kilku rnych Internautw ktrzy odwiedzili stron tego samego dnia. -
    -
    -rednia liczba obejrzanych stron przypadajca na jednego Internaut. (Suma goci, wszystkich wizyt).
    -Ten licznik rni si od kolumny z prawej, gdy zlicza on tylko strony html (bez obrazkw i innych plikw). -
    -
    -Liczba wszystkich stron, obrazkw, dwikw, plikw, ktre zostay obejrzane lub cignite przez kogo.
    -Warto jest jedynie orientacyjna, zaleca si spoglda na licznik "strony". -
    -
    -Liczba kilobajtw cignitych przez Internautw.
    -Jest to suma wszystkich cignitych danych (strony html, obrazki, dwiki). -
    -
    -#PROG# rozrnia dostp do stron z zagranicznych wyszukiwarek dziki #SearchEnginesArray# najpopularniejszym przegldarkom internetowym (Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Lista wszystkich stron spoza serwera z ktrych trafiono na ten serwer (wywietlanych jest #MaxNbOfRefererShown# stron z ktrych najczciej si odwoywano. -
    -
    -Ta kolumna pokazuje list najczciej uywanych sw kluczowych, dziki ktrym znaleziono t stron w wyszukiwarkach. -(#PROG# rozrnia zapytania sw kluczowych z #SearchEnginesArray# najpopularniejszych wyszukiwarek, takich jak Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    -Roboty s programami sieciowymi skanujcymi strony w celu zebrania/aktualizacji danych (np. sowa kluczowe do wyszukiwarek), lub sprawdzajcymi czy strona nadal istnieje w sieci.
    -#PROG# rozrnia obecnie #RobotArray# robw. -
    -
    -Wszystkie statystyki bazuj na czasie serwera. -
    -
    -Here, reported data are: average values (calculated from all data between the first and last visit) -
    -
    -Here, reported data are: cumulative sums (calculated from all data between the first and last visit) - -
    -
    -Pewne dugoci wizyt s podane jako nieznae, gdy nie zawsze mog zosta obliczone. Najczciej wynika to z:
    -- Wizyta jeszcze trwaa podczas aktualizacji statystyki,
    -- Wizyta rozpocza si po 23:00 ostatniego dnia miesica (ze wzgldw technicznych #PROG# nie przelicza dugoci takich sesji) -
    - -
    Zlecenie POST zostao zrealizowane pomylnie.
    -
    danie zostao odebrane poprawnie, lecz bdzie pniej zrealizowane przez serwer.
    -
    Serwer przetworzy danie, lecz nie posiada adnych danych do wysania.
    -
    Czciowa zawarto.
    -
    Dokument zosta przeniesiony pod inny adres.
    -
    Dokument zosta czasowo przeniesiony pod inny adres.
    -
    Zlecenie byo bdne, lub niemoliwe do zrealizowania przez serwer.
    Bd powstaje wtedy, kiedy serwer WWW otrzymuje do wykonania instrukcj, ktrej nie rozumie.
    -
    Bd autoryzacji. Strona wymaga podania hasa i loginu - bd pokazuje si wtedy, gdy ktre z tych danych si nie zgadza lub zostay podane niewaciwiwe.
    Jeli liczba ta jest dua, jest to sygna dla webmastera, i kto prbuje zama haso do strony nim zabezpieczonej.
    -
    Bd wystpuje wtedy, gdy katalog/strona do ktrego si odwoywano nie ma ustawionych waciwych praw dostpu, lub prawa te nie pozwalaj na obejrzenie zawartoci katalogu/strony.
    -
    Sprbuj wpisa nie istniejcy adres URL (np. adres tej strony ze skasowan jedn literk). Znaczy to, e posiadasz gdzie na swoich stronach bdny link, lub link odnoszcy si do nieistniejcej strony.
    -
    Przegldarka nie wysaa da do serwera w czasie jego oczekiwania. Moesz powtrzy danie bez jego modyfikacji w czasie pniejszym.
    -
    Bd wewntrzny. Ten bd czsto pojawia si, gdy aplikacja CGI nie zakoczya si normalnie (podobno kady program zawiera przynajmniej jeden bd...:-).
    -
    Serwer nie umoliwia obsugi mechanizmu.
    -
    Serwer jest chwilowo przeciony i nie moe obsuy zlecenia.
    -
    Serwer zdecydowa si przerwa oczekiwanie na inny zasb lub usug, i z tego powodu nie mg obsuy zlecenia.
    -
    Serwer docelowy nie otrzyma odpowiedzi od serwera proxy, lub bramki.
    -
    Nie obsugiwana wesja protokou HTTP.
    +tt1=Wizyty kadego nowego gocia, ktry oglda stron i nie czy si z ni przez ostatnie #VisitTimeOut# mn. + +tt2=Adres numeryczny hosta klienta (tzw. adres IP) odwiedzajcego t stron.
    Ten numer moe by identyczny dla kilku rnych Internautw ktrzy odwiedzili stron tego samego dnia. + +tt3=rednia liczba obejrzanych stron przypadajca na jednego Internaut. (Suma goci, wszystkich wizyt).
    Ten licznik rni si od kolumny z prawej, gdy zlicza on tylko strony html (bez obrazkw i innych plikw). + +tt4=Liczba wszystkich stron, obrazkw, dwikw, plikw, ktre zostay obejrzane lub cignite przez kogo.
    Warto jest jedynie orientacyjna, zaleca si spoglda na licznik "strony". + +tt5=Liczba kilobajtw cignitych przez Internautw.
    Jest to suma wszystkich cignitych danych (strony html, obrazki, dwiki). + +tt13=#PROG# rozrnia dostp do stron z zagranicznych wyszukiwarek dziki #SearchEnginesArray# najpopularniejszym przegldarkom internetowym (Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=Lista wszystkich stron spoza serwera z ktrych trafiono na ten serwer (wywietlanych jest #MaxNbOfRefererShown# stron z ktrych najczciej si odwoywano. + +tt15=Ta kolumna pokazuje list najczciej uywanych sw kluczowych, dziki ktrym znaleziono t stron w wyszukiwarkach. (#PROG# rozrnia zapytania sw kluczowych z #SearchEnginesArray# najpopularniejszych wyszukiwarek, takich jak Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt16=Roboty s programami sieciowymi skanujcymi strony w celu zebrania/aktualizacji danych (np. sowa kluczowe do wyszukiwarek), lub sprawdzajcymi czy strona nadal istnieje w sieci.
    #PROG# rozrnia obecnie #RobotArray# robw. + +tt17=Wszystkie statystyki bazuj na czasie serwera. + +tt18=Here, reported data are: average values (calculated from all data between the first and last visit) + +tt19=Here, reported data are: cumulative sums (calculated from all data between the first and last visit) + +tt20=Pewne dugoci wizyt s podane jako nieznae, gdy nie zawsze mog zosta obliczone. Najczciej wynika to z:
    - Wizyta jeszcze trwaa podczas aktualizacji statystyki,
    - Wizyta rozpocza si po 23:00 ostatniego dnia miesica (ze wzgldw technicznych #PROG# nie przelicza dugoci takich sesji) + +tt201= Zlecenie POST zostao zrealizowane pomylnie. + +tt202= danie zostao odebrane poprawnie, lecz bdzie pniej zrealizowane przez serwer. + +tt204= Serwer przetworzy danie, lecz nie posiada adnych danych do wysania. + +tt206= Czciowa zawarto. + +tt301= Dokument zosta przeniesiony pod inny adres. + +tt302= Dokument zosta czasowo przeniesiony pod inny adres. + +tt400= Zlecenie byo bdne, lub niemoliwe do zrealizowania przez serwer.
    Bd powstaje wtedy, kiedy serwer WWW otrzymuje do wykonania instrukcj, ktrej nie rozumie. + +tt401= Bd autoryzacji. Strona wymaga podania hasa i loginu - bd pokazuje si wtedy, gdy ktre z tych danych si nie zgadza lub zostay podane niewaciwiwe.
    Jeli liczba ta jest dua, jest to sygna dla webmastera, i kto prbuje zama haso do strony nim zabezpieczonej. + +tt403= Bd wystpuje wtedy, gdy katalog/strona do ktrego si odwoywano nie ma ustawionych waciwych praw dostpu, lub prawa te nie pozwalaj na obejrzenie zawartoci katalogu/strony. + +tt404= Sprbuj wpisa nie istniejcy adres URL (np. adres tej strony ze skasowan jedn literk). Znaczy to, e posiadasz gdzie na swoich stronach bdny link, lub link odnoszcy si do nieistniejcej strony. + +tt408= Przegldarka nie wysaa da do serwera w czasie jego oczekiwania. Moesz powtrzy danie bez jego modyfikacji w czasie pniejszym. + +tt500= Bd wewntrzny. Ten bd czsto pojawia si, gdy aplikacja CGI nie zakoczya si normalnie (podobno kady program zawiera przynajmniej jeden bd...:-). + +tt501= Serwer nie umoliwia obsugi mechanizmu. + +tt502= Serwer jest chwilowo przeciony i nie moe obsuy zlecenia. + +tt503= Serwer zdecydowa si przerwa oczekiwanie na inny zasb lub usug, i z tego powodu nie mg obsuy zlecenia. + +tt504= Serwer docelowy nie otrzyma odpowiedzi od serwera proxy, lub bramki. + +tt505= Nie obsugiwana wesja protokou HTTP. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ro.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ro.txt index 8c2d63530..f11a4b689 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ro.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ro.txt @@ -1,86 +1,59 @@ -
    - O noua vizita este definita ca fiind orice acces al unui vizitator - care nu a fost conectat la site in ultimele #VisitTimeOut# mn. -
    -
    -Numarul de masini client (adresa IP) care vin sa viziteze - site-ul (si care au vizionat cel putin o pagina).
    -Aceste date se refera la numarul de persoane fizice diferite - care au ajuns pe site in oricare din zile. -
    -
    - De cate ori o pagina a site-ului este vizionata (suma pentru - toti vizitatorii si toate vizitele).
    Aceasta informatie difera de - "Accesari" deoarece numara doar paginile HTML si nu si imaginile sau alte - tipuri de fisiere. -
    -
    - De cate ori o pagina, imagine, fisier de pe site a fost - vizionata sau descarcata (download) de catre - cineva.
    - Aceasta informatie este furnizata doar ca referinta deoarece pentru - marketing este de multe ori preferat numarul de "pagini" vazute. -
    -
    - Aceasta informatie contine traficul total de date pentru toate - paginile, imaginile si fisierele de pe site.
    - Unitatea de masura este KB, MB sau GB (KiloBytes, MegaBytes sau GigaBytes) -
    -
    - #PROG# recunoaste accesele la site rezultate dintr-o cautare efectuata cu ajutorul a - #SearchEnginesArray# din cele mai cunoscute motoare de cautare si repertoare -(ca Yahoo, Altavista, Lycos, Google, Voila, etc...). -
    -
    - Lista tuturor paginilor externe care au fost punctul de plecare (si de intrare) - in site (sunt listate doar primele #MaxNbOfRefererShown# in ordinea numarului de utilizari). - Intrarile pe site din rezultatul generat de motoarele de cautare sunt excluse aici deoarece - ele au fost deja incluse in precedenta linie a acestui tabel. -
    -
    - Acest tabel contine lista celor mai frecvente cuvinte cheie care au fost - utilizate de motoarele de cautare sau repertoare pentru a gasi acest site. - (Cuvintele cheie folosite de cele mai cunoscute #SearchEnginesArray# - motoare de cautare sau repertoare - Yahoo, Altavista, Lycos, Google, Voila, etc... - - sunt recunoscute de #PROG#). -
    -
    - Robotii sunt programe vizitator automate utilizate de multe motoare de cautare - si care scaneaza situl web pentru a-l indexa si evalua, pentru a colecta statistici - despre siturile web din Internet si/sau pentru a verifica daca situl este online.
    -#PROG# recunoaste #RobotArray# roboti. -
    -
    - Toate statisticile referitoare la timp sunt bazate pe timpul din masina care gazduieste - serverul web. -
    -
    - Aici, datele listate sunt: valori medii (calculate din toate datele intre prima - si ultima vizita) -
    -
    - Aici, datele listate sunt: insumari cumulative (calculate din toate datele intre - prima si ultima vizita) -
    - -
    Nici o descriere pentru aceasta eroare.
    -
    Cererea a fost inteleasa de server dar va fi procesata mai tarziu.
    -
    Serverul a procesat cererea dar nu exista nici un document de trimis.
    -
    Continut partial.
    -
    Documentul cerut a fost mutat si este acum la o alta adresa continuta in raspuns.
    -
    Nici o descriere pentru aceasta eroare.
    -
    Eroare de sintaxa, serverul nu a inteles cererea.
    -
    Incercare de a accesa un URL unde este necesara autentificarea cu user/parola.
    Un numar mare in acest loc poate insemna ca cineva (de exemplu un hacker) incearca sa sparga sau sa intre in site (sperand sa intre intr-o zona securizata incercand de exemplu diferite perechi user/parola).
    -
    Incercare de a accesa un URL care nu a fost configurat sa fie atins, nici macar cu o autentificare user/parola (de exemplu un URL dintr-un director care nu este definit ca accesibil).
    -
    Incercare de a accesa un URL inexistent. Aceasta eroare inseamna adesea ca exista o legatura invalida undeva pe site sau ca un vizitator a tastat gresit un URL.
    -
    Serverul a consumat prea mult timp pentru a raspunde cererii. Aceasta eroare indica adesea un script CGI lent pe care serverul a incercat sa-l aborteze sau un server web extrem de incarcat.
    -
    Eroare interna. Aceasta eroare este deseori cauzata de un program CGI care s-a terminat anormal (de exemplu prin coredump).
    -
    Cerere de actiune necunoscuta.
    -
    Cod returnat de un server HTTP care lucreaza ca un proxy sau gateway in cazul in care un server tinta real nu a raspuns cu succes cererii client.
    -
    Eroare interna server.
    -
    Depasire timp la Gateway.
    -
    Versiune HTTP nesuportata.
    +tt1=O noua vizita este definita ca fiind orice acces al unui vizitator care nu a fost conectat la site in ultimele #VisitTimeOut# mn. +tt2=Numarul de masini client (adresa IP) care vin sa viziteze site-ul (si care au vizionat cel putin o pagina).
    Aceste date se refera la numarul de persoane fizice diferite care au ajuns pe site in oricare din zile. +tt3=De cate ori o pagina a site-ului este vizionata (suma pentru toti vizitatorii si toate vizitele).
    Aceasta informatie difera de "Accesari" deoarece numara doar paginile HTML si nu si imaginile sau alte tipuri de fisiere. + +tt4=De cate ori o pagina, imagine, fisier de pe site a fost vizionata sau descarcata (download) de catre cineva.
    Aceasta informatie este furnizata doar ca referinta deoarece pentru marketing este de multe ori preferat numarul de "pagini" vazute. + +tt5=Aceasta informatie contine traficul total de date pentru toate paginile, imaginile si fisierele de pe site.
    Unitatea de masura este KB, MB sau GB (KiloBytes, MegaBytes sau GigaBytes) + +tt13=#PROG# recunoaste accesele la site rezultate dintr-o cautare efectuata cu ajutorul a #SearchEnginesArray# din cele mai cunoscute motoare de cautare si repertoare (ca Yahoo, Altavista, Lycos, Google, Voila, etc...). + +tt14=Lista tuturor paginilor externe care au fost punctul de plecare (si de intrare) in site (sunt listate doar primele #MaxNbOfRefererShown# in ordinea numarului de utilizari). Intrarile pe site din rezultatul generat de motoarele de cautare sunt excluse aici deoarece ele au fost deja incluse in precedenta linie a acestui tabel. + +tt15=Acest tabel contine lista celor mai frecvente cuvinte cheie care au fost utilizate de motoarele de cautare sau repertoare pentru a gasi acest site. (Cuvintele cheie folosite de cele mai cunoscute #SearchEnginesArray# motoare de cautare sau repertoare - Yahoo, Altavista, Lycos, Google, Voila, etc... - sunt recunoscute de #PROG#). + +tt16=Robotii sunt programe vizitator automate utilizate de multe motoare de cautare si care scaneaza situl web pentru a-l indexa si evalua, pentru a colecta statistici despre siturile web din Internet si/sau pentru a verifica daca situl este online.
    #PROG# recunoaste #RobotArray# roboti. + +tt17=Toate statisticile referitoare la timp sunt bazate pe timpul din masina care gazduieste serverul web. + +tt18=Aici, datele listate sunt: valori medii (calculate din toate datele intre prima si ultima vizita) + +tt19=Aici, datele listate sunt: insumari cumulative (calculate din toate datele intre prima si ultima vizita) + +tt201= Nici o descriere pentru aceasta eroare. + +tt202= Cererea a fost inteleasa de server dar va fi procesata mai tarziu. + +tt204= Serverul a procesat cererea dar nu exista nici un document de trimis. + +tt206= Continut partial. + +tt301= Documentul cerut a fost mutat si este acum la o alta adresa continuta in raspuns. + +tt302= Nici o descriere pentru aceasta eroare. + +tt400= Eroare de sintaxa, serverul nu a inteles cererea. + +tt401= Incercare de a accesa un URL unde este necesara autentificarea cu user/parola.
    Un numar mare in acest loc poate insemna ca cineva (de exemplu un hacker) incearca sa sparga sau sa intre in site (sperand sa intre intr-o zona securizata incercand de exemplu diferite perechi user/parola). + +tt403= Incercare de a accesa un URL care nu a fost configurat sa fie atins, nici macar cu o autentificare user/parola (de exemplu un URL dintr-un director care nu este definit ca accesibil). + +tt404= Incercare de a accesa un URL inexistent. Aceasta eroare inseamna adesea ca exista o legatura invalida undeva pe site sau ca un vizitator a tastat gresit un URL. + +tt408= Serverul a consumat prea mult timp pentru a raspunde cererii. Aceasta eroare indica adesea un script CGI lent pe care serverul a incercat sa-l aborteze sau un server web extrem de incarcat. + +tt500= Eroare interna. Aceasta eroare este deseori cauzata de un program CGI care s-a terminat anormal (de exemplu prin coredump). + +tt501= Cerere de actiune necunoscuta. + +tt502= Cod returnat de un server HTTP care lucreaza ca un proxy sau gateway in cazul in care un server tinta real nu a raspuns cu succes cererii client. + +tt503= Eroare interna server. + +tt504= Depasire timp la Gateway. + +tt505= Versiune HTTP nesuportata. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ru.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ru.txt index b178885b3..009694b34 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ru.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ru.txt @@ -1,53 +1,53 @@ -
    -Новым посетителем считается пришедший посетитель, которого не было на сайте более #VisitTimeOut# минут. -
    -
    -Количество хостов (IP адресов), которые посетили сайт (кто просмотрел как минимум одну страницу).
    -Данная цифра отражает количество различных посетителей, зашедших на сайт в течении одного дня. -
    -
    -Количество просмотренных страниц сайта (сумма всех посетителей).
    -Эти данные отличаются от "хитов", так как здесь учтены только HTML-страницы без учета графики и прочих файлов. -
    -
    -Количество страниц, изображений и файлов сайта, которые были просмотрены или скачаны посетителями.
    -Эти данные приведены только для сравнения, т.к. количество просмотренных "страниц" кораздо важнее для исследования трафика сайта. -
    -
    -Здесь отражен объем всех страниц, изображений и файлов, скачанных с сайта. -
    -
    -#PROG# распознает каждое посещение посетителя после поиска в #SearchEnginesArray# наиболее популярных поисковых серверах и каталогах (таких, как Yahoo, Altavista, Lycos, Google, Yandex, и пр...). -
    -
    -Список всех внешних страниц, на которых была размещена ссылка на данный сайт (показано только #MaxNbOfRefererShown# наиболее популярных внешних страниц). Ссылки с поисковых серверов здесь не отображены. -
    -
    -Здесь указаны наиболее распространенные ключевые слова, использованные для поиска в поисковых машинах и каталогах. -(#PROG# распознает ключевые слова с #SearchEnginesArray# поисковых серверов и каталогов). -
    -
    -Роботы (иногда называемые пауками) - это автоматические компьютерные посетители, используемые многими поисковыми системами для того, чтобы (1) индексировать и ранжировать страницу, (2) собирать статистику по сайтам и/или (3) смотреть, доступна ли до сих пор ваша страница on-line.
    -#PROG# распознает до #RobotArray# роботов. -
    - -
    Для данной ошибки нет описания.
    -
    Данный запрос был понят сервером, но будет обработан позднее.
    -
    Сервер обработал запрос, но не обнаружил данных для отправки посетителю.
    -
    Частичное содержание.
    -
    Документ был перемещен и находится по адресу, находящемуся в ответе.
    -
    Для данной ошибки нет описания.
    -
    Синтаксическая ошибка, сервер не может обработать запрос.
    -
    Попытка доступа к URL где -логин/пароль обязательны.
    Большое количество данных ошибок говорит о том, что некто (например, хакер) пытался проникнуть в закрытую область сайта с помощью перебора различных вариантов логина и пароля.
    -
    Попытка доступа к URL который не был настроен для доступа (даже с указанием логина и пароля) (к примеру, дирректория, которая не была помечена как "browsable").
    -
    Попытка доступа к несуществующему URL. Данная ошибка говорит о неправильном указании ссылки на данном сайте или устаревшей ссылке с внешнего сайта.
    -
    Сервер затратил слишком много времени на подготовку ответа на запрос. Эта ошибка возникает в случает либо медленного CGI скрипта, который сервер завершает, не дождавшись ответа, либо при сильно загруженном сервере.
    -
    Внутренняя ошибка. Такая ошибка появляется после CGI скриптов, которые завершаются с ошибкой.
    -
    Неизвестное требуемое действие.
    -
    Код, возвращенный HTTP сервером, который работает в качестве proxy или шлюза, когда настояший сервер неправильно ответил на запрос клиента
    -
    Внутренняя ошибка сервера.
    -
    Тайм-аут шлюза.
    -
    Данная версия HTTP не поддерживается.
    +tt1=Новым посетителем считается пришедший посетитель, которого не было на сайте более #VisitTimeOut# минут. + +tt2=Количество хостов (IP адресов), которые посетили сайт (кто просмотрел как минимум одну страницу).
    Данная цифра отражает количество различных посетителей, зашедших на сайт в течении одного дня. + +tt3=Количество просмотренных страниц сайта (сумма всех посетителей).
    Эти данные отличаются от "хитов", так как здесь учтены только HTML-страницы без учета графики и прочих файлов. + +tt4=Количество страниц, изображений и файлов сайта, которые были просмотрены или скачаны посетителями.
    Эти данные приведены только для сравнения, т.к. количество просмотренных "страниц" кораздо важнее для исследования трафика сайта. + +tt5=Здесь отражен объем всех страниц, изображений и файлов, скачанных с сайта. + +tt13=#PROG# распознает каждое посещение посетителя после поиска в #SearchEnginesArray# наиболее популярных поисковых серверах и каталогах (таких, как Yahoo, Altavista, Lycos, Google, Yandex, и пр...). + +tt14=Список всех внешних страниц, на которых была размещена ссылка на данный сайт (показано только #MaxNbOfRefererShown# наиболее популярных внешних страниц). Ссылки с поисковых серверов здесь не отображены. + +tt15=Здесь указаны наиболее распространенные ключевые слова, использованные для поиска в поисковых машинах и каталогах. (#PROG# распознает ключевые слова с #SearchEnginesArray# поисковых серверов и каталогов). + +tt16=Роботы (иногда называемые пауками) - это автоматические компьютерные посетители, используемые многими поисковыми системами для того, чтобы (1) индексировать и ранжировать страницу, (2) собирать статистику по сайтам и/или (3) смотреть, доступна ли до сих пор ваша страница on-line.
    #PROG# распознает до #RobotArray# роботов. + +tt201= Для данной ошибки нет описания. + +tt202= Данный запрос был понят сервером, но будет обработан позднее. + +tt204= Сервер обработал запрос, но не обнаружил данных для отправки посетителю. + +tt206= Частичное содержание. + +tt301= Документ был перемещен и находится по адресу, находящемуся в ответе. + +tt302= Для данной ошибки нет описания. + +tt400= Синтаксическая ошибка, сервер не может обработать запрос. + +tt401= Попытка доступа к URL где логин/пароль обязательны.
    Большое количество данных ошибок говорит о том, что некто (например, хакер) пытался проникнуть в закрытую область сайта с помощью перебора различных вариантов логина и пароля. + +tt403= Попытка доступа к URL который не был настроен для доступа (даже с указанием логина и пароля) (к примеру, дирректория, которая не была помечена как "browsable"). + +tt404= Попытка доступа к несуществующему URL. Данная ошибка говорит о неправильном указании ссылки на данном сайте или устаревшей ссылке с внешнего сайта. + +tt408= Сервер затратил слишком много времени на подготовку ответа на запрос. Эта ошибка возникает в случает либо медленного CGI скрипта, который сервер завершает, не дождавшись ответа, либо при сильно загруженном сервере. + +tt500= Внутренняя ошибка. Такая ошибка появляется после CGI скриптов, которые завершаются с ошибкой. + +tt501= Неизвестное требуемое действие. + +tt502= Код, возвращенный HTTP сервером, который работает в качестве proxy или шлюза, когда настояший сервер неправильно ответил на запрос клиента + +tt503= Внутренняя ошибка сервера. + +tt504= Тайм-аут шлюза. + +tt505= Данная версия HTTP не поддерживается. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-se.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-se.txt index e71725cc1..687ea4ed0 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-se.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-se.txt @@ -1,62 +1,58 @@ -
    -Ett nytt besk r en beskare (som tittar p en sida) som inte varit inne p sajten p #VisitTimeOut# minuter. -
    -
    -Antal beskare (IP-adresser) som beskte sajten (och som tittade p minst en sida).
    -Detta vrde anger antalet olika fysiska personer som ntt siten p en dag. -
    -
    -Antal gnger en sida p sajten har beskts (Summa fr alla beskare fr alla besk).
    -Detta vrde skiljer sig frn "trffar" genom att det bara rknar HTML-sidor, ej bilder eller andra filer. -
    -
    -Antal gnger en sida, bild eller fil frn sajten har beskts eller laddats hem av ngon.
    -Detta vrde finns bara med som referens eftersom antalet "sidor" som beskts oftast r bttre att titta p ur marknadsfringssynpunkt. -
    -
    -Detta vrde visar hur mycket data som har laddats hem genom alla sidor, bilder och filer p hela sajten.
    -Enheterna r Kb, Mb or Gb (KiloByte, MegaByte eller GigaByte) -
    -
    -#PROG# knner igen nr beskare hittar din sajt genom en skning i de #SearchEnginesArray# populraste skmotorerna och katalogerna (ssom Yahoo, Altavista, Lycos, Google, Voila, osv...). -
    -
    -En lista p alla externa sidor som lnkar till (och beskare anvnt fr att komma till) din sida (Bara de #MaxNbOfRefererShown# mest anvnda lnkarna visas). -Lnkar i skresultaten frn skmotorerna tas inte med hr eftersom de redan rknats in i fregende rad i tabellen. -
    -
    -Denna tabell visar de vanligaste nyckelorden som anvnts fr att hitta din sajt genom skmotorer och kataloger. -(#PROG# knner igen nyckelord frn de #SearchEnginesArray# vanligaste skmotorerna och katalogerna, ssom Yahoo, Altavista, Lycos, Google, Voila, osv...). -
    -
    -Robotar (kallas ocks Spindlar) r automatiska datoriserade beskare som anvnds av mnga skmotorer som sker av din webbsajt fr att indexera och rangordna den, samla statistik fr webbsajter och/eller se om din sajt fortfarande finns kvar.
    -#PROG# knner igen upp till #RobotArray# olika robotar. -
    -
    -All tidsrelaterad statistik baseras p klockan p webbservern. -
    -
    -Hr visas medelvrden (berknade fr alla besk frn det frsta till det sista) -
    -
    -Hr visas ackumulerade summor (berknade fr alla besk frn det frsta till det sista) -
    - -
    Ingen beskrivning finns fr detta fel.
    -
    Servern frstod begran men kommer bearbeta den senare.
    -
    Servern har bearbetat begran men har inte genererat ngot svar.
    -
    Endast en del av innehllet verfrdes.
    -
    Sidan har flyttats och ny adress finns i svaret.
    -
    Ingen beskrivning finns fr detta fel.
    -
    Syntax fel, servern frstod inte begran.
    -
    Ngon frskte komma t en URL dr inloggning krvdes.
    Ett hgt vrde hr skulle kunna innebra att ngon (t.ex. en hacker) frsker bryta sig in i din sajt (t.ex. genom att prva sig fram tills de hittar rtt lsenord).
    -
    Ngon frskte komma t en URL som r instlld s att man inte kommer t den ens med rtt lsenord (till exempel en katalog som r instlld att inte tillta blddring.).
    -
    Ngon frskte n en icke existerande URL. Detta betyder ofta att det finns en felaktig lnk p din sajt eller att ngon stavade fel till en URL.
    -
    Servern har tagit fr lng tid p sig att besvara en begran. Detta beror ofta p ett lngsamt cgi-skript eller att servern r verbelastad.
    -
    Internt fel. Detta fel orsakas ofta av att ett cgi-skript gr fel (t.ex. gr en coredump).
    -
    Oknd begran.
    -
    Felkod som genereras d en HTTP-server som arbetar som proxy eller gatewayt ine fr svar frn den verkliga servern som skulle ha svarat p klientens begran.
    -
    Internt serverfel.
    -
    Timeout i gateway
    -
    HTTP-versionen stds ej.
    +tt1=Ett nytt besk r en beskare (som tittar p en sida) som inte varit inne p sajten p #VisitTimeOut# minuter. + +tt2=Antal beskare (IP-adresser) som beskte sajten (och som tittade p minst en sida).
    Detta vrde anger antalet olika fysiska personer som ntt siten p en dag. + +tt3=Antal gnger en sida p sajten har beskts (Summa fr alla beskare fr alla besk).
    Detta vrde skiljer sig frn "trffar" genom att det bara rknar HTML-sidor, ej bilder eller andra filer. + +tt4=Antal gnger en sida, bild eller fil frn sajten har beskts eller laddats hem av ngon.
    Detta vrde finns bara med som referens eftersom antalet "sidor" som beskts oftast r bttre att titta p ur marknadsfringssynpunkt. + +tt5=Detta vrde visar hur mycket data som har laddats hem genom alla sidor, bilder och filer p hela sajten.
    Enheterna r Kb, Mb or Gb (KiloByte, MegaByte eller GigaByte) + +tt13=#PROG# knner igen nr beskare hittar din sajt genom en skning i de #SearchEnginesArray# populraste skmotorerna och katalogerna (ssom Yahoo, Altavista, Lycos, Google, Voila, osv...). + +tt14=En lista p alla externa sidor som lnkar till (och beskare anvnt fr att komma till) din sida (Bara de #MaxNbOfRefererShown# mest anvnda lnkarna visas). Lnkar i skresultaten frn skmotorerna tas inte med hr eftersom de redan rknats in i fregende rad i tabellen. + +tt15=Denna tabell visar de vanligaste nyckelorden som anvnts fr att hitta din sajt genom skmotorer och kataloger. (#PROG# knner igen nyckelord frn de #SearchEnginesArray# vanligaste skmotorerna och katalogerna, ssom Yahoo, Altavista, Lycos, Google, Voila, osv...). + +tt16=Robotar (kallas ocks Spindlar) r automatiska datoriserade beskare som anvnds av mnga skmotorer som sker av din webbsajt fr att indexera och rangordna den, samla statistik fr webbsajter och/eller se om din sajt fortfarande finns kvar.
    #PROG# knner igen upp till #RobotArray# olika robotar. + +tt17=All tidsrelaterad statistik baseras p klockan p webbservern. + +tt18=Hr visas medelvrden (berknade fr alla besk frn det frsta till det sista) + +tt19=Hr visas ackumulerade summor (berknade fr alla besk frn det frsta till det sista) + +tt201= Ingen beskrivning finns fr detta fel. + +tt202= Servern frstod begran men kommer bearbeta den senare. + +tt204= Servern har bearbetat begran men har inte genererat ngot svar. + +tt206= Endast en del av innehllet verfrdes. + +tt301= Sidan har flyttats och ny adress finns i svaret. + +tt302= Ingen beskrivning finns fr detta fel. + +tt400= Syntax fel, servern frstod inte begran. + +tt401= Ngon frskte komma t en URL dr inloggning krvdes.
    Ett hgt vrde hr skulle kunna innebra att ngon (t.ex. en hacker) frsker bryta sig in i din sajt (t.ex. genom att prva sig fram tills de hittar rtt lsenord). + +tt403= Ngon frskte komma t en URL som r instlld s att man inte kommer t den ens med rtt lsenord (till exempel en katalog som r instlld att inte tillta blddring.). + +tt404= Ngon frskte n en icke existerande URL. Detta betyder ofta att det finns en felaktig lnk p din sajt eller att ngon stavade fel till en URL. + +tt408= Servern har tagit fr lng tid p sig att besvara en begran. Detta beror ofta p ett lngsamt cgi-skript eller att servern r verbelastad. + +tt500= Internt fel. Detta fel orsakas ofta av att ett cgi-skript gr fel (t.ex. gr en coredump). + +tt501= Oknd begran. + +tt502= Felkod som genereras d en HTTP-server som arbetar som proxy eller gatewayt ine fr svar frn den verkliga servern som skulle ha svarat p klientens begran. + +tt503= Internt serverfel. + +tt504= Timeout i gateway + +tt505= HTTP-versionen stds ej. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sk.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sk.txt index 0abf43c3d..351a8254d 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sk.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sk.txt @@ -1,55 +1,54 @@ -
    -Noví návštevníci su definovaní ako ka¾dý prichádzajuci (prehliadajúci si alebo prechádzajúci), kto -sa na stránky nepripojil posledních #VisitTimeOut# min. -
    -
    -Poèet klientov (IP address), ktorí pri¹li na stránky (a ktori si prehliadli aspoò jednu stránku). -Toto èíslo prislucha èíslu roznych fyzických osob, ktori navštívili stránky ktorýkolvek jeden den. -
    -
    -Poèet kolkokrát bola stránka na tomto servery pozreta (Suèet za všetky navštevujucí a ich návštevy). -To se liši od Hitov tak, ¾e su zapoèítane iba stránky (nie obrázky a ostatne...). -
    -
    -Poèet kolkokrát bola stránka, obrázok, subor na tomto servery stiahnuta (Suèet za všetky navštevující a jejich návštevy). -Toto èíslo je uvedene kvoli porovnániu zo Stránkami. -
    -
    -Velkost všetkych stránok, obrázkov a suborov stiahnutych z tohoto serveru. -
    -
    -#PROG# rozpozná prístup na server od vyhladávanie z #SearchEnginesArray# najznámejších internetových vyhledávaèov a zoznamov (ako je Yahoo, Altavista, Lycos, Google, Voila, atd...). -
    -
    -Seznam všech externích stránek (mimo server), které byly pou¾ity jako odkaz na tento server (Je zobrazeno jen #MaxNbOfRefererShown# nejèastìjších). -Odkazy pou¾ité z vyhledávaèù nejsou zaøazeny, nebo» je obsahuje jiný údaj. -
    -
    -Tato tabulka zobrazuje zoznam nejèastejsie zadavaných výrazov, ktoré boly zadávane vo vyhladávaèoch k najdeniu tohoto serveru. -(Výrazy od #SearchEnginesArray# najznámejších vyhladávaèov a zoznamov su #PROG# rozpoznany, ako je Yahoo, Altavista, Lycos, Google, Voila, atd...). -
    -
    -Roboti (niekedy oznaèováni ako pavuci alebo èmuchalové) su poèítaèoví automat. návštevníci pou¾ivaní vela vyhledávajucimi slu¾bami k (1) indexovániu a hodnoteniu, (2) zbieraniu statistik z webov a/alebo (3) k zistsniu, ci stránky stále existuju.
    -#PROG# je schopmy rozpoznat #RobotArray# robotov. -
    - -
    Bolo vytvoreno nové miesto s datami a odeslane.
    -
    Po¾adavka bola rozeznana, ale bude vybaveny neskor.
    -
    Po¾iadavka bola rozeznana, ale nieje co odoslat spet.
    -
    Poziadavka bol zpracovany iba èiastoène.
    -
    Po¾adovaný dokument bol presunuty a adresa bola odoslana.
    -
    Dokument sa doèasne nachádza na inej adrese.
    -
    Syntaktická chyba, chybný po¾iadavok.
    -
    Po¾iadavka neobsahovala ¾iadanu autorizaciu meno/heslo pre vstup na stránku. Ak se vyskytujeèasto,pokuša sa niekdo o prielom-hack.
    -
    Po¾iadavka bola odmietnuta serverom (neprístupne data, neviditelný adresár...).
    -
    Pokus o vstup na neexistujuci stránku alebo soubor.
    -
    Cela po¾iadavka nebola serveru od klienta odoslana v po¾adovanom èase (chyba klienta alebo serveru alebo skriptu).
    -
    Chyba serveru (èasto sa vyskytuje pri chybnom zpracovaní skriptu).
    -
    Po¾iadavku, ktora bola zaslana nieje mo¾no vyriedit, pretoze ho server nevie zpracovat.
    -
    Server prijal chybnu po¾iadavku od iného serveru (proxy nebo brány).
    -
    Chyba serveru, slu¾ba nieje k dispozicii.
    -
    Vypršal èasový interval u proxy serveru alebo brány.
    -
    Nepodporovaná verzia protokolu HTTP.
    +tt1=Noví návštevníci su definovaní ako ka¾dý prichádzajuci (prehliadajúci si alebo prechádzajúci), kto sa na stránky nepripojil posledních #VisitTimeOut# min. + +tt2=Poèet klientov (IP address), ktorí pri¹li na stránky (a ktori si prehliadli aspoò jednu stránku). Toto èíslo prislucha èíslu roznych fyzických osob, ktori navštívili stránky ktorýkolvek jeden den. + +tt3=Poèet kolkokrát bola stránka na tomto servery pozreta (Suèet za všetky navštevujucí a ich návštevy). To se liši od Hitov tak, ¾e su zapoèítane iba stránky (nie obrázky a ostatne...). + +tt4=Poèet kolkokrát bola stránka, obrázok, subor na tomto servery stiahnuta (Suèet za všetky navštevující a jejich návštevy). Toto èíslo je uvedene kvoli porovnániu zo Stránkami. + +tt5=Velkost všetkych stránok, obrázkov a suborov stiahnutych z tohoto serveru. + +tt13=#PROG# rozpozná prístup na server od vyhladávanie z #SearchEnginesArray# najznámejších internetových vyhledávaèov a zoznamov (ako je Yahoo, Altavista, Lycos, Google, Voila, atd...). + +tt14=Seznam všech externích stránek (mimo server), které byly pou¾ity jako odkaz na tento server (Je zobrazeno jen #MaxNbOfRefererShown# nejèastìjších). Odkazy pou¾ité z vyhledávaèù nejsou zaøazeny, nebo» je obsahuje jiný údaj. + +tt15=Tato tabulka zobrazuje zoznam nejèastejsie zadavaných výrazov, ktoré boly zadávane vo vyhladávaèoch k najdeniu tohoto serveru. (Výrazy od #SearchEnginesArray# najznámejších vyhladávaèov a zoznamov su #PROG# rozpoznany, ako je Yahoo, Altavista, Lycos, Google, Voila, atd...). + +tt16=Roboti (niekedy oznaèováni ako pavuci alebo èmuchalové) su poèítaèoví automat. návštevníci pou¾ivaní vela vyhledávajucimi slu¾bami k (1) indexovániu a hodnoteniu, (2) zbieraniu statistik z webov a/alebo (3) k zistsniu, ci stránky stále existuju.
    #PROG# je schopmy rozpoznat #RobotArray# robotov. + +tt201= Bolo vytvoreno nové miesto s datami a odeslane. + +tt202= Po¾adavka bola rozeznana, ale bude vybaveny neskor. + +tt204= Po¾iadavka bola rozeznana, ale nieje co odoslat spet. + +tt206= Poziadavka bol zpracovany iba èiastoène. + +tt301= Po¾adovaný dokument bol presunuty a adresa bola odoslana. + +tt302= Dokument sa doèasne nachádza na inej adrese. + +tt400= Syntaktická chyba, chybný po¾iadavok. + +tt401= Po¾iadavka neobsahovala ¾iadanu autorizaciu meno/heslo pre vstup na stránku. Ak se vyskytujeèasto,pokuša sa niekdo o prielom-hack. + +tt403= Po¾iadavka bola odmietnuta serverom (neprístupne data, neviditelný adresár...). + +tt404= Pokus o vstup na neexistujuci stránku alebo soubor. + +tt408= Cela po¾iadavka nebola serveru od klienta odoslana v po¾adovanom èase (chyba klienta alebo serveru alebo skriptu). + +tt500= Chyba serveru (èasto sa vyskytuje pri chybnom zpracovaní skriptu). + +tt501= Po¾iadavku, ktora bola zaslana nieje mo¾no vyriedit, pretoze ho server nevie zpracovat. + +tt502= Server prijal chybnu po¾iadavku od iného serveru (proxy nebo brány). + +tt503= Chyba serveru, slu¾ba nieje k dispozicii. + +tt504= Vypršal èasový interval u proxy serveru alebo brány. + +tt505= Nepodporovaná verzia protokolu HTTP. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sr.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sr.txt index 4b04dadc3..b0ddad85b 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sr.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-sr.txt @@ -1,72 +1,61 @@ -
    -Нова посета се дефинише као сваки нови посетилац који се није повезао на ваш сајт у току последњих #VisitTimeOut# минута. -
    -
    -Број корисничких рачунара (IP адреса) који су посећивали овај сајт (и видели најмање једну страницу).
    -Овај податак говори о броју физички различитих особа које су посетиле сајт током једног дана. -
    -
    -Колико пута је једна страница сајта била прегледана (укупно за све посетиоце током свих посета).
    -Овај податак се разликује од "погодака" по томе што броји само HTML странице за разлику од слика и других датотека. -
    -
    -Колико пута је једна страница, слика, датотека сајта била прегледана или преузета од стране некога.
    -Овај податак служи само као референца, пошто је број "страница" много кориснији за разне маркетиншке потребе. -
    -
    -Ова информација говори о количини преузетих података за све странице, слике и датотеке у оквиру вашег сајта.
    -Јединице су KB, MB или GB (килобајти, мегабајти или гигабајти). Овај податак је користан како бисте пратили остварени саобраћај у оквиру вашег сајта. -
    -
    -#PROG# препознаје сваки приступ вашем сајту након претраге помоћу #SearchEnginesArray# најпопуларнијих интернет претраживача и директоријума (Yahoo, Altavista, Lycos, Google, Voila, итд...). -
    -
    -Листа свих спољних страница на којима се налази веза коју је корисник употребио да би дошао на вашу страницу (Само #MaxNbOfRefererShown# највећих веза је приказано). -Везе које су резултат претраживања су искључене јер су већ приказане у претходном реду ове табеле. -
    -
    -Ова табела приказује листу кључних речи које се најчешће користе за проналажење вашег сајта помоћу интернет претраживача или директоријума. -(#PROG# Препознаје кључне речи #SearchEnginesArray# највећих претраживача и директоријума, међу којима су и Yahoo, Altavista, Lycos, Google, Voila, итд...). -
    -
    -Роботи су рачунарски програми које користе многи претраживачи како би анализирали вашу страницу и тиме (1) је индексирали и рангирали, (2) прикупили статистике о интернет странама и/или (3) проверили да ли је ваш сајт још увек активан.
    -#PROG# Може препознати до #RobotArray# робота. -
    -
    -Све статистике везане са временом су базиране на времену на серверу. -
    -
    -Приказани подаци овде су: просечне вредности (израчунате на основу свих података између прве и последње посете у анализираном опсегу) -
    -
    -Приказани подаци овде су: кумулативне суме (израчунате на основу свих података између прве и последње посете у анализираном опсегу) -
    -
    -Нека Трајања посета су 'непозната' јер се не могу увек израчунати. Ово су главни разлози за то:
    -- Посета није завршена када је вршено 'ажурирање'.
    -- Посета је почела у последњем сату (након 23:00) последњег дана у месецу (технички разлози спречавају #PROG# да израчуна трајање такве посете) -
    - -
    Нема описа ове грешке.
    -
    Сервер је разумео захтев, али ће га обрадити касније.
    -
    Сервер је обрадио захтев, али нема шта да пошаље кориснику.
    -
    Делимичан садржај (корисник је прекинуо отварање странице).
    -
    Тражени документ је премештен на ново место и нова адреса је дата кориснику (преусмеравање).
    -
    Нема описа ове грешке.
    -
    Синтаксна грешка. Сервер није разумео захтев.
    -
    Корисник је покушао да отвори страну за коју је потребно дати корисничко име и лозинку.
    Велики број под овом ставком може значити да неко покушава провалити на ваш сајт (нпр. испробавајући разне комбинације корисничког имена и лозинке за улазак).
    -
    Корисник је покушао да отвори страну која је подешена да јој се не може приступити, чак ни са корисничким именом и лозинком (нпр. страна унутар директоријума који није дефинисан као приступачан.).
    -
    Корисник је покушао приступити непостојећој страни. Ова грешка обично значи да негде на вашем сајту постоји неисправна веза или да је корисник неисправно унео адресу одређене странице.
    -
    Серверу је требало превише времена да одговори на захтев. Код ове грешке се обично ради о спором CGI скрипту који је сервер морао да прекине, о спорој вези корисника или о екстремном загушењу саобраћаја на серверу.
    -
    Интерна грешка. Ову грешку узрокује CGI програм који садржи неку грешку, па је прекинуо рад.
    -
    Захтевана је непозната акција.
    -
    Овај код враћа HTTP сервер који ради као посредник или пролаз, и то ако стварни сервер не одговори успешно на захтев клијента.
    -
    Интерна грешка на серверу.
    -
    Овај код враћа HTTP сервер који ради као пролаз, и то ако приликом контактирања стварног сервера истекне предвиђено време (gateway timeout).
    -
    Клијент захтева верзију HTTP-а која није подржана.
    +tt1=Нова посета се дефинише као сваки нови посетилац који се није повезао на ваш сајт у току последњих #VisitTimeOut# минута. +tt2=Број корисничких рачунара (IP адреса) који су посећивали овај сајт (и видели најмање једну страницу).
    Овај податак говори о броју физички различитих особа које су посетиле сајт током једног дана. +tt3=Колико пута је једна страница сајта била прегледана (укупно за све посетиоце током свих посета).
    Овај податак се разликује од "погодака" по томе што броји само HTML странице за разлику од слика и других датотека. +tt4=Колико пута је једна страница, слика, датотека сајта била прегледана или преузета од стране некога.
    Овај податак служи само као референца, пошто је број "страница" много кориснији за разне маркетиншке потребе. +tt5=Ова информација говори о количини преузетих података за све странице, слике и датотеке у оквиру вашег сајта.
    Јединице су KB, MB или GB (килобајти, мегабајти или гигабајти). Овај податак је користан како бисте пратили остварени саобраћај у оквиру вашег сајта. + +tt13=#PROG# препознаје сваки приступ вашем сајту након претраге помоћу #SearchEnginesArray# најпопуларнијих интернет претраживача и директоријума (Yahoo, Altavista, Lycos, Google, Voila, итд...). + +tt14=Листа свих спољних страница на којима се налази веза коју је корисник употребио да би дошао на вашу страницу (Само #MaxNbOfRefererShown# највећих веза је приказано). Везе које су резултат претраживања су искључене јер су већ приказане у претходном реду ове табеле. + +tt15=Ова табела приказује листу кључних речи које се најчешће користе за проналажење вашег сајта помоћу интернет претраживача или директоријума. (#PROG# Препознаје кључне речи #SearchEnginesArray# највећих претраживача и директоријума, међу којима су и Yahoo, Altavista, Lycos, Google, Voila, итд...). + +tt16=Роботи су рачунарски програми које користе многи претраживачи како би анализирали вашу страницу и тиме (1) је индексирали и рангирали, (2) прикупили статистике о интернет странама и/или (3) проверили да ли је ваш сајт још увек активан.
    #PROG# Може препознати до #RobotArray# робота. + +tt17=Све статистике везане са временом су базиране на времену на серверу. + +tt18=Приказани подаци овде су: просечне вредности (израчунате на основу свих података између прве и последње посете у анализираном опсегу) + +tt19=Приказани подаци овде су: кумулативне суме (израчунате на основу свих података између прве и последње посете у анализираном опсегу) + +tt20=Нека Трајања посета су 'непозната' јер се не могу увек израчунати. Ово су главни разлози за то:
    - Посета није завршена када је вршено 'ажурирање'.
    - Посета је почела у последњем сату (након 23:00) последњег дана у месецу (технички разлози спречавају #PROG# да израчуна трајање такве посете) + +tt201= Нема описа ове грешке. + +tt202= Сервер је разумео захтев, али ће га обрадити касније. + +tt204= Сервер је обрадио захтев, али нема шта да пошаље кориснику. + +tt206= Делимичан садржај (корисник је прекинуо отварање странице). + +tt301= Тражени документ је премештен на ново место и нова адреса је дата кориснику (преусмеравање). + +tt302= Нема описа ове грешке. + +tt400= Синтаксна грешка. Сервер није разумео захтев. + +tt401= Корисник је покушао да отвори страну за коју је потребно дати корисничко име и лозинку.
    Велики број под овом ставком може значити да неко покушава провалити на ваш сајт (нпр. испробавајући разне комбинације корисничког имена и лозинке за улазак). + +tt403= Корисник је покушао да отвори страну која је подешена да јој се не може приступити, чак ни са корисничким именом и лозинком (нпр. страна унутар директоријума који није дефинисан као приступачан.). + +tt404= Корисник је покушао приступити непостојећој страни. Ова грешка обично значи да негде на вашем сајту постоји неисправна веза или да је корисник неисправно унео адресу одређене странице. + +tt408= Серверу је требало превише времена да одговори на захтев. Код ове грешке се обично ради о спором CGI скрипту који је сервер морао да прекине, о спорој вези корисника или о екстремном загушењу саобраћаја на серверу. + +tt500= Интерна грешка. Ову грешку узрокује CGI програм који садржи неку грешку, па је прекинуо рад. + +tt501= Захтевана је непозната акција. + +tt502= Овај код враћа HTTP сервер који ради као посредник или пролаз, и то ако стварни сервер не одговори успешно на захтев клијента. + +tt503= Интерна грешка на серверу. + +tt504= Овај код враћа HTTP сервер који ради као пролаз, и то ако приликом контактирања стварног сервера истекне предвиђено време (gateway timeout). + +tt505= Клијент захтева верзију HTTP-а која није подржана. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tr.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tr.txt index 4ea944cc0..492437ed4 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tr.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tr.txt @@ -1,53 +1,52 @@ -
    -Yeni ziyareti, gemi #VisitTimeOut# dakika iinde sitenize balanmam ve o anda sitenize bakan kullancdr. -
    -
    -Sitenizi ziyaret eden ve en az bir sayfa gren bilgisayar (IP adresi) says. -Bu say sitenizi bir gn iinde ziyaret eden farkl kiileri temsil eder. -
    -
    -Sitedeki bir sayfann ka kere grld (Tm ziyaretilerin tm ziyatlerinin toplam). -Bu say "hits" saysndan farkldr: sadece HTML dosyalar saylr, resim ve dier dosyalar saylmaz. -
    -
    -Sitedeki sayfa, resim, ve dosyalarn biri tarafndan ka kere indirlmi veya grlm olmas. -Bu bilgi kaynak olarak verilmitir. Genelde pazarlama alannda grntlenen sayfa says tercih edilir. -
    -
    -Bu say sitenizden tm resimler, sayfalar ve dosyalar dahil indirilen toplam bilgi miktarn belirtir. -
    -
    -#PROG# sitenize en popler #SearchEnginesArray# nternet dizini ve arama motorundan gelen eriimleri anlar. -
    -
    -Sitenize balant veren (ve giri yapmak iin kullanlan) d sayfalar (Sadece en ok kullanlan #MaxNbOfRefererShown# d sayfa gsterilmitir.) -Arama motorlar tarafndan kullanlan arama sonular bu listeye dahil de idir, nk bu tabloda bir st satrda bu bilgi verilmitir. -
    -
    -Bu tablo sitenizi nternet dizinlerinden ve arama motorlarndan bulmak iin en ok kullanlan anahtar szckleri gsterir. -(#PROG# en popler #SearchEnginesArray# nternet dizini ve arama motorundan kullanlan anahtar szckleri gsterir. -
    -
    -Robotlar (baska bir deyile rmcekler) sitenizi (1) dizinlemek ve sralamak, (2) istatistik toplamak, ve/veya (3) sitenizin iler durumda olduunu kontol etmek amacyla tarayan otomatik bilgisayar programlardr. -#PROG# #RobotArray#adet robotu tanr. -
    - -
    Bu hatann aklamas yok.
    -
    Sunucu isteinizi anlad fakat daha sonra ilem grecek.
    -
    Sunucu isteinizi yerine getirdi fakat yollanacak dosya yok.
    -
    Ksmi ierik.
    -
    stenilen belge cevapta verilen baka bir adrese tanmtr.
    -
    Bu hatann aklamas yok.
    -
    Szdizimi hatas, sunucu isteinizi anlamad.
    -
    Kulannc ad ve ifre gerektiren bir URLe ulald.
    Burada yksek bir say bir korsann sitenize girmeye altn belirtebilir.
    -
    ifre kullanarak bile ulalmas yasaklanm bir URL (rnen, "baklabilir" olarak tannlanmam bir klasr.).
    -
    Varolmayan bir URLLe ulamaya alld. Bu hata genellikle sitenizin bir yerinde geersiz bir balant olduunu veya ziyaretinin URLi yanl yazmasndan kaynaklanr.
    -
    Sunucu ileme cevap vermek iin ok fazla zaman harcad. Bu genellikle yava bir CGI programnn kalabalk bir veb sunucusunda durdurulmasndan kaynaklanr.
    -
    Dahiki hata. Bu hata genellikle bir CGI programnn beklenmeyen bir ekilde sonulanmas (ekirdek bellek dkm) ile oluur.
    -
    stenilen ilem bilinmiyor.
    -
    Ulalmaya allan sunucu cevap vermeyince a geidi olarak ileyen bir HTTP sunucunun belirttii hata.
    -
    Dahili sunucu hatas.
    -
    A geidi zaman am.
    -
    HTTPnin bu srm desteklenmiyor.
    +tt1=Yeni ziyareti, gemi #VisitTimeOut# dakika iinde sitenize balanmam ve o anda sitenize bakan kullancdr. +tt2=Sitenizi ziyaret eden ve en az bir sayfa gren bilgisayar (IP adresi) says. Bu say sitenizi bir gn iinde ziyaret eden farkl kiileri temsil eder. + +tt3=Sitedeki bir sayfann ka kere grld (Tm ziyaretilerin tm ziyatlerinin toplam). Bu say "hits" saysndan farkldr: sadece HTML dosyalar saylr, resim ve dier dosyalar saylmaz. + +tt4=Sitedeki sayfa, resim, ve dosyalarn biri tarafndan ka kere indirlmi veya grlm olmas. Bu bilgi kaynak olarak verilmitir. Genelde pazarlama alannda grntlenen sayfa says tercih edilir. + +tt5=Bu say sitenizden tm resimler, sayfalar ve dosyalar dahil indirilen toplam bilgi miktarn belirtir. + +tt13=#PROG# sitenize en popler #SearchEnginesArray# nternet dizini ve arama motorundan gelen eriimleri anlar. + +tt14=Sitenize balant veren (ve giri yapmak iin kullanlan) d sayfalar (Sadece en ok kullanlan #MaxNbOfRefererShown# d sayfa gsterilmitir.) Arama motorlar tarafndan kullanlan arama sonular bu listeye dahil de idir, nk bu tabloda bir st satrda bu bilgi verilmitir. + +tt15=Bu tablo sitenizi nternet dizinlerinden ve arama motorlarndan bulmak iin en ok kullanlan anahtar szckleri gsterir. (#PROG# en popler #SearchEnginesArray# nternet dizini ve arama motorundan kullanlan anahtar szckleri gsterir. + +tt16=Robotlar (baska bir deyile rmcekler) sitenizi (1) dizinlemek ve sralamak, (2) istatistik toplamak, ve/veya (3) sitenizin iler durumda olduunu kontol etmek amacyla tarayan otomatik bilgisayar programlardr. #PROG# #RobotArray#adet robotu tanr. + +tt201= Bu hatann aklamas yok. + +tt202= Sunucu isteinizi anlad fakat daha sonra ilem grecek. + +tt204= Sunucu isteinizi yerine getirdi fakat yollanacak dosya yok. + +tt206= Ksmi ierik. + +tt301= stenilen belge cevapta verilen baka bir adrese tanmtr. + +tt302= Bu hatann aklamas yok. + +tt400= Szdizimi hatas, sunucu isteinizi anlamad. + +tt401= Kulannc ad ve ifre gerektiren bir URLe ulald.
    Burada yksek bir say bir korsann sitenize girmeye altn belirtebilir. + +tt403= ifre kullanarak bile ulalmas yasaklanm bir URL (rnen, "baklabilir" olarak tannlanmam bir klasr.). + +tt404= Varolmayan bir URLLe ulamaya alld. Bu hata genellikle sitenizin bir yerinde geersiz bir balant olduunu veya ziyaretinin URLi yanl yazmasndan kaynaklanr. + +tt408= Sunucu ileme cevap vermek iin ok fazla zaman harcad. Bu genellikle yava bir CGI programnn kalabalk bir veb sunucusunda durdurulmasndan kaynaklanr. + +tt500= Dahiki hata. Bu hata genellikle bir CGI programnn beklenmeyen bir ekilde sonulanmas (ekirdek bellek dkm) ile oluur. + +tt501= stenilen ilem bilinmiyor. + +tt502= Ulalmaya allan sunucu cevap vermeyince a geidi olarak ileyen bir HTTP sunucunun belirttii hata. + +tt503= Dahili sunucu hatas. + +tt504= A geidi zaman am. + +tt505= HTTPnin bu srm desteklenmiyor. diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tw.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tw.txt index 149d41ccf..ec0a2d757 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tw.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-tw.txt @@ -1,48 +1,52 @@ -
    -쬰[`ơAqۦP}sAɶjܤ#VisitTimeOut#~|AO@C -
    -
    -쬰[HơCHqPqsӼƨӭpHơC -
    -
    -쬰Ū`ơCuO(.html)ӼơC -
    -
    -쬰eŪ`ơA]tɡAϤɡAvɵC -
    -
    -쬰eŪ`eqjpA]tɡAϤɡAvɵC -
    -
    -쬰OϥΪ̱qǷjMiJCtη|۰ʤṞ`ϥΪ#SearchEnginesArray#jMC -
    -
    -ܨ䥦䤺esܥCC -tη|CX`se#MaxNbOfRefererShown#Ӻ}C -
    -
    -oӪܨϥΪ̦bjM`ϥΪrӵnJCtη|O̱`ϥΪ#SearchEnginesArray#ӷjMrC -
    -
    -jMC(Robots)|۰ʪMҦeC
    -O`ϥΪ#RobotArray#Ӻ徹MOC -
    - -
    So~Xyz
    -
    AFѨϥΪ̪ݨD
    -
    A|BzϥΪ̪ݨDAOoSǰeX
    -
    -
    Mwg䥦aAӥBHwgMF
    -
    䤣A{bwgbOaF
    -
    yk~AAFѨϥΪ̪ݨD
    -
    ճsܻݿJKX}ӵoͿ~
    -
    ճsܥ}s}ӵoͿ~
    -
    ճsܤsb}ӵoͿ~
    -
    AOӦhɶBzoӻݨD
    -
    AoͿ~A@O CGI {oͰD
    -
    FѻݨD
    -
    A] proxy ӥ^uϥΪ̪ݨD
    -
    AoͿ~
    -
    qThO
    -
    o HTTP S䴩
    +tt1=쬰[`ơAqۦP}sAɶjܤ#VisitTimeOut#~|AO@C + +tt2=쬰[HơCHqPqsӼƨӭpHơC + +tt3=쬰Ū`ơCuO(.html)ӼơC + +tt4=쬰eŪ`ơA]tɡAϤɡAvɵC + +tt5=쬰eŪ`eqjpA]tɡAϤɡAvɵC + +tt13=쬰OϥΪ̱qǷjMiJCtη|۰ʤṞ`ϥΪ#SearchEnginesArray#jMC + +tt14=ܨ䥦䤺esܥCC tη|CX`se#MaxNbOfRefererShown#Ӻ}C + +tt15=oӪܨϥΪ̦bjM`ϥΪrӵnJCtη|O̱`ϥΪ#SearchEnginesArray#ӷjMrC + +tt16=jMC(Robots)|۰ʪMҦeC
    O`ϥΪ#RobotArray#Ӻ徹MOC + +tt201= So~Xyz + +tt202= AFѨϥΪ̪ݨD + +tt204= A|BzϥΪ̪ݨDAOoSǰeX + +tt206= eŪ + +tt301= Mwg䥦aAӥBHwgMF + +tt302= 䤣A{bwgbOaF + +tt400= yk~AAFѨϥΪ̪ݨD + +tt401= ճsܻݿJKX}ӵoͿ~ + +tt403= ճsܥ}s}ӵoͿ~ + +tt404= ճsܤsb}ӵoͿ~ + +tt408= AOӦhɶBzoӻݨD + +tt500= AoͿ~A@O CGI {oͰD + +tt501= FѻݨD + +tt502= A] proxy ӥ^uϥΪ̪ݨD + +tt503= AoͿ~ + +tt504= qThO + +tt505= o HTTP S䴩 diff --git a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ua.txt b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ua.txt index 0a33e0a9c..fd4b37476 100644 --- a/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ua.txt +++ b/wwwroot/cgi-bin/lang/tooltips_w/awstats-tt-ua.txt @@ -1,81 +1,61 @@ -
    - i i, ' ( i i) ii , i ' i ".(#VisitTimeOut#)." . -
    -
    -ii i i (IP-), i ii i i i.
    -i i i, i i i . -
    -
    - ii i i i i ii i i ii.
    -i i ii i ii "" , i HTML-i, i, .. , i. -
    -
    -ii i, i, , i .
    -i i i ii , ii i i ii i. -
    -
    - ' , ii i i, i i. i i (), (), i (). -
    -
    -#PROG# i i #SearchEnginesArray# i i i ( Altavista, Lycos, Google, Voila, AllTheWeb, i.). -
    -
    - ii i, i . ( #MaxNbOfRefererShown# ii i, i iii).
    - i i, i i i. -
    -
    - i i i i , iii i . -( #PROG# i i #SearchEnginesArray# i i i, Altavista, Lycos, Google, Voila, i ..). - ii i i ii (i ii i i), , , . -
    -
    - ( ) — i 'i "iii", i i -
      -
    1. i i ii i
    2. -
    3. ( )
    4. -
    5. , [ ]
    6. -
    - i i #PROG# i i -#RobotArray# i. -
    -
    - , ' , i, - i. -
    -
    - i (i -i , i i i i, i - i) -
    -
    - i (i -i , i i i i, i - i) -
    -
    -i i ii 'i', - . i :
    -- i i, i .
    -- i (i 23:00) i -( ii #PROG# i i). -
    - -
    i .
    -
    i , ii.
    -
    , i ii.
    -
    i.
    -
    , , i i i , iii.
    -
    i .
    -
    , i .
    -
    URL, i' i .
    ii , (, ) i i.
    -
    URL, , i i i i .
    (, URL , Internet.).
    -
    i . , i i i i , ii i URL.
    -
    iii . i i CGI-, i .
    -
    i . i CGI-.
    -
    i i.
    -
    , HTTP-, i , i iii i.
    -
    i .
    -
    - .
    -
    i HTTP i.
    \ No newline at end of file +tt1= i i, ' ( i i) ii , i ' i ".(#VisitTimeOut#)." . + +tt2=ii i i (IP-), i ii i i i.
    i i i, i i i . + +tt3= ii i i i i ii i i ii.
    i i ii i ii "" , i HTML-i, i, .. , i. + +tt4=ii i, i, , i .
    i i i ii , ii i i ii i. + +tt5= ' , ii i i, i i. i i (), (), i (). + +tt13=#PROG# i i #SearchEnginesArray# i i i ( Altavista, Lycos, Google, Voila, AllTheWeb, i.). + +tt14= ii i, i . ( #MaxNbOfRefererShown# ii i, i iii).
    i i, i i i. + +tt15= i i i i , iii i . ( #PROG# i i #SearchEnginesArray# i i i, Altavista, Lycos, Google, Voila, i ..). ii i i ii (i ii i i), , , . + +tt16= ( ) — i 'i "iii", i i
    1. i i ii i
    2. ( )
    3. , [ ]
    i i #PROG# i i #RobotArray# i. + +tt17= , ' , i, i. + +tt18= i (i i , i i i i, i i) + +tt19= i (i i , i i i i, i i) + +tt20=i i ii 'i', . i :
    - i i, i .
    - i (i 23:00) i ( ii #PROG# i i). + +tt201= i . + +tt202= i , ii. + +tt204= , i ii. + +tt206= i. + +tt301=, , i i i , iii. + +tt302= i . + +tt400= , i . + +tt401= URL, i' i .
    ii , (, ) i i. + +tt403= URL, , i i i i .
    (, URL , Internet.). + +tt404= i . , i i i i , ii i URL. + +tt408= iii . i i CGI-, i . + +tt500=i . i CGI-. + +tt501= i i. + +tt502=, HTTP-, i , i iii i. + +tt503=i . + +tt504=- . + +tt505=i HTTP i. diff --git a/wwwroot/cgi-bin/plugins/tooltips.pm b/wwwroot/cgi-bin/plugins/tooltips.pm index 254d219ce..b2d2c9d1e 100644 --- a/wwwroot/cgi-bin/plugins/tooltips.pm +++ b/wwwroot/cgi-bin/plugins/tooltips.pm @@ -16,26 +16,24 @@ no strict "refs"; - #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. -my $PluginNeedAWStatsVersion="6.1"; -my $PluginHooksFunctions="AddHTMLStyles AddHTMLBodyHeader"; +my $PluginNeedAWStatsVersion="8.0"; +my $PluginHooksFunctions="AddHTMLStyles getTooltip"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ -$TOOLTIPWIDTH +$TOOLTIPLIST /; # -----> - #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- @@ -47,14 +45,13 @@ sub Init_tooltips { # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS debug(" Plugin tooltips: InitParams=$InitParams",1); $TOOLTIPON=1; - $TOOLTIPWIDTH=380; # Width of tooltips + $TOOLTIPLIST = &_ReadAndOutputTooltipFile($Lang); # -----> return ($checkversion?$checkversion:"$PluginHooksFunctions"); } - #----------------------------------------------------------------------------- # PLUGIN FUNCTION: AddHTMLStyles_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) @@ -62,97 +59,23 @@ sub Init_tooltips { #----------------------------------------------------------------------------- sub AddHTMLStyles_tooltips { # <----- - print "div { font: 12px 'Arial','Verdana','Helvetica', sans-serif; text-align: justify; }\n"; - print ".CTooltip { position:absolute; top: 0px; left: 0px; z-index: 2; width: ${TOOLTIPWIDTH}px; visibility:hidden; font: 8pt 'MS Comic Sans','Arial',sans-serif; background-color: #FFFFE6; padding: 8px; border: 1px solid black; }\n"; - return 1; + return '.CTooltip { position:absolute; top: 0px; left: 0px; z-index: 2; width: ${TOOLTIPWIDTH}px; visibility:hidden; background-color: #FFFFE6; padding: 8px; border: 1px solid black; }'; # -----> } #----------------------------------------------------------------------------- -# PLUGIN FUNCTION: AddHTMLBodyHeader_pluginname +# PLUGIN FUNCTION: AddHTMLJavascript_pluginname # UNIQUE: NO (Several plugins using this function can be loaded) -# Function called to Add HTML code at beginning of BODY section. +# Function called to Add Javascript at beginning of BODY section. #----------------------------------------------------------------------------- -sub AddHTMLBodyHeader_tooltips { +sub getTooltip_tooltips { # <----- - if ($FrameName ne 'mainleft') { - - # GET AND WRITE THE TOOLTIP STRINGS - #--------------------------------------------------------------------- - &_ReadAndOutputTooltipFile($Lang); - - # WRITE TOOLTIPS JAVASCRIPT CODE - #--------------------------------------------------------------------- - # Position .style.pixelLeft/.pixelHeight/.pixelWidth/.pixelTop IE OK Opera OK - # .style.left/.height/.width/.top IE456 OK Netscape67 OK XHTML OK - # document.getElementById IE456 OK Opera OK Netscape67 OK XHTML OK - # document.body.offsetWidth|document.body.style.pixelWidth IE OK Opera OK Netscape OK XHTML KO Visible width of container - # document.documentElement.offsetWidth XHTML OK Visible width of container - # tooltipOBJ.offsetWidth|tooltipOBJ.style.pixelWidth IE OK Opera OK Netscape OK Width of an object - # event.clientXY IE OK Opera OK Netscape KO XHTML KO Position of mouse - # window.innerHeight IE OK Netscape OK Height of container - - # window.pageYOffset ? - # document.body.scrollTop IE OK Opera OK Netscape OK XHTML KO Vertical position of scrollbar - - my $docwidth="document.body.offsetWidth"; - my $doctop="document.body.scrollTop"; - if ($BuildReportFormat eq 'xhtml' || $BuildReportFormat eq 'xml') { - $docwidth="document.documentElement.offsetWidth"; - $doctop="document.documentElement.scrollTop"; - } - - print < -function ShowTip(fArg) -{ - var tooltipOBJ = (document.getElementById) ? document.getElementById('tt' + fArg) : eval("document.all['tt" + fArg + "']"); - if (tooltipOBJ != null) { - var tooltipLft = ($docwidth?$docwidth:document.body.style.pixelWidth) - (tooltipOBJ.offsetWidth?tooltipOBJ.offsetWidth:(tooltipOBJ.style.pixelWidth?tooltipOBJ.style.pixelWidth:$TOOLTIPWIDTH)) - 30; - var tooltipTop = 10; - if (navigator.appName == 'Netscape') { - tooltipTop = ($doctop>=0?$doctop+10:event.clientY+10); - tooltipOBJ.style.top = tooltipTop+"px"; - tooltipOBJ.style.left = tooltipLft+"px"; - } - else { - tooltipTop = ($doctop>=0?$doctop+10:event.clientY+10); - tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10); -EOF - # Seul IE en HTML a besoin de code suppl�mentaire. IE en xhtml est OK - if ($BuildReportFormat ne 'xhtml' && $BuildReportFormat ne 'xml') { -print < tooltipLft) && (event.clientY < (tooltipOBJ.scrollHeight?tooltipOBJ.scrollHeight:tooltipOBJ.style.pixelHeight) + 10)) { - tooltipTop = ($doctop?$doctop:document.body.offsetTop) + event.clientY + 20; - } -EOF - } -print < - -EOF - - } - return 1; + my $tooltipnb = shift; + return $TOOLTIPLIST{'tt' . $tooltipnb}; # -----> } - #------------------------------------------------------------------------------ # Function: Get the tooltip texts for a specified language and write it # Parameters: LanguageId @@ -169,6 +92,7 @@ sub _ReadAndOutputTooltipFile { my $FileLang=''; my $logtype=lc($LogType ne 'S'?$LogType:'W'); + foreach my $dir (@PossibleLangDir) { my $searchdir=$dir; if ($searchdir && (!($searchdir =~ /\/$/)) && (!($searchdir =~ /\\$/)) ) { $searchdir .= "/"; } @@ -191,6 +115,7 @@ sub _ReadAndOutputTooltipFile { my $aws_NbOfSearchEngines = scalar keys %SearchEnginesHashLib; while () { if ($_ =~ /\\n"; } @@ -11596,7 +11607,7 @@ sub HTMLShowBrowserDetail{ print '
    ' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -11646,7 +11657,7 @@ sub HTMLShowBrowserUnknown{ print '
    ' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -11869,7 +11880,7 @@ sub HTMLShowOSDetail{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -11919,7 +11930,7 @@ sub HTMLShowOSUnknown{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -12021,7 +12032,7 @@ sub HTMLShowReferers{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -12162,7 +12173,7 @@ sub HTMLShowRefererPages{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -12233,7 +12244,7 @@ sub HTMLShowKeyPhrases{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -12301,7 +12312,7 @@ sub HTMLShowKeywords{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -12370,7 +12381,7 @@ sub HTMLShowErrorCodes{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -12534,7 +12545,7 @@ sub HTMLShowExtraSections{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } } } @@ -12651,7 +12662,7 @@ sub HTMLShowRobots{ print '' . &tab_end("* $Message[156]" . ( $TotalRRobots ? " $Message[157]" : "" ) ); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -12893,7 +12904,7 @@ sub HTMLShowURLDetail{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -13005,7 +13016,7 @@ sub HTMLShowLogins{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -13106,7 +13117,7 @@ sub HTMLShowHostsUnknown{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -13280,7 +13291,7 @@ sub HTMLShowHosts{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -13460,7 +13471,7 @@ sub HTMLShowDomains{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -13522,7 +13533,7 @@ sub HTMLShowDownloads{ print '' . &tab_end(); - &html_end(1); + print &html_end(1); } #------------------------------------------------------------------------------ @@ -17582,7 +17593,7 @@ sub HTMLMainExtra{ my $function = "BuildFullHTMLOutput_$PluginMode"; &$function(); if ( $? || $@ ) { error("$@"); } - &html_end(0); + print &html_end(0); exit 0; } @@ -17736,7 +17747,7 @@ sub HTMLMainExtra{ if ($EnableLockForUpdate) { &Lock_Update(0); } print "Migration for file '$MigrateStats' successful."; print $ENV{'GATEWAY_INTERFACE'} ? "
    \n" : "\n"; - &html_end(1); + print &html_end(1); exit 0; } @@ -17765,7 +17776,7 @@ sub HTMLMainExtra{ print "to see your reports.
    \n"; print "\n"; print "\n"; - &html_end(0); + print &html_end(0); exit 0; } @@ -21074,7 +21085,7 @@ sub HTMLMainExtra{ # Exit if left frame if ( $FrameName eq 'mainleft' ) { - &html_end(0); + print &html_end(0); exit 0; } @@ -21108,11 +21119,11 @@ sub HTMLMainExtra{ } if ( $HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'} ) { &HTMLShowEmailSendersChart( $NewLinkParams, $NewLinkTarget ); - &html_end(1); + print &html_end(1); } if ( $HTMLOutput{'allemailr'} || $HTMLOutput{'lastemailr'} ) { &HTMLShowEmailReceiversChart( $NewLinkParams, $NewLinkTarget ); - &html_end(1); + print &html_end(1); } if ( $HTMLOutput{'alllogins'} || $HTMLOutput{'lastlogins'} ) { &HTMLShowLogins(); @@ -21166,7 +21177,7 @@ sub HTMLMainExtra{ if ( $HTMLOutput{'info'} ) { # TODO Not yet available print " "; - &html_end(1); + print &html_end(1); } # Print any plugins that have individual pages @@ -21178,7 +21189,7 @@ sub HTMLMainExtra{ print " "; my $function = "AddHTMLGraph_$pluginname"; &$function(); - &html_end(1); + print &html_end(1); } } @@ -21267,16 +21278,7 @@ sub HTMLMainExtra{ } print '
    '; - - print '
    '; - - # BY COUNTRY/DOMAIN - #--------------------------- - if ($ShowDomainsStats) { - print &HTMLMainCountries($NewLinkParams, $NewLinkTarget); - } - - print '
    '; + print '
    '; # BY HOST/VISITOR #-------------------------- @@ -21284,24 +21286,29 @@ sub HTMLMainExtra{ &HTMLMainHosts($NewLinkParams, $NewLinkTarget); } - # BY SENDER EMAIL +print '
    '; + # BY SESSION #---------------------------- - if ($ShowEMailSenders) { - &HTMLShowEmailSendersChart( $NewLinkParams, $NewLinkTarget ); + if ($ShowSessionsStats) { + print &HTMLMainSessions(); } - # BY RECEIVER EMAIL + # BY SCREEN SIZE #---------------------------- - if ($ShowEMailReceivers) { - &HTMLShowEmailReceiversChart( $NewLinkParams, $NewLinkTarget ); + if ($ShowScreenSizeStats) { + print &HTMLMainScreenSize(); } +print '
    '; + print '
    '; - # BY LOGIN - #---------------------------- - if ($ShowAuthenticatedUsers) { - &HTMLMainLogins($NewLinkParams, $NewLinkTarget); + # BY COUNTRY/DOMAIN + #--------------------------- + if ($ShowDomainsStats) { + print &HTMLMainCountries($NewLinkParams, $NewLinkTarget); } + print '
    '; + # BY ROBOTS #---------------------------- if ($ShowRobotsStats) { @@ -21314,10 +21321,24 @@ sub HTMLMainExtra{ print &HTMLMainWorms(); } - # BY SESSION + print '
    '; + + # BY SENDER EMAIL #---------------------------- - if ($ShowSessionsStats) { - print &HTMLMainSessions(); + if ($ShowEMailSenders) { + &HTMLShowEmailSendersChart( $NewLinkParams, $NewLinkTarget ); + } + + # BY RECEIVER EMAIL + #---------------------------- + if ($ShowEMailReceivers) { + &HTMLShowEmailReceiversChart( $NewLinkParams, $NewLinkTarget ); + } + + # BY LOGIN + #---------------------------- + if ($ShowAuthenticatedUsers) { + &HTMLMainLogins($NewLinkParams, $NewLinkTarget); } # BY FILE TYPE @@ -21326,6 +21347,12 @@ sub HTMLMainExtra{ print &HTMLMainFileType($NewLinkParams, $NewLinkTarget); } + # BY PAGE + #------------------------- + if ($ShowPagesStats) { + &HTMLMainPages($NewLinkParams, $NewLinkTarget); + } + # BY FILE SIZE #------------------------- if ($ShowFileSizesStats) { @@ -21343,12 +21370,8 @@ sub HTMLMainExtra{ if ($ShowDownloadsStats) { &HTMLMainDownloads($NewLinkParams, $NewLinkTarget); } - - # BY PAGE - #------------------------- - if ($ShowPagesStats) { - &HTMLMainPages($NewLinkParams, $NewLinkTarget); - } + + # BY OS #---------------------------- @@ -21356,18 +21379,14 @@ sub HTMLMainExtra{ &HTMLMainOS($NewLinkParams, $NewLinkTarget); } + + # BY BROWSER #---------------------------- if ($ShowBrowsersStats) { &HTMLMainBrowsers($NewLinkParams, $NewLinkTarget); } - # BY SCREEN SIZE - #---------------------------- - if ($ShowScreenSizeStats) { - print &HTMLMainScreenSize(); - } - # BY REFERENCE #--------------------------- if ($ShowOriginStats) { @@ -21411,7 +21430,7 @@ sub HTMLMainExtra{ } # close the HTML page - &html_end(1); + print &html_end(1); } } else { From 38266f6ec5c16572419d7df65dc84ea183856dd6 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 1 Aug 2024 05:57:28 +0200 Subject: [PATCH 097/152] Fix clock not turning --- wwwroot/cgi-bin/awstats.pl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 9f17c0287..9896273fd 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -1029,7 +1029,8 @@ sub renderCss { .bar{ } .bar-horizontal{ height: 4px } .bar-vertical{ display: inline-block; transition: height 0.5s ease-out; } -.hr-1{ rotate: 30deg } .hr-2{ rotate: 60deg } .hr-3{ rotate: 90deg } .hr-4{ rotate: 120deg } .hr-5{ rotate: 150deg } .hr-6{ rotate: 180deg } .hr-7{ rotate: 210deg } .hr-8{ rotate: 240deg } .hr-9{ rotate: 270deg } .hr-10{ rotate: 300deg } .hr-11{ rotate: 330deg } +.hr-1, .hr-13{ rotate: 30deg } .hr-2, .hr-14{ rotate: 60deg } .hr-3, .hr-15{ rotate: 90deg } .hr-4, .hr-16{ rotate: 120deg } .hr-5, .hr-17{ rotate: 150deg } .hr-6, .hr-18{ rotate: 180deg } +.hr-7, .hr-19{ rotate: 210deg } .hr-8, .hr-20{ rotate: 240deg } .hr-9, .hr-21{ rotate: 270deg } .hr-10, .hr-22{ rotate: 300deg } .hr-11, .hr-23{ rotate: 330deg } #worldmap-wrapper{ margin-bottom: 1dvh; background-color: #4477DD; } #worldmap{ width: 50%; margin: auto; background-color: #4477DD; } .title-map{ position:absolute; top: 16px; color: var(--light-color); } @@ -21286,7 +21287,8 @@ sub HTMLMainExtra{ &HTMLMainHosts($NewLinkParams, $NewLinkTarget); } -print '
    '; + print '
    '; + # BY SESSION #---------------------------- if ($ShowSessionsStats) { @@ -21298,7 +21300,8 @@ sub HTMLMainExtra{ if ($ShowScreenSizeStats) { print &HTMLMainScreenSize(); } -print '
    '; + + print '
    '; print '
    '; # BY COUNTRY/DOMAIN From 0cb3801016fe2287612869fce91a6f1e875e9f01 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 1 Aug 2024 07:56:52 +0200 Subject: [PATCH 098/152] fix ratio columns, move sections --- wwwroot/cgi-bin/awstats.pl | 92 ++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 49 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 9896273fd..a7dd50943 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14019,7 +14019,7 @@ sub HTMLMainRatios{ return &tab_head( $title, '', 'ratios', $tooltip ) . '' - . HTMLDataTableHeader($MonthNumLib{$MonthRequired} . ' ' . $YearRequired, $ShowDaysOfMonthStats) # pass $ShowDaysOfMonthStats to have correct headers + . HTMLDataTableHeader($MonthNumLib{$MonthRequired} . ' ' . $YearRequired, 'VPHB') . '' . $tableData . '
    ' . &tab_end(); } @@ -21279,6 +21279,37 @@ sub HTMLMainExtra{ } print '
    '; + + # BY FILE TYPE + #------------------------- + if ($ShowFileTypesStats) { + print &HTMLMainFileType($NewLinkParams, $NewLinkTarget); + } + + # BY PAGE + #------------------------- + if ($ShowPagesStats) { + &HTMLMainPages($NewLinkParams, $NewLinkTarget); + } + + # BY FILE SIZE + #------------------------- + if ($ShowFileSizesStats) { + &HTMLMainFileSize(); + } + + # BY REQUEST TIME + #------------------------- + if ($ShowRequestTimesStats) { + &HTMLMainRequestTime(); + } + + # BY DOWNLOADS + #------------------------- + if ($ShowDownloadsStats) { + &HTMLMainDownloads($NewLinkParams, $NewLinkTarget); + } + print '
    '; # BY HOST/VISITOR @@ -21287,21 +21318,12 @@ sub HTMLMainExtra{ &HTMLMainHosts($NewLinkParams, $NewLinkTarget); } - print '
    '; - - # BY SESSION - #---------------------------- - if ($ShowSessionsStats) { - print &HTMLMainSessions(); - } - - # BY SCREEN SIZE + # BY MISC #---------------------------- - if ($ShowScreenSizeStats) { - print &HTMLMainScreenSize(); + if ($ShowMiscStats) { + &HTMLMainMisc(); } - print '
    '; print '
    '; # BY COUNTRY/DOMAIN @@ -21344,37 +21366,17 @@ sub HTMLMainExtra{ &HTMLMainLogins($NewLinkParams, $NewLinkTarget); } - # BY FILE TYPE - #------------------------- - if ($ShowFileTypesStats) { - print &HTMLMainFileType($NewLinkParams, $NewLinkTarget); - } - - # BY PAGE - #------------------------- - if ($ShowPagesStats) { - &HTMLMainPages($NewLinkParams, $NewLinkTarget); - } - - # BY FILE SIZE - #------------------------- - if ($ShowFileSizesStats) { - &HTMLMainFileSize(); + # BY SESSION + #---------------------------- + if ($ShowSessionsStats) { + print &HTMLMainSessions(); } - - # BY REQUEST TIME - #------------------------- - if ($ShowRequestTimesStats) { - &HTMLMainRequestTime(); - } - # BY DOWNLOADS - #------------------------- - if ($ShowDownloadsStats) { - &HTMLMainDownloads($NewLinkParams, $NewLinkTarget); + # BY SCREEN SIZE + #---------------------------- + if ($ShowScreenSizeStats) { + print &HTMLMainScreenSize(); } - - # BY OS #---------------------------- @@ -21382,8 +21384,6 @@ sub HTMLMainExtra{ &HTMLMainOS($NewLinkParams, $NewLinkTarget); } - - # BY BROWSER #---------------------------- if ($ShowBrowsersStats) { @@ -21402,12 +21402,6 @@ sub HTMLMainExtra{ &HTMLMainKeys($NewLinkParams, $NewLinkTarget); } - # BY MISC - #---------------------------- - if ($ShowMiscStats) { - &HTMLMainMisc(); - } - # BY HTTP STATUS #---------------------------- if ($ShowHTTPErrorsStats) { From 313a4702526ea63e3765838b697441ef1577392f Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 1 Aug 2024 08:08:14 +0200 Subject: [PATCH 099/152] if no data, don't show ratio --- wwwroot/cgi-bin/awstats.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index a7dd50943..0e8f244ea 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -13977,6 +13977,8 @@ sub HTMLMainRatios{ $total_k += $DayBytes{$date} || 0; } + if($total_h < 1){return ''}; + if ( $ShowRatiosStats =~ /U/i ) { my $ratio_V_U = ($TotalUnique > 0) ? sprintf('%.2f', Format_Number($total_v / $TotalUnique)) : ''; From 27ead3b682e9a71488d829a7247e3aa10baf1d06 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 1 Aug 2024 09:18:09 +0200 Subject: [PATCH 100/152] set font more fluid --- wwwroot/cgi-bin/awstats.pl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 0e8f244ea..bbeb8ea77 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -938,7 +938,7 @@ sub renderCss { --light-color: hsl(1, 0%, 90%); --a-color: hsl(0, 0%, 0%); --a-hover-color: hsl(0, 0%, 0%); - --bar-width: 100; + --bar-width: 120; --bar-v-height: 16; --bar-v-grow: 1; --bar-v-width-month: 0.44dvw; @@ -970,21 +970,21 @@ sub renderCss { } html { scroll-behavior: smooth; scroll-padding: var(--scroll-padding, 5rem); } -body { font: 0.75rem sans-serif, system-ui; background-color: var(--page-bgcolor); margin: 0; padding:0; color: var(--page-color); } +body { font: clamp(0.75rem, -3vw + 3rem, 1rem) sans-serif, system-ui; background-color: var(--page-bgcolor); margin: 0; padding:0; color: var(--page-color); } a, a:link, a:visited { color: var(--a-color); text-decoration: none; } a:hover, a:focus, a:active{ color: var(--a-hover-color); text-decoration: none; } nav a, nav a:link, nav a:visited { color: var(--nav-color) } b { font-weight: 700 } hr { width: 100%; height: 0; margin: 0; color: transparent; border: none; } -small { font-size: 0.7rem; font-weight: 400; } +small { font-size: 0.9em; font-weight: 400; } #container, .flex { gap: 25px; } #container, #container > header, .flex { display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;} #container > header { position: sticky; top: 0; z-index: 100; width: 100%; margin-bottom: -30px; column-gap: 20px; background-color: var(--page-bgcolor); text-align: center; } .column { display:flex;flex-flow:column wrap; row-gap: 10px; } -#domain { font-weight: 900; font-size: 1.5rem } +#domain { font-weight: 900; font-size: 1.5em } header select { width : 60px } #logo { height: 33px; } -nav { width: 100%; height: 17px; margin: 8px 0; margin-top: 0; background-color: white; font-weight: 600 } +nav { width: 100%; height: 2.5ch; margin: 8px 0; margin-top: 0; background-color: white; font-weight: 600 } nav ul { display: flex; justify-content: center; gap: 1dvw; list-style-type: none; margin: 0; padding: 0; overflow: hidden; } nav li a, .dropbtn { display: inline-block; padding: 2px 4px; } li a:hover, .dropdown:hover .dropbtn { background-color: var(--neutral-color); } @@ -1000,9 +1000,9 @@ sub renderCss { #summary-logs div[class^="bg-"], .currentday{ width: calc(var(--bar-width) * 1px); font-weight: 900 } div[class^="bg-"], th[class^="bg-"] { width: calc(var(--bar-width) * 1px) } button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } -h1, section header {border-bottom: 6px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1rem; } +h1, section header {border-bottom: 6px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1em; } section header { position: relative } -.tooltip { visibility: hidden; opacity: 0; position: absolute; bottom: -94px; left: 0; z-index: 10; font-size: 0.7rem; font-weight: 400; text-align: left; width: 100%; background-color: var(--dark-color); color: var(--light-color); padding: 4px; border-radius: 5px; } +.tooltip { visibility: hidden; opacity: 0; position: absolute; bottom: -94px; left: 0; z-index: 10; font-size: 0.9em; font-weight: 400; text-align: left; width: 100%; background-color: var(--dark-color); color: var(--light-color); padding: 4px; border-radius: 5px; } section header:hover .tooltip { visibility: visible; opacity: 1; } .multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ position: relative; } @@ -1020,7 +1020,7 @@ sub renderCss { .data-table td img { width: 16px; height: 16px;vertical-align: bottom; } .data-table td small { float: left; line-height: 1.3; } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } -.data-table-sum { font-size : 1.3em } +.data-table-sum { font-size : clamp(0.938rem, -3vw + 3rem, 1.125rem) } .left-padding-separator { padding-left: 20px } .bar-table { visibility: visible; width: 100%; margin: auto; text-align: center; font-size: 10px; border-bottom: 6px solid var(--light-color);} .bar-table tr:first-child td { vertical-align: bottom; } From f92e8b90606223fa274e0d3738b7e3dde7429510 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 1 Aug 2024 21:39:10 +0200 Subject: [PATCH 101/152] if not worms return nothing --- wwwroot/cgi-bin/awstats.pl | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index bbeb8ea77..c94d2d9c4 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -15322,6 +15322,8 @@ sub HTMLMainRobots{ #------------------------------------------------------------------------------ sub HTMLMainWorms{ if ($Debug) { debug( "ShowWormsStats", 2 ); } + + if(!%_worm_h){return '';} my $tooltip = ''; my $html = ''; @@ -21282,18 +21284,18 @@ sub HTMLMainExtra{ print '

  • '; - # BY FILE TYPE - #------------------------- - if ($ShowFileTypesStats) { - print &HTMLMainFileType($NewLinkParams, $NewLinkTarget); - } - # BY PAGE #------------------------- if ($ShowPagesStats) { &HTMLMainPages($NewLinkParams, $NewLinkTarget); } + # BY FILE TYPE + #------------------------- + if ($ShowFileTypesStats) { + print &HTMLMainFileType($NewLinkParams, $NewLinkTarget); + } + # BY FILE SIZE #------------------------- if ($ShowFileSizesStats) { @@ -21312,6 +21314,7 @@ sub HTMLMainExtra{ &HTMLMainDownloads($NewLinkParams, $NewLinkTarget); } + print '
    '; print '
    '; # BY HOST/VISITOR From 44eeb1137620f8361dae2d0b2561e8629dde1f48 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 1 Aug 2024 22:31:55 +0200 Subject: [PATCH 102/152] Starting HTMLMainPages cleanup Need to alter HTMLShowURLInfo (return instead of prints) to go further. --- wwwroot/cgi-bin/awstats.pl | 50 ++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index c94d2d9c4..b911ef0fd 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -15467,12 +15467,11 @@ sub HTMLMainPages{ my $NewLinkTarget = shift; if ($Debug) {debug("ShowPagesStats (MaxNbOf{'PageShown'}=$MaxNbOf{'PageShown'} TotalDifferentPages=$TotalDifferentPages)", 2);} - my $regext = qr/\.(\w{1,6})$/; - # print "   "; - - my $title = $Message[19] . ' (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')'; + my $regext = qr/\.(\w{1,6})$/; + my $title = $Message[19] . ' (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')'; my $link = XMLEncode($AWScript . ${NewLinkParams}); + my $subtitle = '' . $Message[80] . ''; @@ -15508,41 +15507,38 @@ sub HTMLMainPages{ print &tab_head($title, $subtitle, 'urls', $tooltip); print '' - . ""; - if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { - print ""; - } - if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { - print ""; - } - if ( $ShowPagesStats =~ /B/i ) { - print ""; - } - if ( $ShowPagesStats =~ /E/i ) { - print ""; - } - if ( $ShowPagesStats =~ /X/i ) { - print ""; - } + . ''; + + print (( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) ? '' : ''); + + print (( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) ? '' : ''); + + print (( $ShowPagesStats =~ /B/i ) ? '' : ''); + + print (( $ShowPagesStats =~ /E/i ) ? '' : ''); + + print (( $ShowPagesStats =~ /X/i ) ? '' : ''); # Call to plugins' function ShowPagesAddField - foreach - my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { - # my $function="ShowPagesAddField_$pluginname('title')"; # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; &$function('title'); } - print "\n"; + + print ''; + my $total_p = my $total_e = my $total_x = my $total_k = 0; my $max_p = 1; my $max_k = 1; my $count = 0; - &BuildKeyList( $MaxNbOf{'PageShown'}, $MinHit{'File'}, \%_url_p, - \%_url_p ); - foreach my $key (@keylist) { + + &BuildKeyList( $MaxNbOf{'PageShown'}, $MinHit{'File'}, \%_url_p, \%_url_p ); + + foreach my $key (@keylist) + { if ( $_url_p{$key} > $max_p ) { $max_p = $_url_p{$key}; } if ( $_url_k{$key} / ( $_url_p{$key} || 1 ) > $max_k ) { $max_k = $_url_k{$key} / ( $_url_p{$key} || 1 ); From 9981eaf17d0ce4fadfaecf7e682988d584957aa6 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 1 Aug 2024 22:58:37 +0200 Subject: [PATCH 103/152] Refactor HTMLShowURLInfo don't print return string + code cleaning --- wwwroot/cgi-bin/awstats.pl | 90 ++++++++++++++------------------------ 1 file changed, 33 insertions(+), 57 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index b911ef0fd..db8279af5 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -9326,70 +9326,46 @@ sub HTMLShowHostInfo { } #------------------------------------------------------------------------------ -# Function: Write other url info (with help of plugin) +# Function: Return other url info (with help of plugin) # Parameters: $url # Input: %Aliases $MaxLengthOfShownURL $ShowLinksOnUrl $SiteDomain $UseHTTPSLinkForUrl -# Output: URL link -# Return: None +# Output: - +# Return: string (url link) #------------------------------------------------------------------------------ sub HTMLShowURLInfo { my $url = shift; - my $nompage = CleanXSS($url); + my $newkey = CleanXSS($url); + my $nompage = ( length($newkey) > $MaxLengthOfShownURL ) ? substr( $newkey, 0, $MaxLengthOfShownURL ) . "..." : $newkey; + my $plugins = ''; # Call to plugins' function ShowInfoURL - foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowInfoURL'} } ) { - - # my $function="ShowInfoURL_$pluginname('$url')"; - # eval("$function"); + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowInfoURL'} } ) + { + # my $function="ShowInfoURL_$pluginname('$url')"; + # eval("$function"); my $function = "ShowInfoURL_$pluginname"; - &$function($url); + $plugins .= &$function($url); } - if ( length($nompage) > $MaxLengthOfShownURL ) { - $nompage = substr( $nompage, 0, $MaxLengthOfShownURL ) . "..."; - } - if ($ShowLinksOnUrl) { - my $newkey = CleanXSS($url); - if ( $LogType eq 'W' || $LogType eq 'S' ) { # Web or streaming log file - if ( $newkey =~ /^http(s|):/i ) - { # URL seems to be extracted from a proxy log file - print "" - . XMLEncode($nompage) . ""; - } - elsif ( $newkey =~ /^\// ) - { # URL seems to be an url extracted from a web or wap server log file - $newkey =~ s/^\/$SiteDomain//i; - - # Define urlprot - my $urlprot = 'http'; - if ( $UseHTTPSLinkForUrl && $newkey =~ /^$UseHTTPSLinkForUrl/ ) - { - $urlprot = 'https'; - } - print "" - . XMLEncode($nompage) . ""; - } - else { - print XMLEncode($nompage); - } - } - elsif ( $LogType eq 'F' ) { # Ftp log file - print XMLEncode($nompage); - } - elsif ( $LogType eq 'M' ) { # Smtp log file - print XMLEncode($nompage); + if ( $LogType eq 'W' || $LogType eq 'S' ) + { # Web or streaming log file + if ( $newkey =~ /^http(s|):/i ) + { # URL seems to be extracted from a proxy log file + return $plugins . ' ' . XMLEncode($nompage) . ''; } - else { # Other type log file - print XMLEncode($nompage); + elsif ( $newkey =~ /^\// ) + { # URL seems to be an url extracted from a web or wap server log file + $newkey =~ s/^\/$SiteDomain//i; + + # Define urlprot + my $urlprot = ( $UseHTTPSLinkForUrl && $newkey =~ /^$UseHTTPSLinkForUrl/ ) ? 'https' : 'http'; + + return $plugins . ' ' . XMLEncode($nompage) . ''; } } - else { - print XMLEncode($nompage); - } + + # "Hidden" by config or SMTP/FTP/Othertype log file + return $plugins . ' ' . XMLEncode($nompage); } #------------------------------------------------------------------------------ @@ -12131,7 +12107,7 @@ sub HTMLShowRefererPages{ 10; } print ""; print ""; my $bredde_p = 0; my $bredde_e = 0; @@ -13516,7 +13492,7 @@ sub HTMLShowDownloads{ . " />"; } print ""; if ( $ShowFileTypesStats =~ /H/i ){ print ""; @@ -14885,7 +14861,7 @@ sub HTMLMainDownloads{ . " />"; } print ""; if ( $ShowDownloadsStats =~ /H/i ){ print ""; @@ -15546,7 +15522,7 @@ sub HTMLMainPages{ } foreach my $key (@keylist) { print ""; my $bredde_p = 0; my $bredde_e = 0; @@ -16259,7 +16235,7 @@ sub HTMLMainReferrers{ ); foreach my $key (@keylist) { print ""; print "'; } +#------------------------------------------------------------------------------ +# Function: Return links to the standalone reports +# Parameters: $NewLinkParams, $NewLinkTarget +# Input: string $standalonePage, string $title +# Output: - +# Return: string +#------------------------------------------------------------------------------ +sub HTMLLinkToStandalonePage{ + my $NewLinkParams = shift; + my $NewLinkTarget = shift; + my $standalonePage = shift; + my $title = shift || ''; + + my $link = XMLEncode($AWScript . ${NewLinkParams}); + + return '' . $title . '' +} + #------------------------------------------------------------------------------ # Function: Return " alt=string title=string" # Parameters: string @@ -10024,26 +10042,16 @@ sub HTMLShowEmailSendersChart { # print " "; my $title = $Message[131]; my $subtitle = ''; + my @links = (); if ( !($HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'}) ) { - $subtitle .= "($Message[77] $MaxNbOf{'EMailsShown'})   -   $Message[80]"; - if ( $ShowEMailSenders =~ /L/i ) { - $subtitle .= "   -   $Message[9]"; + $subtitle = '(' . $Message[77] . ' ' . $MaxNbOf{'EMailsShown'} . ')'; + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allemails', $Message[80])); + + if ( $ShowEMailSenders =~ /L/i ) + { + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'lastemails', $Message[9])); } } @@ -10054,7 +10062,7 @@ sub HTMLShowEmailSendersChart { $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'emailsenders', $tooltip ) + print &tab_head($title, $subtitle . ' ' . join( ' - ', @links ), 'emailsenders', $tooltip ) . '
    ".Format_Number($TotalDifferentPages)." $Message[28]$Message[29]$Message[57]$Message[106]$Message[104]$Message[116]
    ' . Format_Number($TotalDifferentPages) . ' ' . $Message[28] .'' . $Message[29] .'' . $Message[57] . '' . $Message[106] . '' . $Message[104] . '' . $Message[116] . ' 
    "; - &HTMLShowURLInfo($key); + print &HTMLShowURLInfo($key); print "" . ( $_pagesrefs_p{$key} ? Format_Number($_pagesrefs_p{$key}) : ' ' ) @@ -12779,7 +12755,7 @@ sub HTMLShowURLDetail{ } foreach my $key (@keylist) { print "
    "; - &HTMLShowURLInfo($key); + print &HTMLShowURLInfo($key); print ""; - &HTMLShowURLInfo($u); + print &HTMLShowURLInfo($u); print "".Format_Number($_downloads{$u}->{'AWSTATS_HITS'}).""; - &HTMLShowURLInfo($u); + print &HTMLShowURLInfo($u); print "".Format_Number($_downloads{$u}->{'AWSTATS_HITS'})."
    "; - &HTMLShowURLInfo($key); + print &HTMLShowURLInfo($key); print "
    - "; - &HTMLShowURLInfo($key); + print &HTMLShowURLInfo($key); print "" . Format_Number(( $_pagesrefs_p{$key} ? $_pagesrefs_p{$key} : '0' )) From fe7bf2e0210eb999b7d381216834084d25ef6c81 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 2 Aug 2024 00:37:04 +0200 Subject: [PATCH 104/152] css : grow on portrait and 2dppx --- wwwroot/cgi-bin/awstats.pl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index db8279af5..d45287cbb 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -970,7 +970,7 @@ sub renderCss { } html { scroll-behavior: smooth; scroll-padding: var(--scroll-padding, 5rem); } -body { font: clamp(0.75rem, -3vw + 3rem, 1rem) sans-serif, system-ui; background-color: var(--page-bgcolor); margin: 0; padding:0; color: var(--page-color); } +body { font-size: clamp(0.75rem, -3vw + 3rem, 0.9rem); font-family: sans-serif, system-ui; background-color: var(--page-bgcolor); margin: 0; padding:0; color: var(--page-color); } a, a:link, a:visited { color: var(--a-color); text-decoration: none; } a:hover, a:focus, a:active{ color: var(--a-hover-color); text-decoration: none; } nav a, nav a:link, nav a:visited { color: var(--nav-color) } @@ -1006,7 +1006,7 @@ sub renderCss { section header:hover .tooltip { visibility: visible; opacity: 1; } .multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ position: relative; } -.data-table { border-spacing: 0 2px; margin: auto; } +.data-table { border-spacing: 0 2px; margin: auto; max-width: 90dvw; } .data-table tfoot { display: table-header-group } .data-table tbody div { opacity: 0.9 } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } @@ -1056,6 +1056,15 @@ sub renderCss { .zoomed-land{ fill: var(--aws-color-v) !important;} .weekend { background-color: var(--light-color) } .data-table-average { background-color: var(--neutral-color) } + +@media (min-resolution: 2dppx) { + body { font-size: clamp(1rem, -3vw + 3rem, 1.4rem) } + + @media (orientation: portrait) { + .data-table { width: 90dvw} + } +} + '; # Call to plugins' function AddHTMLStyles @@ -9353,10 +9362,10 @@ sub HTMLShowURLInfo { { # URL seems to be extracted from a proxy log file return $plugins . ' ' . XMLEncode($nompage) . ''; } - elsif ( $newkey =~ /^\// ) + + if ( $newkey =~ /^\// ) { # URL seems to be an url extracted from a web or wap server log file $newkey =~ s/^\/$SiteDomain//i; - # Define urlprot my $urlprot = ( $UseHTTPSLinkForUrl && $newkey =~ /^$UseHTTPSLinkForUrl/ ) ? 'https' : 'http'; From 85dc6b3d217d9b3ee877cef7d143cdf9dd28bdd1 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 2 Aug 2024 00:46:40 +0200 Subject: [PATCH 105/152] proper filter ShowLinksOnUrl --- wwwroot/cgi-bin/awstats.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index d45287cbb..944239f50 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -9356,7 +9356,7 @@ sub HTMLShowURLInfo { $plugins .= &$function($url); } - if ( $LogType eq 'W' || $LogType eq 'S' ) + if ($ShowLinksOnUrl && ($LogType eq 'W' || $LogType eq 'S')) { # Web or streaming log file if ( $newkey =~ /^http(s|):/i ) { # URL seems to be extracted from a proxy log file From b0c1f2434d5f4b93a8e790398b0597b3545ef06c Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 2 Aug 2024 03:34:54 +0200 Subject: [PATCH 106/152] Refactor "details" page's link build on top of table. --- wwwroot/cgi-bin/awstats.pl | 294 ++++++++++++++++--------------------- 1 file changed, 127 insertions(+), 167 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 944239f50..4db75252b 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -8606,6 +8606,24 @@ sub HTMLDataCellWithBar{ . $formattedData . '
    ' . ""; @@ -10192,43 +10200,33 @@ sub HTMLShowEmailReceiversChart { my $rest_h; my $rest_k; + my $title = $Message[132]; + my $subtitle = ''; + my @links = (); + my $tooltip = ''; + # Show filter form #&ShowFormFilter("emailrfilter",$EmailrFilter); # Show emails list - - # print " "; - my $title = $Message[132]; - my $subtitle = ''; + if ( !($HTMLOutput{'allemailr'} || $HTMLOutput{'lastemailr'}) ) { - $subtitle = "($Message[77] $MaxNbOf{'EMailsShown'})   -   $Message[80]"; - if ( $ShowEMailReceivers =~ /L/i ) { - $subtitle .= "   -   $Message[9]"; + $subtitle = '(' . $Message[77] . ' ' . $MaxNbOf{'EMailsShown'} . ')'; + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allemailr', $Message[80])); + + if ( $ShowEMailReceivers =~ /L/i ) + { + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'lastemailr', $Message[9])); } } - - my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) { my $function = "getTooltip_$pluginname"; $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'emailreceivers', $tooltip ) + print &tab_head($title, $subtitle . join( ' - ', @links ), 'emailreceivers', $tooltip ) . '
    $Message[131] : " . ( scalar keys %_emails_h ) . "
    ' . ""; @@ -11027,7 +11025,7 @@ sub HTMLMainFileType{ my $NewLinkParams = shift; my $NewLinkTarget = shift; my $title = $Message[73]; - my $subtitle = ''; + my @links = (); my $tooltip = ''; my $html = ''; my $Totalh = 0; @@ -11126,9 +11124,9 @@ sub HTMLMainFileType{ if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle .= '' . $Message[179] .''; + . '" ' . $NewLinkTarget . '>' . $Message[179] .''); } foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) @@ -11137,7 +11135,7 @@ sub HTMLMainFileType{ $tooltip .= &$function(19); } - return &tab_head($title, $subtitle, 'filetypes', $tooltip) + return &tab_head($title, join( ' - ', @links ), 'filetypes', $tooltip) . '
    $Message[132] : " . ( scalar keys %_emailr_h ) . "
    ' . HTMLDataTableHeader('', $ShowFileTypesStats) . $html . '
    ' . &tab_end(); @@ -14462,15 +14460,15 @@ sub HTMLMainHours{ if ($Debug) { debug( "ShowHoursStats", 2 ); } my $title = $Message[20]; - my $subtitle = ''; + my @links = (); my $bars = ''; my $tableData = ''; if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle = ' - ' . $Message[179] . ''; + . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } if ( $PluginsLoaded{'GetTimeZoneTitle'}{'timezone'} ) @@ -14594,7 +14592,7 @@ sub HTMLMainHours{ $tableData .= ''; } - return &tab_head( $title, '', 'hours', $tooltip ) . $bars . $tableData . &tab_end(); + return &tab_head( $title, join( ' - ', @links ), 'hours', $tooltip ) . $bars . $tableData . &tab_end(); } #------------------------------------------------------------------------------ @@ -14616,20 +14614,17 @@ sub HTMLMainCountries{ my $count = 0; my $title = $Message[25] . ' (' . $Message[77] . ' ' . $MaxNbOf{'Domain'} . ')'; - - my $link = XMLEncode($AWScript . ${NewLinkParams}); - my $subtitle = ''; + my @links = (); my $map = '
    '; my $tableData = ''; - # my $subtitle = '' . $Message[80] .''; + # push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'alldomains', $Message[80])); - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link - $subtitle .= ' - ' . $Message[179] . ''); } @@ -14765,7 +14760,7 @@ sub HTMLMainCountries{ . ''; } - return &tab_head( $title, $subtitle, 'countries', $tooltip) . $map . $tableData . &tab_end(); + return &tab_head( $title, join( ' - ', @links ), 'countries', $tooltip) . $map . $tableData . &tab_end(); } #------------------------------------------------------------------------------ @@ -14781,25 +14776,21 @@ sub HTMLMainDownloads{ if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowDownloadStats", 2 ); } my $regext = qr/\.(\w{1,6})$/; - # print " "; my $Totalh = 0; if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined - + my @links = (); my $title = $Message[178] . ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')'; - my $link = XMLEncode($AWScript . ${NewLinkParams}); - my $subtitle = '' . $Message[80] . ''; + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'downloads', $Message[80])); if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle .= '' . $Message[179] . ''; + . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } - print &tab_head($title, '', 'downloads'); + print &tab_head($title, join( ' - ', @links ), 'downloads'); my $cnt=0; for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ @@ -14903,21 +14894,16 @@ sub HTMLMainHosts{ if ($Debug) { debug( 'ShowHostsStats', 2 ); } my $title = $Message[81] . ' (' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')'; - - my $link = XMLEncode($AWScript . ${NewLinkParams}); - my $subtitle = - '' - . $Message[80] . ' - ' - . '' - . $Message[9] . ' - ' - . '' - . $Message[45] . ''; - + my @links = (); + + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allhosts', $Message[80])); + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'lasthosts', $Message[9])); + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'unknownip', $Message[45])); + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle .= ' - ' - . '' - . $Message[179] . ''; + push(@links, '' + . $Message[179] . ''); } my $tooltip = ''; @@ -14929,7 +14915,7 @@ sub HTMLMainHosts{ &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); - print &tab_head( $title, $subtitle, 'hosts', $tooltip); + print &tab_head( $title, join( ' - ', @links ), 'hosts', $tooltip); # Graph the top five in a pie chart if (scalar @keylist > 1) @@ -15208,21 +15194,18 @@ sub HTMLMainRobots{ my $title = $Message[53] . ' ('. $Message[77]. ' ' . $MaxNbOf{'RobotShown'} .')'; my $html = ''; - my $total_p = my $total_h = my $total_k = my $total_r = 0; + my @links = (); - my $link = XMLEncode($AWScript . ${NewLinkParams}); - my $subtitle = ' ' . $Message[80] . '' - . ' - ' . $Message[9] . ''; + my $total_p = my $total_h = my $total_k = my $total_r = 0; + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allrobots', $Message[80])); + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'lastrobots', $Message[9])); + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle .= $title . ' - ' . $Message[179] . ''; + . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } my $TotalRRobots = 0; @@ -15286,7 +15269,7 @@ sub HTMLMainRobots{ . ''; } - return &tab_head($title, $subtitle, 'robots', $tooltip, '') + return &tab_head($title, join( ' - ', @links ), 'robots', $tooltip, '') . '' . '' . (( $ShowRobotsStats =~ /H/i ) ? '' : '') @@ -15440,6 +15423,8 @@ sub HTMLMainSessions{ . '
    ' . Format_Number(( scalar keys %_robot_h )) . ' ' . $Message[51] . '' . $Message[57] . '
    ' . &tab_end(); } + + #------------------------------------------------------------------------------ # Function: Prints the pages chart and table # Parameters: $NewLinkParams, $NewLinkTarget @@ -15450,36 +15435,30 @@ sub HTMLMainSessions{ sub HTMLMainPages{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - + if ($Debug) {debug("ShowPagesStats (MaxNbOf{'PageShown'}=$MaxNbOf{'PageShown'} TotalDifferentPages=$TotalDifferentPages)", 2);} my $regext = qr/\.(\w{1,6})$/; my $title = $Message[19] . ' (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')'; - my $link = XMLEncode($AWScript . ${NewLinkParams}); - - my $subtitle = '' . $Message[80] . ''; + my @links = (); + + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'urldetail', $Message[80])); if ( $ShowPagesStats =~ /E/i ) { - $subtitle .= ' - ' . $Message[104] . ''; + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'urlentry', $Message[104])); } if ( $ShowPagesStats =~ /X/i ) { - $subtitle .= ' - $Message[116]"; + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'urlexit', $Message[116])); } - + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle .= ' - ' . $Message[179] . ''; + . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } my $tooltip = ''; @@ -15489,7 +15468,7 @@ sub HTMLMainPages{ $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'urls', $tooltip); + print &tab_head($title, join( ' - ', @links ), 'urls', $tooltip); print '' . ''; @@ -15530,7 +15509,7 @@ sub HTMLMainPages{ } } foreach my $key (@keylist) { - print ""; my $bredde_p = 0; @@ -15696,20 +15675,16 @@ sub HTMLMainOS{ } my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; + my @links = (); - my $link = XMLEncode($AWScript . ${NewLinkParams}); - my $subtitle = ' ' . $Message[80] . '/' . $Message[58] .'' - . ' - ' . $Message[0] . ''; - - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'osdetail', $Message[80] . '/' . $Message[58])); + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'unknownos', $Message[0])); + + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle .= ' - ' . $Message[179] . ''; + . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } my $tooltip = ''; @@ -15719,7 +15694,7 @@ sub HTMLMainOS{ $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'os', $tooltip); + print &tab_head($title, join( ' - ', @links ), 'os', $tooltip); &BuildKeyList( $MaxNbOf{'OsShown'}, $MinHit{'Os'}, \%new_os_h, \%new_os_p ); @@ -15861,21 +15836,17 @@ sub HTMLMainBrowsers{ $new_browser_p{$key} += $_browser_p{$key}; } my $title = $Message[21] . ' (' . $Message[77] . ' ' . $MaxNbOf{'BrowsersShown'} .')'; + my @links = (); - my $link = XMLEncode($AWScript . ${NewLinkParams}); - my $subtitle = '' . $Message[80] . '/' . $Message[58] . '' - . ' - ' . $Message[0] . ''; + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'browserdetail', $Message[80] . '/' . $Message[58])); + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'unknownbrowser', $Message[0])); - if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { - # extend the title to include the added link - $subtitle .= ' - ' . $Message[179] . ''; - } + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) + { # extend the title to include the added link + push(@links, '' . $Message[179] . ''); + } my $tooltip = ''; foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) @@ -15884,7 +15855,7 @@ sub HTMLMainBrowsers{ $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'browsers', $tooltip); + print &tab_head($title, join( ' - ', @links ), 'browsers', $tooltip); &BuildKeyList( $MaxNbOf{'BrowsersShown'}, $MinHit{'Browser'}, @@ -16082,13 +16053,13 @@ sub HTMLMainReferrers{ } my $title = $Message[36]; - my $subtitle = ''; + my @links = (); if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle = '' . $Message[179] . ''; + . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } my $tooltip = ''; @@ -16098,7 +16069,7 @@ sub HTMLMainReferrers{ $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'referer', $tooltip); + print &tab_head($title, join( ' - ', @links ), 'referer', $tooltip); my @p_p = ( 0, 0, 0, 0, 0, 0 ); if ( $Totalp > 0 ) { @@ -16351,8 +16322,7 @@ sub HTMLMainKeys{ # print " "; my $title = ''; - my $subtitle = ''; - + my @links = (); if ($ShowKeyphrasesStats) { @@ -16360,11 +16330,8 @@ sub HTMLMainKeys{ $title = $Message[120] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeyphrasesShown'} . ')'; - my $link = XMLEncode($AWScript . ${NewLinkParams}); - $subtitle = '' . $Message[80] . ''; - + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'keyphrases', $Message[80])); + my $tooltip = ''; foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) { @@ -16372,7 +16339,7 @@ sub HTMLMainKeys{ $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'keyphrases', $tooltip); + print &tab_head($title, join( ' - ', @links ), 'keyphrases', $tooltip); print '
    ' . Format_Number($TotalDifferentPages) . ' ' . $Message[28] .'
    "; + print "
    "; print &HTMLShowURLInfo($key); print "
    ' . "' . $Message[80] . ''; + my @links = (); + + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'keywords', $Message[80])); my $tooltip = ''; foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) @@ -16438,7 +16405,7 @@ sub HTMLMainKeys{ $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'keywords', $tooltip); + print &tab_head($title, join( ' - ', @links ), 'keywords', $tooltip); print '
    ' . " "; my $title = $Message[32]; - my $subtitle = ''; + my @links = (); if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link - $subtitle = '' . $Message[179] . ''; + . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } my $tooltip = ''; @@ -16596,11 +16563,10 @@ sub HTMLMainHTTPStatus{ $tooltip .= &$function(19); } - print &tab_head($title, $subtitle, 'errors', $tooltip, '*' . $Message[154]); + print &tab_head($title, join( ' - ', @links ), 'errors', $tooltip, '*' . $Message[154]); &BuildKeyList( $MaxRowsInHTMLOutput, 1, \%_errors_h, \%_errors_h ); - print '
    '; # Graph the top five in a pie chart @@ -16633,18 +16599,12 @@ sub HTMLMainHTTPStatus{ print "\n"; my $total_h = 0; my $count = 0; - foreach my $key (@keylist) { + foreach my $key (@keylist) + { my $p = int( $_errors_h{$key} / $TotalHitsErrors * 1000 ) / 10; print ""; if ( $TrapInfosForHTTPErrorCodes{$key} ) { - print ""; + print ''; } else { print ""; } print "'; - if ( $ShowMonthStats =~ /U/i ) { - + if ( $ShowMonthStats =~ /U/i ) + { $data = int($MonthUnique{ $YearRequired . $monthix } || 0 ); $bars .= HtmlBar('u', $data, Format_Number($data), $max_u, $Message[11], $width); @@ -13807,8 +13808,8 @@ sub HTMLMainMonthly{ $tableData .= HTMLDataCellWithBar('u', $data, Format_Number($data), $max_u); } - if ( $ShowMonthStats =~ /V/i ) { - + if ( $ShowMonthStats =~ /V/i ) + { $data = int($MonthVisits{ $YearRequired . $monthix } || 0 ); $bars .= HtmlBar('v', $data, Format_Number($data), $max_v, $Message[10], $width); @@ -13816,8 +13817,8 @@ sub HTMLMainMonthly{ $tableData .= HTMLDataCellWithBar('v', $data, Format_Number($data), $max_v); } - if ( $ShowMonthStats =~ /P/i ) { - + if ( $ShowMonthStats =~ /P/i ) + { $data = int($MonthPages{ $YearRequired . $monthix } || 0 ); $bars .= HtmlBar('p', $data, Format_Number($data), $max_p, ucfirst($Message[28]), $width); @@ -13825,8 +13826,8 @@ sub HTMLMainMonthly{ $tableData .= HTMLDataCellWithBar('p', $data, Format_Number($data), $max_p); } - if ( $ShowMonthStats =~ /H/i ) { - + if ( $ShowMonthStats =~ /H/i ) + { $data = int($MonthHits{ $YearRequired . $monthix } || 0 ); $bars .= HtmlBar('h', $data, Format_Number($data), $max_h, $Message[57], $width); @@ -13834,8 +13835,8 @@ sub HTMLMainMonthly{ $tableData .= HTMLDataCellWithBar('h', $data, Format_Number($data), $max_h); } - if ( $ShowMonthStats =~ /B/i ) { - + if ( $ShowMonthStats =~ /B/i ) + { $data = int($MonthBytes{ $YearRequired . $monthix } || 0 ); $bars .= HtmlBar('b', $data, Format_Bytes($data), $max_k, $Message[75], $width); @@ -13855,8 +13856,8 @@ sub HTMLMainMonthly{ $average_k = sprintf( "%.2f", $total_k / $not_empty_months ); # Show bars for month - if ($graphPlugin == 1) { - + if ($graphPlugin == 1) + { foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @valaverage=($average_v,$average_p,$average_h,$average_k); @@ -13870,13 +13871,13 @@ sub HTMLMainMonthly{ \@valaverage, \@valdata ); } - } $html .= '
    $Message[32]*$Message[57]$Message[15]$Message[75]
    $key' . HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'errors', $key) . '$key" From b8adf3c10879f76ddede629a7d36c732db3bed18 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 2 Aug 2024 03:55:02 +0200 Subject: [PATCH 107/152] clean code --- wwwroot/cgi-bin/awstats.pl | 107 +++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 52 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 4db75252b..12884e022 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -13773,7 +13773,8 @@ sub HTMLMainMonthly{ { my $monthix = sprintf( "%02s", $ix ); - if($MonthHits{ $YearRequired . $monthix } > 0){ + if($MonthHits{ $YearRequired . $monthix } > 0) + { $not_empty_months++; } @@ -13798,8 +13799,8 @@ sub HTMLMainMonthly{ . (!$StaticLinks && $monthix == $nowmonth && $YearRequired == $nowyear ? '' : '' ) . '
    ' . '' . $bars . '' . ''; - for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) { + for ( my $ix = 1 ; $ix <= 12 ; $ix++ ) + { my $monthix = sprintf( "%02s", $ix ); $html .= '' . '
    ' @@ -13889,13 +13890,8 @@ sub HTMLMainMonthly{ $html .= '
    '; # Show data array for month - if ($AddDataArrayMonthStats) { - - $html .= ''; - - $html .= HTMLDataTableHeader($YearRequired, $ShowMonthStats); - - # footer + if ($AddDataArrayMonthStats) + { # Total row my (%sums) = ( 'u' => Format_Number($total_u), @@ -13914,7 +13910,9 @@ sub HTMLMainMonthly{ 'b'=> Format_Bytes(int($average_k)) ); - $html .= HTMLDataTableFooter('', $ShowMonthStats, \%sums, $Message[96], \%averages) + $html .= '
    ' + . HTMLDataTableHeader($YearRequired, $ShowMonthStats) + . HTMLDataTableFooter('', $ShowMonthStats, \%sums, $Message[96], \%averages) . '' . $tableData . '' . '
    '; } @@ -14194,7 +14192,6 @@ sub HTMLMainDaily{ \@valaverage, \@valdata ); } - } # Show average value bars @@ -14209,8 +14206,8 @@ sub HTMLMainDaily{ # Show lib for day $bars .= ''; - foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) { - + foreach my $daycursor ( $firstdaytoshowtime .. $lastdaytoshowtime ) + { $daycursor =~ /^(\d\d\d\d)(\d\d)(\d\d)/; my $year = $1; my $month = $2; @@ -14229,10 +14226,6 @@ sub HTMLMainDaily{ # Show data array for days if ($AddDataArrayShowDaysOfMonthStats) { - $html .= '' - . HTMLDataTableHeader($MonthNumLib{$MonthRequired} . ' ' . $YearRequired, $ShowDaysOfMonthStats); - - #footer # Total row my (%sums) = ( 'v'=> Format_Number($total_v), @@ -14248,9 +14241,10 @@ sub HTMLMainDaily{ 'b'=> Format_Bytes(int($average_k)) ); - $html .= HTMLDataTableFooter('', $ShowDaysOfMonthStats, \%sums, $Message[96], \%averages) + $html .= '
    ' + . HTMLDataTableHeader($MonthNumLib{$MonthRequired} . ' ' . $YearRequired, $ShowDaysOfMonthStats) + . HTMLDataTableFooter('', $ShowDaysOfMonthStats, \%sums, $Message[96], \%averages) . '' . $tableData . '
    '; - } return &tab_head( $title, '', 'daysofmonth' ) @@ -14266,7 +14260,6 @@ sub HTMLMainDaily{ # Return: string #------------------------------------------------------------------------------ sub HTMLMainDaysofWeek{ - if ($Debug) { debug( "ShowDaysOfWeekStats", 2 ); } my $firstdaytocountaverage = shift; @@ -14423,17 +14416,20 @@ sub HTMLMainDaysofWeek{ . ( ( !$StaticLinks && $_ == ( $nowwday - 1 ) && $MonthRequired == $nowmonth && $YearRequired == $nowyear ) ? '' : '' ) . ''; - if ( $ShowDaysOfWeekStats =~ /P/i ) { + if ( $ShowDaysOfWeekStats =~ /P/i ) + { $data = int($avg_dayofweek_p[$_]); $tableData .= HTMLDataCellWithBar('p', $data , Format_Number($data), $max_p); } - if ( $ShowDaysOfWeekStats =~ /H/i ) { + if ( $ShowDaysOfWeekStats =~ /H/i ) + { $data = int($avg_dayofweek_h[$_]); $tableData .= HTMLDataCellWithBar('h', $data , Format_Number($data), $max_h); } - if ( $ShowDaysOfWeekStats =~ /B/i ) { + if ( $ShowDaysOfWeekStats =~ /B/i ) + { $data = int($avg_dayofweek_k[$_]); $tableData .= HTMLDataCellWithBar('b', $data , Format_Bytes($data), $max_k); } @@ -14455,10 +14451,11 @@ sub HTMLMainDaysofWeek{ # Return: string #------------------------------------------------------------------------------ sub HTMLMainHours{ + if ($Debug) { debug( "ShowHoursStats", 2 ); } + my $NewLinkParams = shift; my $NewLinkTarget = shift; - - if ($Debug) { debug( "ShowHoursStats", 2 ); } + my $title = $Message[20]; my @links = (); my $bars = ''; @@ -14564,25 +14561,27 @@ sub HTMLMainHours{ . HTMLDataTableHeader('', $ShowHoursStats); #body - for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { - + for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) + { my $monthix = ( $ix < 10 ? "0$ix" : "$ix" ); - $tableData .= ''; - - $tableData .= '' . $monthix . ''; + $tableData .= '' + . '' . $monthix . ''; - if ( $ShowHoursStats =~ /P/i ) { + if ( $ShowHoursStats =~ /P/i ) + { $data = $_time_p[$monthix] ? $_time_p[$monthix] : '0'; $tableData .= HTMLDataCellWithBar('p', $data , Format_Number($data), $max_p); } - if ( $ShowHoursStats =~ /H/i ) { + if ( $ShowHoursStats =~ /H/i ) + { $data = $_time_h[$monthix] ? $_time_h[$monthix] : '0'; $tableData .= HTMLDataCellWithBar('h', $data , Format_Number($data), $max_h); } - if ( $ShowHoursStats =~ /B/i ) { + if ( $ShowHoursStats =~ /B/i ) + { $data = $_time_k[$monthix] ? $_time_k[$monthix] : '0'; $tableData .= HTMLDataCellWithBar('b', $data , Format_Bytes($data), $max_k); } @@ -14603,10 +14602,10 @@ sub HTMLMainHours{ # Return: string #------------------------------------------------------------------------------ sub HTMLMainCountries{ + if ($Debug) { debug( "ShowDomainsStats", 2 ); } + my $NewLinkParams = shift; my $NewLinkTarget = shift; - - if ($Debug) { debug( "ShowDomainsStats", 2 ); } my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $rest_u = my $rest_v = my $rest_p = my $rest_h = my $rest_k = 0; @@ -15187,11 +15186,11 @@ sub HTMLMainLogins{ # Return: string (html) #------------------------------------------------------------------------------ sub HTMLMainRobots{ + if ($Debug) { debug( "ShowRobotStats", 2 ); } + my $NewLinkParams = shift; my $NewLinkTarget = shift; - if ($Debug) { debug( "ShowRobotStats", 2 ); } - my $title = $Message[53] . ' ('. $Message[77]. ' ' . $MaxNbOf{'RobotShown'} .')'; my $html = ''; my @links = (); @@ -15228,12 +15227,16 @@ sub HTMLMainRobots{ my $TotalHitsRobots = 0; my $max_h = 0; my $max_b = 0; - foreach ( values %_robot_h ) { + + foreach ( values %_robot_h ) + { $TotalHitsRobots += $_; $max_h = ($_ > $max_h) ? $_ : $max_h; } + my $TotalBytesRobots = 0; - foreach ( values %_robot_k ) { + foreach ( values %_robot_k ) + { $TotalBytesRobots += $_; $max_b = ($_ > $max_b) ? $_ : $max_b; } From 7ac4caf4c2c1d955e1cb786f993b116df3d4f74c Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 2 Aug 2024 19:20:28 +0200 Subject: [PATCH 108/152] confom pages-url table --- wwwroot/cgi-bin/awstats.pl | 214 ++++++++++--------------------------- 1 file changed, 58 insertions(+), 156 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 12884e022..1bcf13317 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -930,15 +930,15 @@ sub renderCss { --aws-color-p: hsl(220, 97%, 72%); --aws-color-h: hsl(188, 80%, 67%); --aws-color-b: hsl(172, 56%, 41%); - --aws-color-e: hsl(259, 45%, 84%); - --aws-color-x: hsl(259, 45%, 79%); + --aws-color-e: hsl(258, 60%, 75%); + --aws-color-x: hsl(260, 76%, 81%); --aws-color-s: hsl(240, 56%, 70%); --dark-color: hsl(1, 0%, 50%); --neutral-color: hsl(1, 0%, 75%); --light-color: hsl(1, 0%, 90%); --a-color: hsl(0, 0%, 0%); --a-hover-color: hsl(0, 0%, 0%); - --bar-width: 120; + --bar-width: 100; --bar-v-height: 16; --bar-v-grow: 1; --bar-v-width-month: 0.44dvw; @@ -951,14 +951,14 @@ sub renderCss { @media (prefers-color-scheme: dark) { :root { --page-color: hsl(0, 0%, 100%); - --page-bgcolor: hsl(0, 0%, 23.5%); + --page-bgcolor: hsl(0, 0%, 23.5%);- --aws-color-u: hsl(27, 100%, 40%); --aws-color-v: hsl(58, 82%, 30%); --aws-color-p: hsl(220, 97%, 42%); --aws-color-h: hsl(188, 80%, 39%); --aws-color-b: hsl(172, 56%, 27%); - --aws-color-e: hsl(259, 45%, 84%); - --aws-color-x: hsl(259, 45%, 79%); + --aws-color-e: hsl(258, 60%, 75%); + --aws-color-x: hsl(260, 76%, 81%); --aws-color-s: hsl(240, 56%, 70%); --dark-color: hsl(0, 0%, 8.2%); --neutral-color: hsl(0, 0%, 48.2%); @@ -15426,14 +15426,12 @@ sub HTMLMainSessions{ . '' . &tab_end(); } - - #------------------------------------------------------------------------------ -# Function: Prints the pages chart and table +# Function: Return the pages chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - -# Output: HTML -# Return: - +# Output: - +# Return: string #------------------------------------------------------------------------------ sub HTMLMainPages{ my $NewLinkParams = shift; @@ -15444,6 +15442,9 @@ sub HTMLMainPages{ my $regext = qr/\.(\w{1,6})$/; my $title = $Message[19] . ' (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')'; my @links = (); + my $tooltip = my $tableHeader = my $tableData = ''; + my $total_p = my $total_e = my $total_x = my $total_k = 0; + my $max_p = my $max_k = my $max_e = my $max_x = 0; push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'urldetail', $Message[80])); @@ -15464,186 +15465,87 @@ sub HTMLMainPages{ . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } - my $tooltip = ''; - foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) { my $function = "getTooltip_$pluginname"; $tooltip .= &$function(19); } - - print &tab_head($title, join( ' - ', @links ), 'urls', $tooltip); - - print '' - . ''; - - print (( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) ? '' : ''); - print (( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) ? '' : ''); - - print (( $ShowPagesStats =~ /B/i ) ? '' : ''); - - print (( $ShowPagesStats =~ /E/i ) ? '' : ''); - - print (( $ShowPagesStats =~ /X/i ) ? '' : ''); + $tableHeader .= '' + . (( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) ? '' : '') + . (( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) ? '' : '') + . (( $ShowPagesStats =~ /B/i ) ? '' : '') + . (( $ShowPagesStats =~ /E/i ) ? '' : '') + . (( $ShowPagesStats =~ /X/i ) ? '' : ''); # Call to plugins' function ShowPagesAddField foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { - # my $function="ShowPagesAddField_$pluginname('title')"; - # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; - &$function('title'); + $tableHeader .= &$function('title'); } - print ''; + $tableHeader .= ''; - my $total_p = my $total_e = my $total_x = my $total_k = 0; - my $max_p = 1; - my $max_k = 1; - my $count = 0; - &BuildKeyList( $MaxNbOf{'PageShown'}, $MinHit{'File'}, \%_url_p, \%_url_p ); foreach my $key (@keylist) { - if ( $_url_p{$key} > $max_p ) { $max_p = $_url_p{$key}; } - if ( $_url_k{$key} / ( $_url_p{$key} || 1 ) > $max_k ) { - $max_k = $_url_k{$key} / ( $_url_p{$key} || 1 ); - } + $max_p = ( $_url_p{$key} > $max_p ) ? $_url_p{$key} : $max_p; + $max_k = ( $_url_k{$key} > $max_k ) ? $_url_k{$key} : $max_k; + $max_e = ( $_url_e{$key} > $max_e ) ? $_url_e{$key} : $max_e; + $max_x = ( $_url_x{$key} > $max_x ) ? $_url_x{$key} : $max_x; } - foreach my $key (@keylist) { - print ""; - my $bredde_p = 0; - my $bredde_e = 0; - my $bredde_x = 0; - my $bredde_k = 0; - if ( $max_p > 0 ) { - $bredde_p = - int( $BarWidth * ( $_url_p{$key} || 0 ) / $max_p ) + 1; - } - if ( ( $bredde_p == 1 ) && $_url_p{$key} ) { $bredde_p = 2; } - if ( $max_p > 0 ) { - $bredde_e = - int( $BarWidth * ( $_url_e{$key} || 0 ) / $max_p ) + 1; - } - if ( ( $bredde_e == 1 ) && $_url_e{$key} ) { $bredde_e = 2; } - if ( $max_p > 0 ) { - $bredde_x = - int( $BarWidth * ( $_url_x{$key} || 0 ) / $max_p ) + 1; - } - if ( ( $bredde_x == 1 ) && $_url_x{$key} ) { $bredde_x = 2; } - if ( $max_k > 0 ) { - $bredde_k = - int( $BarWidth * - ( ( $_url_k{$key} || 0 ) / ( $_url_p{$key} || 1 ) ) / - $max_k ) + 1; - } - if ( ( $bredde_k == 1 ) && $_url_k{$key} ) { $bredde_k = 2; } - if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { - print ""; - } - if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { - print ""; - } - if ( $ShowPagesStats =~ /B/i ) { - print ""; - } - if ( $ShowPagesStats =~ /E/i ) { - print ""; - } - if ( $ShowPagesStats =~ /X/i ) { - print ""; - } - - # Call to plugins' function ShowPagesAddField - foreach my $pluginname ( - keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) - { - # my $function="ShowPagesAddField_$pluginname('$key')"; - # eval("$function"); - my $function = "ShowPagesAddField_$pluginname"; - &$function($key); - } - print "\n"; + foreach my $key (@keylist) + { $total_p += $_url_p{$key} || 0; $total_e += $_url_e{$key} || 0; $total_x += $_url_x{$key} || 0; $total_k += $_url_k{$key} || 0; - $count++; + + $tableData .= '' + . (( ($ShowPagesStats =~ /P/i && $LogType ne 'F') || ($ShowPagesStats =~ /[PH]/i && $LogType eq 'F') ) + ? HTMLDataCellWithBar('p', $_url_p{$key}, Format_Number($_url_p{$key}), $max_p) : '') + . (( $ShowPagesStats =~ /B/i ) ? HTMLDataCellWithBar('b', ($_url_k{$key} / $_url_p{$key}), Format_Bytes($_url_k{$key} / $_url_p{$key}), ($max_k / $max_p)) : '') + . (( $ShowPagesStats =~ /E/i ) ? HTMLDataCellWithBar('e', $_url_e{$key}, Format_Number($_url_e{$key}), $max_e) : '') + . (( $ShowPagesStats =~ /X/i ) ? HTMLDataCellWithBar('x', $_url_x{$key}, Format_Number($_url_x{$key}), $max_x) : ''); + + # Call to plugins' function ShowPagesAddField + foreach my $pluginname (keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) + { + my $function = "ShowPagesAddField_$pluginname"; + $tableData .= &$function($key); + } + + $tableData .= ''; } + my $rest_p = $TotalPages - $total_p; my $rest_e = $TotalEntries - $total_e; my $rest_x = $TotalExits - $total_x; my $rest_k = $TotalBytesPages - $total_k; if ( $rest_p > 0 || $rest_k > 0 || $rest_e > 0 || $rest_x > 0 ) - { # All other urls - print -""; - if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { - print ""; - } - if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { - print ""; - } - if ( $ShowPagesStats =~ /B/i ) { - print ""; - } - if ( $ShowPagesStats =~ /E/i ) { - print ""; - } - if ( $ShowPagesStats =~ /X/i ) { - print ""; - } + { # All other urls + $tableData .= '' + . (( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) ? '' : '') + . (( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) ? '' : '') + . (( $ShowPagesStats =~ /B/i ) ? '' : '') + . (( $ShowPagesStats =~ /E/i ) ? '' : '') + . (( $ShowPagesStats =~ /X/i ) ? '' : ''); # Call to plugins' function ShowPagesAddField - foreach my $pluginname ( - keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) + foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowPagesAddField'} } ) { - - # my $function="ShowPagesAddField_$pluginname('')"; - # eval("$function"); my $function = "ShowPagesAddField_$pluginname"; - &$function(''); + $tableData .= &$function(''); } - print "\n"; + $tableData .= ''; } - print '
    ' . Format_Number($TotalDifferentPages) . ' ' . $Message[28] .'' . $Message[29] .'' . $Message[57] . '' . $Message[106] . '' . $Message[104] . '' . $Message[116] . '
    ' . Format_Number($TotalDifferentPages) . ' ' . $Message[28] .'' . $Message[29] .'' . $Message[57] . '' . $Message[106] . '' . $Message[104] . '' . $Message[116] . '
    "; - print &HTMLShowURLInfo($key); - print "".Format_Number($_url_p{$key})."".Format_Number($_url_p{$key})."" - . ( - $_url_k{$key} - ? Format_Bytes( - $_url_k{$key} / ( $_url_p{$key} || 1 ) - ) - : " " - ) - . "" - . ( $_url_e{$key} ? Format_Number($_url_e{$key}) : " " ) . "" - . ( $_url_x{$key} ? Format_Number($_url_x{$key}) : " " ) . ""; - if ( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) { - print HtmlBarH('p', $bredde_p); - } - if ( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) { - print HtmlBarH('h', $bredde_p); - } - if ( $ShowPagesStats =~ /B/i ) { - print HtmlBarH('k', $bredde_k); - } - if ( $ShowPagesStats =~ /E/i ) { - print HtmlBarH('e', $bredde_e); - } - if ( $ShowPagesStats =~ /X/i ) { - print HtmlBarH('x', $bredde_x); - } - print "
    ' . &HTMLShowURLInfo($key) . '
    $Message[2]".Format_Number($rest_p)."".Format_Number($rest_p)."" - . ( - $rest_k - ? Format_Bytes( $rest_k / ( $rest_p || 1 ) ) - : " " - ) - . "" . ( $rest_e ? Format_Number($rest_e) : " " ) . "" . ( $rest_x ? Format_Number($rest_x) : " " ) . "
    ' . $Message[2] . '' . Format_Number($rest_p) . '' . Format_Number($rest_p) . '' . ( $rest_k ? Format_Bytes $rest_k / ($rest_p || 1) : '' ) . '' . ( $rest_e ? Format_Number($rest_e) : '' ) . '' . ( $rest_x ? Format_Number($rest_x) : '' ) . ' 
    ' . &tab_end(); + return &tab_head($title, join( ' - ', @links ), 'urls', $tooltip) + . '' . $tableHeader . $tableData . '
    ' + . &tab_end(); } #------------------------------------------------------------------------------ @@ -21231,7 +21133,7 @@ sub HTMLMainExtra{ # BY PAGE #------------------------- if ($ShowPagesStats) { - &HTMLMainPages($NewLinkParams, $NewLinkTarget); + print &HTMLMainPages($NewLinkParams, $NewLinkTarget); } # BY FILE TYPE From 37dcb71424406e4d1ce8089efbf06371d7858f44 Mon Sep 17 00:00:00 2001 From: bouks Date: Fri, 2 Aug 2024 22:25:29 +0200 Subject: [PATCH 109/152] AWStats update notification (in page footer) --- wwwroot/cgi-bin/awstats.pl | 42 ++++++++++++++++++++++------- wwwroot/cgi-bin/lang/awstats-en.txt | 4 ++- wwwroot/cgi-bin/lang/awstats-fr.txt | 4 ++- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 1bcf13317..af9d001c7 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -37,9 +37,10 @@ #------------------------------------------------------------------------------ # Defines #------------------------------------------------------------------------------ -use vars qw/ $REVISION $VERSION /; +use vars qw/ $RELEASE $REVISION $VERSION /; +$RELEASE = '8.0'; $REVISION = '20240604'; -$VERSION = "8.0 (build $REVISION)"; +$VERSION = $RELEASE . '(build ' . $REVISION . ')'; # ----- Constants ----- use vars qw/ @@ -758,7 +759,9 @@ 's', 'Request average frequency [/s]', 'Request size', - 'Request time' + 'Request time', + 'New major release available for AWStats', + 'New minor release available for AWStats' ); #------------------------------------------------------------------------------ @@ -983,6 +986,7 @@ sub renderCss { .column { display:flex;flex-flow:column wrap; row-gap: 10px; } #domain { font-weight: 900; font-size: 1.5em } header select { width : 60px } +footer { width: 100dvw; text-align: center; border-top: 1px solid; padding-top: 5px; } #logo { height: 33px; } nav { width: 100%; height: 2.5ch; margin: 8px 0; margin-top: 0; background-color: white; font-weight: 600 } nav ul { display: flex; justify-content: center; gap: 1dvw; list-style-type: none; margin: 0; padding: 0; overflow: hidden; } @@ -1210,7 +1214,6 @@ sub renderJavascript { #------------------------------------------------------------------------------ sub html_end { my $listplugins = shift || 0; - my $html = ''; if ( scalar keys %HTMLOutput ) @@ -1218,20 +1221,39 @@ sub html_end { # Call to plugins' function AddHTMLBodyFooter foreach my $pluginname ( keys %{ $PluginsLoaded{'AddHTMLBodyFooter'} } ) { - # my $function="AddHTMLBodyFooter_$pluginname()"; - # eval("$function"); my $function = "AddHTMLBodyFooter_$pluginname"; &$function(); } if ( $FrameName ne 'index' && $FrameName ne 'mainleft' ) { - $html .= '' - . 'Advanced Web Statistics ' . $VERSION . ' - ' - . $Message[169] . ' ' . $PROG; + $html .= '
    ' + . $Message[169] . ' Advanced Web Statistics ' . $VERSION . ''; + use ExtUtils::Installed; + my ($inst) = ExtUtils::Installed->new(); + my (@installed_modules) = $inst->modules(); + eval{ $inst->validate('JSON::Parse') }; + if(!$@) { + use LWP::Simple; + use JSON::Parse 'parse_json'; + my $sourceforge = parse_json(get('https://sourceforge.net/projects/awstats/best_release.json')); + $sourceforge->{'release'}->{'filename'} =~ /(\d\.\d)/; + my $latestVersion = $1; + + (my $latestMajor, my $latestMinor) = split(/\./, $latestVersion); + (my $major, my $minor) = split(/\./, $RELEASE); + + if(int($latestMajor) > int($major)){ + $html .= ' ' . $Message[189]. ' : ' . $latestVersion . ' !'; + } elsif (int($latestMajor) == int($major) && int($latestMinor) > int($minor)) { + $html .= ' ' . $Message[190] . ' : ' . $latestVersion . ' !'; + } + } + if ($listplugins) { + $html .= '
    '; my $atleastoneplugin = 0; foreach my $pluginname ( keys %{ $PluginsLoaded{'init'} } ) { @@ -1250,7 +1272,7 @@ sub html_end { if ($atleastoneplugin) { $html .= ')'; } } - $html .= ''; + $html .= '
    '; if ($HTMLEndSection) { $html .= "$HTMLEndSection\n"; } } diff --git a/wwwroot/cgi-bin/lang/awstats-en.txt b/wwwroot/cgi-bin/lang/awstats-en.txt index 4772b3d69..deeead174 100644 --- a/wwwroot/cgi-bin/lang/awstats-en.txt +++ b/wwwroot/cgi-bin/lang/awstats-en.txt @@ -189,4 +189,6 @@ message184=s message185=Request average frequency [/s] message186=Request size message187=Hour -message188=Request time \ No newline at end of file +message188=Request time +message189=New major release available for AWStats +message190=New minor release available for AWStats \ No newline at end of file diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index 8cd001441..82cc92cdb 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -189,4 +189,6 @@ message184=s message185=Fréquence moyenne de requête [/s] message186=Taille de la requête message187=Heure -message188=Request time \ No newline at end of file +message188=Request time +message189=Nouvelle version majeure de AWStats disponible +message190=Nouvelle version mineure de AWStats disponible \ No newline at end of file From f49caadac0d76df3d1fdcb699ab08971590e8f46 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 3 Aug 2024 20:28:14 +0200 Subject: [PATCH 110/152] conform Downloads table --- wwwroot/cgi-bin/awstats.pl | 157 +++++++++++++++++-------------------- 1 file changed, 72 insertions(+), 85 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index af9d001c7..a7fd43aa0 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -14792,16 +14792,23 @@ sub HTMLMainCountries{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainDownloads{ - my $NewLinkParams = shift; - my $NewLinkTarget = shift; if (!$LevelForFileTypesDetection > 0){return;} if ($Debug) { debug( "ShowDownloadStats", 2 ); } - my $regext = qr/\.(\w{1,6})$/; - my $Totalh = 0; - if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined + + my $NewLinkParams = shift; + my $NewLinkTarget = shift; + + my $TopFiveTotalh = my $total_h = my $total_206 = my $max_k = my $max_average_k = 0; my @links = (); + my $chart = my $dataTable = ''; + my $title = $Message[178] . ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')'; + my @sortedDlKeys = (sort {$_downloads{$a}->{'AWSTATS_SIZE'} <=> $_downloads{$b}->{'AWSTATS_SIZE'}}(keys %_downloads)); + my @sorted_MaxNbOf_DlKeys = (scalar keys @sortedDlKeys > $MaxNbOf{'DownloadsShown'}) ? @sortedDlKeys[0..($MaxNbOf{'DownloadsShown'} - 1)] : @sortedDlKeys; + my @sorted_TopFive_DlKeys = (scalar keys @sortedDlKeys > $MaxNbOf{'DownloadsShown'}) ? @sortedDlKeys[0..4] : @sortedDlKeys; + if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'downloads', $Message[80])); if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) @@ -14810,95 +14817,75 @@ sub HTMLMainDownloads{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=DOWNLOADS&baseName=' . $DirData .'/' . $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } - - print &tab_head($title, join( ' - ', @links ), 'downloads'); - - my $cnt=0; - for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ - $Totalh += $_downloads{$u}->{'AWSTATS_HITS'}; - $cnt++; - if ($cnt > 4){last;} - } - - print ''; # Graph the top five in a pie chart - if (($Totalh > 0) and (scalar keys %_downloads > 1)){ + for my $u (keys @sorted_TopFive_DlKeys) + { + $TopFiveTotalh += $_downloads{$sorted_TopFive_DlKeys[$u]}->{'AWSTATS_HITS'}; + } + + if (($TopFiveTotalh > 0) and (scalar keys %_downloads > 1)) + { foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { - my @blocklabel = (); - my @valdata = (); + my $function = "ShowGraph_$pluginname"; + my @blocklabel = my @valdata = (); my @valcolor = ($color_p); - my $cnt = 0; - for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ - push @valdata, ($_downloads{$u}->{'AWSTATS_HITS'} / $Totalh * 1000 ) / 10; + + for my $u ((keys @sorted_TopFive_DlKeys) ) + { + push @valdata, ($_downloads{$u}->{'AWSTATS_HITS'} / $TopFiveTotalh * 1000 ) / 10; push @blocklabel, Get_Filename($u); - $cnt++; - if ($cnt > 4) { last; } } - my $columns = 2; - if ($ShowDownloadsStats =~ /H/i){$columns += length($ShowDownloadsStats)+1;} - else{$columns += length($ShowDownloadsStats);} - print ""; + + $chart .= '
    ' + . &$function( + $Message[80], 'downloads', + 0, \@blocklabel, + 0, \@valcolor, + 0, 0, + 0, \@valdata + ) + . '
    '; } } - - my $total_dls = scalar keys %_downloads; - print ""; - if ( $ShowDownloadsStats =~ /H/i ){print "" - .""; } - if ( $ShowDownloadsStats =~ /B/i ){ - print ""; - print ""; + + for my $u (%_downloads) + { + $total_h += ($u ne '/robots.txt') ? ($_downloads{$u}->{'AWSTATS_HITS'} || 0) : 0; + $total_206 += $_downloads{$u}->{'AWSTATS_206'} || 0; + $max_k = ($_downloads{$u}->{'AWSTATS_SIZE'} > $max_k) ? $_downloads{$u}->{'AWSTATS_SIZE'} : $max_k; + $max_average_k = ($_downloads{$u}->{'AWSTATS_SIZE'} > $max_average_k) ? $_downloads{$u}->{'AWSTATS_SIZE'} / ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'}) : $max_average_k; } - print "\n"; - my $count = 0; - for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){ - print ""; - my $ext = Get_Extension($regext, $u); - if ( !$ext) { - print ""; - } - else { - my $nameicon = $MimeHashLib{$ext}[0] || "notavailable"; - my $nametype = $MimeHashFamily{$MimeHashLib{$ext}[0]} || " "; - print ""; - } - print ""; - if ( $ShowDownloadsStats =~ /H/i ){ - print ""; - print ""; - } - if ( $ShowDownloadsStats =~ /B/i ){ - print ""; - print ""; - } - print "\n"; - $count++; - if ($count >= $MaxNbOf{'DownloadsShown'}){last;} + + $dataTable .= '' + . (( $ShowDownloadsStats =~ /H/i ) ? '' :'') + . (( $ShowDownloadsStats =~ /B/i ) ? '':'') + . ''; + + for my $u (@sorted_MaxNbOf_DlKeys) + { + my $ext = Get_Extension(qr/\.(\w{1,6})$/, $u); + my $img = ' '; + } + + $dataTable .= '' + . (( $ShowDownloadsStats =~ /H/i ) ? HTMLDataCellWithBar('h', $_downloads{$u}->{'AWSTATS_HITS'}, Format_Number($_downloads{$u}->{'AWSTATS_HITS'}), $total_h) : '') + . (( $ShowDownloadsStats =~ /H/i ) ? HTMLDataCellWithBar('h', $_downloads{$u}->{'AWSTATS_206'}, Format_Number($_downloads{$u}->{'AWSTATS_206'}), $total_206) : '') + . (( $ShowDownloadsStats =~ /B/i ) ? HTMLDataCellWithBar('b', $_downloads{$u}->{'AWSTATS_SIZE'}, Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'}), $max_k) : '') + . (( $ShowDownloadsStats =~ /B/i ) ? HTMLDataCellWithBar('b', $average, Format_Bytes($average), $max_average_k) : '') + . ''; } - print '
    "; - my $function = "ShowGraph_$pluginname"; - &$function( - "$Message[80]", "downloads", - 0, \@blocklabel, - 0, \@valcolor, - 0, 0, - 0, \@valdata - ); - print "
    $Message[178]: $total_dls$Message[57]206 $Message[57]$Message[75]$Message[106]
    "; - print &HTMLShowURLInfo($u); - print "".Format_Number($_downloads{$u}->{'AWSTATS_HITS'})."".Format_Number($_downloads{$u}->{'AWSTATS_206'})."".Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'})."".Format_Bytes(($_downloads{$u}->{'AWSTATS_SIZE'}/ - ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'})))."
    ' . (scalar keys %_downloads) . ' ' .$Message[178] . '' . $Message[57] . '206 ' . $Message[57] .'' . $Message[75] . '' . $Message[106] . '
    (' . $nametype . ')  ' . &HTMLShowURLInfo($u) . ' ' . $img . '
    ' . &tab_end(); + return &tab_head($title, join( ' - ', @links ), 'downloads') . $chart + . '' . $dataTable . '
    ' . &tab_end(); } #------------------------------------------------------------------------------ @@ -15493,7 +15480,7 @@ sub HTMLMainPages{ $tooltip .= &$function(19); } - $tableHeader .= '' . Format_Number($TotalDifferentPages) . ' ' . $Message[28] .'' + $tableHeader .= '' . Format_Number($TotalDifferentPages) . ' ' . $Message[28] .'' . (( $ShowPagesStats =~ /P/i && $LogType ne 'F' ) ? '' . $Message[29] .'' : '') . (( $ShowPagesStats =~ /[PH]/i && $LogType eq 'F' ) ? '' . $Message[57] . '' : '') . (( $ShowPagesStats =~ /B/i ) ? '' . $Message[106] . '' : '') @@ -15507,7 +15494,7 @@ sub HTMLMainPages{ $tableHeader .= &$function('title'); } - $tableHeader .= ''; + $tableHeader .= ''; &BuildKeyList( $MaxNbOf{'PageShown'}, $MinHit{'File'}, \%_url_p, \%_url_p ); @@ -21179,7 +21166,7 @@ sub HTMLMainExtra{ # BY DOWNLOADS #------------------------- if ($ShowDownloadsStats) { - &HTMLMainDownloads($NewLinkParams, $NewLinkTarget); + print &HTMLMainDownloads($NewLinkParams, $NewLinkTarget); } print '
    '; From a76a44b0f300291c2256c15f37c55f60205b6fab Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 3 Aug 2024 20:44:47 +0200 Subject: [PATCH 111/152] TODO add devicePixelRatio --- wwwroot/cgi-bin/awstats.pl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index a7fd43aa0..c6cbf17b9 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -15899,6 +15899,9 @@ sub HTMLMainBrowsers{ # Return: string #------------------------------------------------------------------------------ sub HTMLMainScreenSize{ + + #TODO add devicePixelRatio + if ($Debug) { debug( "ShowScreenSizeStats", 2 ); } my $Totalh = 0; From e2d00f8fdbdcdd243497886c7eb9c43ec38cf2da Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 3 Aug 2024 21:30:41 +0200 Subject: [PATCH 112/152] cleanup --- wwwroot/cgi-bin/awstats.pl | 103 +++++++++++-------------------------- 1 file changed, 31 insertions(+), 72 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index c6cbf17b9..6b2c111a2 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -9346,9 +9346,6 @@ sub HTMLShowClusterInfo { # Call to plugins' function ShowInfoCluster foreach my $pluginname ( sort keys %{ $PluginsLoaded{'ShowInfoCluster'} } ) { - - # my $function="ShowInfoCluster_$pluginname('$user')"; - # eval("$function"); my $function = "ShowInfoCluster_$pluginname"; &$function($cluster); } @@ -9365,10 +9362,8 @@ sub HTMLShowHostInfo { my $host = shift; # Call to plugins' function ShowInfoHost - foreach my $pluginname ( sort keys %{ $PluginsLoaded{'ShowInfoHost'} } ) { - - # my $function="ShowInfoHost_$pluginname('$host')"; - # eval("$function"); + foreach my $pluginname ( sort keys %{ $PluginsLoaded{'ShowInfoHost'} } ) + { my $function = "ShowInfoHost_$pluginname"; &$function($host); } @@ -11048,12 +11043,8 @@ sub HTMLMainFileType{ my $NewLinkTarget = shift; my $title = $Message[73]; my @links = (); - my $tooltip = ''; - my $html = ''; - my $Totalh = 0; - my $Totalk = 0; - my $total_con = 0; - my $total_cre = 0; + my $tooltip = my $html = ''; + my $Totalh = my $Totalk = my $total_con = my $total_cre = 0; foreach ( keys %_filetypes_h ) { $Totalh += $_filetypes_h{$_}; } foreach ( keys %_filetypes_k ) { $Totalk += $_filetypes_k{$_}; } @@ -11172,8 +11163,10 @@ sub HTMLMainFileType{ #------------------------------------------------------------------------------ sub HTMLMainFileSize{ if ($Debug) { debug("ShowFileSizesStats",2); } - my $FirstTime = 0; - my $LastTime = 0; + my $FirstTime = my $LastTime = my $inicio = my $fim = my $number_of_requests = my $request_frequency_average = my $Totals = my $average_s = my $total_s = 0; + + my $title = $Message[186]; + my $tooltip = ''; foreach my $key ( keys %FirstTime ) { @@ -11192,24 +11185,18 @@ sub HTMLMainFileSize{ } } - my $inicio = 0; - my $fim = 0; if ($FirstTime =~ /$regdate/o) { $inicio = Time::Local::timelocal($6, $5, $4, $3, $2-1, $1); } if ($LastTime =~ /$regdate/o) { $fim = Time::Local::timelocal($6, $5, $4, $3, $2-1, $1); } my $periodo = $fim - $inicio; - my $number_of_requests = 0; - my $request_frequency_average = 0; + foreach my $key (@PayloadRange) { $number_of_requests += $_filesize{$key}; } + if ($periodo) { $request_frequency_average = $number_of_requests/$periodo;} else { $request_frequency_average = 0 }; - # print " "; - my $title = $Message[186]; - - my $tooltip = ''; foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) { my $function = "getTooltip_$pluginname"; @@ -11218,8 +11205,6 @@ sub HTMLMainFileSize{ print &tab_head($title, '', 'filesizes', $tooltip); - my $Totals = 0; - my $average_s = 0; foreach (@PayloadRange) { $average_s += ( $_filesize{$_} || 0 ) * $PayloadAverage{$_}; @@ -11230,22 +11215,21 @@ sub HTMLMainFileSize{ print '' . "\n"; - my $total_s = 0; - my $count = 0; + foreach my $key (@PayloadRange) { - my $p = 0; - my $f = 0; - if ($Totals) { $p = int($_filesize{$key} / $Totals * 1000) / 10; } - if ($periodo) { $f = $_filesize{$key} / $periodo; } - $total_s += $_filesize{$key} || 0; - print "" - . "" - . "" - . "" - . "\n"; - $count++; + my $p = 0; + my $f = 0; + if ($Totals) { $p = int($_filesize{$key} / $Totals * 1000) / 10; } + if ($periodo) { $f = $_filesize{$key} / $periodo; } + $total_s += $_filesize{$key} || 0; + print "" + . "" + . "" + . "" + . "\n"; } + my $rest_s = $TotalVisits-$total_s; if ($rest_s > 0) { @@ -13588,17 +13572,6 @@ sub HTMLMainSummary{ $NewLinkTarget = " target=\"_parent\""; } - # Ratio - my $RatioVisits = 0; - my $RatioPages = 0; - my $RatioHits = 0; - my $RatioBytes = 0; - - if ( $TotalUnique > 0 ) { $RatioVisits = sprintf( "%.1f", $TotalVisits / $TotalUnique ) ; } - if ( $TotalVisits > 0 ) { $RatioPages = sprintf( "%.1f", $TotalPages / $TotalVisits ); } - if ( $TotalVisits > 0 ) { $RatioHits = sprintf( "%.1f", $TotalHits / $TotalVisits ); } - if ( $TotalVisits > 0 ) { $RatioBytes = int( ( $TotalBytes / 1024 ) * 100 / ( $LogType eq 'M' ? $TotalHits : $TotalVisits ) ) / 100; } - print '
    '; # Show main indicators title row @@ -13625,7 +13598,6 @@ sub HTMLMainSummary{ '
    ' . '
    $Message[10]
    " . '
    ' . Format_Number($TotalVisits) . '
    ' - # . '' . $RatioVisits . ' ' . $Message[52] .'' . '
    ' : '' ); @@ -13633,10 +13605,7 @@ sub HTMLMainSummary{ print (( $ShowSummary =~ /P/i && $LogType ne 'M' ) ? '
    ' . '
    " . ucfirst($Message[28]) . "
    " - # . '
    ' . '
    ' . Format_Number($TotalPages) . '
    ' - # . '' . $RatioPages . ' ' . ucfirst($Message[28]) . ' / ' . $Message[12] . '' - # . '
    ' . '
    ' . Format_Number($TotalNotViewedPages) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' . '
    ' : '' @@ -13647,7 +13616,6 @@ sub HTMLMainSummary{ . '
    $Message[57]
    " . '
    ' . '
    '.Format_Number($TotalHits).'
    ' - # . ($LogType eq 'M' ? '' : ' ' . $RatioHits . ' ' . $Message[57] . ' / ' . $Message[12] . '') . '
    ' . '
    ' . Format_Number($TotalNotViewedHits) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' . '' @@ -13659,7 +13627,6 @@ sub HTMLMainSummary{ . '
    $Message[75]
    " . '
    ' . '
    ' . Format_Bytes( int($TotalBytes) ) . '
    ' - # . '' . $RatioBytes . ' ' . $Message[108] . ' / ' . $Message[ ( $LogType eq 'M' ? 149 : 12 ) ] . '' . '
    ' . '
    ' . Format_Bytes( int($TotalNotViewedBytes) ) . ' *' . $Message[( $LogType eq 'M' ) ? 166 : 161] . '
    ' . '' @@ -13667,7 +13634,6 @@ sub HTMLMainSummary{ ); print '' . ''; - } #------------------------------------------------------------------------------ @@ -14785,11 +14751,11 @@ sub HTMLMainCountries{ } #------------------------------------------------------------------------------ -# Function: Prints the Downloads chart and table +# Function: Return the Downloads chart and table # Parameters: - # Input: $NewLinkParams, $NewLinkTarget -# Output: HTML -# Return: - +# Output: - +# Return: string #------------------------------------------------------------------------------ sub HTMLMainDownloads{ if (!$LevelForFileTypesDetection > 0){return;} @@ -15565,15 +15531,14 @@ sub HTMLMainPages{ # Return: - #------------------------------------------------------------------------------ sub HTMLMainOS{ + if ($Debug) { debug( "ShowOSStats", 2 ); } + my $NewLinkParams = shift; my $NewLinkTarget = shift; - if ($Debug) { debug( "ShowOSStats", 2 ); } - # print " "; - my $Totalh = 0; - my $Totalp = 0; - my %new_os_h = (); - my %new_os_p = (); + my $Totalh = my $Totalp = 0; + my $total_h = my $total_p = my $count = 0; + my @links = my %new_os_h = my %new_os_p = (); OSLOOP: foreach my $key ( keys %_os_h ) { $Totalh += $_os_h{$key}; $Totalp += $_os_p{$key}; @@ -15589,7 +15554,6 @@ sub HTMLMainOS{ } my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; - my @links = (); push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'osdetail', $Message[80] . '/' . $Message[58])); push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'unknownos', $Message[0])); @@ -15657,9 +15621,6 @@ sub HTMLMainOS{ print "" . "" . "\n"; - my $total_h = 0; - my $total_p = 0; - my $count = 0; foreach my $key (@keylist) { my $p_h = ' '; @@ -15904,10 +15865,8 @@ sub HTMLMainScreenSize{ if ($Debug) { debug( "ShowScreenSizeStats", 2 ); } - my $Totalh = 0; my $title = $Message[135] . ' (' . $Message[77] . ' ' . $MaxNbOf{'ScreenSizesShown'} . ')'; - my $total_h = 0; - my $max_h = 0; + my $Totalh = my $total_h = my $max_h = 0; my $html = ''; foreach ( keys %_screensize_h ) From 03da2539b390c764f8e3cabc81c0327cd7ab7400 Mon Sep 17 00:00:00 2001 From: bouks Date: Sat, 3 Aug 2024 22:32:14 +0200 Subject: [PATCH 113/152] conform mainOS table --- wwwroot/cgi-bin/awstats.pl | 126 +++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 61 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 6b2c111a2..09585a62e 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -15524,11 +15524,11 @@ sub HTMLMainPages{ } #------------------------------------------------------------------------------ -# Function: Prints the OS chart and table +# Function: Return the OS chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - -# Output: HTML -# Return: - +# Output: - +# Return: string #------------------------------------------------------------------------------ sub HTMLMainOS{ if ($Debug) { debug( "ShowOSStats", 2 ); } @@ -15536,14 +15536,20 @@ sub HTMLMainOS{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $Totalh = my $Totalp = 0; - my $total_h = my $total_p = my $count = 0; + my $Totalh = my $Totalp = 0; + my $total_h = my $total_p = 0; my @links = my %new_os_h = my %new_os_p = (); - OSLOOP: foreach my $key ( keys %_os_h ) { + my $tooltip = my $dataTableHeader = my $dataTableBody = my $graph = ''; + my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; + + OSLOOP: foreach my $key ( keys %_os_h ) + { $Totalh += $_os_h{$key}; $Totalp += $_os_p{$key}; - foreach my $family ( keys %OSFamily ) { - if ( $key =~ /^$family/i ) { + foreach my $family ( keys %OSFamily ) + { + if ( $key =~ /^$family/i ) + { $new_os_h{"${family}cumul"} += $_os_h{$key}; $new_os_p{"${family}cumul"} += $_os_p{$key}; next OSLOOP; @@ -15553,8 +15559,6 @@ sub HTMLMainOS{ $new_os_p{$key} += $_os_p{$key}; } - my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; - push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'osdetail', $Message[80] . '/' . $Message[58])); push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'unknownos', $Message[0])); @@ -15564,27 +15568,20 @@ sub HTMLMainOS{ . XMLEncode($AddLinkToExternalCGIWrapper . '?section=OS&baseName=' . $DirData . '/' . $PROG . '&month=' . $MonthRequired . '&year=' . $YearRequired . '&day=' . $DayRequired . '&siteConfig=' . $SiteConfig) . '" ' . $NewLinkTarget . '>' . $Message[179] . ''); } - - my $tooltip = ''; + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) { my $function = "getTooltip_$pluginname"; $tooltip .= &$function(19); } - print &tab_head($title, join( ' - ', @links ), 'os', $tooltip); - - &BuildKeyList( $MaxNbOf{'OsShown'}, $MinHit{'Os'}, \%new_os_h, - \%new_os_p ); - - print '
    $Message[182]: $number_of_requests - $Message[183]: $periodo $Message[184] - $Message[185]: ".sprintf ("%.6f",$request_frequency_average)."$Message[181]$Message[57]$Message[15]
    $key".($_filesize{$key}? sprintf("%.5f",$f):" ")."".($_filesize{$key}? $_filesize{$key}:" ")."".($_filesize{$key}? "$p %":" ")."
    $key".($_filesize{$key}? sprintf("%.5f",$f):" ")."".($_filesize{$key}? $_filesize{$key}:" ")."".($_filesize{$key}? "$p %":" ")."
     $Message[59]" . ucfirst($Message[28]) . "$Message[15]$Message[57]$Message[15]
    '; + &BuildKeyList( $MaxNbOf{'OsShown'}, $MinHit{'Os'}, \%new_os_h, \%new_os_p ); - # Graph the top five in a pie chart - if (scalar @keylist > 1){ + if (scalar @keylist > 1) + { # Graph the top five in a pie chart foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { - my @blocklabel = (); - my @valdata = (); + my @blocklabel = my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; foreach my $key (@keylist) { @@ -15605,79 +15602,86 @@ sub HTMLMainOS{ $cnt++; if ($cnt > 4) { last; } } - print ""; + ) + .''; } } - print "" - . "" - . "\n"; + $dataTableHeader .= '' + . '' + . '' + . ''; - foreach my $key (@keylist) { - my $p_h = ' '; - my $p_p = ' '; - if ($Totalh) { + $dataTableBody .= ''; + foreach my $key (@keylist) + { + my $p_h = my $p_p = ''; + if ($Totalh) + { $p_h = int( $new_os_h{$key} / $Totalh * 1000 ) / 10; - $p_h = "$p_h %"; } - if ($Totalp) { + if ($Totalp) + { $p_p = int( $new_os_p{$key} / $Totalp * 1000 ) / 10; - $p_p = "$p_p %"; } - if ( $key eq 'Unknown' ) { - print "" - . "\n"; + + if ( $key eq 'Unknown' ) + { + $dataTableBody .= '' + . HTMLDataCellWithBar('p', $_os_p{$key}, '' . $p_p . '% ' . Format_Number($_os_p{$key}), $Totalp) + . HTMLDataCellWithBar('h', $_os_h{$key}, '' . $p_h . '% ' . Format_Number($_os_h{$key}), $Totalh); } - else { + else + { my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; my $libos = $OSHashLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $keywithoutcumul; $nameicon =~ s/[^\w]//g; - if ( $OSFamily{$keywithoutcumul} ) { + + if ( $OSFamily{$keywithoutcumul} ) + { $libos = "" . $OSFamily{$keywithoutcumul} . ""; } - print "\n"; + $dataTableBody .= '' + . HTMLDataCellWithBar('p', $new_os_p{$key}, '' . $p_p . '% ' . Format_Number($new_os_p{$key}), $Totalp) + . HTMLDataCellWithBar('h', $new_os_h{$key}, '' . $p_h . '% ' . Format_Number($new_os_h{$key}), $Totalh); } $total_h += $new_os_h{$key}; $total_p += $new_os_p{$key}; - $count++; } - if ($Debug) { + + if ($Debug) + { debug( "Total real / shown : $Totalh / $total_h", 2 ); } + my $rest_h = $Totalh - $total_h; my $rest_p = $Totalp - $total_p; - if ( $rest_h > 0 ) { + if ( $rest_h > 0 ) + { my $p_p; my $p_h; if ($Totalh) { $p_h = int( $rest_h / $Totalh * 1000 ) / 10; } if ($Totalp) { $p_p = int( $rest_p / $Totalp * 1000 ) / 10; } - print "" - . "" - . "" - . "\n"; + $dataTableBody .= '' + . HTMLDataCellWithBar('p', $rest_p, '' . $p_p . '% ' . Format_Number($rest_p), $Totalp) + . HTMLDataCellWithBar('h', $rest_h, '' . $p_h . '% ' . Format_Number($rest_h), $Totalh); } + $dataTableBody .= ''; - print '
    "; + my $function = "ShowGraph_$pluginname"; - &$function( - "Top 5 Operating Systems", "oss", + $graph .= '
    ' + . &$function( + "Top 5 Operating Systems", "oss", 0, \@blocklabel, 0, \@valcolor, 0, 0, 0, \@valdata - ); - print "
     $Message[59]" . ucfirst($Message[28]) . "$Message[15]$Message[57]$Message[15]
    ' . ucfirst($Message[28]) . '' . $Message[57] . '
    $Message[0]".Format_Number($_os_p{$key})."$p_p".Format_Number($_os_h{$key})."$p_h
    ' . $Message[0] . '
    $libos".Format_Number($new_os_p{$key})."$p_p".Format_Number($new_os_h{$key})."$p_h
    ' . $libos . '
     $Message[2]".Format_Number($rest_p)."$p_p %".Format_Number($rest_h)."$p_h %
    ' . $Message[2] .'
    ' . &tab_end(); + return &tab_head($title, join( ' - ', @links ), 'os', $tooltip) + . $graph . '' . $dataTableHeader . $dataTableBody . '
    ' . &tab_end(); } #------------------------------------------------------------------------------ @@ -15896,7 +15900,7 @@ sub HTMLMainScreenSize{ $html .= '' . HTMLDataCellWithBar('h', $rest_h, $Message[2], $max_h) - . '' . $p . '%' . '' + . '' . $p . ' %' . '' . ''; } @@ -21203,7 +21207,7 @@ sub HTMLMainExtra{ # BY OS #---------------------------- if ($ShowOSStats) { - &HTMLMainOS($NewLinkParams, $NewLinkTarget); + print &HTMLMainOS($NewLinkParams, $NewLinkTarget); } # BY BROWSER From a4073d970c119fe0594497feebf8f88649e01527 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 4 Aug 2024 00:02:58 +0200 Subject: [PATCH 114/152] update some browser's icon --- wwwroot/icon/browser/chrome.png | Bin 429 -> 1469 bytes wwwroot/icon/browser/edge.png | Bin 537 -> 1623 bytes wwwroot/icon/browser/firefox.png | Bin 250 -> 1597 bytes wwwroot/icon/browser/mozilla.png | Bin 231 -> 1178 bytes wwwroot/icon/browser/msie.png | Bin 236 -> 1475 bytes wwwroot/icon/browser/netscape.png | Bin 146 -> 1717 bytes wwwroot/icon/browser/opera.png | Bin 222 -> 1348 bytes wwwroot/icon/browser/safari.png | Bin 248 -> 1723 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/wwwroot/icon/browser/chrome.png b/wwwroot/icon/browser/chrome.png index 4f1f21233f00ef4db469b22d5a182f0b9a838424..a47b16e98f8701e226c47a6a901de15985224ee3 100644 GIT binary patch literal 1469 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!ovP&e7Yz(~Q|QZLag z(ahM=%py@o!N|bKMBl(z-@r`Q(9p`%$jZP}0Sc6W78a$XSp~VcL9GMwY?U%fN(!v> z^~=l4^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_p zOiaozEwNPsIu_!K+yc00*0A>MPh-zp`HQAS1^UXzW9~q=E7AMmjtCE+>6!V z;*iRMRQ;gT;{4L0WMJH-DTAykuyQU+O)SYT3dzsUfdynhMt(_taYlZDf|047rGiFy zW?o8ud9fx~gRifZXI^nhVqS8pr;Du;&cs9 zS4T5PH%B996GKawUYGpj(%jU%5}4i;gkBSzdO^t{w*Y9fOKMSOS!#+~QGTuh*w0p( zxZPri(>$o&6x?nx!l_pu=oo!a%p%1!ObD2KKumbj1#;ktKQ#}S;){SudqbeK0s{k+ zuBVG*NX4z5VBhRuM-f|NPw|bOoJ+rH3x-^|rgh`Wv@VS!c{z7Y9A7!<=tpwu-HLzU zRo}R%Y0H(MuC8u9mV>QkI|>(?@~@eybOHQSgHH-FGw>?-E;ptPEy`yxZpT3flIttT$^C&w`|O%LgAJg~L#S^XD3-m|@V zEG_36SU8R@;P19B4l%y%7J7eCV|e`uhYlXcZjMta+dc?{pI=+;a^>f#6H@oY-d*QP zxv}u1v8GnysVR)Hek<0=b=DqU;XYmNI@`Smm!I$6u`xTcKj2lMR{F$iiB|diX`MHE zwFEPty}4!lyZZ%yo>jR6_lxujgMeFQR3~sU)3G!jA*z nR<(&N|9gD8&G}0221bT?cA|xAc27D6Do{OL{an^LB{Ts5QJ^Xt literal 429 zcmV;e0aE^nP)NJH^NGaOrWKbtS?nv91LuPf9lMUbAer%R;ia4b4Q1!ysXa_V~fi^^x zNge56!>)Rvug?{Z%bHsgss)U`dbKdVSk+m-o;TC7UamOrP0fymS@@>DV?BC(CQXiY zX2|dGVOj(klcjMjJlXYveKh7&Z(-Ak=VV{(frSrz{q^@h X;If``1aA9100000NkvXXu0mjfUPQq> diff --git a/wwwroot/icon/browser/edge.png b/wwwroot/icon/browser/edge.png index 88a770a1f8c04ce60a0a45a40df71deeacd28af9..8323d1bb0555f483fe12ff45bf81da9c7b2c23fb 100644 GIT binary patch literal 1623 zcmaJ>c~BE)9Nj9&X$KJx#A6#opg=a8n2;<42y7x(B0?IDz#uxxz7$%u>q!_5dSpv5T+G;1|FBVraZMsyK+Z@-2Z;0T0L3mNZ{ zN|PpmF{A+p1xz?Z!D6w&PyrL;VLXn2$H#&}HjBL&VsRiAF9e1WE*oKS!O@372Q(BM@XVnV2RHlQiT&us|SySZs*R4xtet#ylN`nL~6&-!TOgH!2K- zo+3ycXjjCt$XrUupp$)9g;qZgELcLM0a^hST5;cHFx3Vch(Kkq<-k#3z0*bl%+~5yFh; zZ-1|fEH36qQ+*G3TixckxM%6zdz{im%w|-bC(EvXk@>7mZjsgZ)OufcJZN&gvyLrb zW)t2Uk3QC}6F6Kxd%W=Ap%wnqyEYwxzO(^_`^z?c<@uyQQn0Nr{dFMRB#$oL4o=&d zX#T71636#dQS}kxhm!hPF9!x6`;_0-b21+}OuoCJtoL-KyJvKpa$3y(*)v6R!zdT? zxi9=?+ZMlZtzkJ`>v62~TeI02S>LOvU9tPpzVkCZiESzeMZ?w(hu=E)G@NN2%5X22 zp8bCCl7?tE-&$( z$Y8MGt&(k~zH97%n1AB-3AJ^l*lUBc_ms=g>vs&?1JUZ%5|0v=TXWK2$eWC?zSgFt zq;7g<<(zM8uY7Ll)c)8U|BY!_x4ZX+)6WmxXYd1e!AT65R%w9|H8Ffb^P1I`eWTq`yb4^n%>!? z;grbc|7v?INZnFBKVtQop*v+M%YO<|C)^WStoKjk*9Yf3+9%!%1_RefMhoBV%E99P zh7SMD{kiaKA@TJ7$-;Kh{P*=LP5+B@_Qj@(UltYn)EbMM>QsNEc-L0it}pTTO8ad@-(=&rr~hUa6;h+K)7%E{m!743-(`qoLGh)j?P^752h+?y8r+H literal 537 zcmV+!0_OdRP)aNDNS=+Yl#v0qUZ9l)8o-`=tk8_Xy?_$z#+3cvWq2K#i z{+12matrMMbU=HLVZDWjl!pmZRF8X7M z$)bgVj27Etv2LaZx!9jw7RW8t&WSGgiBF{_y{aM@9Ciy9j@-!Db20VE&CJj@#R;Wd bN*w4H(g~_-4{Km~00000NkvXXu0mjfYfJ>a diff --git a/wwwroot/icon/browser/firefox.png b/wwwroot/icon/browser/firefox.png index 1cdd1d2d899925171dcb3b56531a3faec2349029..516362fb6cb07779b1d117d5f6321a59899fb561 100644 GIT binary patch literal 1597 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+g!3HExhN-duDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49qH-ArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WBdX=ahAqhMrUWTJ0itZ!hZYiMX?YGh?#ssIH_Knsgf(yW49+@RJ0dA3R!B_#z` z`ugSN<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ6}oxF$}kgLQj3#|G7CyF^Yauy zCMG83mzLNn0UZnRMQ#Dy*t}wBNCCr4zap_f-%!s0|Z5PB_f>IEf++ybD@E~!PCWvMA{Mftf3U>{p$;&zJ} zPV=C8Q*gV*9H(A=pkwqw@ro4BFd<;#0WskT7s!Dp{nR{QdM^Sd>~8%Prx_TS)_b}* zhE&{Y3G&VsP86}dZ)0RUQ^nZRL+M)AHFrUAzd#L+q$_z_JZ{H^UwX&lxW!t$DcVu+ zFS9O(9?L|fbunA?SON_`x{5Da*}r7#O2gbqo<=igp0^e}s&$FGy>VvsIot2&7|k^I zmEBT$QjvP&*YDXIBqi6G`)+vf`|^L)&((YXYkWSMESzB_W~JBpLrkA9S0Lf;vh0^S zk81eNNH~}jGk-j$B7I8#Q+RW6z!RMm!3nBaJhPTcdc5+zW;{E+CTn|V#%_kisZM<% z3#Fem&pe%6mV5uiH)rm}o&TD4K0cwW(dNrkKwU;H8zAhcz(V|RW0uL_s8!hdlx9za(D|KIiwVF-tpm0#v}eZ z2jWj&h|P9rol_pxyGp4_%|dgEC0DOVSDCPnzO$&T)Pe(FWF>AfZBRMD{jSaG&sC4m z4X005-kQBe;FML{BL9gO?;nVZK3281W$Q1YN4JvSBvt-;FSR6s^PjqCjq4oo^VP>q zBQyKGn%IBv6h$6;n5&;)rZpkzwT0ICM2j-{qS;Q0)d}+&{4_bQg{&)c4l+6SRA}$% zX+n7otuHpkPM9HbV7bh%#&88U7rEB!eowdFE@xYkcP1wF&F$wte*U3nGS0L;C^?|= zT|JWL#2)TyL$>X6SDn%{`)NJTaq1V%)53Ey?Ng$ouC$4%F+LNrn6s_tT2+tB;Yv>- z^~q18fAT(w551!A^P|c7(80}9TqirOFw#569W(3htsQos)8F$mvN6=R@o%bGe`O-5 OK=*X@b6Mw<&;$UL>{t~5 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC3<7*YTz~)mf9>4qPai(aSiIe1 z%KrHi+P?2}cs14d@!GUCwO-~9QS7A~UslU4_EIYFbH5YHxAjhL2~aO%NswPKgTu2M zX+Tber;B4q#Vy%$Cm9(OIhY;znmfAwmhawBY1qQc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!ovP&e7Yz(~Q|QZLag z(ahM=%py@o!N|bKMBl(z-@r`Q(9p`%$jZP}0Sc6W78a$XSp~VcL9GMwY?U%fN(!v> z^~=l4^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_p zOiaozEwNPsIu_!K+yc00*0A>MPh-zp`HQAS1^UXzW9~q=E7AMmjtCE+>6!V z;*iRMRQ;gT;{4L0WMJH-DTAykuyQU+O)SYT3dzsUfdynhMt(_taYlZDf|047rGiFy zW?o8ud9fx~gRifZXI^nhVqS8pr;Du;&$o&6x?nx!l_pu=oo!a%p%1!ObD2KKumbj1#;ktKQ#}S;){Sudy49U$qWpP zT%InDAr-go1e{&v8X$6Pug1&@#-lDgzCEc8M#hF8l;*i=3hO7hXg=liSt_zrh1t3O z?(TOtm%pClzN7r=t>3?|ZNGj#PU745x6E@=BQKkzMn1FPJ6?GHvx;Zd?Qb^z#|wE5 zH$1TDE1$GTBc4C{dg&~+md!fchXo!!wurgDS6HHrvx%Xl_I~aC>!r1kVpA5c%91(W z@Y$w*w$Ejgj%%g88IjW*66Fp|OJ!WQip!H_SH`S1;kLT9MX};@R6PGZvTj_oLf%Qh zqi*e|m~)5cxriLCoOkj6u62(q<=7mo1y~Ml%T;j=Wa+m*xII_9i)q%OUki9HnE3wQ s*S>8-TcX4ymBwejmlOUU-p4Azkifpim&z?mD`L(fgE)(Rv$HAZ~Abg06?E^D|w}|6Qpxz=+7srqa#^i*A zkRXv1hM-gH@}BYX@H`3*o4+gQ#DNQy+22>IUY3+dyZ3u<)%Vvc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!ovP&e7Yz(~Q|QZLag z(ahM=%py@o!N|bKMBl(z-@r`Q(9p`%$jZP}0Sc6W78a$XSp~VcL9GMwY?U%fN(!v> z^~=l4^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_p zOiaozEwNPsIu_!K+yc00*0A>MPh-zp`HQAS1^UXzW9~q=E7AMmjtCE+>6!V z;*iRMRQ;gT;{4L0WMJH-DTAykuyQU+O)SYT3dzsUfdynhMt(_taYlZDf|047rGiFy zW?o8ud9fx~gRifZXI^nhVqS8pr;Du;&gH%-YUtu> z=4$F{=4k3>VFJ_ZlAm0fo0?Yw)0=|O>xfe?C^_U70Bv?jEy^rQO>ryA&s6~X*(wva zTg-8q2i2Q`+btG2_38s1qYsK%q?m>Y0h14i2~WB}4m|Ov<^fZD5in_=S-xX40|S$> zr;B4q#jTQ{^V!0VBJ*a>y?Hjx+|+kbgh`mlww+tP1lX$7yln-2BU@74!-aOQ+;-jX|rA@gTi@n%k~9%2`xHIB^VEBd+R-*rJocVqp%7x&n1eQ-n1 zYj#DI&ch!~#aHsA^yac@-uROvU;X3IUbF1u67!-9_y6PjJl)6H^|bBfa!&FUW>`PnGWZEkW;4H(+=aC1dltrR)$Tmr z{-xKbe(S6B%U_-`J)*(tYeQ`C8VtNUh4>!NSYzxMO%@u|PN{r23n-KN&XaO3*Q zIj@8Fi~syBe{h-Z8a>tIM?t_P_gRi>gTe~DWM4fcrhh} literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~x&b~RuK)l4|Ni~|$!l+Grd^+~ z{LaSH-yL$FNA$ctcl(E4_<_o;-#6|(ZyPpUGxp)jj~~NZZyf+?WGo5t3ubV5b|VeQ z$@O$`45?sDW?**YSovlZ!;+@UUD8aE5)m+Lv!DPc`F@f3vky3dI zf?6F4)@eJ4RX{{1B3h&{We`PCib#Ec9Ti$0^;J-@8wA=Pr8~3xJ?5Nq&%NLMW(y<2 zLQIY9j7TJssVGz+A;vZO*I*U#b$tFFB8K(2Fb0oAQ*aH0!K6SLnhXOX1(XU)U`Upg z(GB~ONGn{Bs2Ds(yp1bG6*NeXp=lK=f=wd%`fF8?G#$o)WH=R3@+gz7S114?<59M= z#dNWX56h9zYz&Uf4vUgzr%O39ioYM=tK|{`3K)j~tzwr_&DHWK^SWGOuHObJz&r#` z=TSbGiV;Tud=!HL4vpa}REnq>sD)G@gGSe9wFnf8{~xMQETPr7 z1pdeGe+sLkvQ#iAfz@axCMC`;g{lvw;_@*V!ci;=MRzS0GD42xs9KJy04AHp0bI8u zN*StAyUi2CVy;N3#v!E?772J1LV|`MGA={Fq|-T`EH*>PVlafkK|!8E4qL$R4(2nx zd^q$)t^k#0DqtnP$d&!W^<0*#ZwG~nh%A6HWH&4e#!v+?pEDO(-V0+{y#=mpc`wXm zxgcQ%)Sv9XPI_^RXdnG_sdb6PQuD(~qT?~5wHtQjtt4)Yvq%sar5)N6sgbYEu$rSC zX?@H*cCJ)hnKly8S(hYS@7&Em2gS zRP{Um4cOrmTsjo6rutZyMWUPE%NHZ@{i6>u+y){;T@F6&w?BK^vOBh{J}1L&72ABH zQ?ae)R$|dJUZMqcbxv-8&S_%^73El(|4g-1+WFKx&KnVvOmsjp3}FMtQf z6!*qm!1%Wh_&T1oAM&!MO`OuqiM$-0XWdyfh&{P}x9|($_wfy&H_f2FM)fg;5l!n# z%2!w0JNKM=)VL$OcBrM9xxp-FW)yuJD;=H?)r=g3xjng8zXfEK``suWx7QU8n-5<~ j=-0m4{rUTMDA|NGJGNCmvzuC?|B;A+9?P|NjpZnEkjx z8%Q~Nx;TbZ+$ud2$i<+*!4i1=UH$WAp}#wIB<2Nt?0dzxX>OT{+p-&vHaE;jxPERz s?R}2jGVJkLb}B*3ckVC_{8_+k^^4*4-8BytfQB)6y85}Sb4q9e0I;MqWB>pF diff --git a/wwwroot/icon/browser/opera.png b/wwwroot/icon/browser/opera.png index d6797c709039ee46e559577768d46c19c1ee2ac6..f96a91156fffc800e2f213b684d7405239b74a05 100644 GIT binary patch literal 1348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!ovP&e7Yz(~Q|QZLag z(ahM=%py@o!N|bKMBl(z-@r`Q(9p`%$jZP}0Sc6W78a$XSp~VcL9GMwY?U%fN(!v> z^~=l4^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_p zOiaozEwNPsIu_!K+yc00*0A>MPh-zp`HQAS1^UXzW9~q=E7AMmjtCE+>6!V z;*iRMRQ;gT;{4L0WMJH-DTAykuyQU+O)SYT3dzsUfdynhMt(_taYlZDf|047rGiFy zW?o8ud9fx~gRifZXI^nhVqS8pr;Du;& zHxoxwHx~;h7dH!-UYGpj(%jU%5}4i;gkE!;dO^t{w*Y9fOKMSOS!#+~QGTuh*w0p( zxZPrc(>$o&6x?nx#i>^x=oo!a%p%1!ObD2KKumbj1#;ktKQ#}S;){SuJMAiW0|Nu& z7Ec$)kcwMVg3o&~IZDi*IW^bU@vuqIgs)FlHuDRJ#4#!M>fJq~p81_~k@^Mm0$UE* zs)j`e76eyia5e>;GX39p_T87YJI!{lYp?t8@vQmo{rAt*e3tI9Nmyws8N|8h#m_4Z z7e3sce9k|KKeDmp;g$EB4PW{2m>8vhjyl40OMvOszZcGtf(%8Xmv#o<@89iKeQEu{ z0tXIF=V^2ESsvfISrQe=RS{md^zrd_&-WinEKKHD>I$t)>Y2`cAj05J%@2izuKUdR*LwEdGoQzT~8pvt)ZYsR;T2j$-*R3fkPg+#ER5vZVy^o`75u4Hp zP617!`Tu)LnRb>%KWBZzv7r9YJu80u#urwfH0DqDyS|co05~4+OerUhPf#9so~v@-CR#~_HGq*JDI}6 zs#+LVA1oYsB_w!l^wIC8w^mGU$!WCKJr={(%zlO8a)x@?^{cbx8QB;#Oy^1ODmWAj PD%U(+{an^LB{Ts50-Wbr literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~1_3@HuK)l4|NQ#(|L@<=A3N6V z;=EN!?OJB~XNxTlp{iekZ4p5DPbH_f*gVYt_+HS1u!H@ zI@}6-<8Z5-r9u%Z;swyfh>QrCe25yE0z>0)-o6?IB#wts;1C=ml{4^Twe@&FDq-M5 zJa{CYVh}z|Zs2vAyXS!~^p# zXgmY|At@0r5ZHq#VSq*?6T~DE1@NR1Au2?5qfxz}T>yndaR*6mAc;yKlj$B5I>`fA zxbRp&r6igzVEZkE!z>0q7DW|w5LBzxM70|cQO1B|8jS{$C?JJGz&r@5BsmIc2y)fd zMFuvk5-X(&REo#}6C-p8If63qSh63gkSUgE<*J2FVLbyikOCwVNv5h69eKR}ca_PO zyj7?G{+RE7603ws3K$f?D&&Y#jLj~3t0|O%zDEf|D54Z1NWx+x17i^sQN(?-@)7I4EY>6knF5Q5z$rvvFVl+}W#&^!=X4@UD z{~_iHyUxsZu0&&Tpu4Emn5uPl$Z>wZWq)0y;Ic61r|P-aU)R60C=0k&k`^T>ui2_i zPqT z!!p~D8k6hO{p^ovZ|x&3IH>J4X1C}Fy;18`pI>qvnVL-m&$L;6J211IUf|lfkJEHK zf1ebv^_OH(SU#tQ9rT9H{`LvI=})eA(Fz;yPM);2f7y~pI7!}d;=3t}$l-8XQK6u( zw9stT1GCa*%>gg7M*iu6#<|hq@m=MQpVyq%^mk?}GCf~!Il*={`-Wn?7-xT0KwB~9 z^JSd8rQqkDsvox;k8~=g-uSc8$l%lPB@XxU6<5M93zcsykGI9wy~?aqdc=>qB<|#_ z$-UJuGccpjm94C}S*S~s*h{ZwmIQFQS{hdz|tS=Zxd2ndW1d{=QJBQI}Vxa+UY zUBZSeMyMe{sima_%|PD4wSrl@7Q2L}B2iQA+6!H~AL?{1pY#XM=CEzgu%%S( zTvuZi+1i&=GA4_xPd4ldi?;J|ik;wIM%(S4WqU%-{`$>T%r!CX>`Hw`XwUC$odwvVr>m`w9Xs{{X{$MBn7$Qwa9gTAr16e0xS`LSb5+>zpmpVej@F^k=eg%< zYib;4V+xx_Mn(#qvYNHE`DML^FvsS<5_gZmcT-vS;#%JIPL80{BJBJ6cS`@%Kzhy1 ti@aN0n?0nB?ny>%L-6^pQrhiStj0mrap$M?b{9>*6E26(zRHTy{R1}nwnYE{ literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~1_3@HuK)l4|Ni~^@}*0UpS{pf zSlHe*Y0=g*u?dM~GxrD9t*hB`b3uE3$il0JGp;^+_H6HiPicV~Yk+zgOM?7@862M7 zNCR@pJY5_^Dj1U!5(I)oQW%)rlvP!k6>^`<5|L6laA3`(Y172k9Z-03aiZX@S0@sr zER$cJ%RI=l%J{j@%UKK0EVxp+>hqgk1-7O4q?ezI;Z8ERXj}aH%%dbWvFE1c{mdKI;Vst0FnY{R{#J2 From 197a5d50603163cdafcb93be5ff7e84e0ec63b48 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 4 Aug 2024 01:06:05 +0200 Subject: [PATCH 115/152] conform browsers table --- wwwroot/cgi-bin/awstats.pl | 181 ++++++++++++++++++------------------- 1 file changed, 89 insertions(+), 92 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 09585a62e..8151ffce5 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -15634,9 +15634,11 @@ sub HTMLMainOS{ $p_p = int( $new_os_p{$key} / $Totalp * 1000 ) / 10; } + $dataTableBody .= ''; + if ( $key eq 'Unknown' ) { - $dataTableBody .= '' . $Message[0] . ' ' + $dataTableBody .= '' . $Message[0] . ' ' . HTMLDataCellWithBar('p', $_os_p{$key}, '' . $p_p . '% ' . Format_Number($_os_p{$key}), $Totalp) . HTMLDataCellWithBar('h', $_os_h{$key}, '' . $p_h . '% ' . Format_Number($_os_h{$key}), $Totalh); } @@ -15644,8 +15646,7 @@ sub HTMLMainOS{ { my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; - my $libos = $OSHashLib{$keywithoutcumul} - || $keywithoutcumul; + my $libos = $OSHashLib{$keywithoutcumul} || $keywithoutcumul; my $nameicon = $keywithoutcumul; $nameicon =~ s/[^\w]//g; @@ -15653,10 +15654,13 @@ sub HTMLMainOS{ { $libos = "" . $OSFamily{$keywithoutcumul} . ""; } - $dataTableBody .= '' . $libos . ' ' + $dataTableBody .= '' . $libos . ' ' . HTMLDataCellWithBar('p', $new_os_p{$key}, '' . $p_p . '% ' . Format_Number($new_os_p{$key}), $Totalp) . HTMLDataCellWithBar('h', $new_os_h{$key}, '' . $p_h . '% ' . Format_Number($new_os_h{$key}), $Totalh); } + + $dataTableBody .= ''; + $total_h += $new_os_h{$key}; $total_p += $new_os_p{$key}; } @@ -15685,27 +15689,31 @@ sub HTMLMainOS{ } #------------------------------------------------------------------------------ -# Function: Prints the Browsers chart and table +# Function: Return the Browsers chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - -# Output: HTML -# Return: - +# Output: - +# Return: string #------------------------------------------------------------------------------ sub HTMLMainBrowsers{ + if ($Debug) { debug( "ShowBrowsersStats", 2 ); } + my $NewLinkParams = shift; my $NewLinkTarget = shift; - if ($Debug) { debug( "ShowBrowsersStats", 2 ); } - # print " "; - my $Totalh = 0; - my $Totalp = 0; - my %new_browser_h = (); - my %new_browser_p = (); - BROWSERLOOP: foreach my $key ( keys %_browser_h ) { + my $Totalh = my $Totalp = my $total_h = my $total_p = 0; + my %new_browser_h = my %new_browser_p = my @links = (); + my $tooltip = my $dataTableHeader = my $dataTableBody = my $graph = ''; + my $title = $Message[21] . ' (' . $Message[77] . ' ' . $MaxNbOf{'BrowsersShown'} .')'; + + BROWSERLOOP: foreach my $key ( keys %_browser_h ) + { $Totalh += $_browser_h{$key}; $Totalp += $_browser_p{$key}; - foreach my $family ( keys %BrowsersFamily ) { - if ( $key =~ /^$family/i ) { + foreach my $family ( keys %BrowsersFamily ) + { + if ( $key =~ /^$family/i ) + { $new_browser_h{"${family}cumul"} += $_browser_h{$key}; $new_browser_p{"${family}cumul"} += $_browser_p{$key}; next BROWSERLOOP; @@ -15714,12 +15722,10 @@ sub HTMLMainBrowsers{ $new_browser_h{$key} += $_browser_h{$key}; $new_browser_p{$key} += $_browser_p{$key}; } - my $title = $Message[21] . ' (' . $Message[77] . ' ' . $MaxNbOf{'BrowsersShown'} .')'; - my @links = (); push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'browserdetail', $Message[80] . '/' . $Message[58])); push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'unknownbrowser', $Message[0])); - + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link push(@links, '' . $Message[179] . ''); } - my $tooltip = ''; foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) { my $function = "getTooltip_$pluginname"; $tooltip .= &$function(19); } - print &tab_head($title, join( ' - ', @links ), 'browsers', $tooltip); - - &BuildKeyList( - $MaxNbOf{'BrowsersShown'}, $MinHit{'Browser'}, - \%new_browser_h, \%new_browser_p - ); + &BuildKeyList($MaxNbOf{'BrowsersShown'}, $MinHit{'Browser'}, \%new_browser_h, \%new_browser_p); - print ''; - - # Graph the top five in a pie chart - if (scalar @keylist > 1){ + if (scalar @keylist > 1) + { # Graph the top five in a pie chart foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } ) { my @blocklabel = (); my @valdata = (); my @valcolor = ($color_p); my $cnt = 0; - foreach my $key (@keylist) { + foreach my $key (@keylist) + { push @valdata, int( $new_browser_h{$key} / $TotalHits * 1000 ) / 10; if ($key eq 'Unknown'){push @blocklabel, "$key"; } else{ @@ -15769,91 +15768,89 @@ sub HTMLMainBrowsers{ $cnt++; if ($cnt > 4) { last; } } - print ""; + $graph .= '
    ' + . &$function( + "Top 5 Browsers", "browsers", + 0, \@blocklabel, + 0, \@valcolor, + 0, 0, + 0, \@valdata + ) + . '
    '; } } - print -"\n"; - my $total_h = 0; - my $total_p = 0; - my $count = 0; - foreach my $key (@keylist) { - my $p_h = ' '; - my $p_p = ' '; - if ($Totalh) { + + $dataTableHeader .= '' + . '' + . '' + . ''; + + $dataTableBody .= ''; + + foreach my $key (@keylist) + { + my $p_h = my $p_p = ''; + if ($Totalh) + { $p_h = int( $new_browser_h{$key} / $Totalh * 1000 ) / 10; - $p_h = "$p_h %"; } - if ($Totalp) { + if ($Totalp) + { $p_p = int( $new_browser_p{$key} / $Totalp * 1000 ) / 10; - $p_p = "$p_p %"; } - if ( $key eq 'Unknown' ) { - print "" - . "" - . "\n"; + + $dataTableBody .= ''; + + if ( $key eq 'Unknown' ) + { + $dataTableBody .= '' + . HTMLDataCellWithBar('p', $_browser_p{$key}, '' . $p_p . '% ' . Format_Number($_browser_p{$key}), $Totalp) + . HTMLDataCellWithBar('h', $_browser_h{$key}, '' . $p_h . '% ' . Format_Number($_browser_h{$key}), $Totalh); } - else { + else + { my $keywithoutcumul = $key; $keywithoutcumul =~ s/cumul$//i; - my $libbrowser = $BrowsersHashIDLib{$keywithoutcumul} - || $keywithoutcumul; - my $nameicon = $BrowsersHashIcon{$keywithoutcumul} - || "notavailable"; - if ( $BrowsersFamily{$keywithoutcumul} ) { + my $libbrowser = $BrowsersHashIDLib{$keywithoutcumul} || $keywithoutcumul; + my $nameicon = $BrowsersHashIcon{$keywithoutcumul} || 'notavailable'; + if ( $BrowsersFamily{$keywithoutcumul} ) + { $libbrowser = "$libbrowser"; } - print "\n"; + + $dataTableBody .= '' + . (($BrowsersHereAreGrabbers{$key} ? '(' . $Message[111] . ') ' : '' )) + . $libbrowser . ' ' + . HTMLDataCellWithBar('p', $new_browser_p{$key}, '' . $p_p . '% ' . Format_Number($new_browser_p{$key}), $Totalp) + . HTMLDataCellWithBar('h', $new_browser_h{$key}, '' . $p_h . '% ' . Format_Number($new_browser_h{$key}), $Totalh); } + + $dataTableBody .= ''; + $total_h += $new_browser_h{$key}; $total_p += $new_browser_p{$key}; - $count++; } + if ($Debug) { debug( "Total real / shown : $Totalh / $total_h", 2 ); } + my $rest_h = $Totalh - $total_h; my $rest_p = $Totalp - $total_p; - if ( $rest_h > 0 ) { - my $p_p = 0.0; - my $p_h; + if ( $rest_h > 0 ) + { + my $p_p = my $p_h = 0; if ($Totalh) { $p_h = int( $rest_h / $Totalh * 1000 ) / 10; } if ($Totalp) { $p_p = int( $rest_p / $Totalp * 1000 ) / 10; } - print ""; - print ""; - print -""; - print "\n"; + $dataTableBody .= '' + . '' + . ''; } - print '
    "; + my $function = "ShowGraph_$pluginname"; - &$function( - "Top 5 Browsers", "browsers", - 0, \@blocklabel, - 0, \@valcolor, - 0, 0, - 0, \@valdata - ); - print "
     $Message[21]$Message[111]" . ucfirst($Message[28]) . "$Message[15]$Message[57]$Message[15]
    ' . ucfirst($Message[28]) . '' . $Message[57] . '
    $Message[0]?".Format_Number($_browser_p{$key})."$p_p".Format_Number($_browser_h{$key})."$p_h
    ' . $Message[0] . '
    " - . ( $PageDir eq 'rtl' ? "" : "" ) - . "$libbrowser" - . ( $PageDir eq 'rtl' ? "" : "" ) - . "" - . ( - $BrowsersHereAreGrabbers{$key} - ? "$Message[112]" - : "$Message[113]" - ) - . "".Format_Number($new_browser_p{$key})."$p_p".Format_Number($new_browser_h{$key})."$p_h
     $Message[2] $rest_p$p_p %$rest_h$p_h %
    ' . $Message[2] . '' . $p_p . '% ' . $rest_p . '' . $p_p . '% ' . $rest_h . '
    ' . &tab_end(); + return &tab_head($title, join( ' - ', @links ), 'browsers', $tooltip) + . $graph . '' . $dataTableHeader . $dataTableBody . '
    ' . &tab_end(); } #------------------------------------------------------------------------------ @@ -21213,7 +21210,7 @@ sub HTMLMainExtra{ # BY BROWSER #---------------------------- if ($ShowBrowsersStats) { - &HTMLMainBrowsers($NewLinkParams, $NewLinkTarget); + print &HTMLMainBrowsers($NewLinkParams, $NewLinkTarget); } # BY REFERENCE From 9c77711e84a5a7cf1d3029cee437695a88fcfdb2 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 4 Aug 2024 02:31:43 +0200 Subject: [PATCH 116/152] conform keyphrases keywords tables --- wwwroot/cgi-bin/awstats.pl | 241 ++++++++++++++++++------------------- 1 file changed, 114 insertions(+), 127 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 8151ffce5..8d30de1bd 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -1057,7 +1057,7 @@ sub renderCss { .oceanxx{ fill: #4477DD !important; stroke-width: 0 !important; } .lighted-land{ fill: rgba(128, 86, 86, 1) !important; fill-rule: evenodd;} .highlighted-land{ fill: var(--aws-color-u) !important; fill-rule: evenodd;} -.zoomed-land{ fill: var(--aws-color-v) !important;} +.zoomed-land{ fill: white !important;} .weekend { background-color: var(--light-color) } .data-table-average { background-color: var(--neutral-color) } @@ -16185,151 +16185,128 @@ sub HTMLMainReferrers{ } #------------------------------------------------------------------------------ -# Function: Prints the Key Phrases and Keywords chart and table +# Function: Return the Key Phrases chart and table # Parameters: $NewLinkParams, $NewLinkTarget # Input: - -# Output: HTML -# Return: - +# Output: - +# Return: string #------------------------------------------------------------------------------ -sub HTMLMainKeys{ +sub HTMLMainKeyphrases{ + if ($Debug) { debug( "ShowKeyphrasesStats", 2 ); } + my $NewLinkParams = shift; my $NewLinkTarget = shift; - # print " "; - # print " "; - - my $title = ''; + my $title = $Message[120] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeyphrasesShown'} . ')'; + my $tableData = my $tooltip = ''; # Tooltip(15) my @links = (); + my $p = my $total_s = 0; - if ($ShowKeyphrasesStats) + my $tableHeader = '' . $TotalDifferentKeyphrases . ' ' . $Message[103] . '' . $Message[14] . ''; + + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'keyphrases', $Message[80])); + + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) { - if ($Debug) { debug( "ShowKeyphrasesStats", 2 ); } + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } - $title = $Message[120] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeyphrasesShown'} . ')'; + &BuildKeyList( $MaxNbOf{'KeyphrasesShown'}, $MinHit{'Keyphrase'}, \%_keyphrases, \%_keyphrases ); - push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'keyphrases', $Message[80])); - - my $tooltip = ''; - foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) - { - my $function = "getTooltip_$pluginname"; - $tooltip .= &$function(19); - } + foreach my $key (@keylist) + { + # Convert coded keywords (utf8,...) to be correctly reported in HTML page. + my $mot = ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) ? CleanXSS(DecodeKey_decodeutfkeys($key, $PageCode || 'iso-8859-1')) : CleanXSS(DecodeEncodedString($key)); - print &tab_head($title, join( ' - ', @links ), 'keyphrases', $tooltip); - - print '' - . "\n"; + $p = ($TotalKeyphrases) ? int( $_keyphrases{$key} / $TotalKeyphrases * 1000 ) / 10 : 0; + + $tableData .= '' + . HTMLDataCellWithBar('p', $_keyphrases{$key}, '' . $p . '% ' . $_keyphrases{$key}, $TotalKeyphrases) + . ''; - my $total_s = 0; - my $count = 0; - &BuildKeyList( $MaxNbOf{'KeyphrasesShown'}, - $MinHit{'Keyphrase'}, \%_keyphrases, \%_keyphrases ); - foreach my $key (@keylist) { - my $mot; - - # Convert coded keywords (utf8,...) to be correctly reported in HTML page. - if ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) { - $mot = CleanXSS( - DecodeKey_decodeutfkeys( - $key, $PageCode || 'iso-8859-1' - ) - ); - } - else { $mot = CleanXSS( DecodeEncodedString($key) ); } - my $p; - if ($TotalKeyphrases) { - $p = - int( $_keyphrases{$key} / $TotalKeyphrases * 1000 ) / 10; - } - print "\n"; - $total_s += $_keyphrases{$key}; - $count++; - } - if ($Debug) { - debug( "Total real / shown : $TotalKeyphrases / $total_s", 2 ); - } - my $rest_s = $TotalKeyphrases - $total_s; - if ( $rest_s > 0 ) { - my $p; - if ($TotalKeyphrases) { - $p = int( $rest_s / $TotalKeyphrases * 1000 ) / 10; - } - print ""; - print "\n"; - } + $total_s += $_keyphrases{$key}; + } - print '
    $TotalDifferentKeyphrases $Message[103]$Message[14]$Message[15]
    ' . XMLEncode($mot) . '
    " - . XMLEncode($mot) - . "$_keyphrases{$key}$p %
    $Message[124]$rest_s$p %
    ' . &tab_end(); + if ($Debug) { + debug( "Total real / shown : $TotalKeyphrases / $total_s", 2 ); } - if ($ShowKeywordsStats) + my $rest_s = $TotalKeyphrases - $total_s; + if ( $rest_s > 0 ) { - if ($Debug) { debug( "ShowKeywordsStats", 2 ); } + $p = ($TotalKeyphrases) ? int( $rest_s / $TotalKeyphrases * 1000 ) / 10 : 0; + + $tableData .= '' . $Message[124] . '' + . HTMLDataCellWithBar('p', $rest_s, '' . $p . '% ' . $rest_s, $TotalKeyphrases) + . ''; + } + + return &tab_head($title, join( ' - ', @links ), 'keyphrases', $tooltip) + . '' . $tableHeader . $tableData + . '
    ' . &tab_end(); +} + +#------------------------------------------------------------------------------ +# Function: Return the Keywords chart and table +# Parameters: $NewLinkParams, $NewLinkTarget +# Input: - +# Output: - +# Return: string +#------------------------------------------------------------------------------ +sub HTMLMainKeywords{ + if ($Debug) { debug( "ShowKeywordsStats", 2 ); } + + my $NewLinkParams = shift; + my $NewLinkTarget = shift; + + my $title = $Message[121] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeywordsShown'} . ')'; + my $tableData = my $tooltip = ''; # Tooltip(15) + my @links = (); + my $p = my $total_s = 0; - $title = $Message[121] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeywordsShown'} . ')'; - my @links = (); + my $tableHeader = '' . $TotalDifferentKeywords . ' ' . $Message[13] . '' . $Message[14] . ''; - push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'keywords', $Message[80])); + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'keywords', $Message[80])); - my $tooltip = ''; - foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) - { - my $function = "getTooltip_$pluginname"; - $tooltip .= &$function(19); - } + foreach my $pluginname ( keys %{ $PluginsLoaded{'getTooltip'} } ) + { + my $function = "getTooltip_$pluginname"; + $tooltip .= &$function(19); + } - print &tab_head($title, join( ' - ', @links ), 'keywords', $tooltip); + &BuildKeyList( $MaxNbOf{'KeywordsShown'}, $MinHit{'Keyword'}, \%_keywords, \%_keywords ); + + foreach my $key (@keylist) + { + # Convert coded keywords (utf8,...) to be correctly reported in HTML page. + my $mot = ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) ? CleanXSS(DecodeKey_decodeutfkeys($key, $PageCode || 'iso-8859-1')) : CleanXSS(DecodeEncodedString($key)); + + $p = ($TotalKeywords) ? int( $_keywords{$key} / $TotalKeywords * 1000 ) / 10 : 0; - print '' - . "\n"; + $tableData .= '' + . HTMLDataCellWithBar('p', $_keywords{$key}, '' . $p . '% ' . $_keywords{$key}, $TotalKeywords) + . ''; + + $total_s += $_keywords{$key}; + } - my $total_s = 0; - my $count = 0; - &BuildKeyList( $MaxNbOf{'KeywordsShown'}, - $MinHit{'Keyword'}, \%_keywords, \%_keywords ); - foreach my $key (@keylist) { - my $mot; - - # Convert coded keywords (utf8,...) to be correctly reported in HTML page. - if ( $PluginsLoaded{'DecodeKey'}{'decodeutfkeys'} ) { - $mot = CleanXSS( - DecodeKey_decodeutfkeys( - $key, $PageCode || 'iso-8859-1' - ) - ); - } - else { $mot = CleanXSS( DecodeEncodedString($key) ); } - my $p; - if ($TotalKeywords) { - $p = int( $_keywords{$key} / $TotalKeywords * 1000 ) / 10; - } - print "\n"; - $total_s += $_keywords{$key}; - $count++; - } - if ($Debug) { - debug( "Total real / shown : $TotalKeywords / $total_s", 2 ); - } - my $rest_s = $TotalKeywords - $total_s; - if ( $rest_s > 0 ) { - my $p; - if ($TotalKeywords) { - $p = int( $rest_s / $TotalKeywords * 1000 ) / 10; - } - print ""; - print "\n"; - } + if ($Debug) { + debug( "Total real / shown : $TotalKeywords / $total_s", 2 ); + } - print '
    $TotalDifferentKeywords $Message[13]$Message[14]$Message[15]
    ' . XMLEncode($mot) . '
    " - . XMLEncode($mot) - . "$_keywords{$key}$p %
    $Message[30]$rest_s$p %
    ' . &tab_end(); + my $rest_s = $TotalKeywords - $total_s; + if ( $rest_s > 0 ) + { + $p = ($TotalKeywords) ? int( $rest_s / $TotalKeywords * 1000 ) / 10 : 0; + $tableData .= '' . $Message[30] . '' + . HTMLDataCellWithBar('p', $rest_s, '' . $p . '% ' . $rest_s, $TotalKeywords) + . ''; } + + return &tab_head($title, join( ' - ', @links ), 'keywords', $tooltip) + . '' . $tableHeader . $tableData + . '
    ' . &tab_end(); } #------------------------------------------------------------------------------ @@ -21189,6 +21166,8 @@ sub HTMLMainExtra{ &HTMLMainLogins($NewLinkParams, $NewLinkTarget); } + print '
    '; + # BY SESSION #---------------------------- if ($ShowSessionsStats) { @@ -21201,6 +21180,8 @@ sub HTMLMainExtra{ print &HTMLMainScreenSize(); } + print '
    '; + # BY OS #---------------------------- if ($ShowOSStats) { @@ -21213,18 +21194,24 @@ sub HTMLMainExtra{ print &HTMLMainBrowsers($NewLinkParams, $NewLinkTarget); } + # BY SEARCH KEYPHRASES + #---------------------------- + if ($ShowKeyphrasesStats){ + print &HTMLMainKeyphrases($NewLinkParams, $NewLinkTarget); + } + + # BY SEARCH KEYWORDS + #---------------------------- + if ($ShowKeywordsStats){ + print &HTMLMainKeywords($NewLinkParams, $NewLinkTarget); + } + # BY REFERENCE #--------------------------- if ($ShowOriginStats) { &HTMLMainReferrers($NewLinkParams, $NewLinkTarget); } - # BY SEARCH KEYWORDS AND/OR KEYPHRASES - #------------------------------------- - if ($ShowKeyphrasesStats || $ShowKeywordsStats){ - &HTMLMainKeys($NewLinkParams, $NewLinkTarget); - } - # BY HTTP STATUS #---------------------------- if ($ShowHTTPErrorsStats) { From 18ae9b9e7db8e0b0d300e45f6d972093efc20ef9 Mon Sep 17 00:00:00 2001 From: bouks Date: Sun, 4 Aug 2024 03:55:50 +0200 Subject: [PATCH 117/152] Change some visual rendering --- wwwroot/cgi-bin/awstats.pl | 54 ++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 8d30de1bd..3891d811b 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -964,36 +964,34 @@ sub renderCss { --aws-color-x: hsl(260, 76%, 81%); --aws-color-s: hsl(240, 56%, 70%); --dark-color: hsl(0, 0%, 8.2%); - --neutral-color: hsl(0, 0%, 48.2%); - --light-color: hsl(0, 0%, 40.8%); + --neutral-color: hsl(0, 0%, 48%); + --light-color: hsl(0, 0%, 60%); --a-color: hsl(0, 0%, 81.6%); --a-hover-color: hsl(0, 0%, 100%); --nav-color: hsl(0, 0%, 2.4%); } } -html { scroll-behavior: smooth; scroll-padding: var(--scroll-padding, 5rem); } +html { scroll-behavior: smooth; scroll-padding: var(--scroll-padding); } body { font-size: clamp(0.75rem, -3vw + 3rem, 0.9rem); font-family: sans-serif, system-ui; background-color: var(--page-bgcolor); margin: 0; padding:0; color: var(--page-color); } -a, a:link, a:visited { color: var(--a-color); text-decoration: none; } -a:hover, a:focus, a:active{ color: var(--a-hover-color); text-decoration: none; } -nav a, nav a:link, nav a:visited { color: var(--nav-color) } b { font-weight: 700 } hr { width: 100%; height: 0; margin: 0; color: transparent; border: none; } small { font-size: 0.9em; font-weight: 400; } #container, .flex { gap: 25px; } #container, #container > header, .flex { display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;} -#container > header { position: sticky; top: 0; z-index: 100; width: 100%; margin-bottom: -30px; column-gap: 20px; background-color: var(--page-bgcolor); text-align: center; } +#container > header { position: sticky; top: 0; z-index: 100; width: 100%; column-gap: 20px; background-color: var(--page-bgcolor); text-align: center; } +#container > *:nth-child(odd):not(header):not(footer) { width: 100dvw; padding: 20px 0; background-color: var(--neutral-color)} .column { display:flex;flex-flow:column wrap; row-gap: 10px; } #domain { font-weight: 900; font-size: 1.5em } header select { width : 60px } footer { width: 100dvw; text-align: center; border-top: 1px solid; padding-top: 5px; } #logo { height: 33px; } -nav { width: 100%; height: 2.5ch; margin: 8px 0; margin-top: 0; background-color: white; font-weight: 600 } -nav ul { display: flex; justify-content: center; gap: 1dvw; list-style-type: none; margin: 0; padding: 0; overflow: hidden; } +nav { width: 100%; height: 2.5ch; margin: 0; background-color: white; font-weight: 600 } +nav ul { display: flex; justify-content: center; gap: 1dvw; list-style-type: none; margin: 0; padding: 0; overflow: hidden; border: none; } nav li a, .dropbtn { display: inline-block; padding: 2px 4px; } li a:hover, .dropdown:hover .dropbtn { background-color: var(--neutral-color); } li.dropdown { display: inline-block; } -.dropdown-content { display: none; position: absolute; background-color: white; min-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); z-index: 1; } +.dropdown-content { display: none; position: absolute; background-color: white; min-width: 160px; z-index: 1; } .dropdown-content a { padding: 12px 16px; display: block; } .dropdown-content a:hover { background-color: var(--neutral-color); } .dropdown:hover .dropdown-content { display: block; } @@ -1003,10 +1001,9 @@ sub renderCss { .summary-label { margin: 0 9px; } #summary-logs div[class^="bg-"], .currentday{ width: calc(var(--bar-width) * 1px); font-weight: 900 } div[class^="bg-"], th[class^="bg-"] { width: calc(var(--bar-width) * 1px) } -button, select, input[type=submit] { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: 1px solid #ccd7e0; } +button, select, input { cursor: pointer; color: var(--light-color); background-color: var(--dark-color); border: none; } h1, section header {border-bottom: 6px solid var(--light-color); width: 100%; margin: 0; text-align: center; font-weight: 900; font-size: 1em; } -section header { position: relative } -.tooltip { visibility: hidden; opacity: 0; position: absolute; bottom: -94px; left: 0; z-index: 10; font-size: 0.9em; font-weight: 400; text-align: left; width: 100%; background-color: var(--dark-color); color: var(--light-color); padding: 4px; border-radius: 5px; } +.tooltip { visibility: hidden; opacity: 0; position: fixed; top: 0; left: 0; z-index: 1000; font-size: 0.9rem; font-weight: 600; text-align: left; width: 100%; background-color: var(--dark-color); color: white; padding: 6px;} section header:hover .tooltip { visibility: visible; opacity: 1; } .multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ position: relative; } @@ -1014,7 +1011,7 @@ sub renderCss { .data-table tfoot { display: table-header-group } .data-table tbody div { opacity: 0.9 } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } -.data-table tbody tr:hover { font-weight: 900; background: var(--neutral-color); transform: scale(1.1) translateX(2px); } +.data-table tbody tr:hover { font-weight: 900; background: var(--light-color); transform: scale(1.1) translateX(2px); } .data-table th { font-weight: 900 } .data-table th, .data-table td:not(:first-child) { padding-top: 2px; padding-bottom: 2px; } .data-table td { text-align: right; font-weight: 700; } @@ -1040,6 +1037,9 @@ sub renderCss { .title-map{ position:absolute; top: 16px; color: var(--light-color); } .country { text-transform: uppercase; font-weight: 700; } /* colors */ +nav a, nav a:link, nav a:visited { color: var(--nav-color) } +a, a:link, a:visited { color: var(--a-color); text-decoration: none; } +a:hover, a:focus, a:active{ color: var(--a-hover-color); text-decoration: none; } .bg-u{ background-color: var(--aws-color-u) } .bg-v{ background-color: var(--aws-color-v) } .bg-p{ background-color: var(--aws-color-p) } @@ -1093,7 +1093,7 @@ sub renderJavascript { EOF @@ -2256,12 +2222,16 @@ sub Parse_Config { next; } - if ( $param =~ /^FlagsType/ ) { $FlagsType = ( $value eq 'utf8' ) ? 'utf8' : 'png'; next; } + if ( $param =~ /^ShowMap/ ) { + $ShowMap = ( $value eq '1' ) ? 1 : 0; + next; + } + if ( $param =~ /^SiteDomain/ ) { # No regex test as SiteDomain is always exact value @@ -3113,7 +3083,8 @@ sub Check_Config { if ( $AddDataArrayShowDaysOfWeekStats !~ /[01]/ ) { $AddDataArrayShowDaysOfWeekStats = 1; } if ( $AddDataArrayShowHoursStats !~ /[01]/ ) { $AddDataArrayShowHoursStats = 1; } if ( $FlagsType !~ /image|utf8/ ) { $FlagsType = 'image'; } - + if ( $ShowMap !~ /[01]/ ) { $ShowMap = 1; } + my @maxnboflist = ( 'Domain', 'HostsShown', 'LoginShown', 'RobotShown', From 7f9b6fd08db79a0b9837fa2ef4a5903fc4f4e9d6 Mon Sep 17 00:00:00 2001 From: bouks Date: Wed, 7 Aug 2024 14:04:40 +0200 Subject: [PATCH 139/152] (js) Don't change worldmap's top in detail page if showmap = 0 --- wwwroot/cgi-bin/awstats.pl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index e5ce015ab..73a677f46 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -1080,11 +1080,6 @@ sub renderJavascript { document.documentElement.style.setProperty("--scroll-padding", (headerHeight + 20) + "px"); - let worldmapAll = document.querySelector("#worldmap-wrapper.all") - if(worldmapAll){ - worldmapAll.style.top = headerHeight + "px"; - } - [...document.querySelectorAll('.bar-table')].forEach(el => { el.addEventListener("mouseenter", (e) => { [...el.querySelectorAll('.bar')].forEach(bar => { @@ -1135,6 +1130,11 @@ sub renderJavascript { if(showMap === 1){ + let worldmapAll = document.querySelector("#worldmap-wrapper.all") + if(worldmapAll){ + worldmapAll.style.top = headerHeight + "px"; + } + let worldmap = document.getElementById('worldmap'); fetch( dirImgs + '/BlankMap-World.svg').then(response=>response.text()).then(data=>{ From fa88154607ec3f66168b86d1427957fb1ceb37fe Mon Sep 17 00:00:00 2001 From: bouks Date: Wed, 7 Aug 2024 18:17:50 +0200 Subject: [PATCH 140/152] "Add" Message[56] -> '-' for "no result" (geoip_city_maxmind, geoip) --- wwwroot/cgi-bin/lang/awstats-en.txt | 2 +- wwwroot/cgi-bin/lang/awstats-fr.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wwwroot/cgi-bin/lang/awstats-en.txt b/wwwroot/cgi-bin/lang/awstats-en.txt index deeead174..1c97634ad 100644 --- a/wwwroot/cgi-bin/lang/awstats-en.txt +++ b/wwwroot/cgi-bin/lang/awstats-en.txt @@ -57,7 +57,7 @@ message52=visits/visitor message53=Robots/Spiders visitors message54=Free realtime logfile analyzer for advanced web statistics message55=of -message56= +message56=- message57=Hits message58=Versions message59=Operating Systems diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index ca5bac763..e11130838 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -57,7 +57,7 @@ message52=visites / visiteur message53=Visiteurs Robots/Spiders message54=Analyseur de log libre pour statistiques Web avancées message55=sur -message56= +message56=- message57=Hits message58=Versions message59=Systèmes exploitation From 1d9b27b8235d883f44819bf780dc4f1837c7242d Mon Sep 17 00:00:00 2001 From: bouks Date: Wed, 7 Aug 2024 18:21:22 +0200 Subject: [PATCH 141/152] geoip_city_maxmind, geoip, return only content The cell itself is build by awstats in sub HTMLShowHostInfo Set background to plugins columns Arrange paddings --- wwwroot/cgi-bin/awstats.pl | 27 ++-- wwwroot/cgi-bin/plugins/geoip.pm | 69 ++++---- wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm | 147 +++++++----------- 3 files changed, 104 insertions(+), 139 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 73a677f46..180b91c06 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -962,9 +962,8 @@ sub renderCss { #summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;} #summary-logs div { padding: 1px 0 } .summary-label { margin: 0 9px; } -#summary-logs div[class^="bg-"], .currentday{ width: calc(var(--bar-width) * 1px); font-weight: 900 } -div[class^="bg-"], th[class^="bg-"] { width: calc(var(--bar-width) * 1px) } -th:not([class^="bg-"]):not(:first-child) { background-color: var(--neutral-color)} +#summary-logs div[class^="bg-"], .currentday{ font-weight: 900 } +:is(div, th)[class^="bg-"] { width: calc(var(--bar-width) * 1px) } button, select, input { cursor: pointer; color: var(--light-color); background-color: var(--darker-color); border: none; } h1, section header {border-bottom: 6px solid var(--light-color); width: 100%; margin: 0; font-weight: 900; font-size: 1em; } .tooltip { visibility: hidden; opacity: 0; position: fixed; top: 0; left: 0; z-index: 1000; font-size: 0.9rem; font-weight: 600; text-align: left; width: 100%; background-color: var(--darker-color); color: white; padding: 6px;} @@ -973,17 +972,18 @@ sub renderCss { .help:hover .tooltip { visibility: visible; opacity: 1; } .multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ position: relative; } -.data-table { border-spacing: 0 2px; margin: auto; max-width: 90dvw; } +.data-table { border-spacing: 0; margin: auto; max-width: 98dvw; } .data-table tfoot { display: table-header-group } -.data-table tbody div { opacity: 0.9 } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } .data-table tbody tr:hover { font-weight: 900; color: var(--darker-color);background: var(--light-color); transform: scale(1.1) translateX(2px); } -.data-table th { font-weight: 900 } -.data-table th, .data-table td:not(:first-child) { padding-top: 2px; padding-bottom: 2px; } -.data-table td { text-align: right; font-weight: 700; } +.data-table th { font-weight: 900; padding-top: 2px; padding-bottom: 2px; } +.data-table :is(th, td).plugin:nth-child(odd) { background-color: var(--dark-color)} +.data-table :is(th, td).plugin:nth-child(even) { background-color: var(--darker-color);} +.data-table td { text-align: right; font-weight: 700; padding-top: 2px; padding-bottom: 2px; padding-left: 0; padding-right: 0; } .data-table td:first-child { padding-right: 4px } .data-table td:first-child:not(.country) { font-weight: 400 } -.data-table td div { padding: 0 4px } +.data-table td.plugin { padding-left: 4px; padding-right: 4px; color: var(--light-color); text-align: center; } +.data-table td div { padding: 0 2px } .data-table td img { width: 16px; height: 16px;vertical-align: bottom; } .data-table td small { float: left; line-height: 1.3; } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } @@ -9372,16 +9372,17 @@ sub HTMLShowClusterInfo { #------------------------------------------------------------------------------ sub HTMLShowHostInfo { my $host = shift; - my $infos = ''; + my $cellType = ($host eq '__title__') ? 'h' : 'd'; + my $cells = ''; # Call to plugins' function ShowInfoHost foreach my $pluginname ( sort keys %{ $PluginsLoaded{'ShowInfoHost'} } ) { my $function = "ShowInfoHost_$pluginname"; - $infos .= &$function($host); + $cells .= '' . (($host eq '') ? '' : &$function($host)) . ''; } - return $infos; + return $cells; } #------------------------------------------------------------------------------ @@ -14556,10 +14557,10 @@ sub HTMLMainHosts{ if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) { # All other visitors (known or not) $tableData .= '' . $Message[2] . '' - . &HTMLShowHostInfo('') . (( $ShowHostsStats =~ /P/i ) ? '' . Format_Number($rest_p) . '' : '') . (( $ShowHostsStats =~ /H/i ) ? '' . Format_Number($rest_h) . '' : '') . (( $ShowHostsStats =~ /B/i ) ? '' . Format_Bytes($rest_k) . '' : '') + . &HTMLShowHostInfo('') . (( $ShowHostsStats =~ /L/i ) ? ' ' : '') . ''; } diff --git a/wwwroot/cgi-bin/plugins/geoip.pm b/wwwroot/cgi-bin/plugins/geoip.pm index d631576be..5987b2a87 100644 --- a/wwwroot/cgi-bin/plugins/geoip.pm +++ b/wwwroot/cgi-bin/plugins/geoip.pm @@ -145,9 +145,13 @@ sub GetCountryCodeByName_geoip { #----------------------------------------------------------------------------- sub ShowInfoHost_geoip { my $param="$_[0]"; - my $html = ''; + my $noRes = '' . $Message[56] . ''; + # <----- - if ($param eq '__title__') { + if(!$param){ return $noRes; } + + if ($param eq '__title__') + { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&)update(=\w*|$)//i; $NewLinkParams =~ s/(^|&)output(=\w*|$)//i; @@ -162,43 +166,34 @@ sub ShowInfoHost_geoip { $NewLinkParams =~ tr/&/&/s; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } - $html .= 'GeoIP
    Country
    '; - } - elsif ($param) { - my $ip=0; - my $key; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $ip=4; - $key=$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $ip=6; - $key=$param; - } - $html .= ''; - if ($key && $ip==4) { - my $res = TmpLookup_geoip($param); - if (!$res){$res=lc($gi->country_code_by_addr($param)) if $gi;} - if ($Debug) { debug(" Plugin $PluginName: GetCountryByIp for $param: [$res]",5); } - if ($res) { $html .= $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:'' . $Message[0] . ''; } - else { $html .= '' . $Message[0] . ''; } - } - if ($key && $ip==6) { - $html .= '' . $Message[0] . ''; - } - if (! $key) { - my $res = TmpLookup_geoip($param); - if (!$res){$res=lc($gi->country_code_by_name($param)) if $gi;} - if ($Debug) { debug(" Plugin $PluginName: GetCountryByHostname for $param: [$res]",5); } - if ($res) { $html .= $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:'' . $Message[0] . ''; } - else { $html .= '' . $Message[0] . ''; } - } - $html .= ''; + return 'GeoIP Country'; } - else { - $html .= ''; + + if ($param =~ /^[0-9A-F]*:/i) { return $noRes; } # IPv6 address + + if ($param !~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) + { # Not IPv4 address (hostname) + my $res = TmpLookup_geoip($param); + if (!$res){$res=lc($gi->country_code_by_name($param)) if $gi;} + if ($Debug) { debug(" Plugin $PluginName: GetCountryByHostname for $param: [$res]",5); } + return ( + ($res) + ? ($DomainsHashIDLib{$res} ? $DomainsHashIDLib{$res} : $noRes) + : $noRes + ); } - return $html; + + my $res = TmpLookup_geoip($param); + if (!$res){$res=lc($gi->country_code_by_addr($param)) if $gi;} + if ($Debug) { debug(" Plugin $PluginName: GetCountryByIp for $param: [$res]",5); } + + return ( + ($res) + ? ($DomainsHashIDLib{$res} ? $DomainsHashIDLib{$res} : $noRes) + : $noRes + ); + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm b/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm index b04683097..ed01155f6 100644 --- a/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm +++ b/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm @@ -4537,8 +4537,11 @@ sub GetCountryCodeByName_geoip_city_maxmind { #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_city_maxmind { my $param="$_[0]"; - my $html = ''; + my $noRes = '' . $Message[56] . ''; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; @@ -4556,100 +4559,66 @@ sub ShowInfoHost_geoip_city_maxmind { $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } -# print ""; -# print "GeoIP
    Country
    "; -# print ""; - $html .= '' - . 'GeoIP
    City
    ' - . ''; + return 'GeoIP City'; } - elsif ($param) - { - # try loading our override file if we haven't yet - my $ip=0; - my $key; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $ip=4; - $key=$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $ip=6; - $key=$param; - } - if ($key && $ip==4) { - my $country; - my $city; - my @res = TmpLookup_geoip_city_maxmind($param); - if (@res){ - $country = $res[0]; - $city = $res[4]; - } - elsif ($type eq 'geoippureperl') - { - my @record = (); - @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; - if ($Debug) { debug(" Plugin $PluginName: GetCityByIp for $param: [@record]",5); } - $country=$record[0] if @record; - $city=$record[4] if @record; - } - else - { - my $record=(); - $record=$geoip_city_maxmind->record_by_addr($param) if $geoip_city_maxmind; - if ($Debug) { debug(" Plugin $PluginName: GetCityByIp for $param: [$record]",5); } - $country=$record->country_code if $record; - $city=$record->city if $record; - } -# print ""; -# if ($country) { print $DomainsHashIDLib{$country}?$DomainsHashIDLib{$country}:"$Message[0]"; } -# else { print "$Message[0]"; } -# print ""; - $html .= ''; - if ($city) { $html .= EncodeToPageCode($city); } - else { $html .= '' . $Message[0] . ''; } - $html .= ''; + + if ($param =~ /^[0-9A-F]*:/i) { debug ("Plugin $PluginName: IPv6 not supported by GeoIP: $key"); return $noRes; } # IPv6 address + + my $country; + my $city; + my @res = TmpLookup_geoip_city_maxmind($param); + + if ($param !~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) + { # Not IPv4 address (hostname) + + if (@res){ + $country = $res[0]; + $city = $res[4]; } - if ($key && $ip==6) { - debug (" Plugin $PluginName: IPv6 not supported by GeoIP: $key"); - $html .= '' . $Message[0] . ''; + elsif ($type eq 'geoippureperl') + { + my @record = (); + @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; + if ($Debug) { debug(" Plugin $PluginName: GetCityByHostname for $param: [@record]",5); } + $country=$record[0] if @record; + $city=$record[4] if @record; } - if (! $key) { - my $country; - my $city; - my @res = TmpLookup_geoip_city_maxmind($param); - if (@res){ - $country = $res[0]; - $city = $res[4]; - } - elsif ($type eq 'geoippureperl') - { - my @record = (); - @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; - if ($Debug) { debug(" Plugin $PluginName: GetCityByHostname for $param: [@record]",5); } - $country=$record[0] if @record; - $city=$record[4] if @record; - } - else - { - my $record=(); - $record=$geoip_city_maxmind->record_by_name($param) if $geoip_city_maxmind; - if ($Debug) { debug(" Plugin $PluginName: GetCityByHostname for $param: [$record]",5); } - $country=$record->country_code if $record; - $city=$record->city if $record; - } -# print ""; -# if ($country) { print $DomainsHashIDLib{$country}?$DomainsHashIDLib{$country}:"$Message[0]"; } -# else { print "$Message[0]"; } -# print ""; - $html .= ''; - if ($city) { $html .= EncodeToPageCode($city); } - else { $html .= '' . $Message[0] . ''; } - $html .= ''; + else + { + my $record=(); + $record=$geoip_city_maxmind->record_by_name($param) if $geoip_city_maxmind; + if ($Debug) { debug(" Plugin $PluginName: GetCityByHostname for $param: [$record]",5); } + $country=$record->country_code if $record; + $city=$record->city if $record; } } + + # try loading our override file if we haven't yet + my $ip=0; + my $key; + + if (@res){ + $country = $res[0]; + $city = $res[4]; + } + elsif ($type eq 'geoippureperl') + { + my @record = (); + @record=$geoip_city_maxmind->get_city_record($param) if $geoip_city_maxmind; + if ($Debug) { debug(" Plugin $PluginName: GetCityByIp for $param: [@record]",5); } + $country=$record[0] if @record; + $city=$record[4] if @record; + } else - { $html .= ''; } - return $html; + { + my $record=(); + $record=$geoip_city_maxmind->record_by_addr($param) if $geoip_city_maxmind; + if ($Debug) { debug(" Plugin $PluginName: GetCityByIp for $param: [$record]",5); } + $country=$record->country_code if $record; + $city=$record->city if $record; + } + + return (($city) ? EncodeToPageCode($city) : $noRes); # -----> } From cbea00f043f916a1d1fba950c4ff4ddea999b308 Mon Sep 17 00:00:00 2001 From: bouks Date: Wed, 7 Aug 2024 18:34:59 +0200 Subject: [PATCH 142/152] (geo) change functions doc , remove span --- wwwroot/cgi-bin/plugins/geoip.pm | 8 +++++--- wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/wwwroot/cgi-bin/plugins/geoip.pm b/wwwroot/cgi-bin/plugins/geoip.pm index 5987b2a87..c46c4ce8e 100644 --- a/wwwroot/cgi-bin/plugins/geoip.pm +++ b/wwwroot/cgi-bin/plugins/geoip.pm @@ -139,13 +139,15 @@ sub GetCountryCodeByName_geoip { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip { my $param="$_[0]"; - my $noRes = '' . $Message[56] . ''; + my $noRes = $Message[56]; # <----- if(!$param){ return $noRes; } diff --git a/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm b/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm index ed01155f6..73aa9237e 100644 --- a/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm +++ b/wwwroot/cgi-bin/plugins/geoip_city_maxmind.pm @@ -4531,13 +4531,15 @@ sub GetCountryCodeByName_geoip_city_maxmind { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_city_maxmind { my $param="$_[0]"; - my $noRes = '' . $Message[56] . ''; + my $noRes = $Message[56]; # <----- if(!$param){ return $noRes; } From 6d3b94060ab489882ea01780c6d5d1c47ed6baca Mon Sep 17 00:00:00 2001 From: bouks Date: Wed, 7 Aug 2024 20:33:44 +0200 Subject: [PATCH 143/152] css gui "top 10" smaller misc table at bottom full width tables on portrait mode style adjustments --- wwwroot/cgi-bin/awstats.pl | 71 +++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 180b91c06..8fc1c9974 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -898,13 +898,13 @@ sub renderCss { --aws-color-e: hsl(258, 60%, 75%); --aws-color-x: hsl(260, 76%, 81%); --aws-color-s: hsl(240, 56%, 70%); - --dark-color: hsl(220, 0%, 75%); + --dark-color: hsl(220, 0%, 50%); --darker-color: hsl(220, 0%, 7%); - --neutral-color: hsl(220, 0%, 80%); - --light-color: hsl(220, 0%, 90%); + --neutral-color: hsl(220, 0%, 90%); + --light-color: hsl(220, 0%, 80%); --a-color: hsl(0, 0%, 0%); --a-hover-color: hsl(0, 0%, 0%); - --bar-width: 100; + --bar-width: 90; --bar-v-height: 16; --bar-v-grow: 1; --bar-v-width-month: 0.44dvw; @@ -927,7 +927,7 @@ sub renderCss { --aws-color-x: hsl(260, 76%, 81%); --aws-color-s: hsl(240, 56%, 70%); --dark-color: hsl(220, 0%, 15%); - --neutral-color: hsl(220, 0%, 48%); + --neutral-color: hsl(220, 0%, 30%); --light-color: hsl(220, 0%, 60%); --a-color: hsl(220, 0%, 81.6%); --a-hover-color: hsl(220, 0%, 100%); @@ -963,33 +963,33 @@ sub renderCss { #summary-logs div { padding: 1px 0 } .summary-label { margin: 0 9px; } #summary-logs div[class^="bg-"], .currentday{ font-weight: 900 } -:is(div, th)[class^="bg-"] { width: calc(var(--bar-width) * 1px) } +:is(div, th)[class^="bg-"] { min-width: calc(var(--bar-width) * 1px); max-width: calc(var(--bar-width) * 2px) } button, select, input { cursor: pointer; color: var(--light-color); background-color: var(--darker-color); border: none; } h1, section header {border-bottom: 6px solid var(--light-color); width: 100%; margin: 0; font-weight: 900; font-size: 1em; } -.tooltip { visibility: hidden; opacity: 0; position: fixed; top: 0; left: 0; z-index: 1000; font-size: 0.9rem; font-weight: 600; text-align: left; width: 100%; background-color: var(--darker-color); color: white; padding: 6px;} +.tooltip { visibility: hidden; opacity: 0; position: fixed; top: 0; left: 0; z-index: 1000; font-size: 0.9rem; font-weight: 400; text-align: left; width: 100%; background-color: var(--darker-color); color: white; padding: 6px;} .tab, section header a:any-link { float: right; margin: 0 0 0 1ch; height: 2ch; text-align: center; border: 0.5ch solid var(--light-color); background-color: var(--light-color); color: var(--darker-color); cursor: pointer; font-weight: 700} .help { width: 2ch; cursor: help; } .help:hover .tooltip { visibility: visible; opacity: 1; } .multi-data-table { display: flex; column-gap: 3dvw; flex-wrap: wrap; justify-content: center } .multi-data-table.worldmap{ position: relative; } -.data-table { border-spacing: 0; margin: auto; max-width: 98dvw; } +.data-table { border-spacing: 0; margin: auto; } .data-table tfoot { display: table-header-group } .data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } .data-table tbody tr:hover { font-weight: 900; color: var(--darker-color);background: var(--light-color); transform: scale(1.1) translateX(2px); } .data-table th { font-weight: 900; padding-top: 2px; padding-bottom: 2px; } .data-table :is(th, td).plugin:nth-child(odd) { background-color: var(--dark-color)} .data-table :is(th, td).plugin:nth-child(even) { background-color: var(--darker-color);} -.data-table td { text-align: right; font-weight: 700; padding-top: 2px; padding-bottom: 2px; padding-left: 0; padding-right: 0; } +.data-table td { text-align: right; font-weight: 700; padding-top: 3px; padding-bottom: 3px; padding-left: 0; padding-right: 0; } .data-table td:first-child { padding-right: 4px } .data-table td:first-child:not(.country) { font-weight: 400 } .data-table td.plugin { padding-left: 4px; padding-right: 4px; color: var(--light-color); text-align: center; } -.data-table td div { padding: 0 2px } +.data-table td div { padding: 0 2px; height: 2ch; } .data-table td img { width: 16px; height: 16px;vertical-align: bottom; } .data-table td small { float: left; line-height: 1.3; } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } .data-table-sum { font-size : clamp(0.938rem, -3vw + 3rem, 1.125rem) } .left-padding-separator { padding-left: 20px } -.bar-table { visibility: visible; width: 100%; margin: auto; text-align: center; font-size: 10px; border-bottom: 6px solid var(--light-color);} +.bar-table { visibility: visible; width: 100%; margin: 3px auto; padding: 2px 0; text-align: center; font-size: 10px; border-bottom: 1px solid var(--light-color);} .bar-table tr:first-child td { vertical-align: bottom; } .bar-table span { font-size: 0.8em } .collapsed{ visibility: collapse; transition visibility 0.5s ease-in } @@ -1018,8 +1018,8 @@ sub renderCss { .bg-x{ background-color: var(--aws-color-x) } .bg-s{ background-color: var(--aws-color-s) } .clock{ display: inline-block; vertical-align: bottom; margin: 0 5px; border-radius: 50%; } -.clock-night{ background: conic-gradient(var(--dark-color) 330deg, rgb(244, 240, 144) 30deg); } -.clock-day{ background: conic-gradient(rgb(244, 240, 144) 330deg, var(--dark-color) 30deg); } +.clock-night{ background: conic-gradient(var(--darker-color) 330deg, rgb(244, 240, 144) 30deg); } +.clock-day{ background: conic-gradient(rgb(244, 240, 144) 330deg, var(--darker-color) 30deg); } .bar-table .clock { width: 0.5dvw; height: 0.5dvw } .data-table .clock { width: 16px; height: 16px } .landxx{ fill: var(--dark-color) !important; transition: fill 0.3s ease-in } @@ -1027,23 +1027,24 @@ sub renderCss { .lighted-land{ fill: rgba(128, 86, 86, 1) !important; fill-rule: evenodd;} .highlighted-land{ fill: var(--aws-color-u) !important; fill-rule: evenodd;} .zoomed-land{ fill: white !important;} -.weekend { background-color: var(--light-color) } -.data-table-average { background-color: var(--neutral-color) } +.weekend { background-color: var(--neutral-color) } +.data-table-average { background-color: var(--light-color) } @media (min-resolution: 2dppx) { body { font-size: clamp(1rem, -3vw + 3rem, 1.4rem) } +} - @media (orientation: portrait) { - .data-table { width: 90dvw} - } +@media (orientation: portrait) { + .data-table { width: 96dvw} } @media print { body, #container > :nth-child(2n+1):not(header):not(footer) { background-color: white } - nav, form, #update-datas-button, .collapsed, .expand-collapse-button { display: none } + nav, form, #update-datas-button, .collapsed, .expand-collapse-button, .help, .tab + , section header a:any-link { display: none } section #daysofweek { margin-bottom: 40px } #container section section, .column { break-inside: avoid-page; } - :root { --dark-color: hsl(220, 0%, 100%); } + :root { --dark-color: hsl(220, 0%, 100%);} } '; @@ -10079,7 +10080,7 @@ sub HTMLShowEmailSendersChart { if ( !($HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'}) ) { - $subtitle = '(' . $Message[77] . ' ' . $MaxNbOf{'EMailsShown'} . ')'; + $subtitle = '(' . $Message[77] . ' ' . $MaxNbOf{'EMailsShown'} . ')'; push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allemails', $Message[80])); if ( $ShowEMailSenders =~ /L/i ) @@ -10244,7 +10245,7 @@ sub HTMLShowEmailReceiversChart { if ( !($HTMLOutput{'allemailr'} || $HTMLOutput{'lastemailr'}) ) { - $subtitle = '(' . $Message[77] . ' ' . $MaxNbOf{'EMailsShown'} . ')'; + $subtitle = '(' . $Message[77] . ' ' . $MaxNbOf{'EMailsShown'} . ')'; push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allemailr', $Message[80])); if ( $ShowEMailReceivers =~ /L/i ) @@ -14329,7 +14330,7 @@ sub HTMLMainDownloads{ my $TopFiveTotalh = my $total_h = my $total_206 = my $max_k = my $max_average_k = 0; my @links = (); my $chart = my $dataTable = ''; - my $title = $Message[178] . (($all ne 'all') ? ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')' : ''); + my $title = $Message[178] . (($all ne 'all') ? ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')' : ''); my @sortedDlKeys = (sort {$_downloads{$b}->{'AWSTATS_SIZE'} <=> $_downloads{$a}->{'AWSTATS_SIZE'}}(keys %_downloads)); if($all ne 'all') @@ -14589,7 +14590,7 @@ sub HTMLMainLogins{ if ($Debug) { debug( "ShowAuthenticatedUsers", 2 ); } print " "; my $title = -"$Message[94] ($Message[77] $MaxNbOf{'LoginShown'})   -   ($Message[77] $MaxNbOf{'LoginShown'})   -   (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')'; my @links = (); my $tooltip = my $tableHeader = my $tableData = ''; my $total_p = my $total_e = my $total_x = my $total_k = 0; @@ -15117,7 +15118,7 @@ sub HTMLMainOS{ my $total_h = my $total_p = 0; my @links = my %new_os_h = my %new_os_p = (); my $tooltip = my $dataTableHeader = my $dataTableBody = my $graph = ''; - my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; + my $title = $Message[59] . ' (' . $Message[77] . ' ' . $MaxNbOf{'OsShown'} . ')'; OSLOOP: foreach my $key ( keys %_os_h ) { @@ -15281,7 +15282,7 @@ sub HTMLMainBrowsers{ my $Totalh = my $Totalp = my $total_h = my $total_p = 0; my %new_browser_h = my %new_browser_p = my @links = (); my $tooltip = my $dataTableHeader = my $dataTableBody = my $graph = ''; - my $title = $Message[21] . ' (' . $Message[77] . ' ' . $MaxNbOf{'BrowsersShown'} .')'; + my $title = $Message[21] . ' (' . $Message[77] . ' ' . $MaxNbOf{'BrowsersShown'} .')'; BROWSERLOOP: foreach my $key ( keys %_browser_h ) { @@ -15669,7 +15670,7 @@ sub HTMLMainKeyphrases{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $title = $Message[120] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeyphrasesShown'} . ')'; + my $title = $Message[120] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeyphrasesShown'} . ')'; my $tableData = my $tooltip = ''; # Tooltip(15) my @links = (); my $p = my $total_s = 0; @@ -15732,7 +15733,7 @@ sub HTMLMainKeywords{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $title = $Message[121] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeywordsShown'} . ')'; + my $title = $Message[121] . ' (' . $Message[77] . ' ' . $MaxNbOf{'KeywordsShown'} . ')'; my $tableData = my $tooltip = ''; # Tooltip(15) my @links = (); my $p = my $total_s = 0; @@ -20592,12 +20593,6 @@ sub HTMLMainExtra{ print &HTMLMainHosts($NewLinkParams, $NewLinkTarget); } - # BY MISC - #---------------------------- - if ($ShowMiscStats) { - &HTMLMainMisc(); - } - print '
    '; # BY COUNTRY/DOMAIN @@ -20688,6 +20683,12 @@ sub HTMLMainExtra{ print ''; print '
    '; + # BY MISC + #---------------------------- + if ($ShowMiscStats) { + &HTMLMainMisc(); + } + # BY HTTP STATUS #---------------------------- if ($ShowHTTPErrorsStats) { From 17a7c2c1e286773bdd752ef8cd68fcca80db8605 Mon Sep 17 00:00:00 2001 From: bouks Date: Wed, 7 Aug 2024 22:52:57 +0200 Subject: [PATCH 144/152] Update Geo plugins ShowInfoHost subroutine returning only content cleaning code --- wwwroot/cgi-bin/plugins/geoip2_city.pm | 36 ++--- wwwroot/cgi-bin/plugins/geoip2_country.pm | 34 ++-- wwwroot/cgi-bin/plugins/geoip6.pm | 72 ++++----- wwwroot/cgi-bin/plugins/geoip_asn_maxmind.pm | 126 +++++++-------- wwwroot/cgi-bin/plugins/geoip_isp_maxmind.pm | 113 ++++++-------- wwwroot/cgi-bin/plugins/geoip_org_maxmind.pm | 111 ++++++-------- .../cgi-bin/plugins/geoip_region_maxmind.pm | 145 ++++++++---------- wwwroot/cgi-bin/plugins/hostinfo.pm | 44 +++--- 8 files changed, 299 insertions(+), 382 deletions(-) diff --git a/wwwroot/cgi-bin/plugins/geoip2_city.pm b/wwwroot/cgi-bin/plugins/geoip2_city.pm index 2f1580b86..cb0e45730 100644 --- a/wwwroot/cgi-bin/plugins/geoip2_city.pm +++ b/wwwroot/cgi-bin/plugins/geoip2_city.pm @@ -221,13 +221,19 @@ sub AddHTMLGraph_geoip2_city { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip2_city { my $param="$_[0]"; + my $noRes = $Message[56]; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; @@ -245,28 +251,20 @@ sub ShowInfoHost_geoip2_city { $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } -# print ""; # print "GeoIP2
    Country
    "; -# print ""; - print ""; - print "GeoIP2
    City
    "; - print ""; + return "GeoIP2 City"; } - elsif ($param) - { - my ($country, $city, $subdivision) = Lookup_geoip2_city($param); -# print ""; + + my ($country, $city, $subdivision) = Lookup_geoip2_city($param); # if ($country) { print $DomainsHashIDLib{$country}?$DomainsHashIDLib{$country}:"$Message[0]"; } # else { print "$Message[0]"; } -# print ""; - print ""; - if ($city) { print EncodeToPageCode($city); } - else { print "$Message[0]"; } - print ""; + + if ($city) + { + return EncodeToPageCode($city); } - else - { print " "; } - return 1; + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/geoip2_country.pm b/wwwroot/cgi-bin/plugins/geoip2_country.pm index e3e1573c8..d0cc9e767 100644 --- a/wwwroot/cgi-bin/plugins/geoip2_country.pm +++ b/wwwroot/cgi-bin/plugins/geoip2_country.pm @@ -121,7 +121,11 @@ sub GetCountryCodeByName_geoip2_country { #----------------------------------------------------------------------------- sub ShowInfoHost_geoip2_country { my $param="$_[0]"; - # <----- + my $noRes = $Message[56]; + + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&)update(=\w*|$)//i; @@ -137,24 +141,16 @@ sub ShowInfoHost_geoip2_country { $NewLinkParams =~ tr/&/&/s; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } - print ""; - print "GeoIP2
    Country
    "; - print ""; - } - elsif ($param) { - print ""; - my $res = Lookup_geoip2_country($param); - if ($res) { - $res = lc($res); - print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"$Message[0]"; - } - else { print "$Message[0]"; } - print ""; - } - else { - print " "; - } - return 1; + return "GeoIP2 Country"; + } + + my $res = Lookup_geoip2_country($param); + if ($res) { + $res = lc($res); + return ($DomainsHashIDLib{$res} ? $DomainsHashIDLib{$res} : $noRes); + } + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/geoip6.pm b/wwwroot/cgi-bin/plugins/geoip6.pm index 6be133331..edc4e314e 100644 --- a/wwwroot/cgi-bin/plugins/geoip6.pm +++ b/wwwroot/cgi-bin/plugins/geoip6.pm @@ -146,13 +146,19 @@ sub GetCountryCodeByName_geoip6 { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip6 { my $param="$_[0]"; + my $noRes = $Message[56]; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&)update(=\w*|$)//i; @@ -168,44 +174,38 @@ sub ShowInfoHost_geoip6 { $NewLinkParams =~ tr/&/&/s; $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } - print ""; - print "GeoIP
    Country
    "; - print ""; + return "GeoIP Country"; } - elsif ($param) { - my $ip=0; - my $key; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $ip=4; - $key='::ffff:'.$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $ip=6; - $key=$param; - } - print ""; - if ($key) { - my $res = TmpLookup_geoip6($param); - if (!$res && $gi) { - $res=lc($gi->country_code_by_addr_v6($key)); - } - if ($Debug) { debug(" Plugin $PluginName: GetCountryByIp for $key: [$res]",5); } - if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"$Message[0]"; } - else { print "$Message[0]"; } - } - else { - my $res = TmpLookup_geoip6($param); - if (!$res){$res=lc($gi->country_code_by_name_v6($param)) if $gi;} - if ($Debug) { debug(" Plugin $PluginName: GetCountryByHostname for $param: [$res]",5); } - if ($res) { print $DomainsHashIDLib{$res}?$DomainsHashIDLib{$res}:"$Message[0]"; } - else { print "$Message[0]"; } - } - print ""; + + my $key; + if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address + $key='::ffff:'.$param; + } + elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address + $key=$param; + } + + my $res = TmpLookup_geoip6($param); + + if ($key) + { + if (!$res && $gi) { + $res=lc($gi->country_code_by_addr_v6($key)); + } + if ($Debug) { debug(" Plugin $PluginName: GetCountryByIp for $key: [$res]",5); } } else { - print " "; + if (!$res){ + $res=lc($gi->country_code_by_name_v6($param)) if $gi; + } + if ($Debug) { debug(" Plugin $PluginName: GetCountryByHostname for $param: [$res]",5); } } - return 1; + + if ($res) { + return $DomainsHashIDLib{$res} ? $DomainsHashIDLib{$res} : $noRes; + } + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/geoip_asn_maxmind.pm b/wwwroot/cgi-bin/plugins/geoip_asn_maxmind.pm index dc08d93b8..f7aba4fcf 100644 --- a/wwwroot/cgi-bin/plugins/geoip_asn_maxmind.pm +++ b/wwwroot/cgi-bin/plugins/geoip_asn_maxmind.pm @@ -233,13 +233,20 @@ sub AddHTMLGraph_geoip_asn_maxmind { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_asn_maxmind { my $param="$_[0]"; + my $noRes = $Message[56]; + my $asn = 0; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; @@ -256,74 +263,59 @@ sub ShowInfoHost_geoip_asn_maxmind { $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } - print ""; - print "GeoIP
    ASN
    "; - print ""; + return "GeoIP ASN"; } - elsif ($param) { - my $ip=0; - my $key; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $ip=4; - $key=$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $ip=6; - $key=$param; - } - print ""; - my $asn = 0; - if ($key && $ip==4) { - $asn = TmpLookup_geoip_asn_maxmind($param); - if (!$asn && $type eq 'geoippureperl') - { - # Function org_by_addr does not exists in PurePerl but org_by_name do same - $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; - } - elsif (!$asn) - { - $asn=$geoip_asn_maxmind->org_by_addr($param) if $geoip_asn_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetASNByIp for $param: [$asn]",5); } - } - if ($key && $ip==6) { - debug(" Plugin $PluginName: IPv6 not supported by MaxMind Free DBs: $key",3); - } - if (! $key) { - $asn = TmpLookup_geoip_asn_maxmind($param); - if (!$asn && $type eq 'geoippureperl') - { - $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; - } - elsif (!$asn) - { - $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$asn]",5); } - } - if (length($asn)>0) { - my $link = ''; - my $idx = index(trim($asn), ' '); - if ($LookupLink){ - if ($idx < 0 && $asn =~ m/^A/){ $link .= $LookupLink.$asn; } - elsif (substr($asn, 0, $idx) =~ m/^A/){$link .= $LookupLink.substr($asn, 0, $idx); } - } - if ($link){ $link = "";} - if ($idx > -1 ) {$asn = substr(trim($asn), $idx+1);} - if (length($asn) <= $MAXLENGTH) { - print "$link$asn".($link ? "" : ""); - } - else { - print $link.substr($asn,0,$MAXLENGTH).'...'.($link ? "" : ""); - } - } - else { print "$Message[0]"; } - print ""; + + if ($param =~ /^[0-9A-F]*:/i) { debug(" Plugin $PluginName: IPv6 not supported by MaxMind Free DBs: $key",3); return $noRes; } # IPv6 address + + $asn = TmpLookup_geoip_asn_maxmind($param); + + if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) + { # IPv4 address + if (!$asn && $type eq 'geoippureperl') + { + # Function org_by_addr does not exists in PurePerl but org_by_name do same + $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; + } + elsif (!$asn) + { + $asn=$geoip_asn_maxmind->org_by_addr($param) if $geoip_asn_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetASNByIp for $param: [$asn]",5); } } - else { - print " "; + else + { #hostname + if (!$asn && $type eq 'geoippureperl') + { + $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; + } + elsif (!$asn) + { + $asn=$geoip_asn_maxmind->org_by_name($param) if $geoip_asn_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$asn]",5); } + } + + if (length($asn)>0) + { + my $link = ''; + my $idx = index(trim($asn), ' '); + if ($LookupLink){ + if ($idx < 0 && $asn =~ m/^A/){ $link .= $LookupLink.$asn; } + elsif (substr($asn, 0, $idx) =~ m/^A/){$link .= $LookupLink.substr($asn, 0, $idx); } + } + if ($link){ $link = "";} + if ($idx > -1 ) {$asn = substr(trim($asn), $idx+1);} + if (length($asn) <= $MAXLENGTH) { + return "$link$asn".($link ? "" : ""); + } + else + { + return $link.substr($asn,0,$MAXLENGTH).'...'.($link ? "" : ""); + } } - return 1; + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/geoip_isp_maxmind.pm b/wwwroot/cgi-bin/plugins/geoip_isp_maxmind.pm index e7a1751fb..336fdd6fb 100644 --- a/wwwroot/cgi-bin/plugins/geoip_isp_maxmind.pm +++ b/wwwroot/cgi-bin/plugins/geoip_isp_maxmind.pm @@ -210,13 +210,19 @@ sub AddHTMLGraph_geoip_isp_maxmind { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_isp_maxmind { my $param="$_[0]"; + my $noRes = $Message[56]; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; @@ -233,75 +239,46 @@ sub ShowInfoHost_geoip_isp_maxmind { $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } - print ""; - print "GeoIP
    ISP
    "; - print ""; + return "GeoIP ISP"; } - elsif ($param) { - my $ip=0; - my $key; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $ip=4; - $key=$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $ip=6; - $key=$param; - } - print ""; - if ($key && $ip==4) { - my $isp = TmpLookup_geoip_isp_maxmind($param); - if (!$isp && $type eq 'geoippureperl') - { - # Function isp_by_addr does not exists in PurePerl but isp_by_name do same - $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; - } - elsif (!$isp) - { - # Function isp_by_addr does not exits, so we use org_by_addr - $isp=$geoip_isp_maxmind->org_by_addr($param) if $geoip_isp_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetIspByIp for $param: [$isp]",5); } - if ($isp) { - if (length($isp) <= $MAXLENGTH) { - print "$isp"; - } - else { - print substr($isp,0,$MAXLENGTH).'...'; - } - } - else { print "$Message[0]"; } - } - if ($key && $ip==6) { - print "$Message[0]"; - } - if (! $key) { - my $isp = TmpLookup_geoip_isp_maxmind($param); - if (!$isp && $type eq 'geoippureperl') - { - $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; - } - elsif (!$isp) - { - $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetIspByHostname for $param: [$isp]",5); } - if ($isp) { - if (length($isp) <= $MAXLENGTH) { - print "$isp"; - } - else { - print substr($isp,0,$MAXLENGTH).'...'; - } - } - else { print "$Message[0]"; } - } - print ""; + + if ($param =~ /^[0-9A-F]*:/i) { return $noRes; } # IPv6 address + + my $isp = TmpLookup_geoip_isp_maxmind($param); + + if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) + { # IPv4 + if (!$isp && $type eq 'geoippureperl') + { + # Function isp_by_addr does not exists in PurePerl but isp_by_name do same + $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; + } + elsif (!$isp) + { + # Function isp_by_addr does not exits, so we use org_by_addr + $isp=$geoip_isp_maxmind->org_by_addr($param) if $geoip_isp_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetIspByIp for $param: [$isp]",5); } + } - else { - print " "; + else + { #hostname + if (!$isp && $type eq 'geoippureperl') + { + $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; + } + elsif (!$isp) + { + $isp=$geoip_isp_maxmind->isp_by_name($param) if $geoip_isp_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetIspByHostname for $param: [$isp]",5); } + } + + if ($isp) { + return ((length($isp) <= $MAXLENGTH) ? "$isp" : substr($isp,0,$MAXLENGTH).'...'); } - return 1; + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/geoip_org_maxmind.pm b/wwwroot/cgi-bin/plugins/geoip_org_maxmind.pm index c2d0ab927..f6a028863 100644 --- a/wwwroot/cgi-bin/plugins/geoip_org_maxmind.pm +++ b/wwwroot/cgi-bin/plugins/geoip_org_maxmind.pm @@ -210,13 +210,19 @@ sub AddHTMLGraph_geoip_org_maxmind { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_org_maxmind { my $param="$_[0]"; + my $noRes = $Message[56]; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; @@ -233,74 +239,45 @@ sub ShowInfoHost_geoip_org_maxmind { $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } - print ""; - print "GeoIP
    Org
    "; - print ""; + return "GeoIP Org"; } - elsif ($param) { - my $ip=0; - my $key; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $ip=4; - $key=$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $ip=6; - $key=$param; - } - print ""; - if ($key && $ip==4) { - my $org = TmpLookup_geoip_org_maxmind($param); - if (!$org && $type eq 'geoippureperl') - { - # Function org_by_addr does not exists in PurePerl but org_by_name do same - $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; - } - elsif(!$org) - { - $org=$geoip_org_maxmind->org_by_addr($param) if $geoip_org_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetOrgByIp for $param: [$org]",5); } - if ($org) { - if (length($org) <= $MAXLENGTH) { - print "$org"; - } - else { - print substr($org,0,$MAXLENGTH).'...'; - } - } - else { print "$Message[0]"; } - } - if ($key && $ip==6) { - print "$Message[0]"; - } - if (! $key) { - my $org = TmpLookup_geoip_org_maxmind($param); - if (!$org && $type eq 'geoippureperl') - { - $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; - } - elsif(!$org) - { - $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$org]",5); } - if ($org) { - if (length($org) <= $MAXLENGTH) { - print "$org"; - } - else { - print substr($org,0,$MAXLENGTH).'...'; - } - } - else { print "$Message[0]"; } - } - print ""; + + if ($param =~ /^[0-9A-F]*:/i) { return $noRes; } # IPv6 address + + my $org = TmpLookup_geoip_org_maxmind($param); + + if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) + { # IPv4 address + if (!$org && $type eq 'geoippureperl') + { + # Function org_by_addr does not exists in PurePerl but org_by_name do same + $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; + } + elsif(!$org) + { + $org=$geoip_org_maxmind->org_by_addr($param) if $geoip_org_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetOrgByIp for $param: [$org]",5); } } - else { - print " "; + else + { #hostname + if (!$org && $type eq 'geoippureperl') + { + $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; + } + elsif(!$org) + { + $org=$geoip_org_maxmind->org_by_name($param) if $geoip_org_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetOrgByHostname for $param: [$org]",5); } } - return 1; + + if ($org) + { + return ((length($org) <= $MAXLENGTH) ? "$org" : substr($org,0,$MAXLENGTH).'...'); + } + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/geoip_region_maxmind.pm b/wwwroot/cgi-bin/plugins/geoip_region_maxmind.pm index f6dd4a680..5cdddad4d 100644 --- a/wwwroot/cgi-bin/plugins/geoip_region_maxmind.pm +++ b/wwwroot/cgi-bin/plugins/geoip_region_maxmind.pm @@ -353,13 +353,19 @@ sub GetCountryCodeByName_geoip_region_maxmind { # UNIQUE: NO (Several plugins using this function can be loaded) # Function called to add additionnal columns to the Hosts report. # This function is called when building rows of the report (One call for each -# row). So it allows you to add a column in report, for example with code : -# print "This is a new cell for $param"; +# row). So it allows you to add a column in report. +# The returned string is the content of the cell, the cell is build by AWStats.pl +# return code example: ### return "This is a new content for $param"; +# # Parameters: Host name or ip #----------------------------------------------------------------------------- sub ShowInfoHost_geoip_region_maxmind { my $param="$_[0]"; + my $noRes = $Message[56]; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { my $NewLinkParams=${QueryString}; $NewLinkParams =~ s/(^|&|&)update(=\w*|$)//i; @@ -376,91 +382,60 @@ sub ShowInfoHost_geoip_region_maxmind { $NewLinkParams =~ s/^&//; $NewLinkParams =~ s/&$//; if ($NewLinkParams) { $NewLinkParams="${NewLinkParams}&"; } - print ""; - print "GeoIP
    Region
    "; - print ""; + return "GeoIP Region"; } - elsif ($param) { - # try loading our override file if we haven't yet - if (!$LoadedOverride){&LoadOverrideFile_geoip_region_maxmind();} - my $ip=0; - my $key; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $ip=4; - $key=$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $ip=6; - $key=$param; - } - print ""; - if ($key && $ip==4) { - my ($res1,$res2,$countryregion)=(); - my @res = TmpLookup_geoip_region_maxmind($param); - if (@res){ - $res1 = $res[0]; - $res2 = $res[1]; - }else{ - ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetRegionByIp for $param: [${res1}_${res2}]",5); } - if (! $PluginsLoaded{'init'}{'geoip'}) { - # Show country - if ($res1 =~ /\w\w/) { print $DomainsHashIDLib{lc($res1)}||uc($res1); } - else { print "$Message[0]"; } - # Show region - if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { - print " ("; - print $region{lc($res1)}{uc($res2)}; - print ")"; - } - } - else { - # Show region - if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { - print $region{lc($res1)}{uc($res2)}; - } - else { print "$Message[0]"; } - } - } - if ($key && $ip==6) { - print "$Message[0]"; - } - if (! $key) { - my ($res1,$res2,$countryregion)=(); - my @res = TmpLookup_geoip_region_maxmind($param); - if (@res){ - $res1 = $res[0]; - $res2 = $res[1]; - }else{ - ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; - } - if ($Debug) { debug(" Plugin $PluginName: GetRegionByName for $param: [${res1}_${res2}]",5); } - if (! $PluginsLoaded{'init'}{'geoip'}) { - # Show country - if ($res1 =~ /\w\w/) { print $DomainsHashIDLib{lc($res1)}||uc($res1); } - else { print "$Message[0]"; } - # Show region - if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { - print " ("; - print $region{lc($res1)}{uc($res2)}; - print ")"; - } - } - else { - # Show region - if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { - print $region{lc($res1)}{uc($res2)}; - } - else { print "$Message[0]"; } - } - } - print ""; - } - else { - print " "; + + if ($param =~ /^[0-9A-F]*:/i) { return $noRes; } # IPv6 address + + my ($res1,$res2,$countryregion)=(); + my @res = TmpLookup_geoip_region_maxmind($param); + + # try loading our override file if we haven't yet + if (!$LoadedOverride){&LoadOverrideFile_geoip_region_maxmind();} + + if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) + { # IPv4 address + if (@res){ + $res1 = $res[0]; + $res2 = $res[1]; + }else{ + ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetRegionByIp for $param: [${res1}_${res2}]",5); } } - return 1; + else + { + if (@res){ + $res1 = $res[0]; + $res2 = $res[1]; + }else{ + ($res1,$res2)=$geoip_region_maxmind->region_by_name($param) if $geoip_region_maxmind; + } + if ($Debug) { debug(" Plugin $PluginName: GetRegionByName for $param: [${res1}_${res2}]",5); } + } + + if (! $PluginsLoaded{'init'}{'geoip'}) + { # Show country + my $html = ''; + if ($res1 =~ /\w\w/) + { + $html .= $DomainsHashIDLib{lc($res1)}||uc($res1); + } + + # Show region + if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { + $html .= " (" . $region{lc($res1)}{uc($res2)} . ")"; + } + + return $html; + } + + # Show region + if ($res1 =~ /\w\w/ && $res2 =~ /\w\w/) { + return $region{lc($res1)}{uc($res2)}; + } + + return $noRes; # -----> } diff --git a/wwwroot/cgi-bin/plugins/hostinfo.pm b/wwwroot/cgi-bin/plugins/hostinfo.pm index 1f0ac6994..355daadbc 100644 --- a/wwwroot/cgi-bin/plugins/hostinfo.pm +++ b/wwwroot/cgi-bin/plugins/hostinfo.pm @@ -96,32 +96,34 @@ EOF #----------------------------------------------------------------------------- sub ShowInfoHost_hostinfo { my $param="$_[0]"; + my $noRes = $Message[56]; + my $keyforwhois; + # <----- + if(!$param){ return $noRes; } + if ($param eq '__title__') { - print "$Message[114]"; + return $Message[114]; } - elsif ($param) { - my $keyforwhois; - if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address - $keyforwhois=$param; - } - elsif ($param =~ /^[0-9A-F]*:/i) { # IPv6 address - $keyforwhois=$param; - } - else { # Hostname - $param =~ /([-\w]+\.[-\w]+\.(?:au|uk|jp|nz))$/ or $param =~ /([-\w]+\.[-\w]+)$/; - $keyforwhois=$1; - } - print ""; -# if ($keyforwhois) { print "?"; } - if ($keyforwhois) { print "?"; } - else { print " " } - print ""; + + if ($param =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { # IPv4 address + $keyforwhois=$param; } - else { - print " "; + elsif ($param =~ /^[0-9A-F]*:/i) + { # IPv6 address + $keyforwhois=$param; } - return 1; + else + { # Hostname + $param =~ /([-\w]+\.[-\w]+\.(?:au|uk|jp|nz))$/ or $param =~ /([-\w]+\.[-\w]+)$/; + $keyforwhois=$1; + } + + return ( + ($keyforwhois) + ? '?' + : $noRes + ); # -----> } From eb942913f758878352b2342723af9852ce45d32e Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 02:42:39 +0200 Subject: [PATCH 145/152] Conform hosts detail pages + some general colors and css --- wwwroot/cgi-bin/awstats.pl | 372 +++++----------------------- wwwroot/cgi-bin/lang/awstats-fr.txt | 2 +- 2 files changed, 59 insertions(+), 315 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 8fc1c9974..1d0420c53 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -889,7 +889,7 @@ sub renderCss { $css .= ' :root { --page-color: hsl(220, 0%, 25%); - --page-bgcolor: hsl(200, 0%, 95%); + --page-bgcolor: hsl(200, 0%, 100%); --aws-color-u: hsl(27, 100%, 70%); --aws-color-v: hsl(58, 82%, 76%); --aws-color-p: hsl(220, 97%, 72%); @@ -898,10 +898,10 @@ sub renderCss { --aws-color-e: hsl(258, 60%, 75%); --aws-color-x: hsl(260, 76%, 81%); --aws-color-s: hsl(240, 56%, 70%); - --dark-color: hsl(220, 0%, 50%); - --darker-color: hsl(220, 0%, 7%); - --neutral-color: hsl(220, 0%, 90%); - --light-color: hsl(220, 0%, 80%); + --dark-color: hsl(220, 0%, 88%); + --darker-color: hsl(220, 0%, 50%); + --neutral-color: hsl(220, 0%, 96%); + --light-color: hsl(220, 0%, 93%); --a-color: hsl(0, 0%, 0%); --a-hover-color: hsl(0, 0%, 0%); --bar-width: 90; @@ -927,6 +927,7 @@ sub renderCss { --aws-color-x: hsl(260, 76%, 81%); --aws-color-s: hsl(240, 56%, 70%); --dark-color: hsl(220, 0%, 15%); + --darker-color: hsl(220, 0%, 5%); --neutral-color: hsl(220, 0%, 30%); --light-color: hsl(220, 0%, 60%); --a-color: hsl(220, 0%, 81.6%); @@ -935,21 +936,23 @@ sub renderCss { } } +* {margin: 0; padding: 0; font: inherit;} html { scroll-behavior: smooth; scroll-padding: var(--scroll-padding); } -body { font-size: clamp(0.75rem, -3vw + 3rem, 0.9rem); font-family: sans-serif, system-ui; background-color: var(--page-bgcolor); margin: 0; padding:0; color: var(--page-color); } +body { font-size: clamp(0.75rem, -3vw + 3rem, 0.9rem); font-family: sans-serif, system-ui; background-color: var(--page-bgcolor); color: var(--page-color); } b { font-weight: 700 } hr { width: 100%; height: 0; margin: 0; color: transparent; border: none; } small { font-size: 0.9em; font-weight: 400; } #container, .flex { gap: 25px; } -#container, #container > header, .flex { display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;} -#container > header { position: sticky; top: 0; z-index: 100; width: 100%; column-gap: 20px; background-color: var(--dark-color); text-align: center; } +#container, .flex { display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;} +#container > header { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; } +#container > header { position: sticky; top: 0; z-index: 100; width: 100%; column-gap: 20px; background-color: var(--dark-color); text-align: center; } #container > *:nth-child(odd):not(header) { width: 100dvw; padding: 20px 0; background-color: var(--dark-color)} .column { display:flex;flex-flow:column wrap; row-gap: 10px; } #domain { font-weight: 900; font-size: 1.5em } header select { width : 60px } footer { width: 100dvw; text-align: center; padding-top: 5px; } #logo { height: 33px; } -nav { width: 100%; height: 2.5ch; margin: 0; background-color: white; font-weight: 600 } +nav { width: 100%; height: 2.5ch; margin: 0; color: var(--darker-color); background-color: var(--light-color); font-weight: 600 } nav ul { display: flex; justify-content: center; gap: 1dvw; list-style-type: none; margin: 0; padding: 0; overflow: hidden; border: none; } nav li a, .dropbtn { display: inline-block; padding: 2px 4px; } li a:hover, .dropdown:hover .dropbtn { background-color: var(--neutral-color); } @@ -958,7 +961,7 @@ sub renderCss { .dropdown-content a { padding: 12px 16px; display: block; } .dropdown-content a:hover { background-color: var(--neutral-color); } .dropdown:hover .dropdown-content { display: block; } -#about { width: 100%; text-align: center; } +#about { text-align: center; } #summary-logs { max-width: 100%; text-align: center; margin: auto; display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;} #summary-logs div { padding: 1px 0 } .summary-label { margin: 0 9px; } @@ -974,15 +977,13 @@ sub renderCss { .multi-data-table.worldmap{ position: relative; } .data-table { border-spacing: 0; margin: auto; } .data-table tfoot { display: table-header-group } -.data-table tbody tr { transition: background 0.5s ease-out; transition: transform 0.1s ease-in } -.data-table tbody tr:hover { font-weight: 900; color: var(--darker-color);background: var(--light-color); transform: scale(1.1) translateX(2px); } +.data-table tbody tr { transition: background 0.3s ease-in, transform 0.3s ease-in } +.data-table tbody tr:hover { font-weight: 900; background: var(--light-color); transform: scale(1.1) translateX(2px); } .data-table th { font-weight: 900; padding-top: 2px; padding-bottom: 2px; } -.data-table :is(th, td).plugin:nth-child(odd) { background-color: var(--dark-color)} -.data-table :is(th, td).plugin:nth-child(even) { background-color: var(--darker-color);} .data-table td { text-align: right; font-weight: 700; padding-top: 3px; padding-bottom: 3px; padding-left: 0; padding-right: 0; } .data-table td:first-child { padding-right: 4px } .data-table td:first-child:not(.country) { font-weight: 400 } -.data-table td.plugin { padding-left: 4px; padding-right: 4px; color: var(--light-color); text-align: center; } +.data-table td.plugin { padding-left: 4px; padding-right: 4px; text-align: center; } .data-table td div { padding: 0 2px; height: 2ch; } .data-table td img { width: 16px; height: 16px;vertical-align: bottom; } .data-table td small { float: left; line-height: 1.3; } @@ -1003,7 +1004,7 @@ sub renderCss { #worldmap{ width: 50%; margin: auto; background-color: #4477DD; } .title-map{ position:absolute; top: 16px; color: var(--light-color); } .country td:first-child { text-transform: uppercase; font-weight: 700; } -.expand-collapse-button { font-family: monospace; line-height: 1; } +.data-table td .bg, .date, .expand-collapse-button { font-family: monospace; line-height: 1; } /* colors */ nav a:any-link { color: var(--nav-color) } @@ -1078,8 +1079,12 @@ sub renderJavascript { document.addEventListener("DOMContentLoaded", (d) => { const headerHeight = document.querySelector("#container > header").offsetHeight; - document.documentElement.style.setProperty("--scroll-padding", (headerHeight + 20) + "px"); + + window.onresize = (e) => { + let headerHeight = document.querySelector("#container > header").offsetHeight; + document.documentElement.style.setProperty("--scroll-padding", (headerHeight + 20) + "px"); + }; [...document.querySelectorAll('.bar-table')].forEach(el => { el.addEventListener("mouseenter", (e) => { @@ -8633,7 +8638,7 @@ sub HTMLDataCellWithBar{ my $mixedColor = shift || ''; my $percentage = ($max > 0) ? ($data || 0) / $max : 0; - return '
    '; + . '' + . '
    ' . $SiteDomain . '
    '; if ( !$StaticLinks ) { Show_Flag_Links($Lang); } + print '
    '; + if ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ) { print '
    '; @@ -10500,8 +10508,8 @@ sub HTMLTopBanner{ print ""; } - print '
    ' - . '
    ' . $SiteDomain . '
    '. $Message[35] .' : ' . $lastUpdateBuild . '
    '; + print '
    '. $Message[35] .' : ' . $lastUpdateBuild . '
    ' + . ''; &HTMLMainSummary(); @@ -12796,281 +12804,6 @@ sub HTMLShowLogins{ print &html_end(1); } -#------------------------------------------------------------------------------ -# Function: Prints the Unknown IP/Host details frame or static page -# Parameters: _ -# Input: _ -# Output: HTML -# Return: - -#------------------------------------------------------------------------------ -sub HTMLShowHostsUnknown{ - my $total_p = 0; - my $total_h = 0; - my $total_k = 0; - my $rest_p = 0; - my $rest_h = 0; - my $rest_k = 0; - # print " "; - print &tab_head( "$Message[45]", 19, 0, 'unknownwip' ) - . '' - . ""; - print &HTMLShowHostInfo('__title__'); - if ( $ShowHostsStats =~ /P/i ) { - print - ""; - } - if ( $ShowHostsStats =~ /H/i ) { - print - ""; - } - if ( $ShowHostsStats =~ /B/i ) { - print -""; - } - if ( $ShowHostsStats =~ /L/i ) { - print ""; - } - print "\n"; - $total_p = $total_h = $total_k = 0; - my $count = 0; - &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, - \%_host_p ); - foreach my $key (@keylist) { - my $host = CleanXSS($key); - print ""; - print &HTMLShowHostInfo($key); - if ( $ShowHostsStats =~ /P/i ) { - print ""; - } - if ( $ShowHostsStats =~ /H/i ) { - print ""; - } - if ( $ShowHostsStats =~ /B/i ) { - print ""; - } - if ( $ShowHostsStats =~ /L/i ) { - print ""; - } - print "\n"; - $total_p += $_host_p{$key}; - $total_h += $_host_h{$key}; - $total_k += $_host_k{$key} || 0; - $count++; - } - if ($Debug) { - debug( -"Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h", - 2 - ); - } - $rest_p = $TotalPages - $total_p; - $rest_h = $TotalHits - $total_h; - $rest_k = $TotalBytes - $total_k; - if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) - { # All other visitors (known or not) - print -""; - print &HTMLShowHostInfo(''); - if ( $ShowHostsStats =~ /P/i ) { - print ""; - } - if ( $ShowHostsStats =~ /H/i ) { print ""; } - if ( $ShowHostsStats =~ /B/i ) { - print ""; - } - if ( $ShowHostsStats =~ /L/i ) { print ""; } - print "\n"; - } - - print '
    " - . Format_Number(( scalar keys %_host_h )) - . " $Message[1]" . ucfirst($Message[28]) . "$Message[57]$Message[75]$Message[9]
    $host" - . ( $_host_p{$key} ? Format_Number($_host_p{$key}) : " " ) - . "".Format_Number($_host_h{$key})."" . Format_Bytes( $_host_k{$key} ) . "" - . ( - $_host_l{$key} - ? Format_Date( $_host_l{$key}, 1 ) - : '-' - ) - . "
    $Message[82]" . ( $rest_p ? Format_Number($rest_p) : " " ) . "".Format_Number($rest_h)."" . Format_Bytes($rest_k) . " 
    ' . &tab_end(); - - print &html_end(1); -} - -#------------------------------------------------------------------------------ -# Function: Prints the Host details frame or static page -# Parameters: _ -# Input: _ -# Output: HTML -# Return: - -#------------------------------------------------------------------------------ -sub HTMLShowHosts{ - my $total_p = 0; - my $total_h = 0; - my $total_k = 0; - my $rest_p = 0; - my $rest_h = 0; - my $rest_k = 0; - print " "; - - # Show filter form - &HTMLShowFormFilter( "hostfilter", $FilterIn{'host'}, - $FilterEx{'host'} ); - - # Show hosts list - my $title = ''; - my $cpt = 0; - if ( $HTMLOutput{'allhosts'} ) { - $title .= "$Message[81]"; - $cpt = ( scalar keys %_host_h ); - } - if ( $HTMLOutput{'lasthosts'} ) { - $title .= "$Message[9]"; - $cpt = ( scalar keys %_host_h ); - } - print &tab_head( "$title", 19, 0, 'hosts' ) - . '' - . ""; - print &HTMLShowHostInfo('__title__'); - if ( $ShowHostsStats =~ /P/i ) { - print - ""; - } - if ( $ShowHostsStats =~ /H/i ) { - print - ""; - } - if ( $ShowHostsStats =~ /B/i ) { - print -""; - } - if ( $ShowHostsStats =~ /L/i ) { - print ""; - } - print "\n"; - $total_p = $total_h = $total_k = 0; - my $count = 0; - if ( $HTMLOutput{'allhosts'} ) { - &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, - \%_host_p ); - } - if ( $HTMLOutput{'lasthosts'} ) { - &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, - \%_host_l ); - } - my $regipv4=qr/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; - - if ( $DynamicDNSLookup == 2 ) { - # Use static DNS file - &Read_DNS_Cache( \%MyDNSTable, "$DNSStaticCacheFile", "", 1 ); - } - - foreach my $key (@keylist) { - my $host = CleanXSS($key); - print ""; - print &HTMLShowHostInfo($key); - if ( $ShowHostsStats =~ /P/i ) { - print ""; - } - if ( $ShowHostsStats =~ /H/i ) { - print ""; - } - if ( $ShowHostsStats =~ /B/i ) { - print ""; - } - if ( $ShowHostsStats =~ /L/i ) { - print ""; - } - print "\n"; - $total_p += $_host_p{$key}; - $total_h += $_host_h{$key}; - $total_k += $_host_k{$key} || 0; - $count++; - } - if ($Debug) { - debug( -"Total real / shown : $TotalPages / $total_p - $TotalHits / $total_h - $TotalBytes / $total_h", - 2 - ); - } - $rest_p = $TotalPages - $total_p; - $rest_h = $TotalHits - $total_h; - $rest_k = $TotalBytes - $total_k; - if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 ) - { # All other visitors (known or not) - print -""; - print &HTMLShowHostInfo(''); - if ( $ShowHostsStats =~ /P/i ) { - print ""; - } - if ( $ShowHostsStats =~ /H/i ) { print ""; } - if ( $ShowHostsStats =~ /B/i ) { - print ""; - } - if ( $ShowHostsStats =~ /L/i ) { print ""; } - print "\n"; - } - - print '
    "; - if ( $FilterIn{'host'} || $FilterEx{'host'} ) { # With filter - if ( $FilterIn{'host'} ) { - print "$Message[79] '$FilterIn{'host'}'"; - } - if ( $FilterIn{'host'} && $FilterEx{'host'} ) { print " - "; } - if ( $FilterEx{'host'} ) { - print " Exclude $Message[79] '$FilterEx{'host'}'"; - } - if ( $FilterIn{'host'} || $FilterEx{'host'} ) { print ": "; } - print "$cpt $Message[81]"; - if ( $MonthRequired ne 'all' ) { - if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} ) { - print -"$Message[102]: ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1] - ".Format_Number($TotalUnique)." $Message[11]"; - } - } - } - else { # Without filter - if ( $MonthRequired ne 'all' ) { - print -"$Message[102] : ".Format_Number($TotalHostsKnown)." $Message[82], ".Format_Number($TotalHostsUnknown)." $Message[1] - ".Format_Number($TotalUnique)." $Message[11]"; - } - else { print "$Message[102] : " . Format_Number(( scalar keys %_host_h )); } - } - print "" . ucfirst($Message[28]) . "$Message[57]$Message[75]$Message[9]
    " - . ( $_robot_l{$key} ? '' : '' ) . "$host" - . ( $_robot_l{$key} ? '' : '' ); - - if ($DynamicDNSLookup) { - # Dynamic reverse DNS lookup - if ($host =~ /$regipv4/o) { - my $lookupresult=lc(gethostbyaddr(pack("C4",split(/\./,$host)),AF_INET)); # This may be slow - if (! $lookupresult || $lookupresult =~ /$regipv4/o || ! IsAscii($lookupresult)) { - if ( $DynamicDNSLookup == 2 ) { - # Check static DNS file - $lookupresult = $MyDNSTable{$host}; - if ($lookupresult) { print " ($lookupresult)"; } - else { print ""; } - } - else { print ""; } - } - else { print " ($lookupresult)"; } - } - } - - print "" - . ( $_host_p{$key} ? Format_Number($_host_p{$key}) : " " ) - . "".Format_Number($_host_h{$key})."" . Format_Bytes( $_host_k{$key} ) . "" - . ( - $_host_l{$key} - ? Format_Date( $_host_l{$key}, 1 ) - : '-' - ) - . "
    $Message[2]" . ( $rest_p ? Format_Number($rest_p) : " " ) . "".Format_Number($rest_h)."" . Format_Bytes($rest_k) . " 
    ' . &tab_end(); - - print &html_end(1); -} - #------------------------------------------------------------------------------ # Function: Return the Domains details frame or static page # Parameters: $NewLinkParams, $NewLinkTarget @@ -13139,19 +12872,16 @@ sub HTMLMainSummary{ $NewLinkTarget = " target=\"_parent\""; } - print '
    '; - # Show main indicators title row print '
    '; - print '
    '; - # Show first/last print '
    ' . '' . $Message[8] . ' ' . ($FirstTime ? Format_Date($FirstTime, 0) : 'N/A') . '' . ' - ' . ($MonthRequired eq 'all' ? $YearRequired : $MonthNumLib{$MonthRequired} . ' ' . $YearRequired) . ' - ' . '' . $Message[9] . ' ' . ($LastTime ? Format_Date( $LastTime, 0 ) : "NA" ) . '' . '
    '; + print '
    '; print (( $ShowSummary =~ /U/i && $LogType ne 'M' ) ? '
    ' @@ -14433,20 +14163,20 @@ sub HTMLMainDownloads{ sub HTMLMainHosts{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - + if ($Debug) { debug( 'ShowHostsStats', 2 ); } - my $title = $Message[81] . ' (' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')'; + my $title = ''; my @links = (); my $tooltip = my $graph = my $tableData = my $tableHeader = ''; my $total_p = my $total_h = my $total_k = 0; my $max_p = my $max_h = my $max_k = 0; my $regipv4 = qr/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; - push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allhosts', $Message[80])); - push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'lasthosts', $Message[9])); push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'unknownip', $Message[45])); - + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'lasthosts', $Message[9])); + push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'allhosts', $Message[80])); + if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link push(@links, '' @@ -14458,8 +14188,25 @@ sub HTMLMainHosts{ my $function = "getTooltip_$pluginname"; $tooltip .= &$function(19); } - - &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); + + if ($HTMLOutput{'allhosts'}) + { + $title = $Message[80]; + &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_p ); + } + elsif ($HTMLOutput{'lasthosts'}){ + $title = $Message[9]; + &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_l ); + } + elsif($HTMLOutput{'unknownip'}) + { + $title = $Message[45]; + &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_p ); + } + else { + $title = $Message[81] . ' (' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')'; + &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); + } # Graph the top five in a pie chart if (scalar @keylist > 1) @@ -14547,7 +14294,7 @@ sub HTMLMainHosts{ . (( $ShowHostsStats =~ /H/i ) ? HTMLDataCellWithBar('h', $_host_h{$key}, Format_Number($_host_h{$key}), $max_h) : '' ) . (( $ShowHostsStats =~ /B/i ) ? HTMLDataCellWithBar('b', $_host_k{$key}, Format_Bytes($_host_k{$key}), $max_k) : '' ) . &HTMLShowHostInfo($key) - . (( $ShowHostsStats =~ /L/i ) ? '' . ( $_host_l{$key} ? Format_Date( $_host_l{$key}, 1 ) : '-' ) . '' : '') + . (( $ShowHostsStats =~ /L/i ) ? '' . ( $_host_l{$key} ? Format_Date( $_host_l{$key}, 1 ) : '-' ) . '' : '') . ''; } @@ -14562,7 +14309,7 @@ sub HTMLMainHosts{ . (( $ShowHostsStats =~ /H/i ) ? '' . Format_Number($rest_h) . '' : '') . (( $ShowHostsStats =~ /B/i ) ? '' . Format_Bytes($rest_k) . '' : '') . &HTMLShowHostInfo('') - . (( $ShowHostsStats =~ /L/i ) ? ' ' : '') + . (( $ShowHostsStats =~ /L/i ) ? '' : '') . ''; } @@ -20382,11 +20129,8 @@ sub HTMLMainExtra{ if ( $HTMLOutput{'alldomains'} ) { print &HTMLShowDomains($NewLinkParams, $NewLinkTarget); } - if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} ) { - &HTMLShowHosts(); - } - if ( $HTMLOutput{'unknownip'} ) { - &HTMLShowHostsUnknown(); + if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} || $HTMLOutput{'unknownip'}) { + print &HTMLMainHosts($NewLinkParams, $NewLinkTarget); } if ( $HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'} ) { &HTMLShowEmailSendersChart( $NewLinkParams, $NewLinkTarget ); diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index e11130838..c87ff85a6 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -46,7 +46,7 @@ message41=Page externe (autres sites, hors moteurs) message42=Page interne (autre page du site) message43=Phrases clés de recherche message44=Mots clés de recherche -message45=Adresses IP non résolues +message45=IPs non résolues message46=OS non reconnus (champ useragent brut) message47=URLs du site demandées non trouvées (Code HTTP 404) message48=Adresse IP From 5c280c5450748a3498a799bd5647051a862c7233 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 02:56:11 +0200 Subject: [PATCH 146/152] Fix title url details and remove sub HTMLShowURLDetail --- wwwroot/cgi-bin/awstats.pl | 42 ++++++++++++++------------------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 1d0420c53..f746b6132 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -12681,17 +12681,6 @@ sub HTMLShowRobots{ print &html_end(1); } -#------------------------------------------------------------------------------ -# Function: Return the URL, Entry or Exit details frame or static page -# Parameters: $NewLinkParams, $NewLinkTarget -# Input: - -# Output: - -# Return: string -#------------------------------------------------------------------------------ -sub HTMLShowURLDetail{ - return HTMLMainPages(shift, shift, 'all') . &html_end(1); -} - #------------------------------------------------------------------------------ # Function: Prints the Login details frame or static page # Parameters: _ @@ -14166,7 +14155,7 @@ sub HTMLMainHosts{ if ($Debug) { debug( 'ShowHostsStats', 2 ); } - my $title = ''; + my $title = $Message[81]; my @links = (); my $tooltip = my $graph = my $tableData = my $tableHeader = ''; my $total_p = my $total_h = my $total_k = 0; @@ -14191,20 +14180,20 @@ sub HTMLMainHosts{ if ($HTMLOutput{'allhosts'}) { - $title = $Message[80]; + $title .= ' - ' . $Message[80]; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_p ); } elsif ($HTMLOutput{'lasthosts'}){ - $title = $Message[9]; + $title .= ' - ' . $Message[9]; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_l ); } elsif($HTMLOutput{'unknownip'}) { - $title = $Message[45]; + $title .= ' - ' . $Message[45]; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Host'}, \%_host_h, \%_host_p ); } else { - $title = $Message[81] . ' (' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')'; + $title .= ' (' . $Message[77] . ' ' . $MaxNbOf{'HostsShown'} .')'; &BuildKeyList( $MaxNbOf{'HostsShown'}, $MinHit{'Host'}, \%_host_h, \%_host_p ); } @@ -14711,7 +14700,7 @@ sub HTMLMainSessions{ #------------------------------------------------------------------------------ # Function: Return the pages chart and table -# Parameters: $NewLinkParams, $NewLinkTarget, $all +# Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: - # Return: string @@ -14719,18 +14708,16 @@ sub HTMLMainSessions{ sub HTMLMainPages{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $all = shift || ''; if ($Debug) {debug("ShowPagesStats (MaxNbOf{'PageShown'}=$MaxNbOf{'PageShown'} TotalDifferentPages=$TotalDifferentPages)", 2);} my $regext = qr/\.(\w{1,6})$/; - my $title = $Message[19] . ' (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')'; + my $title = $Message[19]; my @links = (); my $tooltip = my $tableHeader = my $tableData = ''; my $total_p = my $total_e = my $total_x = my $total_k = 0; my $max_p = my $max_k = my $max_e = my $max_x = 0; - if($all ne 'all'){ push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'urldetail', $Message[80])); if ( $ShowPagesStats =~ /E/i ) @@ -14742,7 +14729,6 @@ sub HTMLMainPages{ { push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'urlexit', $Message[116])); } - } if ( $AddLinkToExternalCGIWrapper && ($ENV{'GATEWAY_INTERFACE'} || !$StaticLinks) ) { # extend the title to include the added link @@ -14775,15 +14761,19 @@ sub HTMLMainPages{ $tableHeader .= ''; if ( $HTMLOutput{'urlentry'} ) { + $title .= ' - ' . $Message[104]; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'File'}, \%_url_e, \%_url_e ); } elsif ( $HTMLOutput{'urlexit'} ) { + $title .= ' - ' . $Message[116]; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'File'}, \%_url_x, \%_url_x ); } - elsif ($all eq 'all') { + elsif ( $HTMLOutput{'urldetail'} ) { + $title .= ' - ' . $Message[80]; &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'File'}, \%_url_p, \%_url_p ); } else { + $title .= ' (' . $Message[77] . ' ' . $MaxNbOf{'PageShown'} . ')' &BuildKeyList( $MaxNbOf{'PageShown'}, $MinHit{'File'}, \%_url_p, \%_url_p ); } @@ -20130,7 +20120,7 @@ sub HTMLMainExtra{ print &HTMLShowDomains($NewLinkParams, $NewLinkTarget); } if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} || $HTMLOutput{'unknownip'}) { - print &HTMLMainHosts($NewLinkParams, $NewLinkTarget); + print &HTMLMainHosts($NewLinkParams, $NewLinkTarget) . html_end(1); } if ( $HTMLOutput{'allemails'} || $HTMLOutput{'lastemails'} ) { &HTMLShowEmailSendersChart( $NewLinkParams, $NewLinkTarget ); @@ -20146,11 +20136,9 @@ sub HTMLMainExtra{ if ( $HTMLOutput{'allrobots'} || $HTMLOutput{'lastrobots'} ) { &HTMLShowRobots(); } - if ( $HTMLOutput{'urldetail'} - || $HTMLOutput{'urlentry'} - || $HTMLOutput{'urlexit'} ) + if ( $HTMLOutput{'urldetail'} || $HTMLOutput{'urlentry'} || $HTMLOutput{'urlexit'} ) { - print &HTMLShowURLDetail($NewLinkParams, $NewLinkTarget); + print &HTMLMainPages($NewLinkParams, $NewLinkTarget) . html_end(1); } if ( $HTMLOutput{'unknownos'} ) { &HTMLShowOSUnknown($NewLinkTarget); From 3c6b2df3ecd2f77bc4f7de8ea07eaa3e9e1cd85f Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 03:04:57 +0200 Subject: [PATCH 147/152] Remove sub HTMLShowDownloads --- wwwroot/cgi-bin/awstats.pl | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index f746b6132..9cd74c41a 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -12804,17 +12804,6 @@ sub HTMLShowDomains{ return HTMLMainCountries(shift, shift, 'all') . &html_end(1); } -#------------------------------------------------------------------------------ -# Function: Return the Downloads code frame or static page -# Parameters: - -# Input: - -# Output: - -# Return: string -#------------------------------------------------------------------------------ -sub HTMLShowDownloads{ - return HTMLMainDownloads(shift, shift, 'all') . &html_end(1); -} - #------------------------------------------------------------------------------ # Function: Prints the Summary section at the top of the main page # Parameters: _ @@ -14034,7 +14023,7 @@ sub HTMLMainCountries{ #------------------------------------------------------------------------------ # Function: Return the Downloads chart and table # Parameters: - -# Input: $NewLinkParams, $NewLinkTarget, $all +# Input: $NewLinkParams, $NewLinkTarget # Output: - # Return: string #------------------------------------------------------------------------------ @@ -14044,22 +14033,21 @@ sub HTMLMainDownloads{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $all = shift || ''; my $TopFiveTotalh = my $total_h = my $total_206 = my $max_k = my $max_average_k = 0; my @links = (); my $chart = my $dataTable = ''; - my $title = $Message[178] . (($all ne 'all') ? ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')' : ''); + my $title = $Message[178] . (($HTMLOutput{'main'}) ? ' ('. $Message[77] . ' ' . $MaxNbOf{'DownloadsShown'} .')' : ''); my @sortedDlKeys = (sort {$_downloads{$b}->{'AWSTATS_SIZE'} <=> $_downloads{$a}->{'AWSTATS_SIZE'}}(keys %_downloads)); - if($all ne 'all') + if($HTMLOutput{'main'}) { @sortedDlKeys = (scalar keys @sortedDlKeys > $MaxNbOf{'DownloadsShown'}) ? @sortedDlKeys[0..($MaxNbOf{'DownloadsShown'} - 1)] : @sortedDlKeys; } my @sorted_TopFive_DlKeys = (scalar keys @sortedDlKeys > $MaxNbOf{'DownloadsShown'}) ? @sortedDlKeys[0..4] : @sortedDlKeys; - if($all ne 'all') + if($HTMLOutput{'main'}) { if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'downloads', $Message[80])); @@ -20165,7 +20153,7 @@ sub HTMLMainExtra{ &HTMLShowKeywords($NewLinkTarget); } if ( $HTMLOutput{'downloads'} ) { - print &HTMLShowDownloads($NewLinkParams, $NewLinkTarget); + print &HTMLMainDownloads($NewLinkParams, $NewLinkTarget) . &html_end(1); } foreach my $code ( keys %TrapInfosForHTTPErrorCodes ) { if ( $HTMLOutput{"errors$code"} ) { From c6288cc29c8b6375e8ebce837c12a8618dfe8630 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 03:11:27 +0200 Subject: [PATCH 148/152] Remove sub HTMLShowDomains --- wwwroot/cgi-bin/awstats.pl | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 9cd74c41a..a6832b0f6 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -12793,17 +12793,6 @@ sub HTMLShowLogins{ print &html_end(1); } -#------------------------------------------------------------------------------ -# Function: Return the Domains details frame or static page -# Parameters: $NewLinkParams, $NewLinkTarget -# Input: - -# Output: - -# Return: string -#------------------------------------------------------------------------------ -sub HTMLShowDomains{ - return HTMLMainCountries(shift, shift, 'all') . &html_end(1); -} - #------------------------------------------------------------------------------ # Function: Prints the Summary section at the top of the main page # Parameters: _ @@ -13859,7 +13848,7 @@ sub HTMLMainHours{ #------------------------------------------------------------------------------ # Function: Return the countries chart and table -# Parameters: $NewLinkParams, $NewLinkTarget, $all +# Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: - # Return: string @@ -13869,19 +13858,18 @@ sub HTMLMainCountries{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $all = shift || ''; my $count = my $total_u = my $total_v = my $total_p = my $total_h = my $total_k = 0; my $rest_u = my $rest_v = my $rest_p = my $rest_h = my $rest_k = 0; my $max_u = my $max_p = my $max_h = my $max_k = 1; - my $title = $Message[25] . (($all ne 'all') ? ' (' . $Message[77] . ' ' . $MaxNbOf{'Domain'} . ')' : ''); + my $title = $Message[25] . (($HTMLOutput{'main'}) ? ' (' . $Message[77] . ' ' . $MaxNbOf{'Domain'} . ')' : ''); my @links = (); - my $map = '
    '; + my $map = '
    '; my $tooltip = my $tableData = my $tableFooter = ''; my $colspan = ($ShowDomainsStats =~ /U/i) + ($ShowDomainsStats =~ /V/i) + ($ShowDomainsStats =~ /P/i) + ($ShowDomainsStats =~ /H/i) + ($ShowDomainsStats =~ /B/i); - my $tableFooter = ($all ne 'all') ? '' : ''; + my $tableFooter = ($HTMLOutput{'main'}) ? '' : ''; - if($all ne 'all'){ + if($HTMLOutput{'main'}){ push(@links, HTMLLinkToStandalonePage($NewLinkParams, $NewLinkTarget, 'alldomains', $Message[80])); } @@ -13949,8 +13937,8 @@ sub HTMLMainCountries{ else { $tableData .= ' $MaxNbOf{'Domain'}) ? ' style="visibility: collapse"' : '') + . ' class="country' . ((($HTMLOutput{'main'}) && $count > $MaxNbOf{'Domain'}) ? ' collapsed' : '') . '"' + . ((($HTMLOutput{'main'}) && $count > $MaxNbOf{'Domain'}) ? ' style="visibility: collapse"' : '') . ' data-country="' . $newkey . '">' . '( ' . $newkey . ' )' . $DomainsHashIDLib{$newkey} . ' '; } @@ -20105,7 +20093,7 @@ sub HTMLMainExtra{ if ( scalar keys %HTMLOutput == 1 ) { if ( $HTMLOutput{'alldomains'} ) { - print &HTMLShowDomains($NewLinkParams, $NewLinkTarget); + print &HTMLMainCountries($NewLinkParams, $NewLinkTarget) . html_end(1); } if ( $HTMLOutput{'allhosts'} || $HTMLOutput{'lasthosts'} || $HTMLOutput{'unknownip'}) { print &HTMLMainHosts($NewLinkParams, $NewLinkTarget) . html_end(1); From 2202b50785378ef1f57d1e4f74dfa4508aa0b8a2 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 03:24:57 +0200 Subject: [PATCH 149/152] Conform robots details pages and remove sub HTMLShowRobots --- wwwroot/cgi-bin/awstats.pl | 133 ++++--------------------------------- 1 file changed, 14 insertions(+), 119 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index a6832b0f6..73fcccc8e 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -12566,121 +12566,6 @@ sub HTMLShowExtraSections{ } } -#------------------------------------------------------------------------------ -# Function: Prints the Robot details frame or static page -# Parameters: _ -# Input: _ -# Output: HTML -# Return: - -#------------------------------------------------------------------------------ -sub HTMLShowRobots{ - my $total_p = 0; - my $total_h = 0; - my $total_k = 0; - my $total_r = 0; - my $rest_p = 0; - my $rest_h = 0; - my $rest_k = 0; - my $rest_r = 0; - - print "
     "; - my $title = ''; - if ( $HTMLOutput{'allrobots'} ) { $title .= "$Message[53]"; } - if ( $HTMLOutput{'lastrobots'} ) { $title .= "$Message[9]"; } - print &tab_head( "$title", 19, 0, 'robots' ) - . '' - . ""; - if ( $ShowRobotsStats =~ /H/i ) { - print - ""; - } - if ( $ShowRobotsStats =~ /B/i ) { - print -""; - } - if ( $ShowRobotsStats =~ /L/i ) { - print ""; - } - print "\n"; - $total_p = $total_h = $total_k = $total_r = 0; - my $count = 0; - if ( $HTMLOutput{'allrobots'} ) { - &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Robot'}, - \%_robot_h, \%_robot_h ); - } - if ( $HTMLOutput{'lastrobots'} ) { - &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Robot'}, - \%_robot_h, \%_robot_l ); - } - foreach my $key (@keylist) { - print ""; - if ( $ShowRobotsStats =~ /H/i ) { - print ""; - } - if ( $ShowRobotsStats =~ /B/i ) { - print ""; - } - if ( $ShowRobotsStats =~ /L/i ) { - print ""; - } - print "\n"; - - #$total_p += $_robot_p{$key}||0; - $total_h += $_robot_h{$key}; - $total_k += $_robot_k{$key} || 0; - $total_r += $_robot_r{$key} || 0; - $count++; - } - - # For bots we need to count Totals - my $TotalPagesRobots = - 0; #foreach (values %_robot_p) { $TotalPagesRobots+=$_; } - my $TotalHitsRobots = 0; - foreach ( values %_robot_h ) { $TotalHitsRobots += $_; } - my $TotalBytesRobots = 0; - foreach ( values %_robot_k ) { $TotalBytesRobots += $_; } - my $TotalRRobots = 0; - foreach ( values %_robot_r ) { $TotalRRobots += $_; } - $rest_p = 0; #$rest_p=$TotalPagesRobots-$total_p; - $rest_h = $TotalHitsRobots - $total_h; - $rest_k = $TotalBytesRobots - $total_k; - $rest_r = $TotalRRobots - $total_r; - - if ($Debug) { - debug( -"Total real / shown : $TotalPagesRobots / $total_p - $TotalHitsRobots / $total_h - $TotalBytesRobots / $total_k", - 2 - ); - } - if ( $rest_p > 0 || $rest_h > 0 || $rest_k > 0 || $rest_r > 0 ) - { # All other robots - print -""; - if ( $ShowRobotsStats =~ /H/i ) { print ""; } - if ( $ShowRobotsStats =~ /B/i ) { - print ""; - } - if ( $ShowRobotsStats =~ /L/i ) { print ""; } - print "\n"; - } - - print '
    " - . Format_Number(( scalar keys %_robot_h )) - . " $Message[51]$Message[57]$Message[75]$Message[9]
    " - . ( $RobotsHashIDLib{$key} ? $RobotsHashIDLib{$key} : $key ) - . "" - . Format_Number(( $_robot_h{$key} - $_robot_r{$key} )) - . ( $_robot_r{$key} ? "+$_robot_r{$key}" : "" ) . "" . Format_Bytes( $_robot_k{$key} ) . "" - . ( - $_robot_l{$key} - ? Format_Date( $_robot_l{$key}, 1 ) - : '-' - ) - . "
    $Message[2]".Format_Number($rest_h)."" . ( Format_Bytes($rest_k) ) . " 
    ' . &tab_end("* $Message[156]" . ( $TotalRRobots ? " $Message[157]" : "" ) ); - - print &html_end(1); -} - #------------------------------------------------------------------------------ # Function: Prints the Login details frame or static page # Parameters: _ @@ -14431,7 +14316,7 @@ sub HTMLMainLogins{ # Parameters: $NewLinkParams, $NewLinkTarget # Input: - # Output: - -# Return: string (html) +# Return: string #------------------------------------------------------------------------------ sub HTMLMainRobots{ if ($Debug) { debug( "ShowRobotStats", 2 ); } @@ -14439,7 +14324,7 @@ sub HTMLMainRobots{ my $NewLinkParams = shift; my $NewLinkTarget = shift; - my $title = $Message[53] . ' ('. $Message[77]. ' ' . $MaxNbOf{'RobotShown'} .')'; + my $title = $Message[53]; my $html = ''; my @links = (); @@ -14468,7 +14353,17 @@ sub HTMLMainRobots{ . ( $TotalRRobots ? '
    ' . $Message[157] : '' ) } - &BuildKeyList( $MaxNbOf{'RobotShown'}, $MinHit{'Robot'}, \%_robot_h, \%_robot_h ); + if ( $HTMLOutput{'allrobots'} ) + { + &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Robot'}, \%_robot_h, \%_robot_h ); + } + elsif ( $HTMLOutput{'lastrobots'} ) { + &BuildKeyList( $MaxRowsInHTMLOutput, $MinHit{'Robot'}, \%_robot_h, \%_robot_l ); + } + else { + $title .= ' ('. $Message[77]. ' ' . $MaxNbOf{'RobotShown'} .')'; + &BuildKeyList( $MaxNbOf{'RobotShown'}, $MinHit{'Robot'}, \%_robot_h, \%_robot_h ); + } # For bots we need to count Totals # my $TotalPagesRobots = 0; #foreach (values %_robot_p) { $TotalPagesRobots+=$_; } @@ -20110,7 +20005,7 @@ sub HTMLMainExtra{ &HTMLShowLogins(); } if ( $HTMLOutput{'allrobots'} || $HTMLOutput{'lastrobots'} ) { - &HTMLShowRobots(); + print &HTMLMainRobots() . html_end(1); } if ( $HTMLOutput{'urldetail'} || $HTMLOutput{'urlentry'} || $HTMLOutput{'urlexit'} ) { From 40752f511640b89ef24c80f41aa50b6acf40785e Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 04:36:51 +0200 Subject: [PATCH 150/152] Change Format_Byte font size depending B, KB, MB... --- wwwroot/cgi-bin/awstats.pl | 17 +++++++++++------ wwwroot/cgi-bin/lang/awstats-fr.txt | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 73fcccc8e..849f01ecd 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -989,6 +989,11 @@ sub renderCss { .data-table td small { float: left; line-height: 1.3; } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } .data-table-sum { font-size : clamp(0.938rem, -3vw + 3rem, 1.125rem) } +.data-table tbody .B { font-size: 0.7rem; } +.data-table tbody .KB { font-size: 0.7rem; font-weight: 900; } +.data-table tbody .MB { font-size: 0.8rem; } +.data-table tbody .GB { font-size: 0.9rem; font-weight: 900; } +.data-table tbody .TB { font-size: 1rem; font-weight: 900; } .left-padding-separator { padding-left: 20px } .bar-table { visibility: visible; width: 100%; margin: 3px auto; padding: 2px 0; text-align: center; font-size: 10px; border-bottom: 1px solid var(--light-color);} .bar-table tr:first-child td { vertical-align: bottom; } @@ -8555,19 +8560,19 @@ sub Format_Bytes { # Do not use exp/log function to calculate 1024power, function make segfault on some unix/perl versions if ( $bytes >= ( $fudge << 40 ) ) { - return sprintf( "%.2f", $bytes / 1099511627776 ) . " $Message[180]"; + return '' . sprintf( "%.2f", $bytes / 1099511627776 ) . ' ' . $Message[180] . ''; } if ( $bytes >= ( $fudge << 30 ) ) { - return sprintf( "%.2f", $bytes / 1073741824 ) . " $Message[110]"; + return '' . sprintf( "%.2f", $bytes / 1073741824 ) . ' ' . $Message[110] . ''; } if ( $bytes >= ( $fudge << 20 ) ) { - return sprintf( "%.2f", $bytes / 1048576 ) . " $Message[109]"; + return '' . sprintf( "%.2f", $bytes / 1048576 ) . ' ' . $Message[109] . ''; } if ( $bytes >= ( $fudge << 10 ) ) { - return sprintf( "%.2f", $bytes / 1024 ) . " $Message[108]"; + return '' . sprintf( "%.2f", $bytes / 1024 ) . ' ' . $Message[108] . ''; } if ( $bytes < 0 ) { $bytes = "?"; } - return int($bytes) . ( int($bytes) ? " $Message[119]" : "" ); + return '' . int($bytes) . ( int($bytes) ? '  ' . $Message[119] : '' ) . ''; } #------------------------------------------------------------------------------ @@ -8620,7 +8625,7 @@ sub HtmlBar { my $width = shift || 4; my $height = ($max > 0) ? ( $data || 0 ) / $max : 0; - return '
    '; + return '
    '; } #------------------------------------------------------------------------------ diff --git a/wwwroot/cgi-bin/lang/awstats-fr.txt b/wwwroot/cgi-bin/lang/awstats-fr.txt index c87ff85a6..4819a094f 100644 --- a/wwwroot/cgi-bin/lang/awstats-fr.txt +++ b/wwwroot/cgi-bin/lang/awstats-fr.txt @@ -120,7 +120,7 @@ message115=OK message116=Sortie message117=Durée des visites message118=Fermer -message119=Octets +message119=o message120=Phrases clés message121=Mots clés message122=moteurs de recherche From 8ae32a98303056b877792f25cf1a567b372afde7 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 04:54:44 +0200 Subject: [PATCH 151/152] (css) mod bytes sizes + mod hover anim --- wwwroot/cgi-bin/awstats.pl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 849f01ecd..fb237e0ff 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -977,8 +977,8 @@ sub renderCss { .multi-data-table.worldmap{ position: relative; } .data-table { border-spacing: 0; margin: auto; } .data-table tfoot { display: table-header-group } -.data-table tbody tr { transition: background 0.3s ease-in, transform 0.3s ease-in } -.data-table tbody tr:hover { font-weight: 900; background: var(--light-color); transform: scale(1.1) translateX(2px); } +.data-table tbody tr { transition: background 0.2s ease-in, transform 0.2s ease-in } +.data-table tbody tr:hover { font-weight: 900; background: var(--light-color); transform: scale(1.02) translateX(2px); } .data-table th { font-weight: 900; padding-top: 2px; padding-bottom: 2px; } .data-table td { text-align: right; font-weight: 700; padding-top: 3px; padding-bottom: 3px; padding-left: 0; padding-right: 0; } .data-table td:first-child { padding-right: 4px } @@ -989,11 +989,11 @@ sub renderCss { .data-table td small { float: left; line-height: 1.3; } .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } .data-table-sum { font-size : clamp(0.938rem, -3vw + 3rem, 1.125rem) } -.data-table tbody .B { font-size: 0.7rem; } -.data-table tbody .KB { font-size: 0.7rem; font-weight: 900; } -.data-table tbody .MB { font-size: 0.8rem; } -.data-table tbody .GB { font-size: 0.9rem; font-weight: 900; } -.data-table tbody .TB { font-size: 1rem; font-weight: 900; } +.data-table tbody .B { font-size: 0.9em; } +.data-table tbody .KB { font-size: 0.9em; font-weight: 900; } +.data-table tbody .MB { font-size: 1em; } +.data-table tbody .GB { font-size: 1.2em; font-weight: 900; } +.data-table tbody .TB { font-size: 1.25em; font-weight: 900; } .left-padding-separator { padding-left: 20px } .bar-table { visibility: visible; width: 100%; margin: 3px auto; padding: 2px 0; text-align: center; font-size: 10px; border-bottom: 1px solid var(--light-color);} .bar-table tr:first-child td { vertical-align: bottom; } From 8a4114f272976dcfeaa0ee2a6568009ed9f8dcc2 Mon Sep 17 00:00:00 2001 From: bouks Date: Thu, 8 Aug 2024 05:53:25 +0200 Subject: [PATCH 152/152] Set html5 doctype and utf-8 charset + some css --- wwwroot/cgi-bin/awstats.pl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index fb237e0ff..862a09f10 100755 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -803,7 +803,7 @@ sub html_head { } else { print (( $FrameName ne 'index' ) - ? '' + ? '' : '' ); @@ -833,7 +833,7 @@ sub html_head { ); }else { - print ''; if ( $FrameName ne 'index' ) { - print ''; + print ''; print '
    '; } } @@ -977,8 +977,8 @@ sub renderCss { .multi-data-table.worldmap{ position: relative; } .data-table { border-spacing: 0; margin: auto; } .data-table tfoot { display: table-header-group } -.data-table tbody tr { transition: background 0.2s ease-in, transform 0.2s ease-in } -.data-table tbody tr:hover { font-weight: 900; background: var(--light-color); transform: scale(1.02) translateX(2px); } +.data-table tbody tr { transition: background 0.3s ease-in } +.data-table tbody tr:hover { font-weight: 900; background: var(--light-color); } .data-table th { font-weight: 900; padding-top: 2px; padding-bottom: 2px; } .data-table td { text-align: right; font-weight: 700; padding-top: 3px; padding-bottom: 3px; padding-left: 0; padding-right: 0; } .data-table td:first-child { padding-right: 4px } @@ -990,8 +990,8 @@ sub renderCss { .data-table tfoot .data-table-sum td { border-top: 1px solid rgba(192,192,192,0.2); } .data-table-sum { font-size : clamp(0.938rem, -3vw + 3rem, 1.125rem) } .data-table tbody .B { font-size: 0.9em; } -.data-table tbody .KB { font-size: 0.9em; font-weight: 900; } -.data-table tbody .MB { font-size: 1em; } +.data-table tbody .KB { font-size: 0.9em; } +.data-table tbody .MB { font-size: 1em; font-weight: 900; } .data-table tbody .GB { font-size: 1.2em; font-weight: 900; } .data-table tbody .TB { font-size: 1.25em; font-weight: 900; } .left-padding-separator { padding-left: 20px } @@ -1041,7 +1041,7 @@ sub renderCss { } @media (orientation: portrait) { - .data-table { width: 96dvw} + .data-table { width: 98dvw} } @media print {