From fb90c4b40b45cd09375b9c992b6a277bbd208497 Mon Sep 17 00:00:00 2001 From: Marcin Haba Date: Sat, 31 Jul 2021 05:29:47 +0200 Subject: [PATCH] baculum: New advanced schedule settings There has been also changed way of loading all directive controls. Now they are loaded on PreRender event instead of on Load event. --- .../protected/API/Class/BaculaSetting.php | 29 +- .../protected/Common/Class/BClientScript.php | 2 +- gui/baculum/protected/Common/Class/Params.php | 137 +++- gui/baculum/protected/Web/Lang/en/messages.mo | Bin 87897 -> 90213 bytes gui/baculum/protected/Web/Lang/en/messages.po | 141 ++++ gui/baculum/protected/Web/Lang/ja/messages.mo | Bin 89025 -> 91341 bytes gui/baculum/protected/Web/Lang/ja/messages.po | 141 ++++ gui/baculum/protected/Web/Lang/pl/messages.mo | Bin 95575 -> 97891 bytes gui/baculum/protected/Web/Lang/pl/messages.po | 141 ++++ gui/baculum/protected/Web/Lang/pt/messages.mo | Bin 94598 -> 96914 bytes gui/baculum/protected/Web/Lang/pt/messages.po | 141 ++++ gui/baculum/protected/Web/Lang/ru/messages.mo | Bin 122200 -> 124516 bytes gui/baculum/protected/Web/Lang/ru/messages.po | 141 ++++ .../protected/Web/Pages/DirectorView.php | 1 + .../Web/Pages/NewBackupJobWizard.page | 12 +- .../Web/Pages/NewBackupJobWizard.php | 97 +-- .../protected/Web/Pages/NewCopyJobWizard.page | 5 +- .../protected/Web/Pages/NewCopyJobWizard.php | 40 +- gui/baculum/protected/Web/Pages/Security.php | 4 +- .../Web/Portlets/BaculaConfigDirectives.php | 27 +- .../Web/Portlets/BaculaConfigResourceList.php | 1 + .../Web/Portlets/BaculaConfigResourceList.tpl | 2 +- .../Web/Portlets/DirectiveComboBox.php | 17 +- .../Web/Portlets/DirectiveDaysOfMonth.php | 114 ++++ .../Web/Portlets/DirectiveDaysOfMonth.tpl | 308 +++++++++ .../Web/Portlets/DirectiveDaysOfWeek.php | 98 +++ .../Web/Portlets/DirectiveDaysOfWeek.tpl | 86 +++ .../Web/Portlets/DirectiveFileSet.php | 6 +- .../Web/Portlets/DirectiveListBox.php | 9 +- .../Web/Portlets/DirectiveListTemplate.php | 17 +- .../Web/Portlets/DirectiveMessages.php | 1 + .../Web/Portlets/DirectiveMessages.tpl | 1 - .../Web/Portlets/DirectiveMonthsOfYear.php | 98 +++ .../Web/Portlets/DirectiveMonthsOfYear.tpl | 126 ++++ .../Web/Portlets/DirectiveRenderer.php | 21 +- .../Web/Portlets/DirectiveRunscript.php | 9 +- .../Web/Portlets/DirectiveSchedule.php | 529 ++++++++------- .../Web/Portlets/DirectiveSchedule.tpl | 642 +++++++----------- .../Web/Portlets/DirectiveTemplate.php | 25 +- .../protected/Web/Portlets/DirectiveTime.php | 116 ++++ .../protected/Web/Portlets/DirectiveTime.tpl | 38 ++ .../Web/Portlets/DirectiveWeeksOfMonth.php | 96 +++ .../Web/Portlets/DirectiveWeeksOfMonth.tpl | 78 +++ .../Web/Portlets/DirectiveWeeksOfYear.php | 101 +++ .../Web/Portlets/DirectiveWeeksOfYear.tpl | 476 +++++++++++++ .../Web/Portlets/JobRunscriptRenderer.php | 3 +- .../protected/Web/Portlets/MessageTypes.php | 3 +- .../Web/Portlets/NewFileSetExcMenu.tpl | 1 - .../Web/Portlets/NewFileSetFileOptMenu.tpl | 5 +- .../Web/Portlets/NewFileSetIncExcMenu.tpl | 2 - .../Web/Portlets/NewMessagesMenu.tpl | 12 - .../Web/Portlets/NewRunscriptMenu.tpl | 1 - .../Web/Portlets/NewScheduleMenu.tpl | 3 +- gui/baculum/themes/Baculum-v2/css/baculum.css | 14 + 54 files changed, 3259 insertions(+), 859 deletions(-) create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveTime.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveTime.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.tpl diff --git a/gui/baculum/protected/API/Class/BaculaSetting.php b/gui/baculum/protected/API/Class/BaculaSetting.php index 4e2d046e2..e5a656de4 100644 --- a/gui/baculum/protected/API/Class/BaculaSetting.php +++ b/gui/baculum/protected/API/Class/BaculaSetting.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -306,34 +306,21 @@ class BaculaSetting extends APIModule { $values ); $overwrite_directive = implode(' ', array_filter($overwrite_directive)); - $hour = $directive_value[$i]['Hour'][0]; - $hourly = ''; $min = 0; - $minute = '00'; /** * Check if Minute key exists because of bug about missing Minute * @see http://bugs.bacula.org/view.php?id=2318 */ if (array_key_exists('Minute', $directive_value[$i])) { $min = $directive_value[$i]['Minute']; - $minute = sprintf('%02d', $min); - } - $day = Params::getDaysConfig($directive_value[$i]['Day']); - $month = Params::getMonthsConfig($directive_value[$i]['Month']); - $week = Params::getWeeksConfig($directive_value[$i]['WeekOfMonth']); - $wday = Params::getWdaysConfig($directive_value[$i]['DayOfWeek']); - if (!empty($day)) { - $day = 'on ' . $day; - } - $value = array($overwrite_directive, $month, $week, $day, $wday); - $hour_len = count($directive_value[$i]['Hour']); - if ($hour_len == 24) { - $value[] = 'hourly'; - } - if ($hour_len == 1 || ($hour_len == 24 && $min != 0)) { - $value[] = 'at'; - $value[] = "$hour:$minute"; } + $moys = Params::getMonthsOfYearConfig($directive_value[$i]['Month']); + $woys = Params::getWeeksOfYearConfig($directive_value[$i]['WeekOfYear']); + $doms = Params::getDaysOfMonthConfig($directive_value[$i]['Day']); + $woms = Params::getWeeksOfMonthConfig($directive_value[$i]['WeekOfMonth']); + $dows = Params::getDaysOfWeekConfig($directive_value[$i]['DayOfWeek']); + $t = Params::getTimeConfig($directive_value[$i]['Hour'], $min); + $value = array($overwrite_directive, $moys, $woys, $doms, $woms, $dows, $t); $value = array_filter($value); if (!array_key_exists($directive_name, $resource[$resource_type])) { $resource[$resource_type][$directive_name] = array(); diff --git a/gui/baculum/protected/Common/Class/BClientScript.php b/gui/baculum/protected/Common/Class/BClientScript.php index ed6afe25a..a32de6434 100644 --- a/gui/baculum/protected/Common/Class/BClientScript.php +++ b/gui/baculum/protected/Common/Class/BClientScript.php @@ -31,7 +31,7 @@ Prado::using('System.Web.UI.WebControls.TClientScript'); */ class BClientScript extends TClientScript { - const SCRIPTS_VERSION = 22; + const SCRIPTS_VERSION = 23; public function getScriptUrl() { diff --git a/gui/baculum/protected/Common/Class/Params.php b/gui/baculum/protected/Common/Class/Params.php index 94f5d92f2..34038340f 100644 --- a/gui/baculum/protected/Common/Class/Params.php +++ b/gui/baculum/protected/Common/Class/Params.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2020 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -66,69 +66,136 @@ class Params extends CommonModule { 'sat' => 'Saturday' ); - public static function getMonthsConfig(array $months_cfg) { + /** + * Get time value in config form. + * Possible is of three modes: + * - hourly at specified minute + * - hourly on every full hour + * - daily at specified hour and minute + * + * @param string $hour time hour + * @param string $minute time minute + * @return string time config value + */ + public static function getTimeConfig(array $hour, $minute) { + $t = ''; + $hour_len = count($hour); + $is_hourly = ($hour_len == 24); + $is_daily = ($hour_len == 1); + if ($is_hourly && is_int($minute) && $minute > 0) { + // hourly at minute + $min = sprintf('%02d', $minute); + $t = "hourly at 0:{$min}"; + } elseif ($is_daily && is_int($minute)) { + // at specified hour and minute + $min = sprintf('%02d', $minute); + $t = "at {$hour[0]}:{$min}"; + } else { + // hourly every full hour + $t = 'hourly'; + } + return $t; + } + /** + * Get months of the year value in config form. + * + * @param array $moys_cfg month array (ex. [0,1,2,3,4]) + * @return string months of the year config value + */ + public static function getMonthsOfYearConfig(array $moys_cfg) { $month = ''; - $month_count = count($months_cfg); $months = array_keys(Params::$months); - if ($month_count < 12) { - if ($month_count > 1) { - $month_start = $months_cfg[0]; - $month_end = $months_cfg[$month_count-1]; - $month .= $months[$month_start] . '-' . $months[$month_end]; - } else { - $month .= $months[$months_cfg[0]]; + $moys_len = count($moys_cfg); + if ($moys_len < 12) { + $moy_value_cfg = []; + for ($i = 0; $i < $moys_len; $i++) { + $moy_value_cfg[] = $months[$moys_cfg[$i]]; } + $month = implode(',', $moy_value_cfg); } return $month; } - public static function getWeeksConfig(array $weeks_cfg) { + /** + * Get weeks of the month value in config form. + * + * @param array $woms_cfg week array (ex. [0,1,4]) + * @return string weeks of the month config value + */ + public static function getWeeksOfMonthConfig(array $woms_cfg) { $week = ''; - $week_count = count($weeks_cfg); + $woms_len = count($woms_cfg); $weeks = array_keys(Params::$weeks); - if ($week_count < 6) { - if ($week_count > 1) { - $week_start = $weeks_cfg[0]; - $week_end = $weeks_cfg[$week_count-1]; - $week .= $weeks[$week_start] . '-' . $weeks[$week_end]; - } else { - $week .= $weeks[$weeks_cfg[0]]; + if ($woms_len < 6) { + $wom_value_cfg = []; + for ($i = 0; $i < $woms_len; $i++) { + $wom_value_cfg[] = $weeks[$woms_cfg[$i]]; } + $week = implode(',', $wom_value_cfg); } return $week; } - public static function getWdaysConfig(array $wdays_cfg) { + /** + * Get days of the week value in config form. + * + * @param array $dows_cfg day array (ex. [0,1,5]) + * @return string days of the week config value + */ + public static function getDaysOfWeekConfig(array $dows_cfg) { $wday = ''; - $wday_count = count($wdays_cfg); + $dows_len = count($dows_cfg); $wdays = array_keys(Params::$wdays); - if ($wday_count < 7) { - if ($wday_count > 1) { - $wday_start = $wdays_cfg[0]; - $wday_end = $wdays_cfg[$wday_count-1]; - $wday .= $wdays[$wday_start] . '-' . $wdays[$wday_end]; - } else { - $wday .= $wdays[$wdays_cfg[0]]; + if ($dows_len < 7) { + $dow_value_cfg = []; + for ($i = 0; $i < $dows_len; $i++) { + $dow_value_cfg[] = $wdays[$dows_cfg[$i]]; } + $wday = implode(',', $dow_value_cfg); } return $wday; } /** - * Get day value in config form. + * Get days of the month value in config form. + * Zero-length $doms_cfg means lastday of the month. * - * @param array $days_cfg days array (ex. array(0,1,2,3,4)) - * @return string days config value + * @param array $doms_cfg day array (ex. [0,1,5,22,30]) + * @return string days of the month config value */ - public static function getDaysConfig(array $days_cfg) { + public static function getDaysOfMonthConfig(array $doms_cfg) { $days = ''; - if (count($days_cfg) < 31) { - $days_map = array_map(array('Params', 'getDayByNo') , $days_cfg); - $days = implode(',', $days_map); + $doms_len = count($doms_cfg); + if ($doms_len === 0) { + $days = 'on lastday'; + } elseif ($doms_len < 31) { + $doms_w = array_map(function($el) { + return ++$el; + }, $doms_cfg); + $days = 'on ' . implode(',', $doms_w); } return $days; } + /** + * Get weeks of year value in config form. + * + * @param array $woy_cfg week array (ex. array(0,1,2,3,4)) + * @return string weeks of the year config value + */ + public static function getWeeksOfYearConfig(array $woys_cfg) { + $weeks = ''; + $woys_len = count($woys_cfg); + if ($woys_len < 54) { + $woys_w = array_map(function($el) { + return ('w' . sprintf('%02d', $el)); + }, $woys_cfg); + $weeks = implode(',', $woys_w); + } + return $weeks; + } + + /** * Simple method to prepare day config value by day number. * diff --git a/gui/baculum/protected/Web/Lang/en/messages.mo b/gui/baculum/protected/Web/Lang/en/messages.mo index 2cd01f7e4714f2ebe4adca4d0db25596a584052f..1e4002bf885605bc076ef4de20780338b8247f25 100644 GIT binary patch literal 90213 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 Y=6Up+=h1JTN56R<{pR^qzIp!t041fA4FCWD literal 87897 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 diff --git a/gui/baculum/protected/Web/Lang/en/messages.po b/gui/baculum/protected/Web/Lang/en/messages.po index 70e007b05..11109dfbc 100644 --- a/gui/baculum/protected/Web/Lang/en/messages.po +++ b/gui/baculum/protected/Web/Lang/en/messages.po @@ -3589,3 +3589,144 @@ msgstr "New backup job wizard" msgid "This wizard enables you to create in easy way a new backup job." msgstr "This wizard enables you to create in easy way a new backup job." + +msgid "Monday" +msgstr "Monday" + +msgid "Tuesday" +msgstr "Tuesday" + +msgid "Wednesday" +msgstr "Wednesday" + +msgid "Thursday" +msgstr "Thursday" + +msgid "Friday" +msgstr "Friday" + +msgid "Saturday" +msgstr "Saturday" + +msgid "Sunday" +msgstr "Sunday" + +msgid "Days of the week" +msgstr "Days of the week" + +msgid "Weeks of the month" +msgstr "Weeks of the month" + +msgid "first" +msgstr "first" + +msgid "second" +msgstr "second" + +msgid "third" +msgstr "third" + +msgid "fourth" +msgstr "fourth" + +msgid "fifth" +msgstr "fifth" + +msgid "sixth" +msgstr "sixth" + +msgid "Days of the month" +msgstr "Days of the month" + +msgid "Weeks of the year" +msgstr "Weeks of the year" + +msgid "All weeks" +msgstr "All weeks" + +msgid "All days" +msgstr "All days" + +msgid "Run at specified HH:MM" +msgstr "Run at specified HH:MM" + +msgid "Run at" +msgstr "Run at" + +msgid "All months" +msgstr "All months" + +msgid "January" +msgstr "January" + +msgid "February" +msgstr "February" + +msgid "March" +msgstr "March" + +msgid "April" +msgstr "April" + +msgid "May" +msgstr "May" + +msgid "June" +msgstr "June" + +msgid "July" +msgstr "July" + +msgid "August" +msgstr "August" + +msgid "September" +msgstr "September" + +msgid "October" +msgstr "October" + +msgid "November" +msgstr "November" + +msgid "December" +msgstr "December" + +msgid "Last day of the month" +msgstr "Last day of the month" + +msgid "Months of the year" +msgstr "Months of the year" + +msgid "Hourly" +msgstr "Hourly" + +msgid "Daily" +msgstr "Daily" + +msgid "Weekly" +msgstr "Weekly" + +msgid "Monthly" +msgstr "Monthly" + +msgid "Custom" +msgstr "Custom" + +msgid "Run job every hour at the specified minute" +msgstr "Run job every hour at the specified minute" + +msgid "Run job every day at the specified time" +msgstr "Run job every day at the specified time" + +msgid "Run job every week at the specified time on selected days of the week" +msgstr "Run job every week at the specified time on selected days of the week" + +msgid "Run job every month at the specified time in selected weeks of the month" +msgstr "Run job every month at the specified time in selected weeks of the month" + +msgid "Setup your custom schedule" +msgstr "Setup your custom schedule" + +msgid "Override directives" +msgstr "Override directives" diff --git a/gui/baculum/protected/Web/Lang/ja/messages.mo b/gui/baculum/protected/Web/Lang/ja/messages.mo index 960a676bbc4aa16e7bf29b21e051a1b2885da206..0894da3bafe0fc9ccfb243ff05bf16911efaa0e5 100644 GIT binary patch delta 28367 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 z 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 diff --git a/gui/baculum/protected/Web/Lang/ja/messages.po b/gui/baculum/protected/Web/Lang/ja/messages.po index 35e2c927e..eb7b7e012 100644 --- a/gui/baculum/protected/Web/Lang/ja/messages.po +++ b/gui/baculum/protected/Web/Lang/ja/messages.po @@ -3675,3 +3675,144 @@ msgstr "New backup job wizard" msgid "This wizard enables you to create in easy way a new backup job." msgstr "This wizard enables you to create in easy way a new backup job." + +msgid "Monday" +msgstr "Monday" + +msgid "Tuesday" +msgstr "Tuesday" + +msgid "Wednesday" +msgstr "Wednesday" + +msgid "Thursday" +msgstr "Thursday" + +msgid "Friday" +msgstr "Friday" + +msgid "Saturday" +msgstr "Saturday" + +msgid "Sunday" +msgstr "Sunday" + +msgid "Days of the week" +msgstr "Days of the week" + +msgid "Weeks of the month" +msgstr "Weeks of the month" + +msgid "first" +msgstr "first" + +msgid "second" +msgstr "second" + +msgid "third" +msgstr "third" + +msgid "fourth" +msgstr "fourth" + +msgid "fifth" +msgstr "fifth" + +msgid "sixth" +msgstr "sixth" + +msgid "Days of the month" +msgstr "Days of the month" + +msgid "Weeks of the year" +msgstr "Weeks of the year" + +msgid "All weeks" +msgstr "All weeks" + +msgid "All days" +msgstr "All days" + +msgid "Run at specified HH:MM" +msgstr "Run at specified HH:MM" + +msgid "Run at" +msgstr "Run at" + +msgid "All months" +msgstr "All months" + +msgid "January" +msgstr "January" + +msgid "February" +msgstr "February" + +msgid "March" +msgstr "March" + +msgid "April" +msgstr "April" + +msgid "May" +msgstr "May" + +msgid "June" +msgstr "June" + +msgid "July" +msgstr "July" + +msgid "August" +msgstr "August" + +msgid "September" +msgstr "September" + +msgid "October" +msgstr "October" + +msgid "November" +msgstr "November" + +msgid "December" +msgstr "December" + +msgid "Last day of the month" +msgstr "Last day of the month" + +msgid "Months of the year" +msgstr "Months of the year" + +msgid "Hourly" +msgstr "Hourly" + +msgid "Daily" +msgstr "Daily" + +msgid "Weekly" +msgstr "Weekly" + +msgid "Monthly" +msgstr "Monthly" + +msgid "Custom" +msgstr "Custom" + +msgid "Run job every hour at the specified minute" +msgstr "Run job every hour at the specified minute" + +msgid "Run job every day at the specified time" +msgstr "Run job every day at the specified time" + +msgid "Run job every week at the specified time on selected days of the week" +msgstr "Run job every week at the specified time on selected days of the week" + +msgid "Run job every month at the specified time in selected weeks of the month" +msgstr "Run job every month at the specified time in selected weeks of the month" + +msgid "Setup your custom schedule" +msgstr "Setup your custom schedule" + +msgid "Override directives" +msgstr "Override directives" diff --git a/gui/baculum/protected/Web/Lang/pl/messages.mo b/gui/baculum/protected/Web/Lang/pl/messages.mo index 55eb17021f829d3351b937adcef923cb30c04ec5..b3926e4008b92ba45f6cb29ecf367bdd376a3231 100644 GIT binary patch delta 28420 zc-pF-T+hTl}3yQ<-oHp(Wuu!b*fY2+I*3B&L6^Vou2vZ5I2!9}~NVtd4n(#289pMc@ZGc8oov@Cs zc!|v zD+0lAi7?n6h=H;Rnf_=X1iC=zPFNHOfvtn!`?f(4#3cxtdj>&ZzaY?sOZ$uxO`l1EC|wKnMhz5CYADq?`}}f#!rDMwSs$ z{Aw~nFitr&6j5nQ*p5vW3QL3$ni0;H^88Q;v`*@Ghhm`pgq=Ai2wM|=By?aOhiNp; z2uFq?TN1+{(E2dM+D<8}Sz++mkuX@`9N}=D2M8N+kc30>QQ@LtI5ZC;j3*of3_a6a8l2%B>!KhlMYnzOb?Sbj(}$EBT(KQ0iPd75`1FG+dh;je)llHYd!BhDH8}Ci^$xsWnC> zju;H&LfD3wSa~u@u5eEwg$H7u@ap3#C zDivvjrfl*!OenkKFyOT~4ERhsaAdN}D#t_M`tdMvyLhzsBm9%IARfMVPJpT16JXgX z3CNPj1PH3mO90`j1Pru30Y1-4fJyTbAYefPg6?7hOnyB91AY;Pl@d{IEZ9!aH4y`Q zCZhk>i4fcu^{OT&5v$tFL})fA5tc|vgg`43A?fx+2$oOyy+YZN2*C$W1>+G@G2@M! ziVer?sn|Dcp9(%_2|3oTPer<$Ow(vQIRBldA%7F6!RHy%WQv>y$+M5RLV!%;^9XbDJLgVE#p~#w<5M-nD+cpz3WX??R|9vLe zpEbEP6B<352_L_niJ&VLLd#i*;@Y#oxW_CE>@f@dJf%EZaDvoNnFW3kf^oB;;Ivst z-vzT&46tby2F#QJPRxR&XQjhE!B?|jk8PdKi34*HWNr>Jbk`P3BN$}xKA-tCa-#t%)$ug=-S$8U#=^bLK+B1#=Od%cR5hxyaxAxe%4v2H{Y?;P@Vro6JW?tNCzI zb-`Bi(cWi1Try-n7>}P1OY9|#;^)8_jf!pqTw)4A^NgEZloB zVrUGZ%9}&~#qj0)#fa9l#W3a0#V}#cVhmWY7{0qM?e`bM6|bbdROqWOfxy;F!1t>q zn5g;?_Gi~D!7ey!3E7`!O-;k4&@^KyCYmh59&DMVn5n8JL-W?jmz45KMUi_!uX!x+Z6CGw+#I2EkplS%h11zx(xa2z6>2kEd!%~Wf(X{I?P#ypi5o` zhO4E#YZ(N{UIvYiErSBT3O-nd>`|7J|M_BcIq1Gwj{fT8RA|~R6$3h_A`3iH4MDGJ2Bc!f^Gd~lb5fCZ zD}``vDkR>Rih(mz5i5sNq2cc`(34cS=wm7bD8B;bIxA3avH}8kT!DTbhBEp8+Z7ln zYz2ZWas?z^DD|l;;G)$luqN!0@>yYgQwDmr0%`nVgEJ3&V107`Rp%^4cy91AmnUe(r+9(=gz~ zG*}=s4T4W6RC$0U!e~{R?0VBM@PRa>)zLI)c8V~Cx7%rOk?$(BPhN#`_$mw(Bjs7E zAkh3(Vo52l7Tmmw?9UU$KI!oDDh&L)l&=f^DfN$~V+r9`yc=Gv(RAZ`KdUicM6N~< z?q3Z}Pf59GHRh40tFhQwuECmNyGDh?&TF7yzcp}yr{MTCFku*BSKc_Rflu?L{>~aq zNUwyxZaV56(ox?v9rZrxFnM@7`cD(O&1$;jZ#u5ikEJ6z@1`TlKMRBE8JOAZGhl({ z8L00dW%mr(RAwM{#t2T#fCYmx;3|Cv6pfd9b-Gl{6@o<>Fj;B_1luO&2Ov|ud+y|NZQzD=lQ%SpYm4uV!#2f>>X{=!?cbJ4uyp)pvOjB@ECgFOW1wT3<~hy&F+~ zLkM5&hDl3zV}N#hAi2{XlwI~fpx%4HXy_iKpYI+B9wHbk^|OS2iPWb{d8?sJ{y!j$ zkL?kS_sCvu52E>=2=H3UABBPCUX*L^g~m69fH_3BmVCzf)2!&Xgx9 znX)$&td@oLCRt>EmZ)167!AyVCS$UYw^Oo^K1o@K?hRRp?w_+@@+Vn{;u4`R&4R$S z_G18>{g{9{?}r74?1!sk1l9ej>{Rw+b(+5)<;DA9qEx|M`{C;!h4JtE<=)SJ2>fY3 z6sULrx9=Jp!2Hqo04y7L0G3TYfO#bM04#V;Jpjg+4?x2|4Y*7L&WMJ_beYn5JPqH;Mz`7-#w4%$^U)x5Im#uUTVu_>QkOPh&+f(tgZ)TpKuWLF$ZDtl!F*J;~)gu&h4E4rw$^j z|2POnCi(Db?R*fn%!gq8@-eY|n~xximii6(Flk;sTy{Di(S1(J7xU$Th0r||zV8TC zHg(NIut4KO=-A^Bw$tv1u&T{CgrGce2m?Pm1WoE42E(R@F@<+J3`_MnEVpD2gWtHr zu)xH_=ocb%afiwN%wVn%t`NfX!-(Rohaq{sbo}`+d{`(9Zc6)8!inq(!byCy=?Kkw zY>6Xs8}6vwH#`cLc^ri$LyoFAnR66Tz3wP{cJe4TAh(ZVxivY4AhSP)o5#J5AseEO z;gW3CG0>ephJKHv-Rd|5YD5olU!Q<)C!c_3AyOYDm?ZS6f?K3M_k=t<7E~{vfGPht0Uy3RA$PwDDHiRfOAk zUvZWKTp|A#)5#jX82knKd*l~vnMw%Pb3UJ=-4Sm_&*8q_j9=*jlNTGpW4uiNrqQhA zYrFFp$m#-~DGwwZ!E4I}Sn}EhX#VE~SmYsLC(i$p3+U+hJ0zS!IG?XvE@G3o@FLqu zqd9ny?^x1md5LnH?~q)A3;Zu5%0n(Ah!Zbkz#j;E@jYe2Z+K?B48aCn!J0CgP-O{! zz5<^%E<_qS6hgwbg$R=Fg8c+X7Q)BAh3FSlhyf!Cp<$x%nNbJ<=Sq38l$Q&xDI~pk zD&0_snJixhz90kLC`3>`F2n@&sSw-sx>upG(^W*b$5r(6zKRDKzE?q)auu7dVZrJAYNFypnnhPmJA8uEX@H3;N?4e6(s@^qnJDD*3@Vc?z8epuSi zT*JVZq5bRO(gpVn|k1(54s!ZHm#MTQOYFyBH?*F2;lvQH%l7g??8tG|v-0 z$E5x@!Qx`L^g%HME-9Av-~2j)sHR}U>tNjEI!x6`>U$72p!vY#x&+@1m@w#u+Fx3Yz8s7i81(U701=H-fCC~S6fzeO5 zAoNcW3UU0QA$iIzrI({2Fp{qjw@-|%eM(E7%Kp?9-5ZLw(25xglo{rxk`x`bKcVJp~ zAs8YZyaoO4fU)ilqIQOq7fQeMJFwukJ5V53_?)~Ww_c>*?^1u`4g|h?M+LznA$)NM zrhg-nYyObc?+;wP+7Zss(r)<=__E|K2Ci}sf>_^!B^~b}7(3pBKz;7PwZrdWzu+gB ztlq;w$L_(Tm+v7sp5B9LE$%}A>-!j})qQB*{XS;0f%h>ng$k~@4?bt^V@ADwA2a7$ zsjvP3d>tNupW5>Qg2U?p2GR*m6M{t#B+nnfgu4WDA3)=R2Vnf$189E#flM@lr9yA| zkXAqr#)qJP{7~Ni(LSPuhv)Q1kgWS7G1Viu#P1OVm?HIYkKn`k(w;21Qs^=sVc^}5 z;G$gNd-0LnJ$oc~&mPJB|MHK)xc*~wX!#f>>+=|UL*K{nW&C4o$re2ZqrAtkz^TW` z?~79Z@-ddzFOM-r_kIEwkA4C^!B4<{8es#@|20oAwdM(7;S<~edHMtc+CP%5PZQ?Xq5gG0_~J?u9Qzbg(4T9Vw|T>F;0bNWPjc&**t^fZqFd0=QC_HCOktB z9epOjDRfVT?!z;A;ovz0s{I`F?VjWMq0e&&Jo~x4`Se_#D@uLNb9w%MhAQ|u;Kk=~ z!N?cDuot*1Hva_}oPL1;Z@hp&_g}#0pI;ybD!qhhYY;l|2IeKU>;5nCg2L*TSiH`^ zgk?)#s&en<6@seuE4h++C3*V_!84rDhp*#b!Gz~tA;_M*f<|wIPWg)hkc0UznTY;^ zfG7Wg#V-GaYLqsyf^ZM<1K=( z>swf0z*}+MTSR@>TL?buEd<>B7M45o7FR;o-WskKRE_cu1Gac4o6UFfCeu4;FzTIL zPQL?#n0Ihhs?eps!+<-5?$|p7=^3dndv?^8R0?_aL->56wEf2ZLVk zF@V>5tXAU%{RKnc%WFD2i{RoDOrNb7%gCAkib3%XfBLsT$5iwBZ6X+a2!6H4RJoFPR=l2PU z27My?8{YL6!abj$aek#ePr7>6@yM*kbH&U*kD28Bdpvp-TLN;YJ#KaPWmXm z0$ftg3KpzI$b6exK@b%Lg#IzLX+>Tz%Ws8wlG*|1ru+!f`y8$B$%u)aETQx zRK6kxXjBmbHY4N>O=m(IO3R#z@cGqB;D4(U6n>yq0^|3Uz}UPp2&+{FVcp6Yz_v1c z*SRvHy&oa(Y@#b8%6AC;&B_q`J|XW9G*uv|9U-qBPE`;qepO%zHIz=g*{6hjFX$X$ zC~rEeLc(Q)qj@!}3Jo>Y(6M|q3{bfmg13D&xL|NK^!tX8Z^Z@?CUbfdF6Q~6x?-5R z-&a@g{!iT+kleZkIyS2T3v`isml~M)`VjK2ct8#0{q!0bcts6ZC`;;36MkV!5b{0X zn>FEz-nEd9Kh=WZHEJt({_jL5yi@V0ji~e|K*04td zXg)|9`~(vlAPrL+An*4z0ORWo;Om!C{vwR4H-roA8X~AWHUuBHhOorf4MDG$@|=bW zzW-S-gohh~(Updn2ktk7PfZ)4y`Er)MxYzm2m^g1^#P3_*z`tl-D083Xara7CgiQx z*+$5khmBOEQv+-Gcz`uJj<<$ILaf0!$r^&JmGS{=Smsx2X!OV$LHk+g%xuuVz6}QM zAZ1S*X#SlIvT2%XgW#Aa70YdqUKuu6jyKwX;R72Pz(#y(iy*3K3xTa|F;Htl-sktX zg+17-7p`~S<04Y8tXKGF%_Zm(zuUkxSXN2U|(An{x~43usM z3uM{B0tfBD_yi%pn)S0C1hBA&W$M|ZUrT!gWlwupXqY`*7h-6q{F`SF6RnjFInv>r zJtV$q55`aJp%LxX@MNS31gc56gJY-(1UoJ5=cT=<3Fe2}QhwY7^TaErqFbI@-T~kDVob;PRIE-VcDW>vAgroSOQ!~sHE1MxUa+|?r zg@h_Mlr)3SYc_{zS~o|zUvt^pHHSs~1!I~+;CapAy0qrlT;6OBLCdv3RyAq?`avxa zW8wp1zJ3#Va2eg0hfVE+@15CQs0okzK z0VdCr`T_@7>Q@K2u-E~XeBhwsIKj2+9gAVG+BQ@Lh+N@b%D^ z7-)P;MD_HR7$ChR(s)Bl2zI`7D{8v5lGUm;H1KVW z#V4sX2HMdY`F%?8PHXi4*c!{KMH}>Y5bWFriuG)Rfjy->wvE9us%A2sB+|fPZD7(D zZIQq4+ad@nw1esG+aZXY2>I>y!R=&5YX=K$YX^<<+Ckvcg#1?AvvzRdOTqW;Fpkom z`BMH_wuk8&wg&^d_Ry$3Ax-BR=k}N~$98}z!#aRbS_imfeFwPeSO;i!wFBtyb%4O7 zf>k?$u6alFb7kcG|F$E7BC#WUmo5bPg4a62w51)f3^(kA8M1FDxG1C(vLv|^E=Z0L z@@w`_I)UD)vtqa^o*+1{GwAjas+{jPJHxl7o#E43PAIo^!bCLC37SVbVGEYw1lL@4 zf=15?SrLmais6ZAQWwxUe5DwksQ3`_hY35s0{@R+A^2)_rTk}2oVsFvKdviwwF|pK z^5b2x3O?-$U$^asb-Q;r2o&870<4pAZZ~Y*?sUVZwR(4~4ME+}zNI@Rp!0Sho~)wsD~z!7fH^gB1WLMP>THw5Dx!3}OO-BC9L z=UF$zPKg^V(WEC7a_k9#y7z=-`t^hY-}FRw=z7Zff4C=1bFn8Re9#loTdo(<#HAO~ zFR&M4VNowwW@9h7V25B_wCbl<%c$U=9lk&FS5NLOAxbPIA%2VaN z-Y{JS4-i)MK)IF&G;81ijqN=kh@%Hg+1CS_eCvUUD#8N;rg%VsEDtF5tA}j2Jz&uW zeH6p18U6ZD{`2K^TpviZrw^j_Tp#%GMjy;r&--9LsNGjFycO58FRp~X?~94#d|&i` zC0L~&T-LfDg43%X1fSFo7M&sWsr^(0*^Yh)x}1K{_*g$^c)A}omnX#n`%lJ=JaAegEQL`U0!VBBILR>95#VanbE zA+hg3446pBFRRQM2;ZL)x*G#wiI0T*l1ZaMFtIlwKMM*Rgy7sh2>cEVGRzaI=KLU- z^yVO#@ZKOqdF8<`r5-zIo=FfJ^f3`YNIo^YXqClqw^gbVw5 zBFKk&vSlg%yglKoDV_+jL{C^^t0x9J;3;#uCl-xcg3X8E-caZen0n(7nE2`txh53+ zJOq}g<^=(od4XSBLQBs7&R!6}O>npuI(+8^N#ng>x@lgp#C$LKaJ?5|XP*}=c-RZB z`_T)6TqKO*`-+78nf}05II`ZNjZw6i69C`Og#3h7p(;PLIIe?ac_d zqW(y^H8T>v_a6xcb4G%}fswGtNx|Zgu-L1Su*6%TGxwH_jW;aQR?2SPD)MrSH#Cm& zM#n|o=$J0JOYpGZIbn3e8@_z*jhHF%mib{6vZeeeC{}$G7CF~ZXdgNX{YR^#5G0dF zLGr{=@XZYAkVZ%urP)DPpYZ)?MMGBA)EuK|MsmMz6iqr$Sl>W_@nd1Z=&`t`w1#jY z?}Eo7I}*m>8u1509q0dBI@!X}|E;1q%~v?%sRIpggYXn@ohBfkJNqhzS1dya`5Ul{ zgpb+x6BW%mUcUVl%}F*n;Z?TOB!$1u(yaJS(e&fHVg6WlRl)$?==dx6{->LW;_Xx!dHaHZq6A%hl%@Rx% z`mKU{LviVq8wy1ag<>8!PH4vYe>N0Bab6kBjZS$sZq}!EnX#PGN8k^}9`Arwp zH`gJrJL+)Z@r@2aJVyr;uhxOjRviRCEB%Uf5cGi#^F~EI<$pE9Z@Iu!&U#p)x8OiM zItTKS`SP8DfnL6D@8z{MiJoCCPGC+w+Lu3AOeiP zjezNbq^w4OZb1ZGv_{%DML?6B2w3ov3}7CK0cuA=F}p|z;uwi`*GSAWUTP#5j~9Ya zA(#~@_X7npglw#-qCQ~xM&C*7L5sOMl`OD)wxnJ zKN<{|MnmHasoxomi6oOSkJo@0NPZ*+8;f%>5bS=8Y+z!bd4*U+eeGDpO8r;})+-jl zIWX3+Y^xgISS%(pV-cM{2p$u>84JsN5(d@cpjrJm4A3|Znm3JurfuV(K(9Cm;uVLr zVQd`IPZtNpqT^UF%D+UZ*d&a1#9`pfIQZ^-95lWv13iet<@c*NXjV5K{oLY_etqK+ ztmCCVJ|2S2kn-|)EM{v64Zr_$C?1lYj)w~_#Y59O@$lJW>G&xgf|w@A?e+v%#!kvz z642f^0T%F1fIxoIo{#`O3lgAk3ZdcmztW^(M*>WgDFiuEKAeCwJCT6&I+p;GJ|y%t z{05AoQFwVJ;w(Cn_*o+PW+_$X6Nb?-l%kE642=U}T@$?QV)*@suK1lf%`U2>eTK%9 z2-Xn(X3CGx$=r0FPUqLCemBvaqx14~KAG?!wLLH~Ol+D}RF|N|i%0ybUQarAGXd|* zgr60h_oDg;DqB!FT&tpzf43o&7+w`&4rqa{gs17)Lv5`IQ-z^nHl_39#3YX}!4!38 zr9Fr6EzuvN_UDA=gi)q{_cf#Txm4dlrAkK`?1A8EYHTjVgX#P)s=qJNm!tFdbnZv( zeN6Fs#zMkS8Mu(ngXpM0beH)0f$EzP{bVYSp(CEk@zicYbuFo^cB6{+{DhJY3sbx< zHG%4$iliT9;5SrPSp+<0g0~=f+1)5~!-dXpImhh^e(PbA30^)g`?IDohHL**R5ewJ zFn}r-(J_QIp~i|r;Gz88ksnGX8<{YR+9na*1tXX6A6+VHW>bAlsh>@Kjdp|1s(ovPp`-?!%g!TT`N~4J2zFNcM z0?k|_AscdEqHjoTKePWcP4L1o{|%tZhSXsr)khIJ8EHI-+KPDwq`Duao_|JTi!dKX z$a_71qWhlC>k@7fx|>vfq2Pmrc&cxwEweu_iyXncCnMZTM>py;kB%ZDxF_rOCjLg=UDswqNq+<;&-uqcg zbum=8n2y>qNI$Ccr1DO}iG(MOEVY$2=O-Rizd-8vr(IeRO-Jd!Mf)H9#gs&xA&oiI zIG@UI2!Erx5<1?}@si5DO)+)x-!>|rr(+J!j?})5`W)arBAw4Mvc~U3GmFYYsl6ZJ z0xH*`W3ejQzvleZ$mdbgF@hO%Tt{RyOhpL==dnE)65elYY7|DK#i#JFr9xV!fi9v{MTO?wT+^BJ34&m*hKXE zr0ps7KSE^}s_)KIG%sSps}0qS79lgV{QeIScvIskp4UzIO{TvG`9kF+s=q?VLZaEM z#aEI1H<4e%=8X$s67_MEeiH>B3LUSgovHt7qN8gP&2{4WoQ^8S{;xy?-;0(rjI_K; zgd;@Sp~Bcn%BEU;>%D{1iuw+wW2y9OPc-MLK9Xo2(|L$d{$DMd+_WGd<)N>Cj4q1{`|E63|#)9gWuSKru@zzjsJmnDkgYEIzmho zLY*#B-EY#_itsKSIvIGf5yPqf8lVm@ztp!i9bZdbU!w68-iO7-^$2IP{=Bt1r{L=r zYc0NVTSxef5EfAV4|GIR-Bx0fs^#|p@h0RR-qFe+KZ$UciN-+&J4Cc`e0fip!Yi!^ zJC=B#D2sn{sw__(c53m(+hSpKh39aVnA&bq+aT)n2O;gmHNR5bcf6R;`Eoi|%YZxS z`~}fH6COVhJzbk<#!+3M34Q@%H__f!Wd3jQFZ1O|xf0=@bR-JnMMm>NIMwwR>vSTT zv2;A+ryfSU{-Soe8q>6;qdL`>N?QSE44t2aH{^~s4YX5t+ z3lUsIoo3RJUAEaQTcVBT_gw1#gk2^AmQZ;E3GtN{Ki9^8xA^Xdsrdh=vOFjJkvbI; zt{~zaLTqPb-hm?ACPFK!U&dd=84doK&h~H!ZXt6I9q~f#&NLHIX`msBOF7FJ5t>jb_d}h-nMD^ z-C|iC`DRvG{vQ%a>j_hSlWm_6_K-ol8{TB5)lmdGYUCm<^}i)_LyYSAscIZ=IQep} zY&*{HmT2TxbE)oP+5Z0-b+n{o0p~2QZiFw5{9hyk@Qn(8p3PVrX`4%fl<>V{o;`_f zh><&fp>sE$C#cVDp4v_LqhmtekPxm{>7UQ|AuG)tk)H2XUZeU;MD&f+H5H4jARNhG zM-!uBExwfIKfY5sn%dfE@g=+}Lh$`V8>%o;Bqc(D9q`Wq)Ug?i|slP~97$T}tPBss5Jmn@sIp|G7~4li?!-iU*<@ zS9VW;Cl}tX3v)-l2$A#NMjG!ha#s&JUu-J*f1WxVF64X_8}b`4^Qmn+-%2B9 zwfP=_5z|Xr`~*|kUpL+>Qr&amHG&^n5U+NGO{MM~FHA<)pODlj4!)v6T=^nY2I4Op zI!W6Kqrv!R_T6}Eroqpw_=<)V6?}ph&6iaxe$?yR~nf|Y(vNAFLm9OKB zIy5InF=g8^!Wz8oBAQ8bj92*k55lso7vCX~ek+ZI<9UIXbiRh9ej|A+CwCzc zI!lLdrS1|DccqT@JoU1bq`nK`Wf|Zv-W4hMqRB9mn&9UZUK&}^gydh~Tw!szR7S%uUZ&eKGI3_9;$HnZ{e zN@yvGPRIm5xmfm>EQ7S9`ky%{wfMHn zl;;VBKSaWx1#i!&&CY1x=~VX7;+GSD7Xj6Jbh3tsE)jMmv?GEBoDDqFN#|eqRx2In z`QDGz1qlOwzl&d5=cga%sNYV$cfeb6X>ZQgmPT$mLhT!Pa-;go{MuLq72K)Phbmgo zF|sU&`C6XNm-8Jm<-b!Xn77>2=517WM(7&w{9Iw#A3rs=q`JL)AC@D+RytMF;zLTq(*Zhf zM)fo3XiDc>_#QSVEr+HFe$m+&OAYDZOe&?YPomXV$d`p53e<}~4W2W%n z=PVs~(&sU$e=UxPft>Xs5&xS1Uqt+nju?Ip!q+XlnoD~Zs^84(Bi|jOL(8|Ns2oe} zP3ZhK;dcst7pac)@#0yB>TE=a=loJP(f-6+nH5rLTXuoP7uM8qtZ1bW(Mu}N6K2J{ z9@24^g~;6LJI6xn6O-I}%H#$?A;EfooyILN&_<{C(MRa~P>AyLo06F^rMhAo8Xgds zyeII3>30!2edd;+XBCnc#ndzj2#iTy7xQN$n~+I1dVfC~10#*QPmHdt#=v4~>>9<) zFKB{acxK)B{bm+^6T%~W!ecUjp4QF8G+?4nOs46qL{n{GOlHE|=H});!G_i!76ox# za>bO!ru`#={W4ppEKsTt^*=_-+`p{4iAlJxe`;S_rBi0pSx<=$d*eMC5W?aaQribbd%w%d_)zpkG?BGe{^weh7m2??^%`TF}! zj0p70T(Uo-oJsIRpUjqrH&?Roj|kT>gY!RsZ)P6hXE^`*!b`I*6N3!}jW>;C_$LtO z|I*|iRR%W>D%5LDCh7f?4;R^22ng5dHIqmT3XfYwl@(Lpkl=~QPp(DV21HYDit%tg z{D5%R=>4dJ-ajCGVrERSwN*I|epWm=^+9S=E=Y!W>tbVc`Y8c^k|#0$NfTYB%foJp znHwicX3V4din&{aAy<+g*R5pU%V3S`XbIvMHZBYblpf(*OVvI|9PHG_&Y!TZ{=C`Bv++{Qf`_kE!)yvX`|E|_P=Ia zc9-5tdrR|S5$w0@08gc5)pEln@3K?ID?t_(!;yIh{FM}o9^QUsxi>s!Vr+olk2C-O zAxC90e|Rd+h?n4(!0L zd)0rf^Dh4He11I7_|D#Y?X_3!oSEa}|1562w9xLAGOSSOZ-+rqDieCzDN5UXigKWb zV){#(s3^q=lL-qE9wjVBc%HBT;cdbaggH|FS<02a6vdXHxL`BFGK9kk%M(r}EUPG* zGFLLz5*8**BP>FAoUkb2Wx}e2_XuqWe+gE1R+Q3&T?xw(jv%xo^po^FNw0SXzf?ji z=Ie}h9-2^7ls7`~T?+C|Lb}u>XjF9)1gSF#8rV;Q=Di6E5)Kg@C-m-wmk9$WL4d9< zz)>!+u%8PAUrJbz+E+Hw4Ov{-0eVlJZS%WdBNZV|0UQF9|`8RQN2Yb4SC)-JwY} zcL-F^9RfC&bVqm4_i%>-L#5o;-4tv}sHB$*{d#w@zdhX~xI@xM?g++j?l4tJ4+vCM zu#pECbR?|HG2j7#f<2(oEDs2k!uTqKj~V7kWd87X(==nBWCh?Dc|T#|Z}!W)oH+Y%m!?tM#6Y z3PUGDvk8RLxqnWECa)&L^xq~UHVSzoc&xmkS#xigx{o(v$kiLBju5)lLYE?R=e)u1 z3Gy}Nt2ZPq;e%dK)dv=+;e(3Je9&Eb`#|#Xk{|8^fmZpTexeT=-tPlfT_tQv_}B-Q zEawZwYWgC**_Y|a|9gEA3@4@FqToG3Yr?m_(5$#0G^j&Zjj%Ie4Z=x&aNS}*@Y(1G zOYZc8fN7F{)(?EI`9aaggoU{Ozm$T{LTKTSbTNNuRK*__Y3`3$>EsUv-Tl!(KYv(Y zqCXn;6Abf*3m5pKyT%Bv6F%DrHTL~3f0!)YAHMmAFoef;5oAaJDozT31ttf`5F3Do z*Avzv+!Fwc+$6N)0ZGd30uf`)2pjS^5r};6K(aq;78VE-E((NcHwYdNM3g=Wge7tV z5zYCgK;X(#AaH$2x0iIkDX`3hDWDIO{Do6s$@nP{VCNJKgc(9`VG4rlzA*eISTG1! zF$k8Z8w5?72EoJ=gJ3D2ATSP>^io0tn>+~P#pWQicR2{{J=Ubc=OFmZFclJ)mAXFnWncFa*_t(LiJ{EVwZk0wo3`#tsC-!rIATH1JFq ze35ja5MTwtS|MntWe6BJhCtAsl0QBKlapr%6!8gx=F>wEY%>TKs){l<1PYX%ZW_Qe zrQ&of5FDpto_CoJ$>&Z-5UrYyetej)E8)lK=$5TQ;meVsVCWVKL3~0Xz_d`fW^O1f zvOE+DZV5#!{T(X(|8gjN`cN3X2!+P)gwb!o!eL-oE)4Xxg7qZ7S(r>hVQ8>N7{>gO zVQ@ik7)%}!28FjUJ@@~!VKCJ-LY@t8680qg6b2J_(6DeAqQR8@gpHV?2Ele{vcl0| zf#Vt)zNo=MuQhbr9~uNK6HdbN5KgGE#sk8k$?$LpGCmv?Cxv6=3kXL8OT(c_oZ!}Q z2$U3#;7S#`Q{f2CYr^+OI2zW?K)u2IMiFq7TJv&6%~;Fb9{u@D2;%!N?sAHw3?|8FgXXVrBFqH0ZVnE}JRkix$azFXiimK7A1cJ|TSX5o$aly`~%9?iE{%RqJp<>IllQ z#n80#5)3HA3EL3{Ex~}4x&)eETY~=nif}eZ_fj+%yA+n&yc7*?UkU+JmqOs9OUeFh z>T^qBlG{tAyDWvqzm`ISl9AFoA`w(AB4Md6kzx@k9~}wCZjo@IeeoW^Q1^nqkPNIaM@*`w_AoFYqSgu9VFdz83Y)#3>uGF1_e9?XD>r< zSxea5G*k=WcVUn}N>;;BXt=6i!zfwdM9BJpz&f#8#$X(17$ft4_ZT$XF9r-o2#%M0SE=Yn=)l`( z!q(hO+GV!uHa{B_+Lp|tU>G)*4BVQ`89~{ zYHMJkHfumQYz=%kW(_o)xCVkOSc9Q;#Tp2-O89IM#=FWfr6pyW$c#p+Vv6>!YGaK0}n9k z5p3xjV5xf>;L7J4KyTOx!7Vq!B9#bBaR0Bn5scbwl#RniSY+fzm@;r9Oul#{OuBs| zG&?NinH$m2n~m6D6x@VKrtT)>_uGW}o||xHGXD@LZGp+H2*a2k;VkZ^TQJA8*h=>2G1+S?xq%mt zTcOdrtq8sX+pt))+lJ`xOjwV1x!a&&EMXhMgWDk3k8N0@72S@-sr`2F8@3&S`fLZE zWrTg%RogX~q(A~HG)jOE`z0V~rX;}U`x6j+#}m+7&L^NdT}cpMC!kwCPe3pDDCN2x z@Og1TOTkJzz^|IN1E#7Y869`vV4=qjFb>&)MdYjCC@-`Vbd`6)q&0S; zfzdl5_(Vy2?1VtRJHaPxCwiH-bf=7Tf?K5^St=Zq{IinIl=LHE{AQcV#g#j&?^Z8 z(1awIaC#Day+v?m5=@z#gh?np36?pK1m9j0J`at1#0dFG_>|rY4Q&J)?nNxL-V2uvll-xJ zL9co2MbJ#!3k$^TMbPZp3js3sqFX)Q3(Nf4ikdAs@LKiIc=L+4*bUFWzOGmVBONZncQt@m$e3m5)?n?QqbkoyS zy^m?9aZ* zJphvzIS2+V528DDlk~8IvIRQ`&AcQ(P;j=;uMpfS`Dq8?^V5RY55kfU55k4H2jxgq zJp?Rt2n3}M$q;!64c0g$8;3*C$X?RpgwFjCT;_cU4NsH&g@+K_k%!>oEriu*(V9+J zo$!`+n9NHzKab$dxBW33p)5RxiY1RD2x|~_3-*7i5ut9(Bt!(u3?QBdkxd>nQQ2N z_phOw>90cpo9n1wU(ycOp-`vmpzB4b@p9Tz2v%K(Mw_lffCRye>(K1nbwu&i>xl9v z*X7}rFg9euQbjW{0+!0e9ATA-A-HiS1nQHCUN$0=?9UmlQXxPpXqjj@S}JUo@}x{O zykFAiG9h@D&^?g+*O?IPt6;t?lv`$jzFHPsP&Z2+m9)*m$TTubp5se}qyCmaGHU^&a z+3?vzDgTv?F}uPoVAEUBwD&D&KI#@4_PPZ=LAN0Iv|DH}{1yb5C+U^9OqSJ@wYSjV z7O9YN3zN#>TOzo8!m_zx=pv` z{4e1)Bs+8)zCM2&5?&L++qdN$Pw3tV{woX%-jU!JIyS-lTe-Mf!zJeN@88>Oq(W*AOm-y)YqmEz z@MXRySSeL_0!E#mzybrFptp>X{Ao`x3(kLn5%tm&xcKoC@cH%x{I$YQQL*MzjD($^ zf^fo994G`mMT5JaLeOl%S5FZmKc7PIa?j*FfoBk?rKCGadcZR%GUgfD33_H~M^jcj zlS8Cuko?>;*>*p}df@dl1W}LY5}eOL7xWx-v!6qd*yo^2d5-1$ndcBR{|hKo;RVtS zUf|(YhZk&V^8c|HF!|jVI86E`6`H?9F!gweh6lccZ{1(QbRmQ-c_e#@Rr1A`I2X{p z!d%kw6)ZRI75FTC1p$`7LU-IsSdRO@k#5Gb=C5Fy`mYf@Jzpbg2fs$}j3Zpf`~BBo zQ2q@BvU>wdG=GC$@K+Y4OUJ`Z(!+6q5JYip8u79i+@SeyGyyy>_x6T zJbH(qTJ;VV*zpc7+V>98eEA(T$ayF41HFgkD!<3Zqt$yX)5pC>gY(|QVr$+*pzZIW zK-zm*|6dXYH{YXQe-Xl;@6lk951_ODfZ(hB0r@RI$iwLmaM`F2s6R>ay@W380~Cvr z`WrvUV|wj_91aPd7QFNU65kNa5k~I`!+8Mu2!?Y$qT!Vvq0#z}P$c~$1jzb`wc@jn zSdN$bgdpwxNzVUgeu9aYeZr&=_eqZ9KS{%%&>P-=LIe3eW4f*K8RhLhBW8MjhL2r7 z!{oC*L*SUth>4wo$3DYl*`H1PG$mImQ8KAMN^uZgSw4oP-Ew{gPKLe!-MKq@g0e<$b{4@Ok~;pl>DE^|w5{ z`Yo?w|Hcy#zu)rwf5UHdlf>W9;Eq%*uBax7D-p6wtOG>fc2k98e4<_XPznG8}*N*9+!3AOPQt&Gwo6MkB5rldOQcVv* zYU@GQh>$JUmXKZIMaaRa3H@?Hj-5C?6g^GImc2)4I{$wugdg=V$-jD-ypTaP`LsA8 z``nt47ZCQ6-`@biCm5iiW`H281G zBm)VpsT*eI1LH6Gq3N&uU|75W7*;L-7t|^Mx`qY7xMcyjsuv+g_gF$+m@FaWpgtz_ zp9?_XpM)CE^JNP{LI*;g19}%ka7-%*3(O%L%By5TK2pgc^x^JR2mdn}ol42q)wd)3?Pmn0`=kbi1tLkl3aKf~PAX zFEj?1KoABI^4Pvq%8!&l1D8s`VmXAolFBUs0ZNxdFKSp4h zm6egNEL>KnEP}XoS@3ZxYqEf*j4z7{(~zMoEeq2n2;oU#bgwM>``fbcW#MutuO`^4 z9Owp?LqiiK-=`b|n_mu!#R%Qja@-E}zf`*6CDYY%=qB&Vq5IgBhi?azM@5(Nu*j71 zV7#O}1lcC(gXLkFtnyIkeR*_KiwdACQUUd=SAc@8IL-ZkNCjv1nhTr|WA{Cur6m}0JEtdk1+tRU$rD=@rn1x=n=p}~(<5ad6?L_XiE0)djM zpgg?_%8yn-|34$?t5q-#WD8x6Rs|Zrse%T7Rzd$QTvbNAst~MgRWKMR`6H?#$|qDs zJ#WH+yu_-CA^Hm8FkTl}V;l&#MhvXChN})szIMkNzWvV{rm?JsbfappM0ddv)gY)x zHMnXTA+HUORD*yos-f5X7WxL&5ku{(BY#MBbZL$tQFLj%L@&<)4hL9kFeSZ0wOX1{%QsQRqS<1?~`1M^K*CfyMIIL;Xhe&>QUQN&g>O4;pya!$>&29wdwu z+*S{ChooYb;OBbqeVO`jQM3BUA0X&k9~O+PkJ-{#9|POH`f!DX)&S97y8$)^g9-Un z?3oQv;Q}FVI==~8Hw2wiLv+``hKQBOhHzb?q)#=(IP$0=G%wN!E2QR)WIAsIg|yjp z!$BBN$jR#vHx$`3>kf!VQDqB85WZX%`m3xo1?s4a||Rdg#3EW%I5Ipz2=C8 zr_Isra+_nE_|zQT(V_){wo(hYxMmAju2~Be-~aS&fuI}L0zu@{0#Q7r1$-LX0t3vN z7FZo`X@TIn)>Cdo2)z<61&M|CUH^Y>9^VwS*;(wgi8JJp?aAXxjgmvPXsT_V7(z zd-$faz4Qiq1f{1vOc`zuSFEsyrh6p+h&{SnracsRCVbx7BZ%`kKp`s!DAd|P=Kn4Z zFwF=D^k)|b47q_q80CN{k8^;>W=>S(0Y$XFuD+FT|!B(wcxgo6( zoa0+j|L5RY*b1iE-wGNXZ3Tg@wt{8uw}J*ATA_CoYz^NIY7If$TSLIG)(GCUt9Y z@-V`x-2azI#oe92IJFaIvE!X&W6}u{za!*VDGGOnFMD=I`S{MTfJVq~Ky2s?i{2vS zCn33=5nBzqpnE%Xfd#t}YHYGTU1WFL1twhD1r4Nkf$1)G!EE)m3w&IvE3j!-tm6lD zMg5Sja8*=SD3s6@u1xNV;LPX>OCIhD*IesL{hud`r(L0W$!@Yj>4qqF?1r)4Nieb- zg79WHn6{`BOxn>&y073QCs-iF2?8v20>4-%SYoXc1W0hwaC1N^Tylb>IYRit36}We z1fLb^j##PK9VV>N9j>b19fGtW4B`_MLjHpKBw;Xj-yX0`Mh{r#N)OBx*;)^DhXOre zLc5+QXxkI{o;~4``8^SgDUyGsCkBwWJ<+{vdm-Je7uE@(y-;sUFHBk&dqIK!dSTos z(i`1dYupDQ)Nr z7a65qMqk9nxxNtieqVM8^}igc@Gl`*M=9EmBqSWsUsVPXP8pyoL%8BVRawjX_d#&g z(Lu0W_8=V5{32Y!WBy?DihF~xB{K|B6@Ok45pL%V2;o0GyACCKia(|OFjYCjJ{pex z8#6*Rz2A44kiYwBK2lX)@rfqk1|AJawny@>Mh+{EJJ|J}C z^~5-6ykZ>s|LSo#?AlJKjpJ1;-S9UYL&mGhW)7waSh4&w0Sy+Js4DY0CJ4XrviUDW zabstg*1;KbL=R`UWIEvp4qC#w+?$*skmn@irxAMdIO3w>{hygGV7SBuzFz5q5pSyt zg5{_STy$43SLjt&?0^coLc^l2=HKkz9Am4)M5`< zVufIw&}*AKVB#~vD8~aq^3DSz;4cqITF_HgIG(UnGr{hjC?DeqfhK!`k0$vGJ)yuF zPw?I23CkTsT2n3w;ayMo=#3D3@syF#3nsMll7)sB8gTJ~X8v9fWSW#mdSN`-;03-( zQhr3rGreTL;3fP2Tp|4C1rryT474QlrS4gMGAb7x*(p$adz`6 zKQxfx2N&G*gJuu>FcjzdVQ=_d=&k+Hu#-P}QD1+=oQps8f72_I{t#e+5XSps^4aVU zK~4x>_Ln7?KQwybk68KO4*?7TaAoNLXl^5E`v8l9rdbpO*pU!kd}$3yG9KPyU? z*8gu|xHtF_eLJ1vuA~v8p+pc(%nlR2A)HQE<{y=;D6g6hFAwkHa{)abO6Q~cC+MoJ zf^If3-pR*zM4L|6Ek52QY!=|Bi<_ zs-p_sYnGO-4wNoUbR`IRkrzUEUx!y``0obM)Ku|PIwL9nAfJE=d-+E5u%3V zm!veW@4|#8koYX7yj0@gBeKv^PpL}xdb+ODwUCuG@CykvPEdNZ@GL-eN9*{_2BdTN zSn(f9R3U=TeD+F(j&whs2$u?TBi*mn^Rs;F2!zW-kf}Pn!^cChC6)D{vRt!x9Yg7n zbgk!EOa$0SZ9P!%{?`JXbhH}W7%won%j@x;PG!2!(&IP!_^-LyKvRa89Mt1W2%Ru? z;5gLriv=PaTa!J=aY|)_r2b!oYs`eS)Xdyj*1&H#;J&rtfA>Dlb|>1!V!CzgQlgnh z*I2rK5y5z#P^4ZUVNEk0c686D+(teT=bmT4yPw+MlsH9|Co^M}U#XxCpbkGK!0UV7 zsWua#e5h=MS-iMWy0%XFKYxB^G}r0=25&$(ZWO%4=*#B;s@XtC>qpb?u7sPuHmAW% z80--y`=}9q_HRKA+Dn7|iD4*Rt%Q~~HcBx{&*23o2O3=kiFPGjkEPBuqFJLiox&(H zh*!3b+W(O^&zkwzpDOT61_Q-}U#NmB<-KJgDQ`WcSJL&0>KrEgk1&KVkuE#BIuXr3 zdVWJjQQqtE5&Bx@!TFT8PtUL6i2f5P^C^!PM6k}xXR}1JPed3`_s8g(%-u(i7n1Y_ zeCJb5>Nr#WV^N|P&uTh+F7l+lo22al}*Q z{#-#CcjD(zbia_UK2)}Z7!?+J-mgEWw6icTCOnh>m`E#{S?FHgM0bM&PQ|x+m-wSE z_P2uXKKO4Q_i0{cQN!g3%M)&;ItTd-kM0wADNQ&fZ;qk+3sScn-9M1~Ts>YqoRGJ+ zJ46K=h|xKIg;umo;)M$nQ`s;cRH%FlPlR;eREM8R$}+v@1^UHi8a<)BrX<8PNq?p~ zadJP0=-lY)A;R=v|EIHdROz*XpG0avm46CD)9dkaZ!36|@C04Er12lT9%R>0UOirT zQvDNB=0NvW9Goh?WP2wKx8&6s-9OaJ&!UW;(*Hw+aX+fGm@>Nwu4X-AKF?5xnYdF>GtHTE<52<`J$HX6ehUSg`70ojH5@8c62qT8? zsq!$>yL&R&Q2tmd_vXG&ILW}TPLf$UFzK2}mj~4;OV^#4Vo@e&okP*#V9ASQPye~?rfPI)cqejw$Qr~BD@{36zCv*_m+$0GQgkhNF; zXYS4s8a_KT5RZ|B-%Sf$O7t<{v&p=_gRJ=IHW!&`m!u1tT!&Ej&+SqE)@J=uP z)uqg@c{7#ZbDky*_)NAYw*tHYBFt~V@4KYZeIg05lec_4PEdYdx-YDk zAE;&jQ~7VgB7}jw{&QCGeQyCG9z}#7=-R+5UNcM7p|a*Ge%)>cm93V1{<+L>G5a3E zMsy98fXye^kMep8O%1^&qM$aPG8#%EQ^5zsL!{y2JXz@ZeP6ukJck(eqq1&v&7!<6 zLid=5R~iC^ud{q2G%39|w*C_up`+rd0l8Y*&i6B4u(HIdfqjYtS zcy53ie?s>Kbo|CM4OE23^LFRF_ZMxy;*3IZrhmrpsfK90iP9--dLG`1Z=5RYPk;6y z75Y&DpXu|W>1N&TIu9(wbX{JcnZ>~>9X`eWpyCGu!_1=G^t7AG-&xGV4oWoG7+Jcd*LQM!`wJMpHc7X0V+$7FPdXhZ%O zE%^t?EU3ZvRR5BmU$rNNsEr{KBL+Rb`yR&g|5gQGHpK~(<5YM~?qB6izaqU0G4SGZ zy1eO>a5k@w33u}josWR%YEM@RZj!?_i~Zo6yyy^ff-^;^CM#t{iMcw}a1>%x1W|l*lQXHjET0Qd*;cx;>E4D{ zJiNIS+Cpqz9%%TumItXntTT_&K_V!BTc#9H@eR%l!s1joo_$OAdqwKaMBGc5U(n-I zs%^Z8Q1BJgMPWQqkB<{4@nV$El~nvrL@*EEJZ|t&AYBvq{8zzGHt@S;N*7}0n78ES z`JL{a2$$ro3C)6ZCQrA#xDbK*aX=CM3!w?2^h4f)EBIW`ffuyI%h!PKgqHCU59J*v z`lSZ4|69taK!t}13+eFDk7@B~z<)R~mbcVY;cs3k^MRjhpN=UIgRA>NPj&RSwy#u`!}1APe1tFfbN5M@j>*ZcmSjPi|nSnF`vq3Q+f_t#>Tp1 zV1V~T*YT5Goc;Wb>s+SfkFMf9F~5Jn_<%rvXJfo~X*D|4=esf0_f_HO?V-h@4}?B6 z9tn$8jpM_UEsT}sIOvTd=T9>j?=H5HJ8EB411Fgl#rRLuC~>U<01l$*I0I%f}K{Jj8Obh(Gsj9nfURilSL3bYIu z?-yVl;O6D5Kzt>@*+0OT`>1M>=yJI$OAhr93HA^0aC5dsaj@}PZfn(8=6yxg*!)BJ zV&yt}`;7PZ4jMl>*g9mqho7^*^~8|z{(&oe)$eJGRke^VZM|M?o1 zFpISIWzi}i22@#*#2m&PE^x;o2tfAF?GADR%v6qs*!5i6(_Zpnx^ZaPS>T)>!miJ zoZf2VLTLqusdY=HwRKZH^QR^IsL}Zg3<~}$#LfBSthAX^)i1i3uxV0ohpJU#4uz^){vT*s#zp`D diff --git a/gui/baculum/protected/Web/Lang/pl/messages.po b/gui/baculum/protected/Web/Lang/pl/messages.po index 4c6fe2b0c..08df61c18 100644 --- a/gui/baculum/protected/Web/Lang/pl/messages.po +++ b/gui/baculum/protected/Web/Lang/pl/messages.po @@ -3599,3 +3599,144 @@ msgstr "Kreator nowego zadania backupu" msgid "This wizard enables you to create in easy way a new backup job." msgstr "Ten kreator umożliwia tworzenie w łatwy sposób nowego zadania backupu." + +msgid "Monday" +msgstr "Monday" + +msgid "Tuesday" +msgstr "Tuesday" + +msgid "Wednesday" +msgstr "Wednesday" + +msgid "Thursday" +msgstr "Thursday" + +msgid "Friday" +msgstr "Friday" + +msgid "Saturday" +msgstr "Saturday" + +msgid "Sunday" +msgstr "Sunday" + +msgid "Days of the week" +msgstr "Days of the week" + +msgid "Weeks of the month" +msgstr "Weeks of the month" + +msgid "first" +msgstr "first" + +msgid "second" +msgstr "second" + +msgid "third" +msgstr "third" + +msgid "fourth" +msgstr "fourth" + +msgid "fifth" +msgstr "fifth" + +msgid "sixth" +msgstr "sixth" + +msgid "Days of the month" +msgstr "Days of the month" + +msgid "Weeks of the year" +msgstr "Weeks of the year" + +msgid "All weeks" +msgstr "All weeks" + +msgid "All days" +msgstr "All days" + +msgid "Run at specified HH:MM" +msgstr "Run at specified HH:MM" + +msgid "Run at" +msgstr "Run at" + +msgid "All months" +msgstr "All months" + +msgid "January" +msgstr "January" + +msgid "February" +msgstr "February" + +msgid "March" +msgstr "March" + +msgid "April" +msgstr "April" + +msgid "May" +msgstr "May" + +msgid "June" +msgstr "June" + +msgid "July" +msgstr "July" + +msgid "August" +msgstr "August" + +msgid "September" +msgstr "September" + +msgid "October" +msgstr "October" + +msgid "November" +msgstr "November" + +msgid "December" +msgstr "December" + +msgid "Last day of the month" +msgstr "Last day of the month" + +msgid "Months of the year" +msgstr "Months of the year" + +msgid "Hourly" +msgstr "Hourly" + +msgid "Daily" +msgstr "Daily" + +msgid "Weekly" +msgstr "Weekly" + +msgid "Monthly" +msgstr "Monthly" + +msgid "Custom" +msgstr "Custom" + +msgid "Run job every hour at the specified minute" +msgstr "Run job every hour at the specified minute" + +msgid "Run job every day at the specified time" +msgstr "Run job every day at the specified time" + +msgid "Run job every week at the specified time on selected days of the week" +msgstr "Run job every week at the specified time on selected days of the week" + +msgid "Run job every month at the specified time in selected weeks of the month" +msgstr "Run job every month at the specified time in selected weeks of the month" + +msgid "Setup your custom schedule" +msgstr "Setup your custom schedule" + +msgid "Override directives" +msgstr "Override directives" diff --git a/gui/baculum/protected/Web/Lang/pt/messages.mo b/gui/baculum/protected/Web/Lang/pt/messages.mo index 22e56536014d8ec4e63032d96a171a8398489f22..e9d410fbe831062519c9eb70be2ef3ca7c391d62 100644 GIT binary patch delta 28423 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 delta 26210 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 MrN)YT(aNs>2N-#`D*ylh diff --git a/gui/baculum/protected/Web/Lang/pt/messages.po b/gui/baculum/protected/Web/Lang/pt/messages.po index 07a66cd26..c3219c7b7 100644 --- a/gui/baculum/protected/Web/Lang/pt/messages.po +++ b/gui/baculum/protected/Web/Lang/pt/messages.po @@ -3599,3 +3599,144 @@ msgstr "New backup job wizard" msgid "This wizard enables you to create in easy way a new backup job." msgstr "This wizard enables you to create in easy way a new backup job." + +msgid "Monday" +msgstr "Monday" + +msgid "Tuesday" +msgstr "Tuesday" + +msgid "Wednesday" +msgstr "Wednesday" + +msgid "Thursday" +msgstr "Thursday" + +msgid "Friday" +msgstr "Friday" + +msgid "Saturday" +msgstr "Saturday" + +msgid "Sunday" +msgstr "Sunday" + +msgid "Days of the week" +msgstr "Days of the week" + +msgid "Weeks of the month" +msgstr "Weeks of the month" + +msgid "first" +msgstr "first" + +msgid "second" +msgstr "second" + +msgid "third" +msgstr "third" + +msgid "fourth" +msgstr "fourth" + +msgid "fifth" +msgstr "fifth" + +msgid "sixth" +msgstr "sixth" + +msgid "Days of the month" +msgstr "Days of the month" + +msgid "Weeks of the year" +msgstr "Weeks of the year" + +msgid "All weeks" +msgstr "All weeks" + +msgid "All days" +msgstr "All days" + +msgid "Run at specified HH:MM" +msgstr "Run at specified HH:MM" + +msgid "Run at" +msgstr "Run at" + +msgid "All months" +msgstr "All months" + +msgid "January" +msgstr "January" + +msgid "February" +msgstr "February" + +msgid "March" +msgstr "March" + +msgid "April" +msgstr "April" + +msgid "May" +msgstr "May" + +msgid "June" +msgstr "June" + +msgid "July" +msgstr "July" + +msgid "August" +msgstr "August" + +msgid "September" +msgstr "September" + +msgid "October" +msgstr "October" + +msgid "November" +msgstr "November" + +msgid "December" +msgstr "December" + +msgid "Last day of the month" +msgstr "Last day of the month" + +msgid "Months of the year" +msgstr "Months of the year" + +msgid "Hourly" +msgstr "Hourly" + +msgid "Daily" +msgstr "Daily" + +msgid "Weekly" +msgstr "Weekly" + +msgid "Monthly" +msgstr "Monthly" + +msgid "Custom" +msgstr "Custom" + +msgid "Run job every hour at the specified minute" +msgstr "Run job every hour at the specified minute" + +msgid "Run job every day at the specified time" +msgstr "Run job every day at the specified time" + +msgid "Run job every week at the specified time on selected days of the week" +msgstr "Run job every week at the specified time on selected days of the week" + +msgid "Run job every month at the specified time in selected weeks of the month" +msgstr "Run job every month at the specified time in selected weeks of the month" + +msgid "Setup your custom schedule" +msgstr "Setup your custom schedule" + +msgid "Override directives" +msgstr "Override directives" diff --git a/gui/baculum/protected/Web/Lang/ru/messages.mo b/gui/baculum/protected/Web/Lang/ru/messages.mo index 6dc6583edd2ae9dc3a71bd870bada544cc153b9b..6d9532b091e9278e574edae98a482fbc6649ddc2 100644 GIT binary patch delta 28479 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%0Abp1PWRW*ipj<3@CjYu;Gjb^xG()JTkoi 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 diff --git a/gui/baculum/protected/Web/Lang/ru/messages.po b/gui/baculum/protected/Web/Lang/ru/messages.po index b2064e46d..0b1be3bec 100644 --- a/gui/baculum/protected/Web/Lang/ru/messages.po +++ b/gui/baculum/protected/Web/Lang/ru/messages.po @@ -3600,3 +3600,144 @@ msgstr "Мастер нового задания" msgid "This wizard enables you to create in easy way a new backup job." msgstr "Этот мастер позволяет вам легко создать новое задание." + +msgid "Monday" +msgstr "Monday" + +msgid "Tuesday" +msgstr "Tuesday" + +msgid "Wednesday" +msgstr "Wednesday" + +msgid "Thursday" +msgstr "Thursday" + +msgid "Friday" +msgstr "Friday" + +msgid "Saturday" +msgstr "Saturday" + +msgid "Sunday" +msgstr "Sunday" + +msgid "Days of the week" +msgstr "Days of the week" + +msgid "Weeks of the month" +msgstr "Weeks of the month" + +msgid "first" +msgstr "first" + +msgid "second" +msgstr "second" + +msgid "third" +msgstr "third" + +msgid "fourth" +msgstr "fourth" + +msgid "fifth" +msgstr "fifth" + +msgid "sixth" +msgstr "sixth" + +msgid "Days of the month" +msgstr "Days of the month" + +msgid "Weeks of the year" +msgstr "Weeks of the year" + +msgid "All weeks" +msgstr "All weeks" + +msgid "All days" +msgstr "All days" + +msgid "Run at specified HH:MM" +msgstr "Run at specified HH:MM" + +msgid "Run at" +msgstr "Run at" + +msgid "All months" +msgstr "All months" + +msgid "January" +msgstr "January" + +msgid "February" +msgstr "February" + +msgid "March" +msgstr "March" + +msgid "April" +msgstr "April" + +msgid "May" +msgstr "May" + +msgid "June" +msgstr "June" + +msgid "July" +msgstr "July" + +msgid "August" +msgstr "August" + +msgid "September" +msgstr "September" + +msgid "October" +msgstr "October" + +msgid "November" +msgstr "November" + +msgid "December" +msgstr "December" + +msgid "Last day of the month" +msgstr "Last day of the month" + +msgid "Months of the year" +msgstr "Months of the year" + +msgid "Hourly" +msgstr "Hourly" + +msgid "Daily" +msgstr "Daily" + +msgid "Weekly" +msgstr "Weekly" + +msgid "Monthly" +msgstr "Monthly" + +msgid "Custom" +msgstr "Custom" + +msgid "Run job every hour at the specified minute" +msgstr "Run job every hour at the specified minute" + +msgid "Run job every day at the specified time" +msgstr "Run job every day at the specified time" + +msgid "Run job every week at the specified time on selected days of the week" +msgstr "Run job every week at the specified time on selected days of the week" + +msgid "Run job every month at the specified time in selected weeks of the month" +msgstr "Run job every month at the specified time in selected weeks of the month" + +msgid "Setup your custom schedule" +msgstr "Setup your custom schedule" + +msgid "Override directives" +msgstr "Override directives" diff --git a/gui/baculum/protected/Web/Pages/DirectorView.php b/gui/baculum/protected/Web/Pages/DirectorView.php index 35c507cec..614a8bb07 100644 --- a/gui/baculum/protected/Web/Pages/DirectorView.php +++ b/gui/baculum/protected/Web/Pages/DirectorView.php @@ -49,6 +49,7 @@ class DirectorView extends BaculumWebPage { $this->DirDirectorConfig->setComponentName($component_name); $this->DirDirectorConfig->setResourceName($component_name); $this->DirDirectorConfig->setLoadValues(true); + $this->DirDirectorConfig->IsDirectiveCreated = false; $this->DirDirectorConfig->raiseEvent('OnDirectiveListLoad', $this, null); } } diff --git a/gui/baculum/protected/Web/Pages/NewBackupJobWizard.page b/gui/baculum/protected/Web/Pages/NewBackupJobWizard.page index 5b0e5d95a..3b4dec135 100644 --- a/gui/baculum/protected/Web/Pages/NewBackupJobWizard.page +++ b/gui/baculum/protected/Web/Pages/NewBackupJobWizard.page @@ -73,7 +73,6 @@ @@ -101,7 +100,6 @@ @@ -127,7 +125,6 @@ <%[ Create job ]%>   @@ -211,11 +208,14 @@ SaveDirectiveActionOk="$('#job_wizard_new_fileset').slideUp(); set_new_fileset(); $('#fileset_save_ok').show();" /> + @@ -315,11 +315,14 @@ /> + @@ -451,11 +454,14 @@ /> + diff --git a/gui/baculum/protected/Web/Pages/NewBackupJobWizard.php b/gui/baculum/protected/Web/Pages/NewBackupJobWizard.php index 54c6d0597..2421031be 100644 --- a/gui/baculum/protected/Web/Pages/NewBackupJobWizard.php +++ b/gui/baculum/protected/Web/Pages/NewBackupJobWizard.php @@ -36,23 +36,11 @@ class NewBackupJobWizard extends BaculumWebPage { const PREV_STEP = 'PrevStep'; const JOBDEFS = 'JobDefs'; - public function onLoad($param) { - parent::onLoad($param); - $this->JobDefs->saveDirective(); - $this->Client->saveDirective(); - $this->Fileset->saveDirective(); - $this->Storage->saveDirective(); - $this->Pool->saveDirective(); - $this->FullBackupPool->saveDirective(); - $this->IncrementalBackupPool->saveDirective(); - $this->DifferentialBackupPool->saveDirective(); - $this->Level->saveDirective(); - $this->Messages->saveDirective(); - $this->Schedule->saveDirective(); - } - - public function onLoadComplete($param) { - parent::onLoadComplete($param); + public function onPreRender($param) { + parent::onPreRender($param); + if ($this->IsCallBack) { + return; + } $step_index = $this->NewJobWizard->getActiveStepIndex(); $prev_step = $this->getPrevStep(); $this->setPrevStep($step_index); @@ -120,13 +108,15 @@ class NewBackupJobWizard extends BaculumWebPage { */ public function loadJobDefs() { $jobdefs_list = array(); - $jobdefs = $this->getModule('api')->get(array('config', 'dir', 'jobdefs'))->output; + $jobdefs = $this->getModule('api')->get([ + 'config', 'dir', 'jobdefs' + ])->output; for ($i = 0; $i < count($jobdefs); $i++) { $jobdefs_list[] = $jobdefs[$i]->JobDefs->Name; } asort($jobdefs_list); $this->JobDefs->setData($jobdefs_list); - $this->JobDefs->onLoad(null); + $this->JobDefs->createDirective(); } /** @@ -140,9 +130,9 @@ class NewBackupJobWizard extends BaculumWebPage { return; } $jobdefs = rawurlencode($directive_value); - $result = $this->getModule('api')->get(array( + $result = $this->getModule('api')->get([ 'config', 'dir', 'jobdefs', $jobdefs - )); + ]); if ($result->error === 0) { $value = (array)$result->output; $this->setJobDefs($value); @@ -177,7 +167,7 @@ class NewBackupJobWizard extends BaculumWebPage { if (key_exists('Client', $jobdefs) && is_null($this->Client->getDirectiveValue())) { $this->Client->setDirectiveValue($jobdefs['Client']); } - $this->Client->onLoad(null); + $this->Client->createDirective(); } /** @@ -186,6 +176,14 @@ class NewBackupJobWizard extends BaculumWebPage { * @return none */ public function loadFilesets() { + $this->loadFilesetList(null, null); + $jobdefs = $this->getJobDefs(); + if (key_exists('Fileset', $jobdefs) && is_null($this->Fileset->getDirectiveValue())) { + $this->Fileset->setDirectiveValue($jobdefs['Fileset']); + } + } + + public function loadFilesetList($sender, $param) { $fileset_list = array(); $filesets = $this->getModule('api')->get(array('config', 'dir', 'fileset'))->output; for ($i = 0; $i < count($filesets); $i++) { @@ -193,11 +191,7 @@ class NewBackupJobWizard extends BaculumWebPage { } asort($fileset_list); $this->Fileset->setData($fileset_list); - $jobdefs = $this->getJobDefs(); - if (key_exists('Fileset', $jobdefs) && is_null($this->Fileset->getDirectiveValue())) { - $this->Fileset->setDirectiveValue($jobdefs['Fileset']); - } - $this->Fileset->onLoad(null); + $this->Fileset->createDirective(); } /** @@ -264,8 +258,8 @@ class NewBackupJobWizard extends BaculumWebPage { $jobdefs = $this->getJobDefs(); if (key_exists('Storage', $jobdefs) && is_array($jobdefs['Storage']) && count($jobdefs['Storage']) == 1 && is_null($this->Storage->getDirectiveValue())) { $this->Storage->setDirectiveValue($jobdefs['Storage'][0]); + $this->Storage->createDirective(); } - $this->Storage->onLoad(null); if (key_exists('SpoolData', $jobdefs) && is_null($this->SpoolData->getDirectiveValue())) { $this->SpoolData->setDirectiveValue($jobdefs['SpoolData']); $this->SpoolData->createDirective(); @@ -286,33 +280,39 @@ class NewBackupJobWizard extends BaculumWebPage { * @return none */ public function loadPools() { - $pool_list = array(); - $pools = $this->getModule('api')->get(array('config', 'dir', 'pool'))->output; - for ($i = 0; $i < count($pools); $i++) { - $pool_list[] = $pools[$i]->Pool->Name; - } - asort($pool_list); - $this->Pool->setData($pool_list); + $pool_list = $this->loadPoolList(null, null); $jobdefs = $this->getJobDefs(); $this->FullBackupPool->setData($pool_list); if (key_exists('FullBackupPool', $jobdefs) && is_null($this->FullBackupPool->getDirectiveValue())) { $this->FullBackupPool->setDirectiveValue($jobdefs['FullBackupPool']); } - $this->FullBackupPool->onLoad(null); + $this->FullBackupPool->createDirective(); $this->IncrementalBackupPool->setData($pool_list); if (key_exists('IncrementalBackupPool', $jobdefs) && is_null($this->IncrementalBackupPool->getDirectiveValue())) { $this->IncrementalBackupPool->setDirectiveValue($jobdefs['IncrementalBackupPool']); } - $this->IncrementalBackupPool->onLoad(null); + $this->IncrementalBackupPool->createDirective(); $this->DifferentialBackupPool->setData($pool_list); if (key_exists('DifferentialBackupPool', $jobdefs) && is_null($this->DifferentialBackupPool->getDirectiveValue())) { $this->DifferentialBackupPool->setDirectiveValue($jobdefs['DifferentialBackupPool']); } - $this->DifferentialBackupPool->onLoad(null); + $this->DifferentialBackupPool->createDirective(); if (key_exists('Pool', $jobdefs) && is_null($this->Pool->getDirectiveValue())) { $this->Pool->setDirectiveValue($jobdefs['Pool']); } - $this->Pool->onLoad(null); + $this->Pool->createDirective(); + } + + public function loadPoolList($sender, $param) { + $pool_list = array(); + $pools = $this->getModule('api')->get(array('config', 'dir', 'pool'))->output; + for ($i = 0; $i < count($pools); $i++) { + $pool_list[] = $pools[$i]->Pool->Name; + } + asort($pool_list); + $this->Pool->setData($pool_list); + $this->Pool->createDirective(); + return $pool_list; } public function loadBackupJobDirectives() { @@ -371,7 +371,7 @@ class NewBackupJobWizard extends BaculumWebPage { if (key_exists('Level', $jobdefs)) { $this->Level->setDirectiveValue($jobdefs['Level']); } - $this->Level->onLoad(null); + $this->Level->createDirective(); } /** * Load messages. @@ -390,7 +390,7 @@ class NewBackupJobWizard extends BaculumWebPage { if (key_exists('Messages', $jobdefs)) { $this->Messages->setDirectiveValue($jobdefs['Messages']); } - $this->Messages->onLoad(null); + $this->Messages->createDirective(); } /** @@ -399,6 +399,15 @@ class NewBackupJobWizard extends BaculumWebPage { * @return none */ public function loadSchedules() { + $this->loadScheduleList(null, null); + $jobdefs = $this->getJobDefs(); + if (key_exists('Schedule', $jobdefs)) { + $this->Schedule->setDirectiveValue($jobdefs['Schedule']); + } + $this->Schedule->createDirective(); + } + + public function loadScheduleList($sender, $param) { $schedule_list = array(); $schedules = $this->getModule('api')->get(array('config', 'dir', 'schedule'))->output; for ($i = 0; $i < count($schedules); $i++) { @@ -406,11 +415,7 @@ class NewBackupJobWizard extends BaculumWebPage { } asort($schedule_list); $this->Schedule->setData($schedule_list); - $jobdefs = $this->getJobDefs(); - if (key_exists('Schedule', $jobdefs)) { - $this->Schedule->setDirectiveValue($jobdefs['Schedule']); - } - $this->Schedule->onLoad(null); + $this->Schedule->createDirective(); } public function wizardCompleted($sender, $param) { diff --git a/gui/baculum/protected/Web/Pages/NewCopyJobWizard.page b/gui/baculum/protected/Web/Pages/NewCopyJobWizard.page index dc6176292..9ae29dd9e 100644 --- a/gui/baculum/protected/Web/Pages/NewCopyJobWizard.page +++ b/gui/baculum/protected/Web/Pages/NewCopyJobWizard.page @@ -73,7 +73,6 @@ @@ -101,7 +100,6 @@ @@ -127,7 +125,6 @@ <%[ Create job ]%>   @@ -1754,7 +1751,7 @@ function show_storage_warning(storage, pool, jobs) { JobDefs->saveDirective(); - $this->Pool->saveDirective(); - $this->SelectionType->saveDirective(); - $this->NextPool->saveDirective(); - $this->SourceStorage->saveDirective(); - $this->DestinationStorage->saveDirective(); - $this->Messages->saveDirective(); - $this->Schedule->saveDirective(); - $this->Level->saveDirective(); - $this->Client->saveDirective(); - $this->FileSet->saveDirective(); - } - - public function onLoadComplete($param) { - parent::onLoadComplete($param); + public function onPreRender($param) { + parent::onPreRender($param); + if ($this->IsCallBack) { + return; + } $step_index = $this->NewJobWizard->getActiveStepIndex(); $prev_step = $this->getPrevStep(); $this->setPrevStep($step_index); @@ -148,7 +136,7 @@ class NewCopyJobWizard extends BaculumWebPage { } asort($jobdefs_list); $this->JobDefs->setData($jobdefs_list); - $this->JobDefs->onLoad(null); + $this->JobDefs->createDirective(); } } @@ -212,7 +200,7 @@ class NewCopyJobWizard extends BaculumWebPage { if (key_exists($name, $jobdefs) && is_null($control->getDirectiveValue())) { $control->setDirectiveValue($jobdefs[$name]); } - $control->onLoad(null); + $control->createDirective(); } /** @@ -300,7 +288,7 @@ class NewCopyJobWizard extends BaculumWebPage { */ public function loadSelectionTypes() { $this->SelectionType->setData($this->sel_types); - $this->SelectionType->onLoad(null); + $this->SelectionType->createDirective(); } /** @@ -384,7 +372,7 @@ class NewCopyJobWizard extends BaculumWebPage { if (key_exists('Storage', $jobdefs) && is_array($jobdefs['Storage']) && count($jobdefs['Storage']) == 1 && is_null($control->getDirectiveValue())) { $control->setDirectiveValue($jobdefs['Storage'][0]); } - $control->onLoad(null); + $control->createDirective(); } } @@ -490,7 +478,7 @@ class NewCopyJobWizard extends BaculumWebPage { if (key_exists('Messages', $jobdefs)) { $this->Messages->setDirectiveValue($jobdefs['Messages']); } - $this->Messages->onLoad(null); + $this->Messages->createDirective(); } } @@ -516,7 +504,7 @@ class NewCopyJobWizard extends BaculumWebPage { if (key_exists('Schedule', $jobdefs)) { $this->Schedule->setDirectiveValue($jobdefs['Schedule']); } - $this->Schedule->onLoad(null); + $this->Schedule->createDirective(); } } @@ -537,7 +525,7 @@ class NewCopyJobWizard extends BaculumWebPage { // no level in jobdefs, take first level $this->Level->setDirectiveValue($level_list[0]); } - $this->Level->onLoad(null); + $this->Level->createDirective(); } /** @@ -563,7 +551,7 @@ class NewCopyJobWizard extends BaculumWebPage { } elseif (count($client_list) > 0) { $this->Client->setDirectiveValue($client_list[0]); } - $this->Client->onLoad(null); + $this->Client->createDirective(); } } @@ -590,7 +578,7 @@ class NewCopyJobWizard extends BaculumWebPage { } elseif (count($fileset_list) > 0) { $this->FileSet->setDirectiveValue($fileset_list[0]); } - $this->FileSet->onLoad(null); + $this->FileSet->createDirective(); } } diff --git a/gui/baculum/protected/Web/Pages/Security.php b/gui/baculum/protected/Web/Pages/Security.php index a773d4687..07ab40b0a 100644 --- a/gui/baculum/protected/Web/Pages/Security.php +++ b/gui/baculum/protected/Web/Pages/Security.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2020 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -1279,6 +1279,7 @@ class Security extends BaculumWebPage { } $this->ConsoleConfig->setHost($this->User->getDefaultAPIHost()); $this->ConsoleConfig->setComponentName($_SESSION['dir']); + $this->ConsoleConfig->IsDirectiveCreated = false; $this->ConsoleConfig->raiseEvent('OnDirectiveListLoad', $this, null); } @@ -1344,6 +1345,7 @@ class Security extends BaculumWebPage { ] ]; $this->ConsoleConfig->setData($config); + $this->ConsoleConfig->IsDirectiveCreated = false; $this->ConsoleConfig->raiseEvent('OnDirectiveListLoad', $this, null); $this->getCallbackClient()->callClientFunction('oBaculaConfigSection.show_sections', [true]); } diff --git a/gui/baculum/protected/Web/Portlets/BaculaConfigDirectives.php b/gui/baculum/protected/Web/Portlets/BaculaConfigDirectives.php index 5b26246fd..7145a953a 100644 --- a/gui/baculum/protected/Web/Portlets/BaculaConfigDirectives.php +++ b/gui/baculum/protected/Web/Portlets/BaculaConfigDirectives.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -93,15 +93,6 @@ class BaculaConfigDirectives extends DirectiveListTemplate { } } - public function onPreRender($param) { - /** - * This method overwrites DirectiveListTemplate::onPreRender() - * Not calling parent method is intentional here because this class - * isn't typical control list class and calling parent::onPreRender() - * causes error. - */ - } - private function getConfigData($host, array $parameters) { $default_params = array('config'); $params = array_merge($default_params, $parameters); @@ -115,6 +106,10 @@ class BaculaConfigDirectives extends DirectiveListTemplate { public function loadConfig() { $load_values = $this->getLoadValues(); + if (!$load_values && $this->IsDirectiveCreated) { + // This control is loaded only once, otherwise fields loose assigned values. + return; + } $host = $this->getHost(); $component_type = $this->getComponentType(); @@ -253,6 +248,7 @@ class BaculaConfigDirectives extends DirectiveListTemplate { $this->RepeaterDirectives->DataSource = $directives; $this->RepeaterDirectives->dataBind(); $this->ConfigDirectives->Display = 'Dynamic'; + $this->IsDirectiveCreated = true; } public function loadDirectives($sender, $param) { @@ -286,6 +282,11 @@ class BaculaConfigDirectives extends DirectiveListTemplate { $directive_name = $controls[$j]->getDirectiveName(); $directive_value = $controls[$j]->getDirectiveValue(); + if (is_null($directive_name)) { + // skip controls without data + continue; + } + $default_value = null; if (key_exists($directive_name, $resource_desc)) { $default_value = $resource_desc[$directive_name]->DefaultValue; @@ -356,8 +357,12 @@ class BaculaConfigDirectives extends DirectiveListTemplate { } } $load_values = $this->getLoadValues(); - $res_name_dir = key_exists('Name', $directives) ? $directives['Name'] : ''; + $res_name_dir = key_exists('Name', $directives) ? $directives['Name'] : null; $resource_name = $this->getResourceName(); + if (!$res_name_dir && $resource_name) { + // In some cases with double control load Name value stays empty. Recreate it here. + $directives['Name'] = $res_name_dir = $resource_name; + } if ($load_values === true) { if ($resource_name !== $res_name_dir) { // RENAME RESOURCE diff --git a/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.php b/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.php index 28876cf93..1728223d2 100644 --- a/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.php +++ b/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.php @@ -124,6 +124,7 @@ class BaculaConfigResourceList extends Portlets { $this->ResourceConfig->setComponentType($component_type); $this->ResourceConfig->setComponentName($component_name); $this->ResourceConfig->setResourceType($resource_type); + $this->ResourceConfig->IsDirectiveCreated = false; $this->ResourceConfig->raiseEvent('OnDirectiveListLoad', $this, null); } diff --git a/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.tpl b/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.tpl index 86c1957c1..88bf0967d 100644 --- a/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.tpl +++ b/gui/baculum/protected/Web/Portlets/BaculaConfigResourceList.tpl @@ -133,7 +133,7 @@ var oBaculaConfigResourceList<%=$this->ClientID%> = { -
+
createDirectiveInternal(); - $this->saveDirective(); - parent::onPreRender($param); - } - - public function saveDirective() { - $value = $this->getValue(); - $this->Directive->setSelectedValue($value); - $this->setDirectiveValue($value); - } - public function getValue() { $value = $this->Directive->getSelectedValue(); if (!is_string($value) || empty($value)) { @@ -53,12 +41,11 @@ class DirectiveComboBox extends DirectiveTemplate { return $value; } - public function createDirectiveInternal() { + public function createDirective() { $this->Label->Text = $this->getLabel(); $data = $this->getData(); $resource_names = $this->getResourceNames(); $directive_name = $this->getDirectiveName(); - $required = $this->getRequired(); $resource = $this->getResource(); $in_config = $this->getInConfig(); $items = array(); diff --git a/gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.php b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.php new file mode 100644 index 000000000..c228e8eb1 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.php @@ -0,0 +1,114 @@ + + * @category Control + * @package Baculum Web + */ +class DirectiveDaysOfMonth extends DirectiveTemplate { + + const SHOW_OPTIONS = 'ShowOptions'; + const DAY_CONTROL_PREFIX = 'day'; + + public function getValue() { + $value = []; + $days = range(1, 31); + for ($i = 0; $i < count($days); $i++) { + if ($this->{self::DAY_CONTROL_PREFIX . $days[$i]}->Checked || $this->AllDaysOfMonth->Checked) { + $value[] = $i; + } + } + if (count($value) == 0) { + $value = $days; + } + if ($this->lastday->Checked) { + $value = []; + } + return $value; + } + + public function createDirective() { + $this->Label->Text = $this->getLabel(); + $directive_value = $this->getDirectiveValue(); + $default_value = $this->getDefaultValue(); + if (!is_array($directive_value)) { + $directive_value = range(0, 30); + } + + $days = range(1, 31); + $d_len = count($days); + $dv_len = count($directive_value); + if ($this->getInConfig() === false && $dv_len == $d_len) { + if (is_array($default_value) && count($default_value) > 0) { + $directive_value = $default_value; + } + } + + for ($i = 0; $i < count($days); $i++) { + $key = self::DAY_CONTROL_PREFIX . $days[$i]; + if ($dv_len > 0 && $dv_len < $d_len) { + // selected days + $this->{$key}->Checked = in_array($i, $directive_value); + } + + if ($this->Disabled) { + $this->{$key}->Enabled = false; + } + if ($this->CssClass) { + $cssclass = $this->CssClass . ' ' . $this->{$key}->getCssClass(); + $this->{$key}->setCssClass($cssclass); + } + } + + // set 'select all' checkbox + if ($this->Disabled) { + $this->AllDaysOfMonth->Enabled = false; + } elseif ($dv_len == $d_len && $this->ShowOptions) { + // all days + $this->AllDaysOfMonth->Checked = true; + } + + // set 'last day of the month' checkbox + if ($dv_len == 0) { + $this->lastday->Checked = true; + } else { + $this->lastday->Checked = false; + } + } + + public function setShowOptions($show) { + $show = TPropertyValue::ensureBoolean($show); + $this->setViewState(self::SHOW_OPTIONS, $show); + } + + public function getShowOptions() { + return $this->getViewState(self::SHOW_OPTIONS, false); + } +} diff --git a/gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.tpl b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.tpl new file mode 100644 index 000000000..b1cb4b04c --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfMonth.tpl @@ -0,0 +1,308 @@ +
+
+ : +
+
+
+   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +
+ +
+
diff --git a/gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.php b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.php new file mode 100644 index 000000000..235bbb587 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.php @@ -0,0 +1,98 @@ + + * @category Control + * @package Baculum Web + */ +class DirectiveDaysOfWeek extends DirectiveTemplate { + + const SHOW_OPTIONS = 'ShowOptions'; + + public function getValue() { + $value = []; + $wdays = array_values(Params::$wdays); + for ($i = 0; $i < count($wdays); $i++) { + if ($this->{$wdays[$i]}->Checked || $this->AllDaysOfWeek->Checked) { + $value[] = $i; + } + } + if (count($value) == 0) { + $value = range(0, 6); + } + return $value; + } + + public function createDirective() { + $this->Label->Text = $this->getLabel(); + $directive_value = $this->getDirectiveValue(); + $default_value = $this->getDefaultValue(); + $wdays = array_values(Params::$wdays); + if (!is_array($directive_value)) { + $directive_value = $wdays; + } + $wd_len = count($wdays); + $dv_len = count($directive_value); + if ($this->getInConfig() === false && $dv_len == $wd_len) { + if (is_array($default_value) && count($default_value) > 0) { + $directive_value = $default_value; + } + } + + for ($i = 0; $i < $wd_len; $i++) { + if ($dv_len < $wd_len) { + // selected days + $this->{$wdays[$i]}->Checked = in_array($i, $directive_value); + } + if ($this->Disabled) { + $this->{$wdays[$i]}->Enabled = false; + } + if ($this->CssClass) { + $cssclass = $this->CssClass . ' ' . $this->{$wdays[$i]}->getCssClass(); + $this->{$wdays[$i]}->setCssClass($cssclass); + } + } + if ($this->Disabled) { + $this->AllDaysOfWeek->Enabled = false; + } elseif ($dv_len == $wd_len && $this->ShowOptions) { + // all days + $this->AllDaysOfWeek->Checked = true; + } + } + + public function setShowOptions($show) { + $show = TPropertyValue::ensureBoolean($show); + $this->setViewState(self::SHOW_OPTIONS, $show); + } + + public function getShowOptions() { + return $this->getViewState(self::SHOW_OPTIONS, false); + } +} diff --git a/gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.tpl b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.tpl new file mode 100644 index 000000000..c51ea03f9 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveDaysOfWeek.tpl @@ -0,0 +1,86 @@ +
+
+ : +
+
+
+   +
+
+   +   +   +   +   +   +   +
+ +
+
diff --git a/gui/baculum/protected/Web/Portlets/DirectiveFileSet.php b/gui/baculum/protected/Web/Portlets/DirectiveFileSet.php index 64fa90976..6c27c0c48 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveFileSet.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveFileSet.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -286,6 +286,7 @@ class DirectiveFileSet extends DirectiveListTemplate { for ($i = 0; $i < count($this->directive_types); $i++) { $controls = $value->RepeaterFileSetOptions->findControlsByType($this->directive_types[$i]); for ($j = 0; $j < count($controls); $j++) { + $controls[$j]->setValue(); $directive_name = $controls[$j]->getDirectiveName(); $directive_value = $controls[$j]->getDirectiveValue(); $index = $controls[$j]->getGroupName(); @@ -316,6 +317,7 @@ class DirectiveFileSet extends DirectiveListTemplate { $controls = $value->RepeaterFileSetInclude->findControlsByType($this->directive_types[$i]); for ($j = 0; $j < count($controls); $j++) { + $controls[$j]->setValue(); $directive_name = $controls[$j]->getDirectiveName(); $directive_value = $controls[$j]->getDirectiveValue(); if (empty($directive_value)) { @@ -332,6 +334,7 @@ class DirectiveFileSet extends DirectiveListTemplate { } $controls = $value->RepeaterFileSetPlugin->findControlsByType($this->directive_types[$i]); for ($j = 0; $j < count($controls); $j++) { + $controls[$j]->setValue(); $directive_name = $controls[$j]->getDirectiveName(); $directive_value = $controls[$j]->getDirectiveValue(); if (empty($directive_value)) { @@ -375,6 +378,7 @@ class DirectiveFileSet extends DirectiveListTemplate { for ($i = 0; $i < count($this->directive_types); $i++) { $controls = $this->RepeaterFileSetExclude->findControlsByType($this->directive_types[$i]); for ($j = 0; $j < count($controls); $j++) { + $controls[$j]->setValue(); $directive_name = $controls[$j]->getDirectiveName(); $directive_value = $controls[$j]->getDirectiveValue(); if (is_null($directive_value)) { diff --git a/gui/baculum/protected/Web/Portlets/DirectiveListBox.php b/gui/baculum/protected/Web/Portlets/DirectiveListBox.php index 283f308de..79ba93a33 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveListBox.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveListBox.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -33,11 +33,6 @@ Prado::using('Application.Web.Portlets.DirectiveTemplate'); */ class DirectiveListBox extends DirectiveTemplate { - public function onPreRender($param) { - parent::onPreRender($param); - $this->createDirectiveInternal(); - } - public function getValue() { $value = array(); $values = $this->Directive->getSelectedIndices(); @@ -48,7 +43,7 @@ class DirectiveListBox extends DirectiveTemplate { return $value; } - public function createDirectiveInternal() { + public function createDirective() { $this->Label->Text = $this->getLabel(); $data = $this->getData(); $resource_names = $this->getResourceNames(); diff --git a/gui/baculum/protected/Web/Portlets/DirectiveListTemplate.php b/gui/baculum/protected/Web/Portlets/DirectiveListTemplate.php index 232be6954..bf206146f 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveListTemplate.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveListTemplate.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -45,6 +45,7 @@ class DirectiveListTemplate extends ConfigListTemplate implements IActiveControl const SHOW = 'Show'; const PARENT_NAME = 'ParentName'; const GROUP_NAME = 'GroupName'; + const IS_DIRECTIVE_CREATED = 'IsDirectiveCreated'; public $display_directive; @@ -69,10 +70,7 @@ class DirectiveListTemplate extends ConfigListTemplate implements IActiveControl public function onPreRender($param) { parent::onPreRender($param); - $cmd = $this->getCmdParam(); - if ($this->getPage()->IsCallBack && (!$cmd || $cmd === 'show_all_directives') && method_exists($this, 'loadConfig')) { - $this->loadConfig(); - } elseif (!$this->getPage()->IsCallBack && !$this->getPage()->IsPostBack) { + if (!$this->getPage()->IsCallBack && !$this->getPage()->IsPostBack) { $this->display_directive = $this->getShow(); } } @@ -188,5 +186,14 @@ class DirectiveListTemplate extends ConfigListTemplate implements IActiveControl public function setGroupName($group_name) { $this->setViewState(self::GROUP_NAME, $group_name); } + + public function getIsDirectiveCreated() { + return $this->getViewState(self::IS_DIRECTIVE_CREATED); + } + + public function setIsDirectiveCreated($is_created) { + $this->setViewState(self::IS_DIRECTIVE_CREATED, $is_created); + } + } ?> diff --git a/gui/baculum/protected/Web/Portlets/DirectiveMessages.php b/gui/baculum/protected/Web/Portlets/DirectiveMessages.php index 2e7b5f818..33359dd29 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveMessages.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveMessages.php @@ -166,6 +166,7 @@ class DirectiveMessages extends DirectiveListTemplate { $directive_values = array(); $where_control = $control->findControlsByType('DirectiveTextBox'); if (count($where_control) === 1 && $where_control[0]->getShow() === true) { + $where_control[0]->setValue(); $directive_values['Where'] = array($where_control[0]->getDirectiveValue()); } $types_control = $control->Types; diff --git a/gui/baculum/protected/Web/Portlets/DirectiveMessages.tpl b/gui/baculum/protected/Web/Portlets/DirectiveMessages.tpl index 0ae54fc23..8a99c2d0d 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveMessages.tpl +++ b/gui/baculum/protected/Web/Portlets/DirectiveMessages.tpl @@ -8,7 +8,6 @@ CssClass="w3-button w3-green w3-right" OnCommand="SourceTemplateControl.removeMessages" CommandName="<%=$this->ItemIndex%>" - CommandParameter="save" >  <%[ Remove ]%> diff --git a/gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.php b/gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.php new file mode 100644 index 000000000..2d3e8bd72 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.php @@ -0,0 +1,98 @@ + + * @category Control + * @package Baculum Web + */ +class DirectiveMonthsOfYear extends DirectiveTemplate { + + const SHOW_OPTIONS = 'ShowOptions'; + + public function getValue() { + $value = []; + $months = array_values(Params::$months); + for ($i = 0; $i < count($months); $i++) { + if ($this->{$months[$i]}->Checked || $this->AllMonthsOfYear->Checked) { + $value[] = $i; + } + } + if (count($value) == 0) { + $value = range(0, 11); + } + return $value; + } + + public function createDirective() { + $this->Label->Text = $this->getLabel(); + $directive_value = $this->getDirectiveValue(); + $default_value = $this->getDefaultValue(); + $months = array_values(Params::$months); + if (!is_array($directive_value)) { + $directive_value = $months; + } + $m_len = count($months); + $dv_len = count($directive_value); + if ($this->getInConfig() === false && $dv_len == $m_len) { + if (is_array($default_value) && count($default_value) > 0) { + $directive_value = $default_value; + } + } + + for ($i = 0; $i < $m_len; $i++) { + if ($dv_len < $m_len) { + // selected months + $this->{$months[$i]}->Checked = in_array($i, $directive_value); + } + if ($this->Disabled) { + $this->{$months[$i]}->Enabled = false; + } + if ($this->CssClass) { + $cssclass = $this->CssClass . ' ' . $this->{$months[$i]}->getCssClass(); + $this->{$months[$i]}->setCssClass($cssclass); + } + } + if ($this->Disabled) { + $this->AllMonthsOfYear->Enabled = false; + } elseif ($dv_len == $m_len && $this->ShowOptions) { + // all months + $this->AllMonthsOfYear->Checked = true; + } + } + + public function setShowOptions($show) { + $show = TPropertyValue::ensureBoolean($show); + $this->setViewState(self::SHOW_OPTIONS, $show); + } + + public function getShowOptions() { + return $this->getViewState(self::SHOW_OPTIONS, false); + } +} diff --git a/gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.tpl b/gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.tpl new file mode 100644 index 000000000..225c04d66 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveMonthsOfYear.tpl @@ -0,0 +1,126 @@ +
+
+ : +
+
+
+   +
+
+   +   +   +   +   +   +   +   +   +   +   +   +
+ +
+
diff --git a/gui/baculum/protected/Web/Portlets/DirectiveRenderer.php b/gui/baculum/protected/Web/Portlets/DirectiveRenderer.php index 27e378da1..cf0ddec9c 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveRenderer.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveRenderer.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -52,6 +52,7 @@ Prado::using('Application.Web.Portlets.DirectiveMessages'); class DirectiveRenderer extends TItemDataRenderer { const DATA = 'Data'; + const IS_DATA_BOUND = 'IsDataBound'; private $directive_types = array( 'DirectiveCheckBox', @@ -88,8 +89,8 @@ class DirectiveRenderer extends TItemDataRenderer { $this->addSection($data['section']); } - $item = $this->createItem($data); - $this->addParsedObject($item); + $this->createItem($data); + $this->setIsDataBound(true); } public function createItem($data) { @@ -118,6 +119,8 @@ class DirectiveRenderer extends TItemDataRenderer { if ($data['directive_name'] === 'Name') { $control->setDisabled($this->SourceTemplateControl->getDisableRename()); } + $this->addParsedObject($control); + $control->createDirective(); } elseif (in_array($type, $this->directive_list_types)) { $control->setHost($data['host']); $control->setComponentType($data['component_type']); @@ -132,6 +135,10 @@ class DirectiveRenderer extends TItemDataRenderer { $control->setShow($data['show']); $control->setGroupName($data['group_name']); $control->setResource($data['resource']); + $this->addParsedObject($control); + if (!$this->getIsDataBound()) { + $control->raiseEvent('OnDirectiveListLoad', $this, null); + } } return $control; } @@ -159,6 +166,14 @@ class DirectiveRenderer extends TItemDataRenderer { $this->setViewState(self::DATA, $data); } + public function getIsDataBound() { + return $this->getViewState(self::IS_DATA_BOUND); + } + + public function setIsDataBound($is_data_bound) { + $this->setViewState(self::IS_DATA_BOUND, $is_data_bound); + } + private function getField($field_type) { return 'Application.Web.Portlets.Directive' . $field_type; } diff --git a/gui/baculum/protected/Web/Portlets/DirectiveRunscript.php b/gui/baculum/protected/Web/Portlets/DirectiveRunscript.php index 5c2713af9..c3bb03015 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveRunscript.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveRunscript.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -36,8 +36,8 @@ class DirectiveRunscript extends DirectiveListTemplate { private $directive_types = array( 'DirectiveCheckBox', - 'DirectiveTextBox', - 'DirectiveComboBox' + 'DirectiveComboBox', + 'DirectiveTextBox' ); public function loadConfig() { @@ -133,6 +133,7 @@ class DirectiveRunscript extends DirectiveListTemplate { for ($i = 0; $i < count($this->directive_types); $i++) { $controls = $this->RepeaterRunscriptOptions->findControlsByType($this->directive_types[$i]); for ($j = 0; $j < count($controls); $j++) { + $controls[$j]->setValue(); $directive_name = $controls[$j]->getDirectiveName(); $directive_value = $controls[$j]->getDirectiveValue(); $default_value = null; @@ -180,7 +181,7 @@ class DirectiveRunscript extends DirectiveListTemplate { } public function newRunscriptDirective() { - $data = $this->getDirectiveValue(true); + $data = $this->getDirectiveValue(); if (is_array($data) && key_exists('Runscript', $data) && is_array($data['Runscript'])) { $data['Runscript'][] = new stdClass; } else { diff --git a/gui/baculum/protected/Web/Portlets/DirectiveSchedule.php b/gui/baculum/protected/Web/Portlets/DirectiveSchedule.php index 102f7bba1..0ef3eae5c 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveSchedule.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveSchedule.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -20,12 +20,19 @@ * Bacula(R) is a registered trademark of Kern Sibbald. */ +Prado::using('System.Web.UI.ActiveControls.TActiveHiddenField'); +Prado::using('System.Web.UI.ActiveControls.TActiveRadioButton'); Prado::using('Application.Common.Class.Params'); Prado::using('Application.Web.Portlets.DirectiveListTemplate'); Prado::using('Application.Web.Portlets.DirectiveCheckBox'); Prado::using('Application.Web.Portlets.DirectiveComboBox'); Prado::using('Application.Web.Portlets.DirectiveTextBox'); Prado::using('Application.Web.Portlets.DirectiveTimePeriod'); +Prado::using('Application.Web.Portlets.DirectiveTime'); +Prado::using('Application.Web.Portlets.DirectiveDaysOfWeek'); +Prado::using('Application.Web.Portlets.DirectiveDaysOfMonth'); +Prado::using('Application.Web.Portlets.DirectiveWeeksOfMonth'); +Prado::using('Application.Web.Portlets.DirectiveWeeksOfYear'); /** * Schedule directive control. @@ -36,12 +43,11 @@ Prado::using('Application.Web.Portlets.DirectiveTimePeriod'); */ class DirectiveSchedule extends DirectiveListTemplate { - private $directive_types = array( - 'DirectiveCheckBox', - 'DirectiveTextBox', - 'DirectiveComboBox', - 'DirectiveTimePeriod' - ); + const SCHEDULE_MODE_HOURLY = 'hourly'; + const SCHEDULE_MODE_DAILY = 'daily'; + const SCHEDULE_MODE_WEEKLY = 'weekly'; + const SCHEDULE_MODE_MONTHLY = 'monthly'; + const SCHEDULE_MODE_CUSTOM = 'custom'; private $directives_dir = [ 'Pool', @@ -67,37 +73,33 @@ class DirectiveSchedule extends DirectiveListTemplate { 'fd' => 'Connect' ]; - private $time_values = array( - 'Minute', - 'Hour', - 'Day', - 'Month', - 'DayOfWeek', - 'WeekOfMonth', - 'WeekOfYear' - ); - - private $time_directives = array( - 'Month', - 'MonthRangeFrom', - 'MonthRangeTo', - 'Week', - 'WeekRangeFrom', - 'WeekRangeTo', - 'Day', - 'DayRangeFrom', - 'DayRangeTo', - 'Wday', - 'WdayRangeFrom', - 'WdayRangeTo', - 'TimeHourAt', - 'TimeMinAt', - 'TimeMinHourly' - ); + private $time_directives = [ + 'TimeHourly', + 'TimeDaily', + 'TimeWeekly', + 'TimeMonthly', + 'TimeCustom', + 'TimeHourlyCustom', + 'DaysOfWeekWeekly', + 'DaysOfWeekMonthly', + 'DaysOfWeekCustom', + 'DaysOfMonthCustom', + 'WeeksOfMonthMonthly', + 'WeeksOfMonthCustom', + 'WeeksOfYearCustom', + 'MonthsOfYearCustom' + ]; public function loadConfig() { $load_values = $this->getLoadValues(); $directives = $this->getData(); + if ($load_values) { + /** + * For existing config without any 'Run' defined don't show sample 'Run' in form. + * The sample 'Run' should be displayed only in new schedule form. + */ + $directives = array_filter($directives); + } $host = $this->getHost(); $component_type = $this->getComponentType(); $component_name = $this->getComponentName(); @@ -105,7 +107,7 @@ class DirectiveSchedule extends DirectiveListTemplate { $resource_name = $this->getResourceName(); $subdirectives = $this->getSubDirectives(); $resource_desc = $this->getResourceDesc(); - $time_directives = $directive_values = array(); + $time_directives = $directive_values = []; foreach ($directives as $index => $directive) { for ($i = 0; $i < count($subdirectives); $i++) { $default_value = null; @@ -131,11 +133,14 @@ class DirectiveSchedule extends DirectiveListTemplate { $resource = 'Pool'; } $in_config = false; - if ($load_values === true) { + if ($load_values === true && is_object($directive)) { $in_config = property_exists($directive, $subdirectives[$i]); } - $directive_value = $in_config ? $directive->{$subdirectives[$i]} : null; + $directive_value = null; + if (is_object($directive) && property_exists($directive, $subdirectives[$i])) { + $directive_value = $directive->{$subdirectives[$i]}; + } $overwrite_directives[$subdirectives[$i]] = array( 'host' => $host, 'component_type' => $component_type, @@ -158,7 +163,7 @@ class DirectiveSchedule extends DirectiveListTemplate { } for ($i = 0; $i < count($this->time_directives); $i++) { - $time_directives[$this->time_directives[$i]] = array( + $time_directives[$this->time_directives[$i]] = [ 'host' => $host, 'component_type' => $component_type, 'component_name' => $component_name, @@ -169,12 +174,12 @@ class DirectiveSchedule extends DirectiveListTemplate { 'default_value' => 0, 'parent_name' => __CLASS__, 'group_name' => $index - ); + ]; } - $directive_values[] = array( + $directive_values[] = [ 'overwrite_directives' => $overwrite_directives, 'time_directives' => $time_directives - ); + ]; } $this->RepeaterScheduleRuns->DataSource = $directive_values; $this->RepeaterScheduleRuns->dataBind(); @@ -235,8 +240,6 @@ class DirectiveSchedule extends DirectiveListTemplate { $control->setShow($data['show']); $control->setResourceNames($data['resource_names']); $control->setParentName($data['parent_name']); - $control->onLoad(null); - $control->createDirective(); } } @@ -255,152 +258,109 @@ class DirectiveSchedule extends DirectiveListTemplate { } } - $directive = $param->Item->Data['time_directives']['Month']['directive_values']; - - $months = array_keys(Params::$months); - - $param->Item->Month->setData(Params::$months); - $param->Item->MonthRangeFrom->setData(Params::$months); - $param->Item->MonthRangeTo->setData(Params::$months); - - $month_single = null; - $month_range_from = null; - $month_range_to = null; - $month_count = $load_values ? count($directive->Month) : 0; - if ($month_count === 12) { - $param->Item->MonthDisable->Checked = true; - } elseif ($month_count == 1) { - $month_single = $months[$directive->Month[0]]; - $param->Item->MonthSingle->Checked = true; - } elseif ($month_count > 0 && $month_count < 12) { - $month_start = $directive->Month[0]; - $month_end = $directive->Month[$month_count-1]; - $month_range_from = $months[$month_start]; - $month_range_to = $months[$month_end]; - $param->Item->MonthRange->Checked = true; - } - $param->Item->Month->setDirectiveValue($month_single); - $param->Item->MonthRangeFrom->setDirectiveValue($month_range_from); - $param->Item->MonthRangeTo->setDirectiveValue($month_range_to); - - $days = range(1, 31); - $param->Item->Day->setData($days); - $param->Item->DayRangeFrom->setData($days); - $param->Item->DayRangeTo->setData($days); - - $day_single = null; - $day_range_from = null; - $day_range_to = null; - $day_count = $load_values ? count($directive->Day) : 0; - if ($day_count === 31) { - $param->Item->DayDisable->Checked = true; - } elseif ($day_count === 1) { - $day_single = $days[$directive->Day[0]]; - $param->Item->DaySingle->Checked = true; - } elseif ($day_count > 0 && $day_count < 31) { - $day_start = $directive->Day[0]; - $day_end = $directive->Day[$day_count-1]; - $day_range_from = $days[$day_start]; - $day_range_to = $days[$day_end]; - $param->Item->DayRange->Checked = true; - } - $param->Item->Day->setDirectiveValue($day_single); - $param->Item->DayRangeFrom->setDirectiveValue($day_range_from); - $param->Item->DayRangeTo->setDirectiveValue($day_range_to); - - $weeks = array_keys(Params::$weeks); - - $param->Item->Week->setData(Params::$weeks); - $param->Item->WeekRangeFrom->setData(Params::$weeks); - $param->Item->WeekRangeTo->setData(Params::$weeks); - $week_single = null; - $week_range_from = null; - $week_range_to = null; - $week_count = $load_values ? count($directive->WeekOfMonth) : 0; - if ($week_count == 6) { - $param->Item->WeekDisable->Checked = true; - } elseif ($week_count == 1) { - $week_single = $weeks[$directive->WeekOfMonth[0]]; - $param->Item->WeekSingle->Checked = true; - } elseif ($week_count > 0 && $week_count < 6) { - $week_start = $directive->WeekOfMonth[0]; - $week_end = $directive->WeekOfMonth[$week_count-1]; - $week_range_from = $weeks[$week_start]; - $week_range_to = $weeks[$week_end]; - $param->Item->WeekRange->Checked = true; - } - $param->Item->Week->setDirectiveValue($week_single); - $param->Item->WeekRangeFrom->setDirectiveValue($week_range_from); - $param->Item->WeekRangeTo->setDirectiveValue($week_range_to); - - $wdays = array_keys(Params::$wdays); - $param->Item->Wday->setData(Params::$wdays); - $param->Item->WdayRangeFrom->setData(Params::$wdays); - $param->Item->WdayRangeTo->setData(Params::$wdays); - - $wday_single = null; - $wday_range_from = null; - $wday_range_to = null; - $wday_count = $load_values ? count($directive->DayOfWeek) : 0; - if ($wday_count === 7) { - $wday_single = ''; - } elseif ($wday_count === 1) { - $wday_single = $wdays[$directive->DayOfWeek[0]]; - $param->Item->WdaySingle->Checked = true; - } elseif ($wday_count > 0 && $wday_count < 7) { - $wday_start = $directive->DayOfWeek[0]; - $wday_end = $directive->DayOfWeek[$wday_count-1]; - $wday_range_from = $wdays[$wday_start]; - $wday_range_to = $wdays[$wday_end]; - $param->Item->WdayRange->Checked = true; - } - $param->Item->Wday->setDirectiveValue($wday_single); - $param->Item->WdayRangeFrom->setDirectiveValue($wday_range_from); - $param->Item->WdayRangeTo->setDirectiveValue($wday_range_to); + $directive = $param->Item->Data['time_directives']['TimeHourly']['directive_values']; + // Hour and minute $hour = null; $minute = null; - if ($load_values) { - $hour = $directive->Hour[0]; // @TODO: Check for many hour values; + $is_hourly = false; + if (is_object($directive)) { + if (count($directive->Hour) == 24) { + $is_hourly = true; + } + $hour = $directive->Hour[0]; /** * Check if Minute property exists because of bug about missing Minute * @see http://bugs.bacula.org/view.php?id=2318 */ $minute = property_exists($directive, 'Minute') ? $directive->Minute : 0; } - $param->Item->TimeHourAt->setDirectiveValue(0); - $param->Item->TimeMinAt->setDirectiveValue(0); - $param->Item->TimeMinHourly->setDirectiveValue(0); - if ($load_values) { - if (count($directive->Hour) == 24) { - if ($minute === 0) { - $param->Item->TimeDisable->Checked = true; - } else { - $param->Item->TimeHourly->Checked = true; - $param->Item->TimeMinHourly->setDirectiveValue($minute); - } - } elseif (count($directive->Hour) == 1) { - $param->Item->TimeAt->Checked = true; - $param->Item->TimeHourAt->setDirectiveValue($hour); - $param->Item->TimeMinAt->setDirectiveValue($minute); - } else { - $param->Item->TimeDisable->Checked = true; - } + + if ($is_hourly && is_integer($minute) && $minute > 0) { + $param->Item->TimeHourlyCustomOption->Checked = true; + $hour = null; + } elseif (!$is_hourly && is_integer($hour) && is_integer($minute)) { + $param->Item->TimeAtCustomOption->Checked = true; } else { - $param->Item->TimeDisable->Checked = true; + $param->Item->TimeEveryHourCustomOption->Checked = true; + $hour = null; + $minute = null; } - // @TODO: Fix controls to avoid forcing onLoad() and createDirective() - for ($i = 0; $i < count($this->time_directives); $i++) { - $control = $param->Item->{$this->time_directives[$i]}; - $control->onLoad(null); - $control->createDirective(); + $time_value = ['hour' => $hour, 'minute' => $minute]; + $param->Item->TimeHourly->setDirectiveValue($time_value); + $param->Item->TimeDaily->setDirectiveValue($time_value); + $param->Item->TimeWeekly->setDirectiveValue($time_value); + $param->Item->TimeMonthly->setDirectiveValue($time_value); + $param->Item->TimeHourlyCustom->setDirectiveValue($time_value); + $param->Item->TimeCustom->setDirectiveValue($time_value); + + // Day of the week + $all_dows = true; + if (is_object($directive)) { + $all_dows = count($directive->DayOfWeek) == 7; + $param->Item->DaysOfWeekWeekly->setDirectiveValue($directive->DayOfWeek); + $param->Item->DaysOfWeekMonthly->setDirectiveValue($directive->DayOfWeek); + $param->Item->DaysOfWeekCustom->setDirectiveValue($directive->DayOfWeek); + } + + // Week of the month + $all_woms = true; + if (is_object($directive)) { + $all_woms = count($directive->WeekOfMonth) == 6; + $param->Item->WeeksOfMonthMonthly->setDirectiveValue($directive->WeekOfMonth); + $param->Item->WeeksOfMonthCustom->setDirectiveValue($directive->WeekOfMonth); + } + + // Days of the month + $all_doms = true; + if (is_object($directive)) { + $all_doms = count($directive->Day) == 31; + $param->Item->DaysOfMonthCustom->setDirectiveValue($directive->Day); + } + + // Months of the year + $all_moys = true; + if (is_object($directive)) { + $all_moys = count($directive->Month) == 12; + $param->Item->MonthsOfYearCustom->setDirectiveValue($directive->Month); + } + + // Weeks of the month + $all_woys = true; + if (is_object($directive)) { + $all_woys = count($directive->WeekOfYear) == 54; + $param->Item->WeeksOfYearCustom->setDirectiveValue($directive->WeekOfYear); + } + + + if (is_object($directive)) { + $custom = $all_doms && $all_moys && $all_woys; + if ($is_hourly && $all_dows && $all_woms && $custom) { + // hourly + $param->Item->ScheduleMode->Value = self::SCHEDULE_MODE_HOURLY; + } elseif (!$is_hourly && is_integer($hour) && is_integer($minute) && $all_dows && $all_woms && $custom) { + // daily + $param->Item->ScheduleMode->Value = self::SCHEDULE_MODE_DAILY; + } elseif (!$is_hourly && is_integer($hour) && is_integer($minute) && !$all_dows && $all_woms && $custom) { + // weekly + $param->Item->ScheduleMode->Value = self::SCHEDULE_MODE_WEEKLY; + } elseif (!$is_hourly && is_integer($hour) && is_integer($minute) && !$all_dows && !$all_woms && $custom) { + // monthly + $param->Item->ScheduleMode->Value = self::SCHEDULE_MODE_MONTHLY; + } else { + // custom + $param->Item->ScheduleMode->Value = self::SCHEDULE_MODE_CUSTOM; + } + } else { + // daily - default for new schedule + $param->Item->ScheduleMode->Value = self::SCHEDULE_MODE_DAILY; } } public function removeSchedule($sender, $param) { if ($param instanceof Prado\Web\UI\TCommandEventParameter) { - $idx = $param->getCommandName(); + $idx = (integer)$param->getCommandName(); $data = $this->getDirectiveValue(true); array_splice($data, $idx, 1); $this->setData($data); @@ -408,6 +368,69 @@ class DirectiveSchedule extends DirectiveListTemplate { } } + private function setTime($directive, &$obj, &$directive_values) { + $t = $directive->getDirectiveValue(); + $obj->Hour = [$t['hour']]; + $obj->Minute = $t['minute']; + $min = sprintf('%02d', $t['minute']); + $directive_values[] = "at {$t['hour']}:{$min}"; + } + + private function setTimeHourly($t, &$obj, &$directive_values) { + $obj->Hour = range(0, 23); + $obj->Minute = $t['minute']; + if ($t['minute'] > 0) { + $min = sprintf('%02d', $t['minute']); + $directive_values[] = "hourly at 0:{$min}"; + } else { + $directive_values[] = 'hourly'; + } + } + + private function setDaysOfWeek($directive, &$obj, &$directive_values) { + $wdays = array_keys(Params::$wdays); + $dows = $directive->getDirectiveValue(); + $dows_len = count($dows); + if ($dows_len == 0) { + $obj->DayOfWeek = range(0, 6); + } else { + $obj->DayOfWeek = $dows; + $directive_values[] = Params::getDaysOfWeekConfig($dows); + } + } + + private function setWeeksOfYear($directive, &$obj, &$directive_values) { + $woys = $directive->getDirectiveValue(); + $obj->WeekOfYear = $woys; + $directive_values[] = Params::getWeeksOfYearConfig($woys); + } + + private function setWeeksOfMonth($directive, &$obj, &$directive_values) { + $woms = $directive->getDirectiveValue(); + $woms_len = count($woms); + if ($woms_len == 0) { + // all weeks + $obj->WeekOfMonth = range(0, 5); + } else { + // selected weeks + $obj->WeekOfMonth = $woms; + $directive_values[] = Params::getWeeksOfMonthConfig($woms); + } + } + + private function setMonthsOfYear($directive, &$obj, &$directive_values) { + $moys = $directive->getDirectiveValue(); + $obj->Month = $moys; + $directive_values[] = Params::getMonthsOfYearConfig($moys); + } + + private function setDaysOfMonth($directive, &$obj, &$directive_values) { + $doms = $directive->getDirectiveValue(); + $doms_len = count($doms); + $obj->Day = $doms; + $directive_values[] = Params::getDaysOfMonthConfig($doms); + } + public function getDirectiveValue($ret_obj = false) { $directive_values = []; $component_type = $this->getComponentType(); @@ -423,6 +446,7 @@ class DirectiveSchedule extends DirectiveListTemplate { $obj = new StdClass; for ($i = 0; $i < count($subdirectives); $i++) { $control = $value->{$subdirectives[$i]}; + $control->setValue(); $subdirective_name = $control->getDirectiveName(); $subdirective_value = $control->getDirectiveValue(); $default_value = $control->getDefaultValue(); @@ -432,6 +456,9 @@ class DirectiveSchedule extends DirectiveListTemplate { if (get_class($control) === 'DirectiveCheckBox') { settype($default_value, 'bool'); } + if (get_class($control) === 'DirectiveTextBox') { + settype($default_value, 'string'); + } if ($subdirective_value === $default_value) { // value the same as default value, skip it @@ -443,86 +470,98 @@ class DirectiveSchedule extends DirectiveListTemplate { } $directive_values[] = "{$subdirective_name}=\"{$subdirective_value}\""; } - - $obj->Month = range(0, 11); - $months = array_keys(Params::$months); - if ($value->MonthSingle->Checked === true) { - $month_val = $value->Month->getDirectiveValue(); - $directive_values[] = $month_val; - $obj->Month = array(array_search($month_val, $months)); - } elseif ($value->MonthRange->Checked === true) { - $from = $value->MonthRangeFrom->getDirectiveValue(); - $to = $value->MonthRangeTo->getDirectiveValue(); - $directive_values[] = "{$from}-{$to}"; - $f = array_search($from, $months); - $t = array_search($to, $months); - $obj->Month = range($f, $t); + for ($i = 0; $i < count($this->time_directives); $i++) { + $value->{$this->time_directives[$i]}->setValue(); } - $obj->WeekOfMonth = range(0, 5); - $weeks = array_keys(Params::$weeks); - if ($value->WeekSingle->Checked === true) { - $week_val = $value->Week->getDirectiveValue(); - $directive_values[] = $week_val; - $obj->WeekOfMonth = array(array_search($week_val, $weeks)); - } elseif ($value->WeekRange->Checked === true) { - $from = $value->WeekRangeFrom->getDirectiveValue(); - $to = $value->WeekRangeTo->getDirectiveValue(); - $directive_values[] = "{$from}-{$to}"; - $f = array_search($from, $weeks); - $t = array_search($to, $weeks); - $obj->WeekOfMonth = range($f, $t); - } + switch ($value->ScheduleMode->Value) { + case self::SCHEDULE_MODE_HOURLY: { + // time (hourly) + $t = $value->TimeHourly->getDirectiveValue(); + $this->setTimeHourly($t, $obj, $directive_values); + break; + } + case self::SCHEDULE_MODE_DAILY: { + // time (HH:MM) + $this->setTime($value->TimeDaily, $obj, $directive_values); + break; + } + case self::SCHEDULE_MODE_WEEKLY: { + // set days of the week + $this->setDaysOfWeek($value->DaysOfWeekWeekly, $obj, $directive_values); - $obj->Day = range(0, 30); - if ($value->DaySingle->Checked === true) { - $day = $value->Day->getDirectiveValue(); - $directive_values[] = 'on ' . $day; - $obj->Day = array($day-1); - } elseif ($value->DayRange->Checked === true) { - $from = $value->DayRangeFrom->getDirectiveValue()-1; - $to = $value->DayRangeTo->getDirectiveValue()-1; - $day_range = range($from, $to); - $directive_values[] = 'on ' . Params::getDaysConfig($day_range); - $obj->Day = $day_range; - } + // time (HH:MM) + $this->setTime($value->TimeWeekly, $obj, $directive_values); + break; + } + case self::SCHEDULE_MODE_MONTHLY: { + // weeks of the month + $this->setWeeksOfMonth($value->WeeksOfMonthMonthly, $obj, $directive_values); - $obj->DayOfWeek = range(0, 6); - $wdays = array_keys(Params::$wdays); - if ($value->WdaySingle->Checked === true) { - $directive_values[] = $value->Wday->getDirectiveValue(); - $obj->DayOfWeek = array(array_search($value->Wday->getDirectiveValue(), $wdays)); - } elseif ($value->WdayRange->Checked === true) { - $from = $value->WdayRangeFrom->getDirectiveValue(); - $to = $value->WdayRangeTo->getDirectiveValue(); - $directive_values[] = "{$from}-{$to}"; - $f = array_search($from, $wdays); - $t = array_search($to, $wdays); - $obj->DayOfWeek = range($f, $t); - } + // days of the week + $this->setDaysOfWeek($value->DaysOfWeekMonthly, $obj, $directive_values); - $obj->Hour = range(0, 23); - $obj->Minute = 0; - if ($value->TimeAt->Checked === true) { - $hour = $value->TimeHourAt->getDirectiveValue(); - $minute = sprintf('%02d', $value->TimeMinAt->getDirectiveValue()); - $directive_values[] = "at {$hour}:{$minute}"; - $obj->Hour = array($hour); - $obj->Minute = $minute; - - } elseif ($value->TimeHourly->Checked === true) { - $hour = '00'; - $minute = sprintf('%02d', $value->TimeMinHourly->getDirectiveValue()); - $directive_values[] = "hourly at {$hour}:{$minute}"; + // time + $this->setTime($value->TimeMonthly, $obj, $directive_values); + break; + } + case self::SCHEDULE_MODE_CUSTOM: { + // months of the year + $this->setMonthsOfYear($value->MonthsOfYearCustom, $obj, $directive_values); + + // weeks of the year + $this->setWeeksOfYear($value->WeeksOfYearCustom, $obj, $directive_values); + + // days of the month + $this->setDaysOfMonth($value->DaysOfMonthCustom, $obj, $directive_values); + + // weeks of the month + $this->setWeeksOfMonth($value->WeeksOfMonthCustom, $obj, $directive_values); + + // days of the week + $this->setDaysOfWeek($value->DaysOfWeekCustom, $obj, $directive_values); + + // time + if ($value->TimeEveryHourCustomOption->Checked) { + $t = ['hour' => 0, 'minute' => 0]; + $this->setTimeHourly($t, $obj, $directive_values); + } elseif ($value->TimeHourlyCustomOption->Checked) { + $t = $value->TimeHourlyCustom->getDirectiveValue(); + $this->setTimeHourly($t, $obj, $directive_values); + } elseif ($value->TimeAtCustomOption) { + $this->setTime($value->TimeCustom, $obj, $directive_values); + } + break; + } + } + // add missing default properties + if (!property_exists($obj, 'Hour')) { $obj->Hour = range(0, 23); - $obj->Minute = $value->TimeMinHourly->getDirectiveValue(); - } else { - $directive_values[] = 'hourly'; } + + if (!property_exists($obj, 'Minute')) { + $obj->Minute = 0; + } + if (!property_exists($obj, 'DayOfWeek')) { + $obj->DayOfWeek = range(0, 6); + } + if (!property_exists($obj, 'WeekOfYear')) { + $obj->WeekOfYear = range(0, 53); + } + if (!property_exists($obj, 'WeekOfMonth')) { + $obj->WeekOfMonth = range(0, 5); + } + if (!property_exists($obj, 'Month')) { + $obj->Month = range(0, 11); + } + if (!property_exists($obj, 'Day')) { + $obj->Day = range(0, 30); + } + + $directive_values = array_filter($directive_values); $values[$directive_name][] = implode(' ', $directive_values); $objs[] = $obj; - $directive_values = array(); - $obj = null; + $directive_values = []; } return (($ret_obj) ? $objs : $values); } @@ -530,7 +569,7 @@ class DirectiveSchedule extends DirectiveListTemplate { public function newScheduleDirective() { $data = $this->getDirectiveValue(true); $obj = new StdClass; - $obj->Hour = range(0, 23); + $obj->Hour = [0]; $obj->Minute = 0; $obj->Day = range(0, 30); $obj->Month = range(0, 11); @@ -541,7 +580,7 @@ class DirectiveSchedule extends DirectiveListTemplate { if (is_array($data)) { $data[] = $obj; } else { - $data = array($obj); + $data = [$obj]; } $this->setData($data); $this->SourceTemplateControl->setShowAllDirectives(true); diff --git a/gui/baculum/protected/Web/Portlets/DirectiveSchedule.tpl b/gui/baculum/protected/Web/Portlets/DirectiveSchedule.tpl index a7c3a99b5..f6376d374 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveSchedule.tpl +++ b/gui/baculum/protected/Web/Portlets/DirectiveSchedule.tpl @@ -7,425 +7,269 @@ CssClass="w3-button w3-green w3-right" OnCommand="SourceTemplateControl.removeSchedule" CommandName="<%=$this->ItemIndex%>" - CommandParameter="save" >  <%[ Remove ]%>

<%=$this->SourceTemplateControl->ComponentType == 'dir' ? 'Run' : ($this->SourceTemplateControl->ComponentType == 'fd' ? 'Connect' : '')%> #<%=($this->ItemIndex+1)%>

- - - - - - - - - - - - - -
-

<%[ Month ]%>

-
-
- - +
+
+
+
-
- - -
-
- - -
-
-
- - - - sender.enabled = ($('#<%=$this->MonthSingle->ClientID%>').prop('checked') && ($('#<%=$this->Month->ClientID%>_Directive').val()).trim() === ''); - - -
-
- - - - - sender.enabled = ($('#<%=$this->MonthRange->ClientID%>').prop('checked') && (($('#<%=$this->MonthRangeFrom->ClientID%>_Directive').val()).trim() === '' || ($('#<%=$this->MonthRangeTo->ClientID%>_Directive').val()).trim() === '')); - - +
<%[ Hourly ]%>
+ <%[ Run job every hour at the specified minute ]%>
-
-
-

<%[ Week ]%>

-
-
- - -
-
- - -
-
- - +
+
+
-
- - - - sender.enabled = ($('#<%=$this->WeekSingle->ClientID%>').prop('checked') && ($('#<%=$this->Week->ClientID%>_Directive').val()).trim() === ''); - - -
-
- - - - - sender.enabled = ($('#<%=$this->WeekRange->ClientID%>').prop('checked') && (($('#<%=$this->WeekRangeFrom->ClientID%>_Directive').val()).trim() === '' || ($('#<%=$this->WeekRangeTo->ClientID%>_Directive').val()).trim() === '')); - - -
-
-
-

<%[ Day ]%>

-
-
- - -
-
- - -
-
- - +
+
+
+
<%[ Daily ]%>
+ <%[ Run job every day at the specified time ]%>
-
- - - - sender.enabled = ($('#<%=$this->DaySingle->ClientID%>').prop('checked') && ($('#<%=$this->Day->ClientID%>_Directive').val()).trim() === ''); - - -
-
- - - - - sender.enabled = ($('#<%=$this->DayRange->ClientID%>').prop('checked') && (($('#<%=$this->DayRangeFrom->ClientID%>_Directive').val()).trim() === '' || ($('#<%=$this->DayRangeTo->ClientID%>_Directive').val()).trim() === '')); - - -
-
-
-

<%[ Day of week ]%>

-
-
- - -
-
- - +
+
+
-
- - -
-
-
- - - - sender.enabled = ($('#<%=$this->WdaySingle->ClientID%>').prop('checked') && ($('#<%=$this->Wday->ClientID%>_Directive').val()).trim() === ''); - -
-
- - - - - sender.enabled = ($('#<%=$this->WdayRange->ClientID%>').prop('checked') && (($('#<%=$this->WdayRangeFrom->ClientID%>_Directive').val()).trim() === '' || ($('#<%=$this->WdayRangeTo->ClientID%>_Directive').val()).trim() === '')); - - +
+
+ +
+
<%[ Weekly ]%>
+ <%[ Run job every week at the specified time on selected days of the week ]%>
-
-
-

<%[ Hour and minute ]%>

-
-
- - +
+
+ +
-
- - +
+
+
+
-
- - +
<%[ Monthly ]%>
+ <%[ Run job every month at the specified time in selected weeks of the month ]%> +
+
+
+ + +
-
- - - - - sender.enabled = ($('#<%=$this->TimeAt->ClientID%>').prop('checked') && (($('#<%=$this->TimeHourAt->ClientID%>_Directive').val()).trim() === '' || ($('#<%=$this->TimeMinAt->ClientID%>_Directive').val()).trim() === '')); - - +
+
+ +
+
<%[ Custom ]%>
+ <%[ Setup your custom schedule ]%>
-
- - - - sender.enabled = ($('#<%=$this->TimeHourly->ClientID%>').prop('checked') && ($('#<%=$this->TimeMinHourly->ClientID%>_Directive').val()).trim() === ''); - - +
+
+
+   +   +   + +
+
+ +
+
+ +
+ + + + + +
+ +

<%[ Override directives ]%>

+ + + + + + + + + + + + +
diff --git a/gui/baculum/protected/Web/Portlets/DirectiveTemplate.php b/gui/baculum/protected/Web/Portlets/DirectiveTemplate.php index e124204c8..a98cd0429 100644 --- a/gui/baculum/protected/Web/Portlets/DirectiveTemplate.php +++ b/gui/baculum/protected/Web/Portlets/DirectiveTemplate.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -58,6 +58,7 @@ class DirectiveTemplate extends DirectiveControlTemplate implements IDirectiveFi const SHOW_REMOVE_BUTTON = 'ShowRemoveButton'; public $display_directive; + private $data_changed = false; private $command_params = array('save', 'add'); @@ -75,6 +76,14 @@ class DirectiveTemplate extends DirectiveControlTemplate implements IDirectiveFi $this->ensureChildControls(); } + public function onLoad($param) { + parent::onLoad($param); + if ($this->getPage()->IsPostBack && $this->getValue() != $this->getDefaultValue()) { + // It has special meaning for directive controls used in wizards + $this->setValue(); + } + } + public function bubbleEvent($sender, $param) { if ($param instanceof TCommandEventParameter) { $this->raiseBubbleEvent($this, $param); @@ -92,15 +101,20 @@ class DirectiveTemplate extends DirectiveControlTemplate implements IDirectiveFi } public function saveValue($sender, $param) { - $command_param = $this->getCmdParam(); - if ($command_param === 'save' && method_exists($this, 'getValue')) { + if ($this->getCmdParam() === 'save') { + $this->setValue(); + } + } + + public function setValue() { + if (method_exists($this, 'getValue')) { $new_value = $this->getValue(); $this->setDirectiveValue($new_value); } } - public function onLoad($param) { - parent::onLoad($param); + public function onPreRender($param) { + parent::onPreRender($param); if (!$this->getIsDirectiveCreated()) { $this->createDirective(); $this->setIsDirectiveCreated(true); @@ -168,6 +182,7 @@ class DirectiveTemplate extends DirectiveControlTemplate implements IDirectiveFi } public function getDirectiveValue() { + $this->saveValue(null, null); return $this->getViewState(self::DIRECTIVE_VALUE); } diff --git a/gui/baculum/protected/Web/Portlets/DirectiveTime.php b/gui/baculum/protected/Web/Portlets/DirectiveTime.php new file mode 100644 index 000000000..b306b270a --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveTime.php @@ -0,0 +1,116 @@ + + * @category Control + * @package Baculum Web + */ +class DirectiveTime extends DirectiveTemplate { + + const SHOW_HOUR = 'ShowHour'; + const SHOW_MINUTE = 'ShowMinute'; + + public function getValue() { + $hour = (integer)$this->Hour->getSelectedValue(); + if (!$this->ShowHour) { + $hour = null; + } + $minute = (integer)$this->Minute->getSelectedValue(); + if (!$this->ShowMinute) { + $minute = null; + } + return $this->getTimeValue($hour, $minute); + } + + private function getTimeValue($hour = null, $minute = null) { + return ['hour' => $hour, 'minute' => $minute]; + } + + public function createDirective() { + $this->Label->Text = $this->getLabel(); + $directive_value = $this->getDirectiveValue(); + $default_value = $this->getDefaultValue(); + if (!is_array($directive_value)) { + $directive_value = $this->getTimeValue(); + } + if ($this->getInConfig() === false && is_null($directive_value['hour']) && is_null($directive_value['minute'])) { + if (is_array($default_value) && !is_null($default_value['hour']) && !is_null($default_value['minute'])) { + $directive_value = $default_value; + } else { + $directive_value = $this->getTimeValue(0, 0); + } + } + $hours = range(0, 23); + $this->Hour->DataSource = array_map(function($h) { + return sprintf('%02d', $h); + }, $hours); + $this->Hour->setSelectedValue($directive_value['hour']); + $this->Hour->dataBind(); + + $minutes = range(0, 59); + $this->Minute->DataSource = array_map(function($m) { + return sprintf('%02d', $m); + }, $minutes); + $this->Minute->setSelectedValue($directive_value['minute']); + $this->Minute->dataBind(); + if ($this->getDisabled()) { + $this->Hour->setReadOnly(true); + $this->Minute->setReadOnly(true); + } + $validate = $this->getRequired(); + $this->TimeValidator->setVisible($validate); + $cssclass = $this->getCssClass(); + if ($cssclass) { + $hcssclass = $cssclass . ' ' . $this->Hour->getCssClass(); + $this->Hour->setCssClass($hcssclass); + $mcssclass = $cssclass . ' ' . $this->Minute->getCssClass(); + $this->Minute->setCssClass($mcssclass); + } + } + + public function getShowHour() { + return $this->getViewState(self::SHOW_HOUR, true); + } + + public function setShowHour($show) { + $show = TPropertyValue::ensureBoolean($show); + $this->setViewState(self::SHOW_HOUR, $show); + } + + public function getShowMinute() { + return $this->getViewState(self::SHOW_MINUTE, true); + } + + public function setShowMinute($show) { + $show = TPropertyValue::ensureBoolean($show); + $this->setViewState(self::SHOW_MINUTE, $show); + } +} diff --git a/gui/baculum/protected/Web/Portlets/DirectiveTime.tpl b/gui/baculum/protected/Web/Portlets/DirectiveTime.tpl new file mode 100644 index 000000000..dab5467df --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveTime.tpl @@ -0,0 +1,38 @@ +
+
+ : +
+
+ ShowHour ? ' style="display: none"' : '' %>> : + <%=$this->getRequired() ? ' ' : ''%> + + + +
+
diff --git a/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.php b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.php new file mode 100644 index 000000000..2a3661ca8 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.php @@ -0,0 +1,96 @@ + + * @category Control + * @package Baculum Web + */ +class DirectiveWeeksOfMonth extends DirectiveTemplate { + + const SHOW_OPTIONS = 'ShowOptions'; + + public function getValue() { + $value = []; + $weeks = array_values(Params::$weeks); + for ($i = 0; $i < count($weeks); $i++) { + if ($this->{$weeks[$i]}->Checked || $this->AllWeeksOfMonth->Checked) { + $value[] = $i; + } + } + return $value; + } + + public function createDirective() { + $this->Label->Text = $this->getLabel(); + $directive_value = $this->getDirectiveValue(); + $default_value = $this->getDefaultValue(); + $weeks = array_values(Params::$weeks); + if (!is_array($directive_value)) { + $directive_value = $weeks; + } + + $w_len = count($weeks); + $dv_len = count($directive_value); + if ($this->getInConfig() === false && $dv_len == $w_len) { + if (is_array($default_value) && count($default_value) > 0) { + $directive_value = $default_value; + } + } + + for ($i = 0; $i < $w_len; $i++) { + if ($dv_len < $w_len) { + // selected weeks + $this->{$weeks[$i]}->Checked = in_array($i, $directive_value); + } + if ($this->Disabled) { + $this->{$weeks[$i]}->Enabled = false; + } + if ($this->CssClass) { + $cssclass = $this->CssClass . ' ' . $this->{$weeks[$i]}->getCssClass(); + $this->{$weeks[$i]}->setCssClass($cssclass); + } + } + if ($this->Disabled) { + $this->AllWeeksOfMonth->Enabled = false; + } elseif ($dv_len == $w_len && $this->ShowOptions) { + // all weeks + $this->AllWeeksOfMonth->Checked = true; + } + } + + public function setShowOptions($show) { + $show = TPropertyValue::ensureBoolean($show); + $this->setViewState(self::SHOW_OPTIONS, $show); + } + + public function getShowOptions() { + return $this->getViewState(self::SHOW_OPTIONS, false); + } +} diff --git a/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.tpl b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.tpl new file mode 100644 index 000000000..32011e5ac --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfMonth.tpl @@ -0,0 +1,78 @@ +
+
+ : +
+
+
+   +
+
+   +   +   +   +   +   +
+ +
+
diff --git a/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.php b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.php new file mode 100644 index 000000000..febe53514 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.php @@ -0,0 +1,101 @@ + + * @category Control + * @package Baculum Web + */ +class DirectiveWeeksOfYear extends DirectiveTemplate { + + const SHOW_OPTIONS = 'ShowOptions'; + const WEEK_CONTROL_PREFIX = 'week'; + + public function getValue() { + $value = []; + $weeks = range(0, 53); + for ($i = 0; $i < count($weeks); $i++) { + if ($this->{self::WEEK_CONTROL_PREFIX . $weeks[$i]}->Checked || $this->AllWeeksOfYear->Checked) { + $value[] = $i; + } + } + if (count($value) == 0) { + $value = $weeks; + } + return $value; + } + + public function createDirective() { + $this->Label->Text = $this->getLabel(); + $directive_value = $this->getDirectiveValue(); + $default_value = $this->getDefaultValue(); + $weeks = range(0, 53); + if (!is_array($directive_value)) { + $directive_value = $weeks; + } + + $w_len = count($weeks); + $dv_len = count($directive_value); + if ($this->getInConfig() === false && $dv_len == $w_len) { + if (is_array($default_value) && count($default_value) > 0) { + $directive_value = $default_value; + } + } + + for ($i = 0; $i < $w_len; $i++) { + $key = self::WEEK_CONTROL_PREFIX . $weeks[$i]; + if ($dv_len < $w_len) { + // selected days + $this->{$key}->Checked = in_array($weeks[$i], $directive_value); + } + if ($this->Disabled) { + $this->{$key}->Enabled = false; + } + if ($this->CssClass) { + $cssclass = $this->CssClass . ' ' . $this->{$key}->getCssClass(); + $this->{$key}->setCssClass($cssclass); + } + } + if ($this->Disabled) { + $this->AllWeeksOfYear->Enabled = false; + } elseif ($dv_len == $w_len && $this->ShowOptions) { + // all weeks + $this->AllWeeksOfYear->Checked = true; + } + } + + public function setShowOptions($show) { + $show = TPropertyValue::ensureBoolean($show); + $this->setViewState(self::SHOW_OPTIONS, $show); + } + + public function getShowOptions() { + return $this->getViewState(self::SHOW_OPTIONS, false); + } +} diff --git a/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.tpl b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.tpl new file mode 100644 index 000000000..88a93e814 --- /dev/null +++ b/gui/baculum/protected/Web/Portlets/DirectiveWeeksOfYear.tpl @@ -0,0 +1,476 @@ +
+
+ : +
+
+
+   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +   +   +
+
+   +   +   +   +   +
+ +
+
diff --git a/gui/baculum/protected/Web/Portlets/JobRunscriptRenderer.php b/gui/baculum/protected/Web/Portlets/JobRunscriptRenderer.php index 183bcf8d4..b20d3379d 100644 --- a/gui/baculum/protected/Web/Portlets/JobRunscriptRenderer.php +++ b/gui/baculum/protected/Web/Portlets/JobRunscriptRenderer.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -44,7 +44,6 @@ class JobRunscriptRenderer extends DirectiveRenderer { $alb->CssClass = 'w3-button w3-green w3-right'; $alb->OnCommand = 'SourceTemplateControl.removeRunscript'; $alb->CommandName = $this->ItemIndex / self::DIRECTIVE_COUNT; - $alb->CommandParameter = 'save'; $alb->Text = '  ' . Prado::localize('Remove'); $this->addParsedObject($alb); } diff --git a/gui/baculum/protected/Web/Portlets/MessageTypes.php b/gui/baculum/protected/Web/Portlets/MessageTypes.php index 017b65241..7b16d1401 100644 --- a/gui/baculum/protected/Web/Portlets/MessageTypes.php +++ b/gui/baculum/protected/Web/Portlets/MessageTypes.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2019 Kern Sibbald + * Copyright (C) 2013-2021 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -43,6 +43,7 @@ class MessageTypes extends DirectiveListTemplate { $is_all = false; $types = array(); for ($i = 0; $i < count($type_controls); $i++) { + $type_controls[$i]->setValue(); $directive_name = $type_controls[$i]->getDirectiveName(); $directive_value = $type_controls[$i]->getDirectiveValue(); if (is_null($directive_value) || $directive_value === false) { diff --git a/gui/baculum/protected/Web/Portlets/NewFileSetExcMenu.tpl b/gui/baculum/protected/Web/Portlets/NewFileSetExcMenu.tpl index b6ec8b2b8..68e15fb74 100644 --- a/gui/baculum/protected/Web/Portlets/NewFileSetExcMenu.tpl +++ b/gui/baculum/protected/Web/Portlets/NewFileSetExcMenu.tpl @@ -4,7 +4,6 @@
  • diff --git a/gui/baculum/protected/Web/Portlets/NewFileSetFileOptMenu.tpl b/gui/baculum/protected/Web/Portlets/NewFileSetFileOptMenu.tpl index 6a04f1842..2458ff604 100644 --- a/gui/baculum/protected/Web/Portlets/NewFileSetFileOptMenu.tpl +++ b/gui/baculum/protected/Web/Portlets/NewFileSetFileOptMenu.tpl @@ -4,8 +4,7 @@
  •  <%[ Add single file/directory ]%> @@ -21,7 +20,6 @@
  • @@ -31,7 +29,6 @@
  • diff --git a/gui/baculum/protected/Web/Portlets/NewFileSetIncExcMenu.tpl b/gui/baculum/protected/Web/Portlets/NewFileSetIncExcMenu.tpl index fdff9793b..c6f2bcbc4 100644 --- a/gui/baculum/protected/Web/Portlets/NewFileSetIncExcMenu.tpl +++ b/gui/baculum/protected/Web/Portlets/NewFileSetIncExcMenu.tpl @@ -4,7 +4,6 @@
  • @@ -14,7 +13,6 @@
  • @@ -24,7 +22,6 @@
  • @@ -34,7 +31,6 @@
  • @@ -44,7 +40,6 @@
  • @@ -54,7 +49,6 @@
  • @@ -64,7 +58,6 @@
  • @@ -74,7 +67,6 @@
  • @@ -84,7 +76,6 @@
  • @@ -94,7 +85,6 @@
  • @@ -104,7 +94,6 @@
  • @@ -114,7 +103,6 @@
  • diff --git a/gui/baculum/protected/Web/Portlets/NewRunscriptMenu.tpl b/gui/baculum/protected/Web/Portlets/NewRunscriptMenu.tpl index 14b151a59..9d6ce5df1 100644 --- a/gui/baculum/protected/Web/Portlets/NewRunscriptMenu.tpl +++ b/gui/baculum/protected/Web/Portlets/NewRunscriptMenu.tpl @@ -4,7 +4,6 @@
  • diff --git a/gui/baculum/protected/Web/Portlets/NewScheduleMenu.tpl b/gui/baculum/protected/Web/Portlets/NewScheduleMenu.tpl index a8de99be1..421b52f69 100644 --- a/gui/baculum/protected/Web/Portlets/NewScheduleMenu.tpl +++ b/gui/baculum/protected/Web/Portlets/NewScheduleMenu.tpl @@ -4,8 +4,7 @@
  • <%=$this->SourceTemplateControl->ComponentType == 'dir' ? 'Run' : ($this->SourceTemplateControl->ComponentType == 'fd' ? 'Connect' : '')%> diff --git a/gui/baculum/themes/Baculum-v2/css/baculum.css b/gui/baculum/themes/Baculum-v2/css/baculum.css index 53a5c0bcf..d3ddd9c43 100644 --- a/gui/baculum/themes/Baculum-v2/css/baculum.css +++ b/gui/baculum/themes/Baculum-v2/css/baculum.css @@ -373,6 +373,10 @@ table.status_table td, table.status_table td i { width: 160px; } +.xtinybox { + width: 65px !important; +} + a.raw { text-decoration: none; } @@ -501,6 +505,10 @@ table.component td:nth-of-type(1) { flex-basis: 385px; } +.status_header.schedule > div { + flex-basis: 300px; +} + #status_storage_filters select { width: 250px; margin-left: 10px; @@ -567,3 +575,9 @@ img.job_weather_icon { flex-basis: 140px; height: 28px; } + +/* Schedule setting */ +.day_of_month, .week_of_month, .week_of_year { + width: 14px; +} + -- 2.47.3