3 * Allows acl(php-gacl) administration. Heavily ajax and
4 * javascript/jquery dependent. All ajax functions are called
5 * from adminacl_ajax.php
8 * @link http://www.open-emr.org
9 * @author Brady Miller <brady.g.miller@gmail.com>
10 * @author Ranganath Pathak <pathak01@hotmail.com>
11 * @copyright Copyright (c) 2007-2017 Brady Miller <brady.g.miller@gmail.com>
12 * @copyright Copyright (c) 2017 Ranganath Pathak <pathak01@hotmail.com>
13 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
16 require_once("../globals.php");
17 require_once("$srcdir/acl.inc");
19 use OpenEMR\Core\Header
;
21 //ensure user has proper access
22 if (!acl_check('admin', 'acl')) {
23 echo "(" . xlt('ACL Administration Not Authorized') . ")";
27 //ensure phpgacl is installed
28 if (!isset($phpgacl_location)) {
29 echo "(" . xlt('PHP-gacl is not installed') . ")";
36 <title
><?php
echo xlt("Access Control List Administration"); ?
></title
>
38 <?php Header
::setupHeader(); ?
>
40 <script type
="text/JavaScript">
41 $
(document
).ready(function(){
42 //using jquery-ui-1-12-1 tooltip instead of bootstrap tooltip
43 var groupTitle
= "<?php echo xla('This section allows you to create and remove groups and modify or grant access privileges to existing groups. Check the check box to display section'); ?>";
44 $
('#advanced-tooltip').attr( "title", "<?php echo xla('Click to manually configure access control, recommended for advanced users'); ?>" ).tooltip();
45 $
('#user-tooltip').attr("title", "<?php echo xla('Click the pencil icon to grant and remove access privileges to the selected user'); ?>" ).tooltip();
46 $
('#group-tooltip').attr("title", groupTitle
).tooltip();
47 $
('#new-group-tooltip').attr("title", "<?php echo xla('Enter values in this section to create a new group also known as Access Request Object (ARO)'); ?>").tooltip();
48 $
('#remove-group-tooltip').attr("title", "<?php echo xla('Use this section to delete existing groups or Access Request Objects (AROs)'); ?>").tooltip();
49 //Show membership section by default
50 $
("#membership_show").click();
52 //Show membership section by default
54 $
("body").on("click", ".link_submit", function(){
59 $
("body").on("click", ".button_submit", function(){
64 $
("body").on("click", "#membership_show", function(){
69 $
("body").on("click", "#acl_show", function(){
74 $
("body").on("click", ".button_acl_add", function(){
75 //if Clear, then reset form
76 if (this
.id
== "button_acl_add_clear") {
77 $
("#acl_error").empty();
78 $
("#div_acl_add_form span.alert").empty();
81 //if Cancel, then reset/hide form and show create/remove acl links
82 if (this
.id
== "button_acl_add_cancel") {
83 $
("#div_acl_add_form").hide("slow");
84 $
("#acl_error").empty();
85 $
("#div_acl_add_form span.alert").empty();
86 $
("#none_acl_returns").show();
87 $
("#none_acl_list").show();
90 //Submit selected, so send ajax request
91 title
= $
("#title_field").val();
92 identifier
= $
("#id_field").val();
93 return_value
= $
("#return_field").val();
94 description
= $
("#desc_field").val();
97 url
: "../../library/ajax/adminacl_ajax.php",
103 identifier
: identifier
,
104 return_value
: return_value
,
105 description
: description
107 success
: function(xml
){
108 //if successful, then show new group
109 if ($
(xml
).find("success").text() == "SUCCESS") {
110 $
("#button_acl_add_cancel").click();
113 //Remove Loading indicator and old errors, then display new errors
114 $
("#div_acl_add_form span.loading").hide();
115 $
("#acl_error").empty();
116 $
("#div_acl_add_form span.alert").empty();
117 $
(xml
).find("error").each(function(){
118 temparray
= $
(this
).text().split("_");
119 $
("#" + temparray
[0] +
"_error").append(temparray
[1]);
121 $
("#acl_error").show();
122 $
("#div_acl_add_form span.alert").show();
124 beforeSend
: function(){
125 //Show Loading indicator
126 $
("#div_acl_add_form span.loading").show();
129 //Remove Loading indicator and show errors
130 $
("#div_acl_add_form span.loading").hide();
131 $
("#acl_error").empty();
132 $
("#acl_error").append("<span class='alert'><?php echo xla('ERROR, unable to collect data from server'); ?><br></span>");
133 $
("#acl_error").show();
139 $
("body").on("click", ".button_acl_remove", function(){
140 //if Clear, then reset form
141 if (this
.id
== "button_acl_remove_clear") {
142 $
("#acl_error").empty();
143 $
("#div_acl_remove_form span.alert").empty();
146 //if Cancel, then reset/hide form and show create/remove acl links
147 if (this
.id
== "button_acl_remove_cancel") {
148 $
("#div_acl_remove_form").hide("slow");
149 $
("#acl_error").empty();
150 $
("#div_acl_remove_form span.alert").empty();
151 $
("#none_acl_returns").show();
152 $
("#none_acl_list").show();
155 //Ensure confirmed before deleting group
156 confirmDelete
= $
("input[name=acl_remove_confirm]:checked").val();
157 if (confirmDelete
== "no") { //send confirm alert and exit
158 $
("#remove_confirm_error").empty();
159 $
("#remove_confirm_error").append("<?php echo xla('Select Yes to confirm group deletion'); ?>");
162 //Delete and confirmed, so send ajax request
163 temparray
= $
("#acl_field").val().split("-");
164 title
= temparray
[0];
165 return_value
= temparray
[1];
168 url
: "../../library/ajax/adminacl_ajax.php",
174 return_value
: return_value
176 success
: function(xml
){
177 //if successful, then show new group
178 if ($
(xml
).find("success").text() == "SUCCESS") {
179 $
("#button_acl_remove_cancel").click();
182 //Remove Loading indicator and old errors, then display new errors
183 $
("#div_acl_remove_form span.loading").hide();
184 $
("#acl_error").empty();
185 $
("#div_acl_remove_form span.alert").empty();
186 $
(xml
).find("error").each(function(){
187 temparray
= $
(this
).text().split("_");
188 $
("#" + temparray
[0] +
"_error").append(temparray
[1]);
190 $
("#acl_error").show();
191 $
("#div_acl_remove_form span.alert").show();
193 beforeSend
: function(){
194 //Show Loading indicator
195 $
("#div_acl_remove_form span.loading").show();
198 //Remove Loading indicator and show errors
199 $
("#div_acl_remove_form span.loading").hide();
200 $
("#acl_error").empty();
201 $
("#acl_error").append("<span class='alert'><?php echo xla('ERROR, unable to collect data from server'); ?><br></span>");
202 $
("#acl_error").show();
208 function membership_show() {
209 if (!$
("#membership_show").prop('checked')) {
210 $
("#membership_error").empty();
211 $
("#membership").hide("slow");
217 url
: "../../library/ajax/adminacl_ajax.php",
223 success
: function(xml
){
224 $
("#membership_error").empty();
225 $
("#membership").empty();
226 $
(xml
).find("user").each(function(){
227 username
= $
(this
).find("username").text();
228 $
("#membership").append("<div id='link_" + username +
"'><span class='text'>" + username +
"</span><a class='link_submit' href='no_javascript' id='" + username +
"_membership_list' title='<?php echo xla('Edit'); ?> " + username +
"'> <i class='fa fa-pencil' aria-hidden='true'></i></a></span><a class='link_submit' href='no_javascript' id='" + username +
"_membership_hide' style='display: none' title='<?php echo xla('Hide'); ?> " + username +
"'> <i class='fa fa-eye-slash' aria-hidden='true'></i></a><span class='alert' style='display: none;'> <?php echo xla('This user is not a member of any group'); ?>!!!</span><span class='loading' style='display: none;'> <?php echo xla('LOADING'); ?>...</span></div><div id='error_" + username +
"'></div><div id='" + username +
"' style='display: none'><div class='table-responsive'><table class='head'><thead><tr><th class='text-center'><span class='bold'><?php echo xla('Active'); ?></span></th><th class='text-center'><span class='bold'><?php echo xla('Inactive'); ?></span></th></tr><tbody><tr><td align='center'><select name='active[]' multiple></select><br /><p align='center'><input class='button_submit' type='button' title='<?php echo xla('Remove'); ?>' id='" + username +
"_membership_remove' value=' >> '></p></td><td align='center'><select name='inactive[]' multiple></select><br /><p align='center'><input class='button_submit' type='button' title='<?php echo xla('Add'); ?>' id='" + username +
"_membership_add' value=' << ' ></p></td></tr></tbody></table></div></div>");
229 if ($
(this
).find("alert").text() == "no membership") {
230 $
("#link_" + username +
" span.alert").show();
233 //Show the username list and remove loading indicator
234 $
("#membership").show("slow");
235 $
("#membership_edit span.loading:first").hide();
237 beforeSend
: function(){
238 //Show Loading indicator
239 $
("#membership_edit span.loading:first").show();
242 //Remove Loading indicator and previous error, if any, then show error
243 $
("#membership_edit span.loading:first").hide();
244 $
("#membership_error").empty();
245 $
("#membership_error").append("<span class='alert'><?php echo xla('ERROR, unable to collect data from server'); ?><br><br></span>");
246 $
("#membership_error").show();
252 function acl_show() {
253 if (!$
("#acl_show").prop('checked')) {
254 $
("#acl_error").empty();
255 $
("#none_acl_returns").hide();
256 $
("#none_acl_list").hide();
257 $
("#acl").hide("slow");
258 $
("#div_acl_add_form").hide("slow");
259 $
("#div_acl_remove_form").hide("slow");
265 url
: "../../library/ajax/adminacl_ajax.php",
271 success
: function(xml
){
272 $
("#acl_error").empty();
274 $
(xml
).find("acl").each(function(){
275 value_acl
= $
(this
).find("value").text();
276 title
= $
(this
).find("title").text();
277 titleDash
= value_acl
.replace(" ","-");
278 return_value
= $
(this
).find("returnid").text();
279 return_title
= $
(this
).find("returntitle").text();
280 note
= $
(this
).find("note").text();
281 $
("#acl").append("<div id='acl_link_" + titleDash +
"_" + return_value +
"'><span class='text' title='" + note +
"'>" + title +
"-" + return_title +
"</span><a class='link_submit' href='no_javascript' id='" + titleDash +
"_aco_list_" + return_value +
"' title='<?php echo xla('Edit'); ?> " + title +
"-" + return_title +
"'> <i class='fa fa-pencil' aria-hidden='true'></i></a></span><a class='link_submit' href='no_javascript' id='" + titleDash +
"_acl_hide_" + return_value +
"' style='display: none' title='<?php echo xla('Hide'); ?> " + title +
"-" + return_title +
"'> <i class='fa fa-eye-slash' aria-hidden='true'></i></a><span class='loading' style='display: none;'> <?php echo xla('LOADING'); ?>...</span></div><div id='acl_error_" + titleDash +
"_" + return_value +
"'></div><div id='acl_" + titleDash +
"_" + return_value +
"' style='display: none'><div class='table-responsive'><table class='head'><thead><tr><th class='text-center'><span class='bold'><?php echo xla('Active'); ?></span></th><th class='text-center'><span class='bold'><?php echo xla('Inactive'); ?></span></th></tr></thead><tbody><tr><td align='center'><select name='active[]' size='6' multiple class='form-control'></select><br /><p align='center'><input class='button_submit' type='button' title='<?php echo xla('Remove'); ?>' id='" + titleDash +
"_aco_remove_" + return_value +
"' value=' >> '></p></td><td align='center'><select name='inactive[]' size='6' multiple class='form-control'></select><br /><p align='center'><input class='button_submit' type='button' title='<?php echo xla('Add'); ?>' id='" + titleDash +
"_aco_add_" + return_value +
"' value=' << ' ></p></td></tr></tbody></table></div></div>");
283 //Show the acl list and add link. Remove loading indicator.
284 $
("#acl").show("slow");
285 $
("#acl_edit div span.loading:first").hide();
286 $
("#none_acl_returns").show();
287 $
("#none_acl_list").show();
289 beforeSend
: function(){
290 //Show Loading indicator
291 $
("#acl_edit div span.loading:first").show();
294 //Remove Loading indicator and previous error, if any, then show error
295 $
("#acl_edit div span.loading:first").hide();
296 $
("#acl_error").empty();
297 $
("#acl_error").append("<span class='alert'><?php echo xla('ERROR, unable to collect data from server'); ?><br><br></span>");
298 $
("#acl_error").show();
304 function generic_click(cthis
) {
305 //set up variables and html page pointers
306 temparray
= cthis
.id
.split("_");
307 identity
= temparray
[0];
308 identityFormatted
= identity
.replace("-"," ");
309 control
= temparray
[1];
310 action
= temparray
[2];
311 return_value
= temparray
[3];
312 if (control
== "membership") {
313 contentPointer
= "#" + identity
.replace(/([ .])/g
,"\\$1");
314 linkPointer
= "#link_" + identity
.replace(/([ .])/g
,"\\$1");
316 errorPointer
= "#error_" + identity
.replace(/([ .])/g
,"\\$1");
318 if (control
== "acl" || control
== "aco") {
319 contentPointer
= "#acl_" + identity +
"_" + return_value
;
320 linkPointer
= "#acl_link_" + identity +
"_" + return_value
;
322 errorPointer
= "#acl_error_" + identity +
"_" + return_value
;
324 //special cases, show add/remove acl forms
325 if (identity
== "none" && control
== "acl") { //action == "returns"
326 if (action
== "returns") {
327 contentPointer
= "#div_acl_add_form";
329 else if (action
== "list") {
330 contentPointer
= "#div_acl_remove_form";
332 linkPointer
= "#acl_edit";
333 linkPointerPost
=":first";
334 errorPointer
= "#acl_error";
337 //If clicked Hide link
338 if (action
== "hide") {
339 //Remove stuff and show Edit link
340 $
(contentPointer
).hide("slow");
341 $
(errorPointer
).hide();
342 $
(linkPointer +
" a.link_submit:last").hide();
343 $
(linkPointer +
" a.link_submit:first").show();
347 //If clicked Add with ACO or membership, then collect selections
348 if (action
== "add" && !(control
== "acl")) {
350 selected
= $
(contentPointer +
" select:last").val();
353 //If clicked Remove with ACO or membership, then collect selections
354 if (action
== "remove" && !(control
== "acl")) {
356 selected
= $
(contentPointer +
" select:first").val();
362 url
: "../../library/ajax/adminacl_ajax.php",
365 name
: identityFormatted
,
368 'selection[]': selected
,
369 return_value
: return_value
371 success
: function(xml
){
373 //SPECIAL CASES to show the add/remove acl form, then exit
374 if (identity
== "none" && control
== "acl") {
375 $
(contentPointer +
" select").empty();
376 if (action
== "returns") {
377 $
(xml
).find("return").each(function(){
378 $
(contentPointer +
" select").append("<option value='" + $
(this
).find("returnid").text() +
"'>" + $
(this
).find("returntitle").text() +
"</option>");
381 else if (action
== "list") {
382 $
(xml
).find("acl").each(function(){
383 $
(contentPointer +
" select").append("<option value='" + $
(this
).find("value").text() +
"-" + $
(this
).find("returnid").text() +
"'>" + $
(this
).find("title").text() +
"-" + $
(this
).find("returntitle").text() +
"</option>");
386 $
(contentPointer +
" option").removeAttr('selected');
387 $
(contentPointer
).show("slow");
388 $
("#none_acl_returns").hide();
389 $
("#none_acl_list").hide();
390 $
(linkPointer +
" span.loading" + linkPointerPost
).hide();
394 if (control
== "membership") {
395 //Remove, then re-populate, then set size of selection boxes
396 $
(contentPointer +
" select").empty();
399 $
(xml
).find("active").find("group").each(function(){
400 $
(contentPointer +
" select:first").append("<option value='" + $
(this
).find("value").text() +
"'>" + $
(this
).find("label").text() +
"</option>");
401 counterActive
= counterActive +
1;
403 $
(xml
).find("inactive").find("group").each(function(){
404 $
(contentPointer +
" select:last").append("<option value='" + $
(this
).find("value").text() +
"'>" + $
(this
).find("label").text() +
"</option>");
405 counterInactive
= counterInactive +
1;
407 $
(contentPointer +
" option").removeAttr('selected');
408 if (counterActive
> counterInactive
) {
409 size
= counterActive
;
412 size
= counterInactive
;
417 if (counterActive
> 0) {
418 //ensure remove the no active group alert
419 $
(linkPointer +
" span.alert").hide();
423 if (control
== "acl" || control
== "aco") {
424 //Remove, then re-populate, then set size of selection boxes
425 $
(contentPointer +
" select").empty();
428 $
(xml
).find("active").find("section").each(function(){
429 $
(contentPointer +
" select:first").append("<optgroup label='" + $
(this
).find("name").text() +
"'>");
430 counterActive
= counterActive +
1;
431 $
(this
).find("aco").each(function(){
432 $
(contentPointer +
" select:first").append("<option value='" + $
(this
).find("id").text() +
"'>" + $
(this
).find("title").text() +
"</option>");
433 counterActive
= counterActive +
1;
435 $
(contentPointer +
" select:first").append("</optgroup>");
437 $
(xml
).find("inactive").find("section").each(function(){
438 $
(contentPointer +
" select:last").append("<optgroup label='" + $
(this
).find("name").text() +
"'>");
439 counterInactive
= counterInactive +
1;
440 $
(this
).find("aco").each(function(){
441 $
(contentPointer +
" select:last").append("<option value='" + $
(this
).find("id").text() +
"'>" + $
(this
).find("title").text() +
"</option>");
442 counterInactive
= counterInactive +
1;
444 $
(contentPointer +
" select:last").append("</optgroup>");
446 $
(contentPointer +
" option").removeAttr('selected');
447 if (counterActive
> counterInactive
) {
448 size
= counterActive
;
451 size
= counterInactive
;
458 //display the selection boxes
459 $
(contentPointer +
" select").attr('size', size
);
460 $
(contentPointer
).show("slow");
462 if (action
== "list") {
463 //Remove Edit link and show Hide link
464 $
(linkPointer +
" a.link_submit:first").hide();
465 $
(linkPointer +
" a.link_submit:last").show();
468 //Remove Loading indicator
469 $
(linkPointer +
" span.loading" + linkPointerPost
).hide();
471 //Remove old errors, then display any new errors to user
472 $
(errorPointer
).empty();
473 $
(xml
).find("error").each(function(){
474 $
(errorPointer
).append("<span class='alert'>" + $
(this
).text() +
"<br></span>");
475 $
(errorPointer
).show();
478 beforeSend
: function(){
479 //Show Loading indicator
480 $
(linkPointer +
" span.loading" + linkPointerPost
).show();
483 //Remove Loading indicator and show errors
484 $
(linkPointer +
" span.loading" + linkPointerPost
).hide();
485 $
(errorPointer
).empty();
486 $
(errorPointer
).append("<span class='alert'><?php echo xla('ERROR, unable to collect data from server'); ?><br></span>");
487 $
(errorPointer
).show();
495 if ($GLOBALS['enable_help'] == 1) {
496 $help_icon = '<a class="pull-right oe-help-redirect" data-target="#myModal" data-toggle="modal" href="#" id="help-href" name="help-href" style="color:#676666" title="' . xla("Click to view Help") . '"><i class="fa fa-question-circle" aria-hidden="true"></i></a>';
497 } elseif ($GLOBALS['enable_help'] == 2) {
498 $help_icon = '<a class="pull-right oe-help-redirect" data-target="#myModal" data-toggle="modal" href="#" id="help-href" name="help-href" style="color:#DCD6D0 !Important" title="' . xla("To enable help - Go to Administration > Globals > Features > Enable Help Modal") . '"><i class="fa fa-question-circle" aria-hidden="true"></i></a>';
499 } elseif ($GLOBALS['enable_help'] == 0) {
504 <body
class="body_top">
505 <div
class="container">
507 <div
class="col-xs-12">
508 <div
class="page-header clearfix">
509 <h2
class="clearfix"><span id
='header_text'><?php
echo xlt("Access Control List Administration"); ?
></span
>  
; 
; <?php
echo ($phpgacl_location) ?
"<a href='../../gacl/admin/acl_admin.php' onclick='top.restoreSession()'><i id='advanced-tooltip' class='fa fa-external-link fa-2x small' aria-hidden='true'></i> </a>" : ""; ?
><?php
echo $help_icon; ?
></h2
>
514 <div
class="col-xs-12">
515 <div id
='membership_edit'>
516 <span
class="bold"><input id
='membership_show' type
='checkbox'><?php
echo xlt('User Memberships'); ?
></span
> <i id
='user-tooltip' class="fa fa-info-circle text-primary" aria
-hidden
="true"></i
>
517 <span
class='loading' style
='display: none;'> 
; 
; 
; 
; 
;<?php
echo xlt('LOADING'); ?
>...</span
>
518 <div id
='membership_error'></div
>
519 <div
class="section" id
='membership' style
='display: none;'></div
>
522 <div style
='margin-bottom:5px'>
523 <span
class="bold" ><input id
='acl_show' type
='checkbox'><?php
echo xlt('Groups and Access Controls'); ?
></span
> <i id
='group-tooltip' class="fa fa-info-circle text-primary" aria
-hidden
="true"></i
>
525 <a
class='link_submit btn btn-default btn-add' href
='no_javascript' id
='none_acl_returns' style
='display: none;' title
='<?php echo xla('Add
New Group
'); ?>'><?php
echo xlt('Add New Group'); ?
></a
>
526 <a
class='link_submit btn btn-default btn-cancel' href
='no_javascript' id
='none_acl_list' style
='display: none;' title
='<?php echo xla('Remove Group
'); ?>'><?php
echo xlt('Remove Group'); ?
></a
>
527 <span
class='loading' style
='display: none;'> 
; 
; 
; 
; 
;<?php
echo xlt('LOADING'); ?
>...</span
>
528 <div id
='acl_error'></div
>
529 <div id
='div_acl_add_form' class='section' style
='display: none;'>
530 <form action
="no_javascript" class="clearfix" id
="acl_add_form" method
="post" name
="acl_add_form">
531 <span
class='bold'><?php
echo xlt('New Group Information'); ?
></span
> <i id
='new-group-tooltip' class="fa fa-info-circle text-primary" aria
-hidden
="true"></i
>
532 <span
class='loading' style
='display: none;'> 
; 
; 
; 
; 
;<?php
echo xlt('LOADING'); ?
>...</span
>
533 <div
class='col-xs-12'>
535 <div
class='col-xs-4'>
536 <label
class="control-label" for="title_field"><?php
echo xlt('Title'); ?
>:</label
>
537 <input id
="title_field" type
="text" class="form-control">
539 <div
class='col-xs-6'>
540 <br
><span
class="alert" id
="title_error"></span
>
544 <div
class='col-xs-4'>
545 <label
class="control-label" for="id_field"><?php
echo xlt('Identifier(one word)'); ?
>:</label
>
546 <input id
="id_field" type
="text" class="form-control">
548 <div
class='col-xs-6'>
549 <br
><span
class="alert" id
="identifier_error"></span
>
553 <div
class='col-xs-4'>
554 <label
class="control-label" for="return_field"><?php
echo xlt('Return Value'); ?
>:</label
>
555 <select id
="return_field" class="form-control">
558 <div
class='col-xs-6'>
559 <br
><span
class="alert" id
="return_error"></span
>
563 <div
class='col-xs-4'>
564 <label
class="control-label" for="desc_field"><?php
echo xlt('Description'); ?
>:</label
>
565 <input id
="desc_field" type
="text" class="form-control">
567 <div
class='col-xs-6'>
568 <br
><span
class="alert" id
="description_error"></span
>
572 <div
class="col-xs-12" style
="padding:15px 18px">
573 <button type
="submit" class="button_acl_add btn btn-default" id
="button_acl_add_submit" title
='<?php echo xla('Add Group
'); ?>'><?php
echo xlt('Add Group'); ?
></button
>
574 <button type
="reset" class="button_acl_add btn btn-link" id
="button_acl_add_clear" title
='<?php echo xla('Clear
'); ?>'><?php
echo xlt('Clear'); ?
></button
>
575 <button type
="reset" class="button_acl_add btn btn-link btn-cancel oe-opt-btn-separate-left" id
="button_acl_add_cancel" title
='<?php echo xla('Cancel
'); ?>'><?php
echo xlt('Cancel'); ?
></button
>
581 <div id
='div_acl_remove_form' class='section' style
='display: none;'>
582 <form action
="no_javascript" class="clearfix" id
="acl_remove_form" method
="post" name
="acl_remove_form">
583 <div style
='margin-bottom:5px'>
584 <span
class='bold'><?php
echo xlt('Remove Group Form'); ?
></span
> <i id
='remove-group-tooltip' class="fa fa-info-circle text-primary" aria
-hidden
="true"></i
>
585 <span
class='loading' style
='display: none;'> 
; 
; 
; 
; 
;<?php
echo xlt('LOADING'); ?
>...</span
>
587 <div
class='col-xs-12'>
589 <div
class='col-xs-4'>
590 <label
class="control-label" for="acl_field"><?php
echo xlt('Group'); ?
>:</label
>
591 <select id
="acl_field" class='form-control'>
594 <div
class='col-xs-6'>
595 <br
><span
class="alert" id
="aclTitle_error"></span
>
599 <div
class='col-xs-12'>
601 <span
class='text'><?php
echo xlt('Do you really want to delete this group'); ?
>?
</span
>
605 <div
class='col-xs-4'>
607 <input type
="radio" name
="acl_remove_confirm" value
="yes"><span
class='text'><?php
echo xlt('Yes'); ?
></span
>
608 <input type
="radio" name
="acl_remove_confirm" value
="no" checked
><span
class='text'><?php
echo xlt('No'); ?
></span
>
610 <div
class='col-xs-6'>
611 <br
><span
class="alert" id
="remove_confirm_error"></span
>
615 <div
class="col-xs-12" style
="padding:15px 18px">
616 <button type
="submit" class="button_acl_remove btn btn-default" id
="button_acl_remove_delete" title
='<?php echo xla('Delete Group
'); ?>'><?php
echo xlt('Delete Group'); ?
></button
>
617 <button type
="reset" class="button_acl_remove btn btn-link btn-cancel oe-opt-btn-separate-left" id
="button_acl_remove_cancel" title
='<?php echo xla('Cancel
'); ?>'><?php
echo xlt('Cancel'); ?
></button
>
623 <div
class="section hideaway" id
='acl' style
='display: none;'></div
>
627 </div
><!--end of container div
-->
630 //home of the help modal ;)
631 //$GLOBALS['enable_help'] = 0; // Please comment out line if you want help modal to function on this page
632 if ($GLOBALS['enable_help'] == 1) {
633 echo "<script>var helpFile = 'adminacl_help.php'</script>";
634 //help_modal.php lives in interface, set path accordingly
635 require "../help_modal.php";