%PDF- %PDF-
Direktori : /home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/skins/flamingo/ |
Current File : //home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/skins/flamingo/rightsUI.vm |
#if($xcontext.getAction() != 'edit' && $xcontext.getAction() != 'admin') $response.sendRedirect($doc.getURL('edit', 'editor=rights')) #end #set ($formname = 'update') #set ($saveaction = 'save') ## ## Set on which document the rights should be saved ## ## Most of the time, it is the current document #set ($targetDocument = $doc) #if ($request.section == 'PageRights') ## But when the current page is the "PageRights" section of the page administration, the target doc is actually the ## "WebHome" page of the current space. #set ($parentSpace = $doc.documentReference.lastSpaceReference) #set ($targetDocument = $xwiki.getDocument($parentSpace)) #end ######################## ## display the interface ######################## ## inject the needed JS & CSS files $xwiki.jsfx.use('js/xwiki/usersandgroups/usersandgroups.js', true) $xwiki.ssfx.use('js/xwiki/usersandgroups/usersandgroups.css', true) $xwiki.jsfx.use('js/xwiki/table/livetable.js', true) $xwiki.ssfx.use('js/xwiki/table/livetable.css', true) ## for admin, register, programming and createwiki, allow preceedes over deny #if("$!request.section"=='wikis.rights') #set ($rightsLevels = {'createwiki': 0}) #set ($allowWins = [0]) #else #set ($rightsLevels = {'view': 0, 'comment': 1, 'edit': 2, 'script': 3, 'delete': 4, 'admin': 5, 'register': 6, 'programming': 7}) #set ($allowWins = [5, 6, 7]) #end #set ($levelsRights = {}) #foreach ($r in $rightsLevels.keySet()) #set ($discard = $levelsRights.put($rightsLevels.get($r), $r)) #end #set ($maxlevel = $rightsLevels.get('delete')) ## Default: view, comment, edit, script, delete #if("$!request.section"=='wikis.rights') #set ($maxlevel = $rightsLevels.get('createwiki')) #set ($clsname = 'XWiki.XWikiGlobalRights') #else #if($targetDocument.fullName == 'XWiki.XWikiPreferences') #if (("$!{request.editor}" == 'globaladmin') || "$!{editor}" == 'globaladmin') #set ($clsname = 'XWiki.XWikiGlobalRights') #if ($xcontext.database == 'xwiki') #set ($maxlevel = $rightsLevels.get('programming')) ## base + admin, register, programming #else #set ($maxlevel = $rightsLevels.get('register')) ## base + admin, register #end #else #set($clsname = 'XWiki.XWikiRights') #end #elseif ($targetDocument.documentReference.name == 'WebPreferences') #if (("$!{request.editor}" == 'spaceadmin' || "$!{editor}" == 'spaceadmin')) #set ($clsname = 'XWiki.XWikiGlobalRights') #set ($maxlevel = $rightsLevels.get('admin')) ## base + admin #else #set ($clsname = 'XWiki.XWikiRights') #end #else #set ($clsname = 'XWiki.XWikiRights') #end #end ## Get rights allowed for the current user #set ($currentAllowed = {}) #foreach ($i in [0..$maxlevel]) #set ($right = $levelsRights.get($i)) #set ($void = $currentAllowed.put($i, $services.security.authorization.hasAccess($right))) #end ## url to take the users and groups to display in the ajax-based table #set ($url = $targetDocument.getURL('get', 'xpage=getusersandgroups')) #set ($saveUrl = $targetDocument.getURL('edit', "form_token=$!{services.csrf.getToken()}&xpage=saverights&clsname=${clsname}&fullname=XWiki.XWikiGuest&uorg=users")) ## get the rights for XWikiGuest #set ($guest = 'XWiki.XWikiGuest') #set ($allowGuest = {}) #set ($denyGuest = {}) #foreach ($obj in $targetDocument.getObjects($clsname)) ## XWiki.XWikiGlobalRights or XWiki.XWikiRights #set ($pers = "$!obj.getProperty('users').getValue()") #if ($pers.matches("^(.*,)?${regextool.quote($guest)}(,.*)?$")) #set ($specifiedRights = $!obj.getProperty('levels').getValue().split(',')) #foreach ($right in $specifiedRights) #if ($rightsLevels.containsKey($right) && $maxlevel >= $rightsLevels.get($right)) #if($obj.getProperty('allow').getValue() == 1) #set($discard = $allowGuest.put($rightsLevels.get($right), "1")) #else #set($discard = $denyGuest.put($rightsLevels.get($right), "1")) #end #end #end #end #end #set ($r = []) #foreach ($i in [0..$maxlevel]) #set ($value = 0) #if ($allowWins.contains($i)) #if ($allowGuest.containsKey($i)) #set ($value = 1) #elseif ($denyGuest.containsKey($i)) #set ($value = 2) #end #else #if ($denyGuest.containsKey($i)) #set ($value = 2) #elseif ($allowGuest.containsKey($i)) #set ($value = 1) #end #end #set ($discard = $r.add($value)) #end <div id="xwikieditcontent"> <table id="usersandgroupstable" class="xwiki-livetable#if("$!editor" != '') $editor#end"> <tr> <td class="xwiki-livetable-pagination"> <span id="usersandgroupstable-limits" class="xwiki-livetable-limits"></span> <span id="usersandgroupstable-ajax-loader" class="xwiki-livetable-loader"><img src="$xwiki.getSkinFile('icons/xwiki/ajax-loader-large.gif')" alt="$services.localization.render('platform.livetable.loading')" title="" />$services.localization.render('platform.livetable.loading')</span> <span class="pagination"> <span id="usersandgroupstable-pagination-text" class="xwiki-livetable-pagination-text">$services.localization.render('platform.livetable.paginationPage')</span> <span id="usersandgroupstable-pagination" class="xwiki-livetable-pagination-content" ></span> </span> </td> </tr> <tr> <td class="xwiki-livetable-display-container"> <table class="xwiki-livetable-display"> <thead class="xwiki-livetable-display-header"> <tr class="userorgroups-header"> ## Groups/Users switch <th scope="col" class="usersorgroupsnames"> ## ToDo: workspace is deprecated #set ($isWorkspace = $services.workspace.isWorkspace($xcontext.database)) <label for="uorgg"> <input type="radio" id="uorgg" name="uorg" value="groups" checked="checked" onclick="if(!$('unregistered').hasClassName('hidden')) $('unregistered').addClassName('hidden'); #if ($isWorkspace) ## Unhide scope selection and automatically select the old index. if($('usersandgroupstable-filters-scope').hasClassName('hidden')) { $('usersandgroupstable-filters-scope').removeClassName('hidden'); $('wiki').options[groupScopeIndex].selected=true; } #end" /> $services.localization.render('rightsmanager.groups') </label> <label for="uorgu"> <input type="radio" id="uorgu" name="uorg" value="users" onclick="if($('unregistered').hasClassName('hidden')) $('unregistered').removeClassName('hidden'); #if ($isWorkspace) ## Hide scope selection and automatically select global scope. if(!$('usersandgroupstable-filters-scope').hasClassName('hidden')) { $('usersandgroupstable-filters-scope').addClassName('hidden'); groupScopeIndex = $('wiki').selectedIndex; $('wiki').options[1].selected=true; } #end" /> $services.localization.render('rightsmanager.users') </label> </th> ## Column headers for each configurable access right #foreach ($i in [0..$maxlevel]) #if ($currentAllowed[$i]) <th scope="col" class="rights">$services.localization.render("rightsmanager.${levelsRights.get($i)}")</th> #end #end </tr> <tr id="unregistered"> ## Rights for guests, statically displayed outside the livetable <td id="unreguser" data-title="$escapetool.xml($services.localization.render('rightsmanager.username'))">$services.localization.render('rightsmanager.unregisteredusers')</td> #foreach ($i in [0..$maxlevel]) #if ($currentAllowed[$i]) <td class="rights" id="td${levelsRights.get($i)}" data-title="$escapetool.xml($services.localization.render("rightsmanager.${levelsRights.get($i)}"))"></td> #end #end </tr> <tr id="usersandgroupstable-filters"> ## Users/groups filter <td><label for="name">$services.localization.render('rightsmanager.searchfilter')</label><input id="name" name="name" type="text"/> #if(!$xcontext.isMainWiki()) #set($mainwk = false) #else #set($mainwk = true) #end #if(!$mainwk) ## display the combobox only in a local wiki <div id="usersandgroupstable-filters-scope"> <label for="wiki">$services.localization.render('rightsmanager.searchscope')</label> <select id="wiki" name="wiki" style="margin-left:10px;"> <option value="local" selected="selected">$services.localization.render('rightsmanager.local')</option> <option value="global">$services.localization.render('rightsmanager.global')</option> <option value="both">$services.localization.render('rightsmanager.both')</option> </select> </div> #else <input type="hidden" name="wiki" value="local"/> #end #set ($colsp = $maxlevel + 1) </td> <td colspan="$colsp"><input type="hidden" name="clsname" value="$clsname" /></td> </tr> </thead> ## Livetable placeholder, will be filled in from Javascript <tbody id="usersandgroupstable-display" class="xwiki-livetable-display-body"><tr><td> </td></tr></tbody> </table> </td> </tr> </table> ## Global settings: mandatory authentication for view/edit, captcha #set ($guest_comment_captcha_prop = $targetDocument.getObject('XWiki.XWikiPreferences').getxWikiClass().get('guest_comment_requires_captcha')) #if (("$!request.editor" == 'globaladmin' || "$!editor" == 'globaladmin' || $guest_comment_captcha_prop) && $request.section != 'wikis.rights') <dl class="rights-settings"> #if ("$!request.editor" == 'globaladmin' || "$!editor" == 'globaladmin') #set ($auth_view = $targetDocument.getObject('XWiki.XWikiPreferences').getProperty('authenticate_view').getValue()) #if ("$!auth_view" == '1') #set ($view_icon = $xwiki.getSkinFile('js/xwiki/usersandgroups/img/allow-black.png')) #set ($view_alt = 'yes') #else #set ($view_icon = $xwiki.getSkinFile('js/xwiki/usersandgroups/img/none.png')) #set ($view_alt = 'no') #end <dt> <label for="authenticate_view"> <input type="image" id="authenticate_view" alt="$view_alt" src="$view_icon" class="icon" /> $services.localization.render('authenticate_view') </label> <dd>#* A <dd> must be present after a <dt> to be HTML5 valid *#</dd> </dt> #set ($auth_edit = $targetDocument.getObject('XWiki.XWikiPreferences').getProperty('authenticate_edit').getValue()) #if ("$!auth_edit" == '1') #set ($edit_icon = $xwiki.getSkinFile('js/xwiki/usersandgroups/img/allow-black.png')) #set ($edit_alt = 'yes') #else #set ($edit_icon = $xwiki.getSkinFile('js/xwiki/usersandgroups/img/none.png')) #set ($edit_alt = 'no') #end <dt> <label for="authenticate_edit"> <input type="image" id="authenticate_edit" alt="$edit_alt" src="$edit_icon" class="icon" /> $services.localization.render('authenticate_edit') </label> <dd>#* A <dd> must be present after a <dt> to be HTML5 valid *#</dd> </dt> #end #if ($guest_comment_captcha_prop) ## If we are in globaladmin, we don't want to get the setting from XWiki.WebPreferences... #if ("$!request.editor" == 'globaladmin' || "$!editor" == 'globaladmin') #set ($guest_comment_requires_captcha = $xwiki.getXWikiPreferenceAsInt('guest_comment_requires_captcha', 0)) #else #set ($guest_comment_requires_captcha = $xwiki.getSpacePreferenceAsInt('guest_comment_requires_captcha', 0)) #end #if($guest_comment_requires_captcha == 1) #set ($guest_comment_requires_captcha_icon = $xwiki.getSkinFile('js/xwiki/usersandgroups/img/allow-black.png')) #set ($guest_comment_requires_captcha_alt = 'yes') #else #set ($guest_comment_requires_captcha_icon = $xwiki.getSkinFile('js/xwiki/usersandgroups/img/none.png')) #set ($guest_comment_requires_captcha_alt = 'no') #end <dt> <label for="guest_comment_requires_captcha"> <input type="image" id="guest_comment_requires_captcha" alt="$guest_comment_requires_captcha_alt" src="$guest_comment_requires_captcha_icon" class="icon" /> $services.localization.render('rightsmanager.guestcommentrequirescaptcha') </label> </dt> <dd>#* A <dd> must be present after a <dt> to be HTML5 valid *#</dd> #end </dl> #end <script type="text/javascript"> //<![CDATA[ (function() { function hideScopeForUsers() { if ($('uorgu').checked) { // Hide scope filter. $('usersandgroupstable-filters-scope').addClassName('hidden'); // Default to global. $('wiki').options[1].selected=true; return true; } return false; } function startup() { if (XWiki && XWiki.widgets && XWiki.widgets.LiveTable) { #if ($isWorkspace) window.groupScopeIndex = 0; hideScopeForUsers() || Event.observe(window, 'load', hideScopeForUsers); #end window.activeRights = [#foreach($i in [0..$maxlevel])#if ($currentAllowed[$i])"$levelsRights.get($i)",#end#end]; window.saveUrl = "$saveUrl"; window.saveUrl.replace(/&/g, "&"); var targetDocument = new XWiki.Document(XWiki.Model.resolve("$escapetool.javascript($services.model.serialize($targetDocument.documentReference, 'default'))", XWiki.EntityType.DOCUMENT)); window.currentUser = "$!{escapetool.javascript($xcontext.user)}"; window.unregUser = "XWiki.XWikiGuest"; // the callback function is called from LiveTable with 3 arguments var callback = function(row, i, table, idx) { return displayUsersAndGroups(row, i, table, idx, "$!{services.csrf.getToken()}", targetDocument) }; var ta = new XWiki.widgets.LiveTable("$url", "usersandgroupstable", callback, {"filtersNode": $('usersandgroupstable')}); #foreach($i in [0..$maxlevel]) #if ($currentAllowed[$i]) var chbx${i} = new MSCheckbox($("td${levelsRights.get($i)}"), "${levelsRights.get($i)}", window.saveUrl, "${r.get($i)}"); #end #end Event.observe(window, 'load', function() { if($('uorgg').checked && !$('unregistered').hasClassName('hidden')) { $('unregistered').addClassName('hidden'); } else if($('uorgu').checked && $('unregistered').hasClassName('hidden')) { $('unregistered').removeClassName('hidden'); } }); #if("$!editor" == 'globaladmin' && $request.section != 'wikis.rights') Event.observe($('authenticate_view'), 'click', setBooleanPropertyFromLiveCheckbox($('authenticate_view'), '$xwiki.getURL('XWiki.XWikiPreferences', 'save', "form_token=$!{services.csrf.getToken()}")', 'XWiki.XWikiPreferences', 0)); Event.observe($('authenticate_edit'), 'click', setBooleanPropertyFromLiveCheckbox($('authenticate_edit'), '$xwiki.getURL('XWiki.XWikiPreferences', 'save', "form_token=$!{services.csrf.getToken()}")', 'XWiki.XWikiPreferences', 0)); #end #if($guest_comment_captcha_prop && $request.section != 'wikis.rights') Event.observe($('guest_comment_requires_captcha'), 'click', setBooleanPropertyFromLiveCheckbox($('guest_comment_requires_captcha'), '$targetDocument.getURL('save', "form_token=$!{services.csrf.getToken()}")', 'XWiki.XWikiPreferences', 0)); #end return true; } return false; } // Initialize liveTable (XWiki && XWiki.isInitialized && startup()) || document.observe('xwiki:livetable:loading', startup); })(); //]]> </script> <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> <input type="submit" value="$services.localization.render('save')" class="sr-only sr-only-focusable" /> </div> ## xwikieditcontent