From 12e7b163a835747bffbf45e3efd0f91fcb828d7c Mon Sep 17 00:00:00 2001 From: Nate Jones Date: Mon, 8 Dec 2014 19:43:21 +0000 Subject: [PATCH] Operator Panel: Extension icon now indicates Status (Available, On Break, etc). --- app/operator_panel/app_languages.php | 30 ++++++++++++++++++ app/operator_panel/index_inc.php | 29 +++++++++++++++-- .../resources/functions/get_call_activity.php | 21 +++++++++--- .../resources/images/status_available.png | Bin 0 -> 1894 bytes .../images/status_available_on_demand.png | Bin 0 -> 1976 bytes .../images/status_do_not_disturb.png | Bin 0 -> 1934 bytes .../{person.png => status_logged_out.png} | Bin .../resources/images/status_on_break.png | Bin 0 -> 1894 bytes 8 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 app/operator_panel/resources/images/status_available.png create mode 100644 app/operator_panel/resources/images/status_available_on_demand.png create mode 100644 app/operator_panel/resources/images/status_do_not_disturb.png rename app/operator_panel/resources/images/{person.png => status_logged_out.png} (100%) create mode 100644 app/operator_panel/resources/images/status_on_break.png diff --git a/app/operator_panel/app_languages.php b/app/operator_panel/app_languages.php index 03f2570a72..de86341a78 100644 --- a/app/operator_panel/app_languages.php +++ b/app/operator_panel/app_languages.php @@ -20,4 +20,34 @@ $text['label-no_extensions_found']['pt-pt'] = "Sem extensões encontrado."; $text['label-no_extensions_found']['fr-fr'] = "Aucun extensions trouvés."; + $text['label-status_available']['en-us'] = "Available"; + $text['label-status_available']['es-cl'] = "Disponible"; + $text['label-status_available']['pt-pt'] = "Disponível"; + $text['label-status_available']['fr-fr'] = "Disponible"; + + $text['label-status_available_on_demand']['en-us'] = "Available (On Demand)"; + $text['label-status_available_on_demand']['es-cl'] = "Disponible (A Pedido)"; + $text['label-status_available_on_demand']['pt-pt'] = "Disponível (A Pedido)"; + $text['label-status_available_on_demand']['fr-fr'] = "Disponble (sur demande)"; + + $text['label-status_logged_out']['en-us'] = "Logged Out"; + $text['label-status_logged_out']['es-cl'] = "Desconectado"; + $text['label-status_logged_out']['pt-pt'] = "Desligado"; + $text['label-status_logged_out']['fr-fr'] = "Déconnexion"; + + $text['label-status_logged_out_or_unknown']['en-us'] = "Logged Out / Unknown"; + $text['label-status_logged_out_or_unknown']['es-cl'] = "Desconectado / Desconocido"; + $text['label-status_logged_out_or_unknown']['pt-pt'] = "Desligado / Unknown"; + $text['label-status_logged_out_or_unknown']['fr-fr'] = "Déconnexion / Unknown"; + + $text['label-status_on_break']['en-us'] = "On Break"; + $text['label-status_on_break']['es-cl'] = "En Pausa"; + $text['label-status_on_break']['pt-pt'] = "Em Pausa"; + $text['label-status_on_break']['fr-fr'] = "En Pause"; + + $text['label-status_do_not_disturb']['en-us'] = "Do Not Disturb"; + $text['label-status_do_not_disturb']['es-cl'] = "No molestar"; + $text['label-status_do_not_disturb']['pt-pt'] = "Não Perturbar"; + $text['label-status_do_not_disturb']['fr-fr'] = "Ne pas déranger"; + ?> \ No newline at end of file diff --git a/app/operator_panel/index_inc.php b/app/operator_panel/index_inc.php index b370289a4b..4a84e94e6d 100644 --- a/app/operator_panel/index_inc.php +++ b/app/operator_panel/index_inc.php @@ -144,8 +144,8 @@ foreach ($activity as $extension => $ext) { //determine extension draggable state if (!in_array($extension, $_SESSION['user']['extensions'])) { if ($ext_state == "ringing") { - if ($_GET['vd_ext_from'] == '') { - $draggable = true; // selectable - is ringing so can transfer away the call (can set as vd_ext_from) + if ($_GET['vd_ext_from'] == '' && $dir_icon == 'inbound') { + $draggable = true; // selectable - is ringing and not outbound so can transfer away the call (can set as vd_ext_from) } else { $draggable = false; // unselectable - is ringing so can't send a call to the ext (can't set as vd_ext_to) @@ -176,12 +176,35 @@ foreach ($activity as $extension => $ext) { $draggable = true; } + //determine extension (user) status + switch ($ext['user_status']) { + case "Available" : + $status_icon = "available"; + $status_hover = $text['label-status_available']; + break; + case "Available (On Demand)" : + $status_icon = "available_on_demand"; + $status_hover = $text['label-status_available_on_demand']; + break; + case "On Break" : + $status_icon = "on_break"; + $status_hover = $text['label-status_on_break']; + break; + case "Do Not Disturb" : + $status_icon = "do_not_disturb"; + $status_hover = $text['label-status_do_not_disturb']; + break; + default : + $status_icon = "logged_out"; + $status_hover = $text['label-status_logged_out_or_unknown']; + } + $block .= "
"; // DRAG TO $block .= ""; $block .= " "; $block .= " "; $block .= "
"; $block .= " "; // DRAG FROM - $block .= ""; + $block .= ""; $block .= ""; $block .= " "; diff --git a/app/operator_panel/resources/functions/get_call_activity.php b/app/operator_panel/resources/functions/get_call_activity.php index a55f655aed..aa96b6eae1 100644 --- a/app/operator_panel/resources/functions/get_call_activity.php +++ b/app/operator_panel/resources/functions/get_call_activity.php @@ -2,10 +2,23 @@ function get_call_activity() { global $db; - //get the extensions - $sql = "select extension, number_alias, effective_caller_id_name, effective_caller_id_number, call_group, description from v_extensions "; - $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; - $sql .= "order by extension asc "; + //get the extensions and their user status + $sql = "select "; + $sql .= "e.extension, "; + $sql .= "e.number_alias, "; + $sql .= "e.effective_caller_id_name, "; + $sql .= "e.effective_caller_id_number, "; + $sql .= "e.call_group, "; + $sql .= "e.description, "; + $sql .= "u.user_status "; + $sql .= "from "; + $sql .= "v_extensions as e "; + $sql .= "left outer join v_extension_users as eu on ( eu.extension_uuid = e.extension_uuid and eu.domain_uuid = '".$_SESSION['domain_uuid']."' ) "; + $sql .= "left outer join v_users as u on ( u.user_uuid = eu.user_uuid and u.domain_uuid = '".$_SESSION['domain_uuid']."' ) "; + $sql .= "where "; + $sql .= "e.domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "order by "; + $sql .= "e.extension asc "; $prep_statement = $db->prepare($sql); $prep_statement->execute(); $extensions = $prep_statement->fetchAll(PDO::FETCH_NAMED); diff --git a/app/operator_panel/resources/images/status_available.png b/app/operator_panel/resources/images/status_available.png new file mode 100644 index 0000000000000000000000000000000000000000..fc4024d2e0f1b251dc2dc51c08b20b3863bf6ca6 GIT binary patch literal 1894 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 KMNUMnLSTY7JjFQx literal 0 HcmV?d00001 diff --git a/app/operator_panel/resources/images/status_do_not_disturb.png b/app/operator_panel/resources/images/status_do_not_disturb.png new file mode 100644 index 0000000000000000000000000000000000000000..db5ab5860fd34f8b461b13df4d9bb333e28ba2b4 GIT binary patch literal 1934 zcmV;92XXj`P)v;P(6F z_gFLnQ`gZP(QxfdDOSuVxZof+GXmHVlP?#~V1jj&K z#3UbWAfg@MGJ}O1+(mnSv0v3^TF_ZtB(oCH!suL)~0Y?sw zgfV2ne9;F8GVyT(N6|DUb6TN?8M922fEkjV7y)9ih89M1I3xkFOJinKuH*H&Pvj*K zdr!wjO2{STJY+I!(Qp_l*nLr$WX+1hqG39W*$gsZQ>XJZ_8guEakw}?UOLyC^vocL zs-e+Cqbigrv!%2GQV3{^tC>wx*Ca4zGI>CM=s=%%fxAREcQ+Gj>@Gub%S32lOd+r? zMU!*3%b7W1R*y&)uUD26+o+8TI9B>1A*vhBoEendzdy}HZeuJ);B2tA&T(>BrtMM} zOBu&cNC_cb9G{U>BRZLDeA&SA?}rXrgXpJRdH_HR_h$lcna7QH|EH-7cT?L zx4!?0sU{_o==#W=nv@U8R8t$H?|kTuA#C4w%-jVmJl_%v@hD$Ygy{?9Ct1^moy)$w(rEQ1I4&b5%C+aXAGO%~a`gI9CN9Ku&&(@=6_ij{|l%bkk=d5E&gq=7n8%SqMOu?X{Ss3=p zVyquBKr0TLCA8+*b(W>wbwVr@!b4?z^WwE12U2r$aigvlX$7OfLL4*Q@RgRZ+YoX< zaS)SOqbpf37{tTGTE9sXDFz!bui}Ew?3X^GSjTcYz2vT$n<2!)kqTDMJ$u#{zE~r( zkGl^eqN8^IL6GjDv7!o*`Z~mPJLc3xKN8b3&|~;eWKNqZI~9&g#mm{OV9~G<8a;I| z^>`OL4Q`$gDU<*gS037*$bu>>fdh^kOa{_aQ;WvRO5AL?O1ejqLURedg6Nu^gKjxl zR2`zSzREgFQ!Kb>F9!HNMl}sIgo!acItpXV$D!!?iUMjE8`^eJmqX zTfGcYb(%~?wn&QCEk)O^tq})Ygxsph4u&&2&^rT5GY3W}6h?2ftW%xRIST6htiqY9 z9=ayO{SvvcCG=(eltODt0Je;9opstMX4+Z9=UTfJ$)bi)x!E3~<;hNqFlE)FJtzsd z4Aq}11-IokAVWUba*SJY254xu*=*^uw%R~VnJx{d&&X@J#Py#t-Q)e6{;orCBoXQC z0)OPWZd*$qXLrVSha97ke_ZvKJ7q;lqbw%ohIa~_5Q4V{ zO)MQ(PnJ>k^=)NMKA78a!yaR;AT`IL_MEduvPYwbvbJXL9)zlD?63g;{Y#xAV63HG zNXE;q6dxNKslQ5YnCJwwy*Dr&a1Tp$m{cwFJ2R!02CMPLp8R_;bsA+cgY2 zecV{OR}lLy)EU&NtYIP?PyI8UqqY2NQpqxi!U+q2*A{=ZL-o+cxjFoY9cPAJyIpQo zO2{pjqK(|xqua-C1Oo7;BvSdS$ExwqX+O|D_Bd@dX+gc!PMvKJ95cr+X?U+0Od^1j zsmwlKkf&zNn(0m*oI{zHCI#4j{cz`DzrL|0hm(qBr0m^Q#y3^9G1~U8C9k|k3+l+4 ztae`Zv|Aw@_7a>Lp2VHeFkn(Y5>7hNov!l5?xgEZkn~53n3?OpQka|ozM#)PJH0{^ zH`rD?AUZ5xoJmgis{;Vy!3*mL;2waxb^Iy70LWot UK0M;4tpET307*qoM6N<$f}hQeeEQLrpfS-< ztrjd=q4Y(IJPKPn+nwH-@tk{ix77gJ#Wln*$;r&#xij~h?|kQRS94t#7wh4{MSNTW z_rC;ZT*$-E6>1?m-Qx>ln&!b|VPS+3z;CvNuS7R?)4eUrT3nIt`?YkVm4MA4An%VX zN2uhw3Blo!IT#R*;6y_;j@DJV2e#LBooqx)kBPep;LraVxaDKD)m|SeXFpe&T|DVw z=tdA8X$CY+rx`Zv9)a4ePr5r+Z8sf(r zxiH9dZ;*cb;fO9cQ_xa`Gq%|^~ z81um(@p%I|#9+3Z?>ZJjLnFBH>Dz*Ydka19&lot}hehM=Kp;OnUIJ49Al)ckDQsdb zPGcf<&$c>o+0=R3um}ohXl~}f8JJdBevem>j~vIQ#cjzB1F~t%wxa0i?x5>V3EpuO zP`(~LwJe+1o0*YRLN3wCrDO8L6Ck=fNn?p<{?u6lV%t3$0^_?x=L7O>Ai% zBgL4<@Td9qcyuctdIjTvOdlBNJhC4*8AKWua<7kB*9hK(5mN3Lx; z)_`TZUfE!CvehZ+I;1If>Di1Ai@@$#U1NXKjQJk|X2!rhQ>u*&<>3jZ2ihl#U&NVX zhu{wlmLQXXAZsF(Fn?$W+Uh>T#|zisOdC)NJoxVY{af!J*VgBYv~ivQcHXwEG9L~+ zHJjF>wH7Fv2n@fX82Lrz$R1RRXj?5hnyYd6+v7M^4^Rfd*clU0|7A^#Sl@ZN0e7v6 zxz@i1ZgHVDIW!QT-S_5Ow0?!w`0YDrtNj>9eyRrrFS$<5b4d7_(xyz(1(%aWbd+58 z5XRoL2%j$>9ozpY_G%7hFaFJqU2vXz`FhRk58#8jZ@eDLE1ZDXsU{2_eS<7Xu4BNL zT}NzzT&zHG>hn|G&lv{f7YAwX6pR>uCk4lG+_Lm=mLp0g?*9VI=+z4@n7O4T+WaeT z#fqDk)Ml9{56NW98sh}}`!CyZy0r$K?e*yHY^C53QhP=qh+uvx1{Rm2uzap;sRYrh z8@lA<)#;Piu~#l>avRbH_rh2$k37}%c-6KXR~B(Q1&$j`t_WSno6vc*4)HVX5-@|y z${U89f->Zei1ewyri|>YyfF4{U1)DxRkiKe1MV$pyVdH(qmv&i_VbrBYpOiysWyqD zk^$rsL&WZR?l|IWP zK|x42szW5|r!v*U*|PC;pT^IN7C)yFKi64NOlv&r#%+*w0Z9a(orPA zgmROe&{MM6WH++OYdLPqCc%+r!=F=tmYU77tZ@{R+OJIuoTh0W(sq7t3u*+&`Z$V|dOp?t2f|@xw=mY4mv3 zfG}J)E;lWG7for-GS7Pbr#WN=k=Y1P9^AVjDt1QkHWQKX)ISF2B=&oqyPEOJ)&&b> zq2@341qaJSte7xUu1$jK1!ksn$rZz&8wQs@e#f?zD`V}A*i;Q1<_zPWqY|98LU1rJ z7Bb#z7R&-}oiYaVD;_QL6-}x%1`NN7(n?tE8_ppa^;#9x98_H9>UXXb-)-n{4mMyN zdF3^laD*&M7(~Cy7Xf4~@YX$_EVl$0MHzEWxB%1j0ESRC$RgAKu6WZNm!dvKzBt+5 ziXD4^O$UHFx^;?yamMNwbA15v;yyC|8^N0h6fMnvwA_STm?hprvQ&h79st^