]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/protected/Portlets/VolumeConfiguration.tpl
Update ReleaseNotes + ChangeLog
[bacula/bacula] / gui / baculum / protected / Portlets / VolumeConfiguration.tpl
1 <%@ MasterClass="Application.Portlets.ConfigurationPanel"%>
2 <com:TContent ID="ConfigurationWindowContent">
3         <com:TActivePanel DefaultButton="Apply">
4                 <strong><%[ Volume name: ]%> <com:TActiveLabel ID="VolumeName" /><com:TActiveLabel ID="VolumeID" Visible="false" /></strong>
5                 <span class="text tab tab_active" rel="volume_actions_tab"><%[ Actions ]%></span>
6                 <span class="text tab" rel="volume_jobs_tab"><%[ Jobs on Volume ]%></span>
7                 <hr class="tabs" />
8                 <div id="volume_actions_tab">
9                         <com:TValidationSummary
10                                 ID="ValidationSummary"
11                                 CssClass="validation-error-summary"
12                                 ValidationGroup="VolumeGroup"
13                                 AutoUpdate="true"
14                                 Display="Dynamic"
15                                 HeaderText="<%[ There is not possible to run selected action because: ]%>" />
16                         <div class="line">
17                                 <div class="text"><com:TLabel ForControl="VolumeStatus" Text="<%[ Volume status: ]%>" /></div>
18                                 <div class="field">
19                                         <com:TActiveDropDownList ID="VolumeStatus" CssClass="textbox-auto" AutoPostBack="false" />
20                                 </div>
21                         </div>
22                         <div class="line">
23                                 <div class="text"><com:TLabel ForControl="RetentionPeriod" Text="<%[ Retention period (in hours): ]%>" /></div>
24                                 <div class="field">
25                                         <com:TActiveTextBox ID="RetentionPeriod" MaxLength="20" CssClass="textbox-auto" AutoPostBack="false" />
26                                         <com:TActiveCustomValidator ID="RetentionPeriodValidator" ValidationGroup="VolumeGroup" ControlToValidate="RetentionPeriod" ErrorMessage="<%[ Retention period value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="retentionPeriodValidator" />
27                                 </div>
28                         </div>
29                         <div class="line">
30                                 <div class="text"><com:TLabel ForControl="Pool" Text="<%[ Pool: ]%>" /></div>
31                                 <div class="field">
32                                         <com:TActiveDropDownList ID="Pool" AutoPostBack="false" CssClass="textbox-auto" />
33                                 </div>
34                         </div>
35                         <div class="line">
36                                 <div class="text"><com:TLabel ForControl="UseDuration" Text="<%[ Vol. use duration (in hours): ]%>" /></div>
37                                 <div class="field">
38                                         <com:TActiveTextBox ID="UseDuration" AutoPostBack="false" CssClass="textbox-auto" />
39                                         <com:TActiveCustomValidator ID="UseDurationValidator" ValidationGroup="VolumeGroup" ControlToValidate="UseDuration" ErrorMessage="<%[ Vol. use duration value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="useDurationValidator" />
40                                 </div>
41                         </div>
42                         <div class="line">
43                                 <div class="text"><com:TLabel ForControl="MaxVolJobs" Text="<%[ Max vol. jobs: ]%>" /></div>
44                                 <div class="field">
45                                         <com:TActiveTextBox ID="MaxVolJobs" AutoPostBack="false" CssClass="textbox-auto" />
46                                         <com:TActiveCustomValidator ID="MaxVolJobsValidator" ValidationGroup="VolumeGroup" ControlToValidate="MaxVolJobs" ErrorMessage="<%[ Max vol. jobs value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="maxVolJobsValidator" />
47                                 </div>
48                         </div>
49                         <div class="line">
50                                 <div class="text"><com:TLabel ForControl="MaxVolFiles" Text="<%[ Max vol. files: ]%>" /></div>
51                                 <div class="field">
52                                         <com:TActiveTextBox ID="MaxVolFiles" AutoPostBack="false" CssClass="textbox-auto" />
53                                         <com:TActiveCustomValidator ID="MaxVolFilesValidator" ValidationGroup="VolumeGroup" ControlToValidate="MaxVolFiles" ErrorMessage="<%[ Max vol. files value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="maxVolFilesValidator" />
54                                 </div>
55                         </div>
56                         <div class="line">
57                                 <div class="text"><com:TLabel ForControl="MaxVolBytes" Text="<%[ Max vol. bytes: ]%>" /></div>
58                                 <div class="field">
59                                         <com:TActiveTextBox ID="MaxVolBytes" AutoPostBack="false" CssClass="textbox-auto" />
60                                         <com:TActiveCustomValidator ID="MaxVolBytesValidator" ValidationGroup="VolumeGroup" ControlToValidate="MaxVolBytes" ErrorMessage="<%[ Max vol. bytes value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="maxVolBytesValidator" />
61                                 </div>
62                         </div>
63                         <div class="line">
64                                 <div class="text"><com:TLabel ForControl="Slot" Text="<%[ Slot number: ]%>" /></div>
65                                 <div class="field">
66                                         <com:TActiveTextBox ID="Slot" AutoPostBack="false" CssClass="textbox-auto" />
67                                         <com:TActiveCustomValidator ID="SlotValidator" ValidationGroup="VolumeGroup" ControlToValidate="Slot" ErrorMessage="<%[ Slot value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="slotValidator" />
68                                 </div>
69                         </div>
70                         <div class="line">
71                                 <div class="text"><com:TLabel ForControl="Recycle" Text="<%[ Recycle: ]%>" /></div>
72                                 <div class="field"><com:TActiveCheckBox ID="Recycle" AutoPostBack="false" /></div>
73                         </div>
74                         <div class="line">
75                                 <div class="text"><com:TLabel ForControl="Enabled" Text="<%[ Enabled: ]%>" /></div>
76                                 <div class="field"><com:TActiveCheckBox ID="Enabled" AutoPostBack="false" /></div>
77                         </div>
78                         <div class="line">
79                                 <div class="text"><com:TLabel ForControl="InChanger" Text="<%[ In changer: ]%>" /></div>
80                                 <div class="field"><com:TActiveCheckBox ID="InChanger" AutoPostBack="false" /></div>
81                         </div>
82                         <com:TCallback ID="ReloadVolumes" OnCallback="Page.VolumeWindow.prepareData" ClientSide.OnComplete="SlideWindow.getObj('VolumeWindow').setLoadRequest();" />
83                         <script type="text/javascript">
84                                 var volume_callback_func = function() {
85                                         /*
86                                          * Check if Volume list window is open and if any checkbox from actions is not checked.
87                                          * Also check if toolbar is open.
88                                          * If yes, then is possible to refresh Volume list window.
89                                          */
90                                         var obj = SlideWindow.getObj('VolumeWindow');
91                                         if (obj.isWindowOpen() === false || obj.areCheckboxesChecked() === true || obj.isToolbarOpen() === true) {
92                                                 return;
93                                         }
94                                         var mainForm = Prado.Validation.getForm();
95                                         var callback = <%=$this->ReloadVolumes->ActiveControl->Javascript%>;
96                                         if (Prado.Validation.managers[mainForm].getValidatorsWithError('VolumeGroup').length == 0) {
97                                                 obj.markAllChecked(false);
98                                                 callback.dispatch();
99                                         }
100                                 }
101                         </script>
102                         <div class="button">
103                                 <com:Application.Portlets.BActiveButton ID="Purge" Text="<%[ Purge ]%>" OnClick="purge" ClientSide.OnSuccess="ConfigurationWindow.getObj('VolumeWindow').progress(false);volume_callback_func()" />
104                                 <com:Application.Portlets.BActiveButton ID="Prune" Text="<%[ Prune ]%>" OnClick="prune" ClientSide.OnSuccess="ConfigurationWindow.getObj('VolumeWindow').progress(false);volume_callback_func()" />
105                                 <com:Application.Portlets.BActiveButton ValidationGroup="VolumeGroup" CausesValidation="true" ID="Apply" Text="<%[ Apply ]%>" OnClick="apply" ClientSide.OnSuccess="ConfigurationWindow.getObj('VolumeWindow').progress(false);volume_callback_func()" />
106                         </div>
107                 </div>
108                 <div id="volume_jobs_tab" style="display: none">
109                         <div style="max-height: 500px; overflow-y: auto;">
110                                 <com:TActiveDataGrid
111                                         ID="JobsOnVolume"
112                                         EnableViewState="false"
113                                         AutoGenerateColumns="false"
114                                         AllowSorting="false"
115                                         OnSortCommand="sortDataGrid"
116                                         CellPadding="5px"
117                                         CssClass="window-section-detail"
118                                         ItemStyle.CssClass="slide-window-element"
119                                         AlternatingItemStyle.CssClass="slide-window-element-alternating"
120                                         >
121                                         <com:TActiveBoundColumn HeaderText="ID" DataField="jobid" />
122                                         <com:TActiveTemplateColumn HeaderText="<%[ Job name ]%>" SortExpression="name">
123                                                 <prop:ItemTemplate>
124                                                         <div title="<%=$this->getParent()->Data['name']%>"><%=$this->getPage()->JobWindow->formatJobName($this->getParent()->Data['name'])%></div>
125                                                         <input type="hidden" name="<%=$this->getParent()->ClientID%>" value="<%=$this->getParent()->Data['jobid']%>" />
126                                                 </prop:ItemTemplate>
127                                         </com:TActiveTemplateColumn>
128                                         <com:TActiveTemplateColumn>
129                                                 <prop:HeaderText>
130                                                         <span title="<%=Prado::localize('Type')%>" style="cursor: help">T</span>
131                                                 </prop:HeaderText>
132                                                 <prop:ItemTemplate>
133                                                         <%=$this->getParent()->Data['type']%>
134                                                 </prop:ItemTemplate>
135                                         </com:TActiveTemplateColumn>
136                                         <com:TActiveTemplateColumn>
137                                                 <prop:HeaderText>
138                                                         <span title="<%=Prado::localize('Level')%>" style="cursor: help">L</span>
139                                                 </prop:HeaderText>
140                                                 <prop:ItemTemplate>
141                                                         <%=$this->getParent()->Data['level']%>
142                                                 </prop:ItemTemplate>
143                                         </com:TActiveTemplateColumn>
144                                         <com:TActiveTemplateColumn HeaderText="<%[ Job status ]%>" SortExpression="jobstatus">
145                                                 <prop:ItemTemplate>
146                                                         <div class="job-status-<%=$this->getPage()->JobWindow->getJobStatusLetter($this->getParent()->Data)%>" title="<%=$this->getPage()->JobWindow->getJobStatusDescription($this->getParent()->Data)%>"><%=$this->getPage()->JobWindow->getJobStatusValue($this->getParent()->Data)%></div>
147                                                 </prop:ItemTemplate>
148                                         </com:TActiveTemplateColumn>
149                                         <com:TActiveTemplateColumn HeaderText="<%[ Size ]%>" SortExpression="jobbytes">
150                                                 <prop:ItemTemplate>
151                                                         <div class="size" rel="<%=$this->getParent()->Data['jobbytes']%>"><%=$this->getParent()->Data['jobbytes']%></div>
152                                                 </prop:ItemTemplate>
153                                         </com:TActiveTemplateColumn>
154                                         <com:TActiveBoundColumn SortExpression="jobfiles" HeaderText="<%[ Files ]%>" DataField="jobfiles" />
155                                         <com:TActiveTemplateColumn HeaderText="<%[ End time ]%>" SortExpression="endtime">
156                                                 <prop:ItemTemplate>
157                                                         <%=$this->getParent()->Data['endtime']%>
158                                                         <%=in_array($this->getParent()->Data['jobstatus'], $this->getPage()->JobWindow->runningJobStates) ? '<img src="' . $this->getPage()->getTheme()->getBaseUrl() . '/loader-alter.gif" />' : ''%>
159                                                 </prop:ItemTemplate>
160                                         </com:TActiveTemplateColumn>
161                                 </com:TActiveDataGrid>
162                         </div>
163                         <p class="center bold" id="no_jobs_on_volume" style="display: none"><%[ No jobs on the volume. ]%></p>
164                         <script type="text/javascript">
165                                 var bind_jobs_on_volume_action = function() {
166                                         var grid_id = '<%=$this->JobsOnVolume->ClientID%>';
167                                         var no_jobs_msg_id = 'no_jobs_on_volume';
168                                         if (!document.getElementById(grid_id)) {
169                                                 $(no_jobs_msg_id).show();
170                                                 return;
171                                         }
172                                         $(no_jobs_msg_id).hide();
173                                         SlideWindow.makeSortable(grid_id);
174                                         var odd_rows = ['#' + grid_id, 'tr.' + SlideWindow.elements.contentItems].join(' ');
175                                         var even_rows = ['#' + grid_id, 'tr.' + SlideWindow.elements.contentAlternatingItems].join(' ');
176                                         var callback = <%=$this->OpenJobCall->ActiveControl->Javascript%>;
177                                         $$(odd_rows, even_rows).each(function(el) {
178                                                 el.observe('click', function(e) {
179                                                         var el = $(e.srcElement||e.target);
180                                                         if (el) {
181                                                                 el = el.up('tr').down('input[type=hidden]')
182                                                                 var val = el.getValue();
183                                                                 callback.ActiveControl.CallbackParameter = val;
184                                                                 callback.dispatch();
185                                                                 ConfigurationWindow.getObj('VolumeWindow').progress(true);
186                                                         }
187                                                 }.bind(this));
188                                         }.bind(this));
189                                 }.bind(this);
190                         </script>
191                         <com:TCallback ID="OpenJobCall" OnCallback="openJob">
192                                 <prop:ClientSide.OnComplete>
193                                         ConfigurationWindow.getObj('VolumeWindow').progress(false);
194                                         ConfigurationWindow.getObj('JobWindow').switchTabByNo(2);
195                                         ConfigurationWindow.getObj('JobWindow').show();
196                                 </prop:ClientSide.OnComplete>
197                         </com:TCallback>
198                 </div>
199         </com:TActivePanel>
200 </com:TContent>