From d064238c91c1fa5be5dff6fd1ae5cfe7e5dff241 Mon Sep 17 00:00:00 2001 From: Marcin Haba Date: Sat, 29 Jul 2017 20:48:50 +0200 Subject: [PATCH] baculum: Add restore job selection in restore job wizard --- .../protected/API/Pages/API/JobTasks.php | 9 +++- .../protected/API/Pages/API/RestoreRun.php | 13 +++-- gui/baculum/protected/API/endpoints.xml | 2 + .../protected/Common/Class/Miscellaneous.php | 13 +---- gui/baculum/protected/Web/Lang/en/messages.mo | Bin 33263 -> 33305 bytes gui/baculum/protected/Web/Lang/en/messages.po | 3 ++ gui/baculum/protected/Web/Lang/ja/messages.mo | Bin 30191 -> 30187 bytes gui/baculum/protected/Web/Lang/ja/messages.po | 3 ++ gui/baculum/protected/Web/Lang/pl/messages.mo | Bin 35475 -> 35526 bytes gui/baculum/protected/Web/Lang/pl/messages.po | 2 + gui/baculum/protected/Web/Lang/pt/messages.mo | Bin 35045 -> 35087 bytes gui/baculum/protected/Web/Lang/pt/messages.po | 2 + .../protected/Web/Pages/RestoreWizard.page | 10 ++++ .../protected/Web/Pages/RestoreWizard.php | 50 +++++++++++------- .../protected/Web/Portlets/JobList.php | 4 +- 15 files changed, 73 insertions(+), 38 deletions(-) diff --git a/gui/baculum/protected/API/Pages/API/JobTasks.php b/gui/baculum/protected/API/Pages/API/JobTasks.php index a138a98258..4b83a9bcb7 100644 --- a/gui/baculum/protected/API/Pages/API/JobTasks.php +++ b/gui/baculum/protected/API/Pages/API/JobTasks.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2016 Kern Sibbald + * Copyright (C) 2013-2017 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -23,13 +23,18 @@ class JobTasks extends BaculumAPIServer { public function get() { $limit = intval($this->Request['limit']); + $jobs_cmd = array('.jobs'); + if ($this->Request->contains('type') && array_key_exists($this->Request['type'], $this->getModule('misc')->job_types)) { + array_push($jobs_cmd, 'type="' . $this->Request['type']. '"'); + } + $directors = $this->getModule('bconsole')->getDirectors(); if($directors->exitcode === 0) { $jobs = array(); $error = false; $error_obj = null; for($i = 0; $i < count($directors->output); $i++) { - $jobsList = $this->getModule('bconsole')->bconsoleCommand($directors->output[$i], array('.jobs'), $this->user); + $jobsList = $this->getModule('bconsole')->bconsoleCommand($directors->output[$i], $jobs_cmd, $this->user); if ($jobsList->exitcode != 0) { $error_obj = $jobsList; $error = true; diff --git a/gui/baculum/protected/API/Pages/API/RestoreRun.php b/gui/baculum/protected/API/Pages/API/RestoreRun.php index a60e627c0b..09e517fd8d 100644 --- a/gui/baculum/protected/API/Pages/API/RestoreRun.php +++ b/gui/baculum/protected/API/Pages/API/RestoreRun.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2016 Kern Sibbald + * Copyright (C) 2013-2017 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -42,6 +42,10 @@ class RestoreRun extends BaculumAPIServer { $priority = property_exists($params, 'priority') ? intval($params->priority) : 10; // default priority is set to 10 $where = property_exists($params, 'where') ? $params->where : null; $replace = property_exists($params, 'replace') ? $params->replace : null; + $restorejob = null; + if (property_exists($params, 'restorejob') && $this->getModule('misc')->isValidName($params->restorejob)) { + $restorejob = $params->restorejob; + } $misc = $this->getModule('misc'); if(!is_null($fileset)) { @@ -55,9 +59,12 @@ class RestoreRun extends BaculumAPIServer { 'where="' . $where . '"', 'replace="' . $replace . '"', 'fileset="' . $fileset . '"', - 'priority="' . $priority . '"', - 'yes' + 'priority="' . $priority . '"' ); + if (!is_null($restorejob)) { + $command[] = 'restorejob="' . $restorejob . '"'; + } + $command[] = 'yes'; $restore = $this->getModule('bconsole')->bconsoleCommand($this->director, $command, $this->user); $this->removeTmpRestoreTable($rfile); $this->output = $restore->output; diff --git a/gui/baculum/protected/API/endpoints.xml b/gui/baculum/protected/API/endpoints.xml index 6fc1041a9c..4d00368204 100644 --- a/gui/baculum/protected/API/endpoints.xml +++ b/gui/baculum/protected/API/endpoints.xml @@ -54,6 +54,8 @@ + + diff --git a/gui/baculum/protected/Common/Class/Miscellaneous.php b/gui/baculum/protected/Common/Class/Miscellaneous.php index b143d25d4e..fc3f8a9a81 100644 --- a/gui/baculum/protected/Common/Class/Miscellaneous.php +++ b/gui/baculum/protected/Common/Class/Miscellaneous.php @@ -22,7 +22,7 @@ class Miscellaneous extends TModule { const RPATH_PATTERN = '/^b2\d+$/'; - private $jobTypes = array( + public $job_types = array( 'B' => 'Backup', 'M' => 'Migrated', 'V' => 'Verify', @@ -138,17 +138,6 @@ class Miscellaneous extends TModule { return $name; } - public function getJobType($jobTypeLetter = null) { - $type; - if(is_null($jobTypeLetter)) { - $type = $this->jobTypes; - } else { - $type = array_key_exists($jobTypeLetter, $this->jobTypes) ? $this->jobTypes[$jobTypeLetter] : null; - } - return $type; - - } - public function getJobStatesByType($type) { $statesByType = array(); $states = array(); diff --git a/gui/baculum/protected/Web/Lang/en/messages.mo b/gui/baculum/protected/Web/Lang/en/messages.mo index b0f0bc0009f8e3349e7132fe7ac3ff6d45ffea6b..07248f9c71cf56397f21ccd295976f1a675fb791 100644 GIT binary patch delta 8985 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 delta 8962 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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 d3239fa41f..3e88541eb0 100644 --- a/gui/baculum/protected/Web/Lang/en/messages.po +++ b/gui/baculum/protected/Web/Lang/en/messages.po @@ -1405,3 +1405,6 @@ msgstr "OAuth2 Redirect URI:" msgid "OAuth2 Scope:" msgstr "OAuth2 Scope:" + +msgid "Restore job:" +msgstr "Restore job:" diff --git a/gui/baculum/protected/Web/Lang/ja/messages.mo b/gui/baculum/protected/Web/Lang/ja/messages.mo index 635a814ce9a07f197255b209356e0736996fc68d..d1bf720ba3f3ff0bdf0f8c6e3a28d990c5c55187 100644 GIT binary patch delta 7668 zcmYk>30PKD9>?+XvMRC(imbAUAgG`s2$@=enj+$E2`(uqscE3)el>H-YNUFrF>}d$ ziWY55va(EV)yi@kn<$sGG>aP3Y}C|gzCZ41p1IHSpU*kxo_p^(|8wqrr8(Q^X>9a3 z$0GcmFdU0K#>8WAurb#tUu~mSV}40ACLGUU2>K)$(*nbht|lJU-oe)MQRj=SWwyN> z_tRd5&9N}K>AsFBq7X>K2x|rUQm;fkpbA^#-58AzqaOGi`eVJVZ^O3KcViHqMh)Z~ zw!~`~fMF@_eWEbZIL2f*6^yybo*0FpbexG%=%6z2BzD6(48yOjjhICJ3dUl5sxdK` zk37>1K|QzzHL!W8>z82^&o@s{&`dU>I&MLYd>bkQAEGjJ(E1gs|4G!q&R{FNjCx>b zJJ%f4`JvW{sQb)9O>hA^T8oD$G{YxQH&|;s?7~Ru`)vJN>v^ju&7Dy=>iRgm-(yTW z)I>J6chA?OGPwiQ?=b4Q$J&$s913S>NWhqMcWv`gGcQJ6Fw{B*1F26!f1HM$vD&&G zb=`i{QXECi^b%@G0yA8bkujRRZ2POI8^4a~zYl})IELa+)+?y zfz+p<1~e13W_R26g|@y7^?-+M{cqN_s4wYrs9paa#$f|$Air7tyD$*F|E(!##_doY z2H5(ow!Rp(M310Gz7_e_m=7=Ocu8p#gqiT$t???Y|2L#XpXROo7Yq0ZOfczh3gU~0absdD6%H%qWHzKB|a zFRd4>;XTN|PITmIed+pR6qchtNHtiEkD~U7UxB-}5!i-$HfnG5L%kiPsHGT&TB@y!$50P^0ku}!P#O9dwX08|QtNY_F^QOon)v|q#lffn3_}fg z3~GQ?wmus*pry!lj(N(SSc|%FBgWxtsE+$lGd_)a&{^vR)POFdW)j85iNjRXm$5f$ zB8#v$)?!QCXFY+TdjEf=pf&Wl-rdd3u^sgkOu~MsU&Sfd2_LlWZz8|ArU8|aYnXv) zJUt#uQ5l?Soo{^zHL#~KnCF{~6qKrMs1fc)&A0(|FkA3BJcG*2 ziaz|Jp%?iSn0=_t=efbnP@uIH>i)^-=)z12%0MrbKf&IOG3@Q+tiMq`TH{^_Xx-B1JRgBobxBFEjeWi$+>VK}zJI@E)T7vpsOha9FANu2Rhk{00i@IP9-huDf_Kd#n z`8-t0iclFEZtLSv1D%0-@O%uw2T=WLZG9E$!Ryf>vG#(izn#!B(k)QnRBz7+9y#rs6);4 z@2FJowDtE<13ZK=c*54Npa#%Y1p4K7g^f65C` zu@aTi`%tgRgX(~5Py?t(4fGRx{urwNIn)dcN{a1K&qI_$Sl=eM{Ycc%+~*RE%1R+fXxFfX(oJoX?(l1T~=GGWUUzm`*(v z)o)-K`EO2PI1M>C7WKZ@VhCYHBKn`Ot{)E~qmr)t;3~_(w1Fd#v2ZXRza7@WD$194X7D4U?~2Ix{=Qb{c2xgbROZ&9?z7Rhzm3s)|39UmCHM~Y1q`~?UDHfddk$)|jYQ3~ z29<#=s0ZvoJ@|9fo;Zw};Zf9s8&R9{5~{!N82396iA}%%X%v*QT-1fVY`p|^!;$EZ zV=)FNp>DJY)qe%*0jp7&sI%waL@mJ{jKgE7{=cKHZ^pWY>HUwUpwwibW}J`Od=<97 z#9D`1qR%h|&s$sbHPXO(pawD&wP`C*8JLBd$P#Ri%TdqUjE)LBDfr;$*ai=vZtw$Y zq-LyJ4@b=)9o4@(=3ozGElm}w|Gjt`A45%O?l?Cy>rk24jN1Ks$FcqoQ#ejT2~HdD zek!+NPwGEoDP~S^H``p)r*t#s;&-U?F}JyY2TZ{p)IUaL%4ecG<8G8$CrE=>yR zd?(ai$#?9D{+La}Fk4@W{?u1kA4jEj73#(>q1OCO)EXbO=Z~Xazq7VI`gZqx8frpa zu^slu6m+KB4v*M|HP&6IJ@74Rt$s(PEM&6#4ewwbg1XUM48Yaa4X6RXgu4DM>u0F@ zeuE6iF&8Q5!jLKM%vxa}^%P9QOiaWwRKJ<16yAe=xCFHne?cwX2Gl^`z+QL=mFkEp z_wRsI)E=0K5j@|_rl65NU|oqy)eET2wgZ*2^VT+Zxa~bryMHEj!u6=Vun*P$oHc5y zd;jaK1Fd5u&o@&kC`I#8GgyJzbkCwjz6-nH0c?)G)7-xULa;mam+=UmKxJgd^rkn~ zypLRBQtq^S34^FVj(W~Ibed79r=SbBqXzOWDg*yOrRqmiO0S{@7CpoLfaIapvKUjb z9JOSN?fK_1nEF=Kz~93#+>3h7ks0J)4QFWx#XnH>(3$Sc+oIMs8`H4_GjJB_25V3= z*^JsFAE2)P4%0mRJ%D;!VyoQ&WS|Dr71ghIHTl;}2h-q-l{gfuP;0pzTi`L&1Aase zD5%EmpN`607HV_mpw>PgmAP^(z&kMyUqF2ij-#%-=uq&da1}LDpIPpM!jb)Ba!~D0 zTVF(t{0-Dv?zZ)V)|04Ao=45pGu!PKiW*=H>iQ(qa|?1PsAC?s!kbXv^3kXP+=aT~ z5hSBc2fw7|PVeP5aZWl-bBRZ3xt@5g>Absm1+?E}>tZ#rkr-reGYo5~FDANBZb6K* z=boi)6VZzLJGg_GKzv5LON=9uJZ!$x6!d>xXdB*!`e$cfuO~XvyFEI`iKM2D`8APB zxsvcF{zW|o=MjG%ohZ!uzq*pJfS5zuaU6rA32ks4AGnx5u!8o(xS7~u+bj4(d}>U> z1pPhQj#xwcPNJH!FA+((j_6K#DC*ci_)yo&b^~#lm_l9085fgHy{l~-Oxr~74>5`U zd9);WLt;~JnN7*ho-fCN^!bgLN%<)}MLa|l+CCJ`LEnGUqiAbRTQ}l!%J&i-h!opzJkDc39g6SL-9vd0=VFLI zk8E3L#<@}UnqK%b?Jp4F-hza<=|gB4K(wGGfe57R#SHukrxOnld^*exw8aq)<=#YR zB9rfcrS-H#;BfD?ge>P8wKs?&S|$^v#1iT{ zN?goz+PYJ|&(;TE7H!4E5X!d@tB5{C7SV}z{U?fxlyy8q+)ceB-iRY{GVvkPt!o>S z_8-dah`Wd*#7ZKEeoK+haMK4qz}wI^E1?gq7iiIuL-eGs<8flDH#srRGs1g)V&ag& zw6CS@7HqE$9KX7lV0+CR>UU7~#czn#l<&cFL6vX_oK|5`oa-gJ>G>K8|zPwS`*Tuta|pHm8NWV c_2f$LOO+Q}46Ur0HKV#RNw-*cds*0j0m`dzx&QzG delta 7716 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 delta 8983 zcmYk>30PLuzQ^$mf{F@?g2?!SOo|8+8laF9hI3AsB90j*Mh-dU^a9TF$*q>DH_@YM znx<0e(VR0qPUZDh$I`OQu1A}$p3|*c=iKj)wR)cR)AF;{+Iz3zzt-BX)!B8v?mA!Z z&BlJ~9ImTAjuVA@f*fatujAxKtJZOvB|Adpk z-=QUg#_kx371)gaotMaH0B@o{9z!*B1~t=5NKl+lP!amZ>X+g;F_hy_&vimYq!$L` zlUN(aV>6tDO>n7ov+C*J*-u6t{1uzx-%ug{0W;C3mE$zTb~p#S+43ojrF<15@BxNn zP%4AM7N`OA#Cq5t)lRYXS@f#IIb<|*7xlshtdCo;0q#MC{;>5V>iP4ifnGsP;0shF zzeg?QZ>WJZZf$IfdVa8VTx;U5hG$Zt2Fg(*T#W(vDrzZqp&B}XdhQx3lwaBMPuALL z=6)z@#tEqR(@}dR8#S?9)Dm@1BmU~BhzdU(i_3jjGfbfTk8~4}h&HCdI8?+^Q4M!R zz26%(z`>~ZX4?CkQF~?w@{elo{sD>Z0c0ffa9~JW6)&ZzZ zH3aqEWYiv*he5ajwHJ0;PhleE&+t+7eZ(x0H-}6x6@5`1k3w}c-que7hxZqihc1EY7YbxhH#z#Xfi#i$iio^5+B2R zxDZpa%#7YdMc^=MM(^ADtEicMiW=zG)_Sw= zzo-WM+M5}Npk@}0dLbFL+1jCI(gpQ=AJiTijvCNJ)O+(#?=7+A^{CCf1vQ|Z?TNqE zdau3l7OMO%s)IAOe8u_^GDhbHcEB+H&{7RV9kVsq6!&2yo<$AtOY8rj2I!k>A`zTR z{PjSVttdd1%TQ}K7xltcY>xX;OLGl1z^_pQ{sA?!pHMUVH!7n3dFJ_GRDE-63rwP% z<|U($7NQy$gZ%nBrKq(lL(OO*s=-aDknY6B_%>=l=TS>=9YgUx=A$p+(P=0^y;qDi z?b~{985wP^O4I;0;%(f9+AK@hAX>}4sE{5)Md%ua<89PH|Ai6Qw38Wd2CBY0>b+5@ zh|WPhSB1$s|3}HBQE?mfV3W?qbZal`IMlA5kBZ1k7>#>z3SPu0?AXP0T#QsBmNrMuT-ePW{;bO(oiGK!Z;j+T9WCgnO2}q&05sJs!#)Y z!+HSq{yV7WuA%z5h3sqRH&ldj3y6P5GJOin@mXno71iN>ROpXlZM=XwEmu)9yocJ& zjk=qGw!%!xeXuoFU@Y!KMdkxkL>^)?`gwcs_cSu8s1X;U9++aSw5~yocq?i~2T>tC zfjak>u`Ygr0eBbH!2?^4>}evGh?}X;#&+oah)h122EF(#$Ns2L{)8RySIofd-X;R2 zsEABPby$wYxD@N)9rVZVumL`_`t&i+2cg;zLn7*RqR43N<54roL9JCU)cGEV>Tsbg zuf=rA2T-TvOH^ooMs4Qkz9s^B)&gsP)WC+J_Rwf-sPjLSOb`_dP$P4(9=?oPl5MDg zoIowrO{|Y~o-i|PfE_O zo4p&=z-d&-&S4;4MxBDsP|ts5>uU`#_k*z^^&V6N(`~suY9c*R9S=se^V9(1uLnzQ z#WYmMb5I>updzyvYa)Ug$PQ$=ooZCWz5|I2ArC?=Maw~^J{#3xKI*;xsQV*P1AT4~ z@mIw>`@l-;M*H9{)Bq1zPop}#jM{wH@l*T}wP`OEnx(jln&B^~iTDgQ)TH6^o9A8A8j_3V9K3QGaiWAE2FHlQJZ)@s=sOs zL+^1i3dP5$5r1QEe24nd)gEFR_Mirkfto>g)TVqA8{<^W!^Nlxyoayi=cpem?@;rF zbWsy}3mK5txj-h7io2)*G%PYRYl?c&gIc>xTkebsT_NiEk@kKGYG6}QyMDfPxz$BQ zW+R5<&YCjoe~L^96<06}Z=-hiuc!e;4Kp)rgKD@ds-s@0`$ecVeh#%areXq?qaw2% zHRD6r2rr}h`&?!EcOH__TKe-Hl|iVPg`t)v2Gvm-YVEq9&UqiK?aQvl7LB`RW@Q19=+bli{LN66eFqmhSr9E?Wh6m!6-a|+I%-q z9et0A)X%8reMXrM>!O~^#uV&1iuG4Wrct4W7GVT#Lyhp5^*d}vIcBtpNERwm1*p*X zLv7B%s5LG_4R97J)T^)xw_&UgCv6PNM!DoEuNmpdr_9=%M>TLA6_IaH4Lm?as_t0x zyWRmc;PI#dEW+lv0zJ6T)?YzI;=fRv_=YXt!$&DU@RHHyNO{_PKsq7+IK})?fu}GY z^GnQ(o@C!Uj$tVM zJ0IBx?xSA(4eMj0XU#yOFo1F**28pL-yYR*S5#`!DVKT zlw!?)|64|;W@MM{)Sg8AwRxINVuN8CYLiUEhPVuU@fBOY8P(7M^vCzG8Rz)|wxE1_vI%|Q6!YJd zLQ#9Gtu6PnPDD*;)fCoWyMM2}aS?Tn?_m-KJ#W5*?NA{ejXiM{D#U-oWb~VAOhr96 z2(_dYr~z!U9>Q|U*Dw|fz0*v{r=vo>3jJ^$Dul0K1Kfd)@E|HOXHXHihI;NgYLDDO zt#!zB^ZoFk?pL9X>l>)|ez1D~Nk$F-idw6{8Rp9tiP{6%s24h;o-4q{I0T#G1XL(1 zu?cQP&G>E9T3CFakTG zLS2N~{ZFIz#8TAmuEq#Fi;B!G>pxHf517qF=-&w@qZgZ^M%EeCU|%f2DX572#g?yP zDCLMbrr|cI_wuo3=BSyLpx!IPG+c;LSdE(Shv-#ke<35=%r(2X1htt~p+b8UQ}H5d zpg*IQB4M7npN|^QAPmP+)KVWnT1mrt@Fo=zcn2fV zXTGVAMm?B_It>|^i0v^RM_CtO0_B~kkYB=R{2CRpS_@43Y1oEx4~)ZEUNY)n6KeDA zL~WKMs1aYm1pEvYGM|O!xfs+MXIQgQ_d8mPQ60U2T7uV6OK=#qH0Mzh@?Ix1*@vH3 zTTw`S^uh?#0LoC`g<0s2OYHqsSc~#z)bXl9E#)DM#ZwrAU!fx5yTlla+N6&m6Yx3% z$*7?sR7WFFo9S7sgO#WOEyE<-fXR3QwN(F&iiF=%V|`Ra8(U*Ao^lGRoxZ3@495_i z|1w)qX&+dF8c3C`--qhpIBHX#wdGIHkMif%+gOkCUDRHBh?+>lW&E2iCSm|CMFQ@O z)*o6kU0Q-kq`u@wkX|SMS9fx>C$C(Oam~VYIDzyQ`N1R)sRLynJVE-IysrNhq~4zMS?@;RFL0_nRuA=`}LZe5z{2`I5m%xp0IbG;C3bXi+J2V z>UGD*MEbu-AFnIaJxx00`goFCjwPq7Kb|C|nPN@wmF;B9C2oI@ zCpgzWtxA5KoqcYFC#>aJYVT62QZ-i*sh@rF7Wv-f=aBNepUYNiD=!Oig42J zS9>x8Nk?tnHhiCQJ<<|4BQ`$nfW31LGe{FjW!xQ2dYRP8ofhi}>_}|^N!J#)DmF6o zJf-=h&D5mXJ7?SvVd>m;P>G$g;@*POaRq==V;p7+F z@=UjN^DzIult#EcntO7p$c?o3qHro{CFzcB^do%H-p?Zc1L;Z1&$(62J9x*C3njHD z>3ew@*OPXW*L8+8h4K-6l(e6GHxfTQ&KlBb@`a@PZp!W4cjMy&7n0Mpn$*+%Ha@w}e^B!&r2+Ud z=^fHR(kmogmq_}u={iE)KAeWXA92+elhUc%;Eqnnid$pfeAN0E3?r>3y+?Y?J)Gdl z%O*F0^b~0i=@2QHr0b@^d6RMp`DM5TH{1Km-O$8V8D*68>HD*-okm_iGAnHPeOyoZ z97#X3AG(thTLliYcQ4>EcUNM3=tWzzlV^0jLHTX>R$_YKY;yWo>w4FXPV)Gax_L=q z(Y@>&s@F$2i}E33$&(9>?)tNJ2zH5RpWVe@+PrK_u=gC5WJosw0T|CbXo*-+dG-@mqIG&}y}` zs-?82&;B3dH8a2Y&GDU?f26%rT4~MNO5VTK z@?Gcfx$5IM_3`~+$C*{haq^;6>o^UP9j7LyU=X&#YM6_G*cYqgF#CLxEx%x&FSEL~ zew%d<(vR0UOhz4_#yVJzSMV+d;GqU)0;jMF<*U}OurlS_s0rM~s`zi~ub4yGKgB%n zf!UM?VknkkJ;rxlC!-0RKtH^M>gY4nN^c-RalS!C=#jNfs^dgc&Oo*6jf%)%48gJJ zkHuII=VNW$WZkQJ#&=GV(E!)6E`Ey&xzo^bnn4KGz^8By_P6D7jHUc{jKIo`948#3 z(SzBj2@Jw&I0DtrBW+HLc98~);)>&!9UmY)}LLHQ#X1EOl@Ez1v97e6^6slbXDwGdwxk|dJuWL<2 zt++Yr{r0G{l8ahc9%_pQrW1b+G=U0VoQW&B3B{N|*{_L-NGhts3{=G0pgQi0dVdIN zf@4tcEw|72qRz}gw8i#ss z0qP9=0fTWj>MR_xmSZC2d)NYNH8or0?M5bqiUQQY(@+By+j=kROq5~}ZbS{R3uog2 z{0P%IsX6!^s-MQq&0c4tBG(NSseY*ISAZ$H|1-(x8g0ceJc=6dbJPm{idyMI)Wm9J znuvv>I*dToCtxb3Vjb*{dVd0bii@!)4q*BD_$mhK{y!k2hQDEV49_C0I11b0MO=c_ zv(3uZq9U;cwX)r|{(aPhj$%DLXZ;#=CLSYmaH3n9_xfS5?*A|{I`vafXJH;P7iSUH z#1C!#1ysjZQ0>1(?fqlamiV_ahN7M)pl(TXRAh5eks6MPI0n61$tp7KaWm?ATt{{A z57b^hM6K*MRQrI|X5cVX1QJl~8>7xrd(?#bpxzsfdT)X)&qf{Ug{_IdX7myj+Vc|o zV1q4hLk+OYmfy7=LKf{DNB%gE`Ab`s*~VPAnOK){DMsQOs0p67eukQ0MH}L;P&}{? z!rPj13hISksJ$D8dSNlfp^Ms@gQy9fLoJ{jwX$odh226$^e(FX16%LQZ1udFmrN3w zny9_ZLUoXX{1kTbP?MLT$kj48=>RYgvK16)Ehq-fM^I z-1zs3ms88zYB9Zh{I>b*{= zh!!C2yv`yr$y98`bUce{_>(oHlPRZJyP;0?Xw(437=?>niJ7)E;ld#<&yJ!By;uH*C3Kj=8p(sD36{i%?rL8x{H$ zs9UuGt1!M(Mn*Gy1J&>y)E=KeP3#lYO20yF&3#+{3u=!8o-z@ML6w`K&Qdqj*%)B! z$D{i9qPDICy$W?18HMZ!YAdc`4El62A@g8m%1NjRq@q^R6gANfww#BWz##O+X{ePx zhw(TM6L1G=0_VCAe|7W)73%no^?Q7B22dS_bTu6%qbAw}J=hbqHB(V5eF3%d)u@SW zMonaw^)1x<`%vvJb|wBA=sFeL5a%H(M47qf8?g)OIxV$sL=E^RYHJRlKb}V2o(rfI zR$wd!bTbo8MSd_kd6r$@OIRS z_M;+t95wNaSQT$#0Dgn&|Gq7IBYK$7CEzPO$ihtg9CI)*&v9PE-l$MM#Mby9%)qRk zCIaJ85t)V>(2GNGIaa|t=!f59b$nnX{`uyGAk+YLQ6Y^)?R^|-CE2L0>W;eaV=x#O z+p>#|DZh)lEw@mS{TX$b>-RDdXk+d2M8@w;Ml&0PIz+><2F}1>T!fm~TC9c}P+PJC zHId_}t-67M=-=C{uomk57*qt(vAz%A5vcz9_MtzLw%=j zMRjlxHL;H{2v4H6>as2W#ae+isK1YjSf#$E9E4hE6l%PbzTAIx(1HpzY>O)Aq6X}R z8n7QK5`$1PABCDgF>;QaWvGrn#{@!r3l)0*{-!<@)xQTda3j?FE&CIHHSB6D2G|Cp ztkZ4%JX>Cc>S&X#e-$;M{dfw`p}q%R8ek6ZPE^PbTTh}Eavn92t6nnNg0HRLVh-i| zSPQeBF~7BTM{UI-)PP%1E7*q`;25f(v#1GPMlI|*>a2Wg^&e<%MLdR4@9j!Pp&N$k zcp_>G=A*9LGSng4Y0Jk@XXH9+fL~CzAmCZkE*V=;?u50m80X+>)S0L@$Xw3|qu0qG zqYiVe<4`MEjtWsJ>cy?76~B#|*b&r3zeGjgCaT?C)aieO>Zj^pV+g8!1gf0}gZ1-2 zgN!=vfC^Q9c;2T=o_!w|fT>hKn7%YH;f#&?MMLaL1lb!Swh24g)e#t6oD z*4hSpQ4=|X+LEiNdwMiq71qTrwtgro zGNaM!Av1-HUM#T>4q$!C$FKu_g^jWPa5I5C)b%XDP#lRmbj7HS7o#Gy8Wr+&sB8Q( zYUMjn6Z>d5@z;yzs8C1c7>nOn14fu1Mybd@>zv`J0d`vVSPxi_VI%c zOKVRYNckYn#~S0z!b(u@Z9-kkw@_Q)Jx)f~>;h^1L6C84NWl88jw>tvJB_2_CJ3_~?6!m7B?mRDj5Uk{cJ3a{&(xKKVsFiwA11&~<@w|+R+=M^F>{cq;p^Q+bmL`6KG^ zRGwyj3WlQ^7NB07ft7FpDpHG4kt#zCa14LIbJz$EO*a$2gKB>dHKD3SCgL$g#9uRQ zNks(qK{c3!s$Yb9aSJxZ4^ZvCLk-|JgRfU?ii*f&OvP6*4KHIu{1wwNWv1zGAgbL= zFPTAPwxM451(UJCb7tnfQ6YT>tK$$V-1YS$PxHe!qQw*!nTnq5dnZi$9>=t1`>1JOp*v z(=e9tovvi`#WN1I!X>uBT3f#dwFT#`chE!GXSVrIG4Ys5xeMy6cMd9ITTo}B3>C56 zs0n?5p?C>vGrm(nMjif)T2Vx?dC`OMlv6PQ^RWibKy|nXwX#xFM7Cf!?nDiA6xIGS z)B-E;$;4kUTN979bpO-IXyqMIdz6pra1d%Gg{Z?b7PS@YZTWTVPWdlb8$B=b%M50s zR=CvqGU_bsM@{@FYM~d#fCj->Wq}#EE)Jm_gW7^Qs4ZBGYPSNz za3gBs`|R@*sEMAzM7)fV_!Bn3kcH-ZpcU#?jln3K?IqKg%zD&|XHg-)XUnmR%)nhx zEANj_IzSCL8zXQb>e{`6;kX~Q=bxa?)EDT%+Zcy_i_NX^HXx&w6`)o$8K2yHR0P&w zrVqdMqA%r(OH9Y*s0rM#<-4fo_fhXZ!pa!1)T}fJ>r-xsns6>MQLi)7WSqIE7dN0@ z+>PpRFKVFusE{5(osln55xIqm*nQMjbkZ_&_?|_*KNtORA!>muYi7=okUg{pEH@q0$12n}vgPKe0dlN8(2w%dsEH56dRT}$J1^oSbTPOQ8D|Ao z0Y>RB`_u1%3 zza7-R;1)*@j?({1)=vHZ=L&V>NPlvFj7|<1OHQADt|unOXS~}nCMKl4ty4WeU7dH` z=`mp`=cxUT(hgPg8AR%9TmGGVFY;beSNGkR*qESB)OIK7v(qh&jST&m(o)h^YMR(5 zXWWyqkx^T1No_CvU;Z`n8{EgSk$z8+Tjhp(vckLA=bQuQ4bn1O?(L5EMEdQf^oF~_ zlQpyhxe}faL!B(XBb+4igGn4F=N@T3`FPSE((j+mqBXT+cGYu<*Vch?Xzf{MJgfPwVi%}f3(l_)%zo95asD^X(eHz^! z@c{wPQ=dbc+G8?tw*pPX)Wn2siV6)A*O9> za#Ki)N$-$8B-JA6bJO7Lr#y!IYTS-x_W2)Nzr=LV9C`ihU1Q6C#`ToX zld?(W?uf*OK?U~dCwRi$lo%g+(bnvyjXwJ*A96oUY#cO?oWA$;Iqn7}#rRBi(~`oX z^6eX{k0-UFJb^Tf{9Epbq}pj4DGeZnk@Pu;X*NHK@>KG5Naf_$yW5j$`;@u|l43gM z**1Ns*H6niwp>U)kF=RIk-GVKl(c~SP|`@!G|KLKp~;P+D^HkO_+HjinN6!qEgBuG K!kAg!kpBU33SiL-pBD@B0)q#NJMs#O+-ZO5h>=Cplg7qW4!XczZst zT5AN#z>mdD%Yv#q7J zevNe_(vQd4MMfRJiNRQjm+=Pr;m$^80{gKV}<=G*nsj?49EXq7zQ?B zQrHMJfgV@`^HBX1Stp`L1I{O-mAj}HHlRPghBa|FD)fh~@1WYhhnnam)B?UlMe;k; zR{n;XNS#z;OH}&-)-kEXUmee(LLHQ#X1E6Za0_ZHcA+}jk7{=f70R2o{Ij)cQ}a9o zwc>cx`)R1N(iXL__NXoD)|B{bph7Bqa3rquV$U$1@{egIBH_(Uhq0)LH9>XU3H5$2 z)C32h-kW2eZ$h1!9ms#qDgM#LdVm2~$CGXbZh$qZNI-Sm+?t7sP!1~Oy{!4DLp2EX z-Za!1ScrkR0d*F3S}QSu@~7Auy_=gY@??++q9PYH@KDr1<81vD)R|a>nsFIwfOR+r zx8qTa=A`PneS+#Irlr~IMyRdGKt(DCb^UTNS@(Y=8C|2*7>avP1HOw|!3ESxzeY{$ z57buqwlW>oK-C8$7sd(4VC;-~zYwqB4D5|vSbi?Pg#Nn!H_52sci02{+BnWw?1xX_ zaa@XzP%B&9)Wc|D06p5%`D8labExa_ zK5BsLsFi(4n+wvMzh}YS2xpgP9Sm&?Ef6g8L(N-n2H`i?>)}y=#BXB)xf^S++qb7K*J@Hp4 zZrTTaS*9F@dZ7bq@A{x#n1Kzk6ty)wP!l|aT0kXgW$&RDb_EsD8>sd-ZT$o5uO2dq zJkazN(j-&|Es>wXPJ7hebwI6XAgaU3sF2RXI#`Ap;8oNX?8Xp0fjM{$bt}TyXT8@H z)xW1b89nHLI$Zrw6PSdza3(53g&oaamY_oV94bOPFbof(CVCme@n5J3SIIW@;i&hT zqavD%wDUN{WRj>@jZN_&s^M2wuP048%9?>X)%{TejKe4_!RfdeBQdCx8MrBGYr3Eh z_C_7be5|4SUqnWGI|j99v#j&2i&1-AhH2=cIyi;B@uDq9 zi@H_Iu^Qt$&y&#%*P|M4LGAHg)WnXVR(c+_HUG5r-=OyRAu1xZI-7DF>P%$VaxYZB z!%UzC_lzb%AaF8hW9oR z=!J?%0cybEScDU>8lFR6yo{RYb?Z%}y~nvvMtk)T71G~Pd+(cTRuX~Qt5noI?~Z{u z#+GMc8s(Qzx8yV`w0}n(=08voi0NZYwzfcD-Ty2y3PmTZg#$1UN24Y-6Kmi+)FE1m zn#fkvR-HtDyn|ZdkEr*(`~_>w?@8+?s59{Z^`39O8PE^46@jRJ>Y=tO1w9(LB^iY(+d2&OUA_o4 z;|-{ZZN>oHhT5wAwtU!n7Hd)eAu3{D+46l%0 z_(1d5YAR|gMxzE?h?=mA8lW82(Js^k_oG&J9CcPMSnr^2Mb$y3zs9J@d7dPrj&o6a zG6Hqo#-k3|GFvW3osr|H0X{?Bg1e}8HJ-9R{je_OBAky?QD@>F*2CYd!G(|e^EfFc ze5r*ST3}t-h zc`{nzPSljx6(Tm0Q!Fr6OT#g;_1ZpLJpeB$u)C`=BA(XqI4qXwd<1wg#rlLYV2X&1-sFg28 zEpRjHy^5j4Umd+gMFTuP5et- zia+3XoHLwnSBxIvF&!@%VfJnnYGxZzp?)1T!F`yFXHgOQ9(DQyN1Ap`Fq(2})JprK zRz4Yha0aTsxwgI(lPIt7kkR$qhwAVQrhBo+m`l0dX#V)XQK*%?g=%*ed*D|%7MqRX z*Dc(DCHMm>V#Pevd-GA(ay4oTwxVvC=M6Gi(NXJ1*o^XzsNakd$C-$XLUl0Jx&(bF zug4a+2^Fa;w*EG1pu1QLe?i@n>f=qMBaqwSaT=4+gC|i9`(t$+Wy_N>nesx^1a@L4 zJcin1XM$N_5LTraht;sLt#6KMmxEeye_I~@SoXh|j3%%Ib$?$*4YULO@d#={XHWxN zLJe@;)_-ojjk?D7(GPz|MX35j^T%ocW>W5oifk!{F}_ntMyK~v)ZYGr`huu8$sDG1 z)EVi4ZE*WgR_2I4W)Le8T{E4fNWr}Y!`$1hP^ zaTnF_k$qleiusQBLxr@XH4nAY;i!SepuTuKsK~9u0NjFF$R5<8tenFBD|3ws9iFc- z2Orsn*;CDn1JIlLk*G+GK}D(*H9$Gu#|mtMuTC=)KZk062{oZ_F$}$@n~6qFC;kd$ zODfc$k9{y2_2NQoj<2BFT|^D=FKmY)#U>(su`%W4n2P%`1;50mSaXKyFB8>nAQs|c z4;j7i8786sOf&NqsF1e9n%Dsq!d|GYDzpx@jz(?OM67|usI#&VwWWu!H=aTr&Y)Rl z;+_aHdNJSn6b4ZqinVb%>V;C&Sy_c@zt%qAXx)Rs)Stk5_&3yh-=HG-02TV$v&~n1 zW8{0s2V+fzvl#Wl7VA-rrF;V$;zMkOk#o#fZaykf(@|;;?Ed|&Rp~3G#+bF?2hX2Db$L_pdv91!*DKYAQ#oX0`-l01RqZv zwIvU+4*JY9TN;XwfB%msqYj&)R?-%AXtGdSFwvG5U=PZ>Q7icw`=bA|W`#x8>8JtA zP!o4iTUL&`H9Ij8&*0;q|M$qGQ&DHW`7X~veZ|f}P2?CR;^E5f5Sbi5NafdjUD9QFJh>ivsY1;0S8^d?54*D^EVXw*bAtOdw>9%m96z34%8Sc)2` z3>DHBQG4|U>MR^WMeH0l$43~4Y0J&~1z45xAk>x(vE?bKh|RLD#BkmJ*T|^jqo_l6 z!TJTNgCDROdY74U4b%YP)>!nV+z2)CrdS`_qRvhp@)O+|hYJ05B*4xH{i6`+Q%qqx zDVO|U(r)tayVIg#vKFfupZT~JCy)-3A4G~JWm5LWcSygI*XNPJdD^`gl@v0EC%UHk z=r-s8X1adS5dlYd^5c)^NU9XrVztQCMDR9$cV!Xz>c`-3TPuM!uPbckl7sZ4opP}{}N?TRU zr;wCyTmF-LF8PI|F77)qN#1<7eG?O&+JlM++ek09BNdR2+q&&|jFN=r$bscB}PoOZ7?h=|%`OKN-Z zzw+D2uXFukBYbnnt#p%P+k|zt&sWfPCux~2_i^XaZYQPJ-3_sAp6NjDd7ckOovg*A zMDm3s4v}-0MMi zXq-h_L%MA{y@9TMuCLzjNl#Ip>XtXm^o%4|kJO%|GyeguC+#M$&%2}6&Kag~fd>J;x&qr)l8aR9a^(|4dnmVYkH^IYEGMVW8d5L!UR+$>C~96KeM(I~e1-Hj=}po`l0F}h^rfNCG3xf> zZ2a@us=kP%KiOV&hsC#veaXJr)_N4{lU^XbOX}zzj*rP|M{W|Sl=KGaFsTknpDzr~ zKFXuX{|}bq7W;ga8>v}!!zMB}6-P5+oqh3Elp0(xS +
+
+
+ +
+
@@ -332,6 +338,10 @@
<%[ Restore job options ]%> +
+
<%[ Restore job: ]%>
+
<%=$this->RestoreJob->Text%>
+
<%[ Replace files: ]%>
diff --git a/gui/baculum/protected/Web/Pages/RestoreWizard.php b/gui/baculum/protected/Web/Pages/RestoreWizard.php index dc95202ed1..7feb1dc118 100644 --- a/gui/baculum/protected/Web/Pages/RestoreWizard.php +++ b/gui/baculum/protected/Web/Pages/RestoreWizard.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2016 Kern Sibbald + * Copyright (C) 2013-2017 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -59,6 +59,7 @@ class RestoreWizard extends BaculumWebPage $this->setFileVersions(array()); $this->setFilesToRestore(array()); $this->markFileToRestore(null, null); + $this->setRestoreJobs(); $_SESSION['restore_path'] = array(); } } @@ -414,31 +415,42 @@ class RestoreWizard extends BaculumWebPage public function wizardCompleted() { $jobids = $this->getElementaryBackup(); $path = self::BVFS_PATH_PREFIX . getmypid(); - $restoreElements = $this->getRestoreElements(); - $cmdProps = array('jobids' => $jobids, 'path' => $path); - if(count($restoreElements['fileid']) > 0) { - $cmdProps['fileid'] = implode(',', $restoreElements['fileid']); + $restore_elements = $this->getRestoreElements(); + $cmd_props = array('jobids' => $jobids, 'path' => $path); + if(count($restore_elements['fileid']) > 0) { + $cmd_props['fileid'] = implode(',', $restore_elements['fileid']); } - if(count($restoreElements['dirid']) > 0) { - $cmdProps['dirid'] = implode(',', $restoreElements['dirid']); + if(count($restore_elements['dirid']) > 0) { + $cmd_props['dirid'] = implode(',', $restore_elements['dirid']); } - $this->getModule('api')->create(array('bvfs', 'restore'), $cmdProps); - $restoreProps = array(); - $restoreProps['rpath'] = $path; - $restoreProps['clientid'] = intval($this->RestoreClient->SelectedValue); - $restoreProps['fileset'] = $this->GroupBackupFileSet->SelectedValue; - $restoreProps['priority'] = intval($this->RestoreJobPriority->Text); - $restoreProps['where'] = $this->RestorePath->Text; - $restoreProps['replace'] = $this->ReplaceFiles->SelectedValue; + $this->getModule('api')->create(array('bvfs', 'restore'), $cmd_props); + $restore_props = array(); + $restore_props['rpath'] = $path; + $restore_props['clientid'] = intval($this->RestoreClient->SelectedValue); + $restore_props['fileset'] = $this->GroupBackupFileSet->SelectedValue; + $restore_props['priority'] = intval($this->RestoreJobPriority->Text); + $restore_props['where'] = $this->RestorePath->Text; + $restore_props['replace'] = $this->ReplaceFiles->SelectedValue; + $restore_props['restorejob'] = $this->RestoreJob->SelectedValue; - $ret = $this->getModule('api')->create(array('jobs', 'restore'), $restoreProps); + $ret = $this->getModule('api')->create(array('jobs', 'restore'), $restore_props); $jobid = $this->getModule('misc')->findJobIdStartedJob($ret->output); - $urlParams = array('open' => 'Job'); + $url_params = array('open' => 'Job'); if (is_numeric($jobid)) { - $urlParams['id'] = $jobid; + $url_params['id'] = $jobid; } - $this->goToDefaultPage($urlParams); + $this->goToDefaultPage($url_params); + } + + private function setRestoreJobs() { + $restore_job_tasks = $this->Application->getModule('api')->get(array('jobs', 'tasks', 'type', 'R'))->output; + $jobs = array(); + foreach ($restore_job_tasks as $director => $restore_jobs) { + $jobs = array_merge($jobs, $restore_jobs); + } + $this->RestoreJob->DataSource = array_combine($jobs, $jobs); + $this->RestoreJob->dataBind(); } } ?> diff --git a/gui/baculum/protected/Web/Portlets/JobList.php b/gui/baculum/protected/Web/Portlets/JobList.php index 1878467dbb..15e73021e4 100644 --- a/gui/baculum/protected/Web/Portlets/JobList.php +++ b/gui/baculum/protected/Web/Portlets/JobList.php @@ -3,7 +3,7 @@ * Bacula(R) - The Network Backup Solution * Baculum - Bacula web interface * - * Copyright (C) 2013-2016 Kern Sibbald + * Copyright (C) 2013-2017 Kern Sibbald * * The main author of Baculum is Marcin Haba. * The original author of Bacula is Kern Sibbald, with contributions @@ -66,7 +66,7 @@ class JobList extends Portlets implements ISlideWindow { $misc = $this->Application->getModule('misc'); $this->jobLevels = $misc->getJobLevels(); $this->jobStates = $misc->getJobState(); - $this->jobTypes = $misc->getJobType(); + $this->jobTypes = $misc->job_types; $this->runningJobStates = $misc->getRunningJobStates(); } -- 2.39.5