[Rt-commit] rt branch, 4.6/core-rightinspector, repushed

Michel Rodriguez michel at bestpractical.com
Mon Sep 9 10:04:56 EDT 2019


The branch 4.6/core-rightinspector was deleted and repushed:
       was fb35100b212808c0d154c0225e45703461f2d9eb
       now a5266b786adfbded4e2e24acac1e41121d04e172

 1: 1eeb8b344 !  1: 40dec2d6e Cored RT::Extension::RightsInspector
    @@ -1,20 +1,26 @@
     Author: michel <michel at bestpractical.com>
     
         Cored RT::Extension::RightsInspector
    -    
    -    Missing: the stylesheet is not used, the javascript only works if RT is
    -    at the top level of the web server (ie not in /rt/)
     
     diff --git a/lib/RT/Interface/Web/MenuBuilder.pm b/lib/RT/Interface/Web/MenuBuilder.pm
     --- a/lib/RT/Interface/Web/MenuBuilder.pm
     +++ b/lib/RT/Interface/Web/MenuBuilder.pm
    +@@
    + #
    + # COPYRIGHT:
    + #
    +-# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC
    ++# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
    + #                                          <sales at bestpractical.com>
    + #
    + # (Except where explicitly superseded by other copyright notices)
     @@
                 path        => '/Admin/Tools/Queries.html',
             );
          }
     +    $admin_tools->child( rights_inspector =>
     +        title => loc('Rights Inspector'),
    -+        description => loc('Search your configured permissions'),
    ++        description => loc('Search your configured rights'),
     +        path  => '/Admin/Tools/RightsInspector.html',
     +    );
          $admin_tools->child( shredder =>
    @@ -26,6 +32,54 @@
     --- /dev/null
     +++ b/lib/RT/RightsInspector.pm
     @@
    ++# BEGIN BPS TAGGED BLOCK {{{
    ++#
    ++# COPYRIGHT:
    ++#
    ++# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
    ++#                                          <sales at bestpractical.com>
    ++#
    ++# (Except where explicitly superseded by other copyright notices)
    ++#
    ++#
    ++# LICENSE:
    ++#
    ++# This work is made available to you under the terms of Version 2 of
    ++# the GNU General Public License. A copy of that license should have
    ++# been provided with this software, but in any event can be snarfed
    ++# from www.gnu.org.
    ++#
    ++# This work is distributed in the hope that it will be useful, but
    ++# WITHOUT ANY WARRANTY; without even the implied warranty of
    ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    ++# General Public License for more details.
    ++#
    ++# You should have received a copy of the GNU General Public License
    ++# along with this program; if not, write to the Free Software
    ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    ++# 02110-1301 or visit their web page on the internet at
    ++# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
    ++#
    ++#
    ++# CONTRIBUTION SUBMISSION POLICY:
    ++#
    ++# (The following paragraph is not intended to limit the rights granted
    ++# to you to modify and distribute this software under the terms of
    ++# the GNU General Public License and is only of importance to you if
    ++# you choose to contribute your changes and enhancements to the
    ++# community by submitting them to Best Practical Solutions, LLC.)
    ++#
    ++# By intentionally submitting any modifications, corrections or
    ++# derivatives to this work, or any other work intended for use with
    ++# Request Tracker, to Best Practical Solutions, LLC, you confirm that
    ++# you are the copyright holder for those contributions and you grant
    ++# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
    ++# royalty-free, perpetual, license to use, copy, create derivative
    ++# works based on those contributions, and sublicense and distribute
    ++# those contributions and any derivatives thereof.
    ++#
    ++# END BPS TAGGED BLOCK }}}
    ++
     +package RT::RightsInspector;
     +use strict;
     +use warnings;
    @@ -44,7 +98,7 @@
     +#     record     - generalization of principal and object since rendering
     +#                  and whatnot can share code
     +
    -+my $PageLimit = 100;
    ++my $PageLimit = 10;
     +
     +$RT::Interface::Web::WHITELISTED_COMPONENT_ARGS{'/Admin/RightsInspector/index.html'} = ['Principal', 'Object', 'Right'];
     +
    @@ -554,8 +608,8 @@
     +        }
     +
     +        KEY: for my $key (qw/principal object/) {
    -+	    # filtering on the serialized record is hacky, but doing the
    -+	    # searching in SQL is absolutely a nonstarter
    ++            # filtering on the serialized record is hacky, but doing the
    ++            # searching in SQL is absolutely a nonstarter
     +            next KEY unless $use_regex_search_for{$key};
     +
     +            if (my $term = $args{$key}) {
    @@ -610,6 +664,7 @@
     +# should the "Revoke" button be disabled? by default it is for the two required
     +# system privileges; if such privileges needed to be revoked they can be done
     +# through the ordinary ACL management UI
    ++# it is also disabled for SuperUser, otherwise it is too easy to completely hose the system
     +sub DisableRevoke {
     +    my $self = shift;
     +    my $ACE = shift;
    @@ -619,7 +674,7 @@
     +
     +    if ($Principal->Object->Domain eq 'ACLEquivalence') {
     +        my $User = $Principal->Object->InstanceObj;
    -+        if ($User->Id == RT->SystemUser->Id && $Object->isa('RT::System') && $Right eq 'SuperUser') {
    ++        if ($Object->isa('RT::System') && $Right eq 'SuperUser') {
     +            return 1;
     +        }
     +        if ($User->Id == RT->Nobody->Id && $Object->isa('RT::System') && $Right eq 'OwnTicket') {
    @@ -859,10 +914,57 @@
     --- /dev/null
     +++ b/share/html/Admin/Tools/RightsInspector.html
     @@
    ++# BEGIN BPS TAGGED BLOCK {{{
    ++#
    ++# COPYRIGHT:
    ++#
    ++# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
    ++#                                          <sales at bestpractical.com>
    ++#
    ++# (Except where explicitly superseded by other copyright notices)
    ++#
    ++#
    ++# LICENSE:
    ++#
    ++# This work is made available to you under the terms of Version 2 of
    ++# the GNU General Public License. A copy of that license should have
    ++# been provided with this software, but in any event can be snarfed
    ++# from www.gnu.org.
    ++#
    ++# This work is distributed in the hope that it will be useful, but
    ++# WITHOUT ANY WARRANTY; without even the implied warranty of
    ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    ++# General Public License for more details.
    ++#
    ++# You should have received a copy of the GNU General Public License
    ++# along with this program; if not, write to the Free Software
    ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    ++# 02110-1301 or visit their web page on the internet at
    ++# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
    ++#
    ++#
    ++# CONTRIBUTION SUBMISSION POLICY:
    ++#
    ++# (The following paragraph is not intended to limit the rights granted
    ++# to you to modify and distribute this software under the terms of
    ++# the GNU General Public License and is only of importance to you if
    ++# you choose to contribute your changes and enhancements to the
    ++# community by submitting them to Best Practical Solutions, LLC.)
    ++#
    ++# By intentionally submitting any modifications, corrections or
    ++# derivatives to this work, or any other work intended for use with
    ++# Request Tracker, to Best Practical Solutions, LLC, you confirm that
    ++# you are the copyright holder for those contributions and you grant
    ++# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
    ++# royalty-free, perpetual, license to use, copy, create derivative
    ++# works based on those contributions, and sublicense and distribute
    ++# those contributions and any derivatives thereof.
    ++#
    ++# END BPS TAGGED BLOCK }}}
     +<& /Admin/Elements/Header, Title => loc("Rights Inspector") &>
     +<& /Elements/Tabs &>
     +
    -+<div class="help">
    ++<div class="help" id="rt-help-text">
     +<&| /Widgets/TitleBox, title => loc('Usage Help') &>
     +<p>The Rights Inspector lets you search your configured permissions based
     +on several different criteria. Each permission consists of a "Principal"
    @@ -934,6 +1036,53 @@
     --- /dev/null
     +++ b/share/html/Helpers/RightsInspector/Revoke
     @@
    ++# BEGIN BPS TAGGED BLOCK {{{
    ++#
    ++# COPYRIGHT:
    ++#
    ++# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
    ++#                                          <sales at bestpractical.com>
    ++#
    ++# (Except where explicitly superseded by other copyright notices)
    ++#
    ++#
    ++# LICENSE:
    ++#
    ++# This work is made available to you under the terms of Version 2 of
    ++# the GNU General Public License. A copy of that license should have
    ++# been provided with this software, but in any event can be snarfed
    ++# from www.gnu.org.
    ++#
    ++# This work is distributed in the hope that it will be useful, but
    ++# WITHOUT ANY WARRANTY; without even the implied warranty of
    ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    ++# General Public License for more details.
    ++#
    ++# You should have received a copy of the GNU General Public License
    ++# along with this program; if not, write to the Free Software
    ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    ++# 02110-1301 or visit their web page on the internet at
    ++# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
    ++#
    ++#
    ++# CONTRIBUTION SUBMISSION POLICY:
    ++#
    ++# (The following paragraph is not intended to limit the rights granted
    ++# to you to modify and distribute this software under the terms of
    ++# the GNU General Public License and is only of importance to you if
    ++# you choose to contribute your changes and enhancements to the
    ++# community by submitting them to Best Practical Solutions, LLC.)
    ++#
    ++# By intentionally submitting any modifications, corrections or
    ++# derivatives to this work, or any other work intended for use with
    ++# Request Tracker, to Best Practical Solutions, LLC, you confirm that
    ++# you are the copyright holder for those contributions and you grant
    ++# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
    ++# royalty-free, perpetual, license to use, copy, create derivative
    ++# works based on those contributions, and sublicense and distribute
    ++# those contributions and any derivatives thereof.
    ++#
    ++# END BPS TAGGED BLOCK }}}
     +<%ARGS>
     +$id => undef
     +</%ARGS>
    @@ -958,6 +1107,53 @@
     --- /dev/null
     +++ b/share/html/Helpers/RightsInspector/Search
     @@
    ++# BEGIN BPS TAGGED BLOCK {{{
    ++#
    ++# COPYRIGHT:
    ++#
    ++# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
    ++#                                          <sales at bestpractical.com>
    ++#
    ++# (Except where explicitly superseded by other copyright notices)
    ++#
    ++#
    ++# LICENSE:
    ++#
    ++# This work is made available to you under the terms of Version 2 of
    ++# the GNU General Public License. A copy of that license should have
    ++# been provided with this software, but in any event can be snarfed
    ++# from www.gnu.org.
    ++#
    ++# This work is distributed in the hope that it will be useful, but
    ++# WITHOUT ANY WARRANTY; without even the implied warranty of
    ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    ++# General Public License for more details.
    ++#
    ++# You should have received a copy of the GNU General Public License
    ++# along with this program; if not, write to the Free Software
    ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    ++# 02110-1301 or visit their web page on the internet at
    ++# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
    ++#
    ++#
    ++# CONTRIBUTION SUBMISSION POLICY:
    ++#
    ++# (The following paragraph is not intended to limit the rights granted
    ++# to you to modify and distribute this software under the terms of
    ++# the GNU General Public License and is only of importance to you if
    ++# you choose to contribute your changes and enhancements to the
    ++# community by submitting them to Best Practical Solutions, LLC.)
    ++#
    ++# By intentionally submitting any modifications, corrections or
    ++# derivatives to this work, or any other work intended for use with
    ++# Request Tracker, to Best Practical Solutions, LLC, you confirm that
    ++# you are the copyright holder for those contributions and you grant
    ++# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
    ++# royalty-free, perpetual, license to use, copy, create derivative
    ++# works based on those contributions, and sublicense and distribute
    ++# those contributions and any derivatives thereof.
    ++#
    ++# END BPS TAGGED BLOCK }}}
     +<%INIT>
     +use RT::RightsInspector;
     +
    @@ -977,21 +1173,6 @@
      }
     +
     +
    -+#rights-inspector .search input, 
    -+#rights-inspector .results .result .cell {
    -+    display: inline-block;
    -+    width: 15em;
    -+}
    -+
    -+#rights-inspector .results .result .cell {
    -+    text-overflow: ellipsis;
    -+    overflow: hidden;
    -+}
    -+
    -+#rights-inspector .results .result .cell.revoke {
    -+    display: inline-block;
    -+    width: auto;
    -+}
     +
     +#rights-inspector .search .loading,
     +#rights-inspector > .loading {
    @@ -1016,15 +1197,11 @@
     +#rights-inspector.error .results {
     +    color: red;
     +    font-weight: bold;
    ++    
     +}
     +
     +#rights-inspector.awaiting-first-result .results {
     +    opacity: 0.5;
    -+}
    -+
    -+#rights-inspector .results .result .cell {
    -+    padding: 2px;
    -+    vertical-align: top;
     +}
     +
     +#rights-inspector .results .result:nth-child(even) {
    @@ -1036,31 +1213,40 @@
     +    font-weight: bold;
     +}
     +
    ++#rights-inspector .results .result .name {
    ++    display: block;
    ++}
    ++
    ++#rights-inspector .results .result .record.disabled .name {
    ++    text-decoration: line-through;
    ++}
    ++
     +#rights-inspector .results .result .detail {
     +    font-size: 80%;
     +    color: #AAA;
    -+    display: block;
    -+}
    -+
    -+#rights-inspector .results .result .record.disabled .name {
    -+    text-decoration: line-through;
    ++    display: inline-block;
     +}
     +
     +#rights-inspector .results .result .primary {
     +    font-size: 80%;
     +    font-style: italic;
    -+    display: block;
    ++    display: inline-block;
    ++    padding-left: 3px;
    ++}
    ++
    ++#rights-inspector .results .result .primary .name {
    ++    display: inline-block;
     +}
     +
     +#rights-inspector .results .result .primary .detail {
     +    display: none;
     +}
     +
    -+#comp-Admin-RightsInspector kbd {
    ++#rt-help-text kbd {
     +    color: #111;
     +    border: 1px dashed #AAA;
     +    background-color: #F6F6F6;
    -+    padding: 1px;
    ++    padding: 2px 3px;
     +}
     +
     
    @@ -1268,13 +1454,18 @@
     +}
     +
     +function render_inspector_result (item) {
    -+    var revoke = item.disable_revoke ? 'class="ui-state-disabled" disabled="disabled"' : '';
    ++    var disabled_state = item.disable_revoke ? ' disabled="disabled"' : '';
    ++    var disabled_class = item.disable_revoke ? ' ui-state-disabled'   : '';
    ++    var revoke_action  = RT.Config.WebPath + '/Helpers/RightsInspector/Revoke?id=' + item.ace.id;
    ++
     +    return '<div class="result row">'
     +        +  '  <div class="principal cell col-md-3">' + render_inspector_record( item.principal) + '</div>'
     +        +  '  <div class="object cell col-md-3">' + render_inspector_record( item.object) + '</div>'
     +        +  '  <div class="right cell col-md-3">' + item.right_highlighted + '</div>'
    -+        +  '  <div class="revoke cell col-md-2">'
    -+        +  '      <button type="button" data-action="/Helpers/RightsInspector/Revoke?id=' + item.ace.id + '" ' + revoke + '>Revoke</button>'
    ++        +  '  <div class="revoke cell col-md-1">'
    ++        +  '      <button type="button" class="revoke-button' + disabled_class + '"'
    ++        +             ' data-action="' + revoke_action + '" '
    ++        +             disabled_state + '>Revoke</button>'
     +        + '  </div>'
     +        + '</div>'
     +    ;
 2: dcb032b4d < --:  ------- Fixed formating
 3: df0835109 < --:  ------- Added generation of the proper URL in the JS even if the RT URL is not /
 4: 7b42639f9 < --:  ------- Change wording of the RightsInspector description
 5: 3601524a6 < --:  ------- Add licensing boilerplate
 6: e8254b9a7 < --:  ------- Change the help text id (and associated CSS rule)
 7: e9b6246cf < --:  ------- Use the RT provided RT.Config.WebPath to get the Web Path
 8: 16e549b26 < --:  ------- Create a Spinner widget
 9: 3002b6253 !  2: cd5a7d820 Improve formating with new themes
    @@ -1,6 +1,6 @@
     Author: michel <michel at bestpractical.com>
     
    -    Made everything work with bootstrap
    +    Improve formating with new themes
     
     diff --git a/lib/RT/RightsInspector.pm b/lib/RT/RightsInspector.pm
     --- a/lib/RT/RightsInspector.pm
    @@ -19,45 +19,53 @@
     --- a/share/html/Admin/Tools/RightsInspector.html
     +++ b/share/html/Admin/Tools/RightsInspector.html
     @@
    - <&|/Widgets/TitleBox, title => loc("Rights Inspector") &>
    - <form action="<%RT->Config->Get('WebPath')%>/Helpers/RightsInspector/Search" id="rights-inspector" class="search">
    -   <div class="row">
    --    <input class="col-md-3" value="<% $ARGS{Principal} %>" type="text" name="principal" placeholder="Principal">
    --    <input class="col-md-3" value="<% $ARGS{Object} %>" type="text" name="object" placeholder="Object">
    --    <input class="col-md-3" value="<% $ARGS{Right} %>" type="text" name="right" placeholder="Right">
    -+    <input class="col-md-3 form-control" value="<% $ARGS{Principal} %>" type="text" name="principal" placeholder="Principal">
    -+    <input class="col-md-3 form-control" value="<% $ARGS{Object} %>" type="text" name="object" placeholder="Object">
    -+    <input class="col-md-3 form-control" value="<% $ARGS{Right} %>" type="text" name="right" placeholder="Right">
    -   </div>
    - 
    --  <& /Widgets/Spinner &>
    --
    -   <div class="results">
    -   </div>
    -   <& /Widgets/Spinner &>
    - </form>
    --  <script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/static/js/rights-inspector.js"></script>
    - </&>
    - 
    - 
    -
    -diff --git a/share/html/Helpers/RightsInspector/Search b/share/html/Helpers/RightsInspector/Search
    ---- a/share/html/Helpers/RightsInspector/Search
    -+++ b/share/html/Helpers/RightsInspector/Search
    -@@
    - # END BPS TAGGED BLOCK }}}
    - <%INIT>
    - use RT::RightsInspector;
    --sleep(2);
    - my $results = RT::RightsInspector->Search(%ARGS);
    - $r->content_type('application/json; charset=utf-8');
    - RT::Interface::Web::CacheControlExpiresHeaders( Time => 'no-cache' );
    -
    -diff --git a/share/html/Widgets/Spinner b/share/html/Widgets/Spinner
    -new file mode 100644
    ---- /dev/null
    -+++ b/share/html/Widgets/Spinner
    -@@
    +-# BEGIN BPS TAGGED BLOCK {{{
    +-#
    +-# COPYRIGHT:
    +-#
    +-# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
    +-#                                          <sales at bestpractical.com>
    +-#
    +-# (Except where explicitly superseded by other copyright notices)
    +-#
    +-#
    +-# LICENSE:
    +-#
    +-# This work is made available to you under the terms of Version 2 of
    +-# the GNU General Public License. A copy of that license should have
    +-# been provided with this software, but in any event can be snarfed
    +-# from www.gnu.org.
    +-#
    +-# This work is distributed in the hope that it will be useful, but
    +-# WITHOUT ANY WARRANTY; without even the implied warranty of
    +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    +-# General Public License for more details.
    +-#
    +-# You should have received a copy of the GNU General Public License
    +-# along with this program; if not, write to the Free Software
    +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    +-# 02110-1301 or visit their web page on the internet at
    +-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
    +-#
    +-#
    +-# CONTRIBUTION SUBMISSION POLICY:
    +-#
    +-# (The following paragraph is not intended to limit the rights granted
    +-# to you to modify and distribute this software under the terms of
    +-# the GNU General Public License and is only of importance to you if
    +-# you choose to contribute your changes and enhancements to the
    +-# community by submitting them to Best Practical Solutions, LLC.)
    +-#
    +-# By intentionally submitting any modifications, corrections or
    +-# derivatives to this work, or any other work intended for use with
    +-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
    +-# you are the copyright holder for those contributions and you grant
    +-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
    +-# royalty-free, perpetual, license to use, copy, create derivative
    +-# works based on those contributions, and sublicense and distribute
    +-# those contributions and any derivatives thereof.
    +-#
    +-# END BPS TAGGED BLOCK }}}
     +%# BEGIN BPS TAGGED BLOCK {{{
     +%#
     +%# COPYRIGHT:
    @@ -105,6 +113,100 @@
     +%# those contributions and any derivatives thereof.
     +%#
     +%# END BPS TAGGED BLOCK }}}
    + <& /Admin/Elements/Header, Title => loc("Rights Inspector") &>
    + <& /Elements/Tabs &>
    + 
    +@@
    + </div>
    + 
    + <&|/Widgets/TitleBox, title => loc("Rights Inspector") &>
    +-<form action="<%RT->Config->Get('WebPath')%>/Helpers/RightsInspector/Search" id="rights-inspector">
    +-  <div class="search row">
    +-    <input class="col-md-3" value="<% $ARGS{Principal} %>" type="text" name="principal" placeholder="Principal">
    +-    <input class="col-md-3" value="<% $ARGS{Object} %>" type="text" name="object" placeholder="Object">
    +-    <input class="col-md-3" value="<% $ARGS{Right} %>" type="text" name="right" placeholder="Right">
    +-    <span class="loading"><img src="<%RT->Config->Get('WebPath')%>/static/images/loading.gif" alt="<%loc('Loading')%>" title="<%loc('Loading')%>" /></span>
    ++<form action="<%RT->Config->Get('WebPath')%>/Helpers/RightsInspector/Search" id="rights-inspector" class="search">
    ++  <div class="row">
    ++    <input class="col-md-3 form-control" value="<% $ARGS{Principal} %>" type="text" name="principal" placeholder="Principal">
    ++    <input class="col-md-3 form-control" value="<% $ARGS{Object} %>" type="text" name="object" placeholder="Object">
    ++    <input class="col-md-3 form-control" value="<% $ARGS{Right} %>" type="text" name="right" placeholder="Right">
    +   </div>
    + 
    +-  <script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/static/js/rights-inspector.js"></script>
    +-
    +   <div class="results">
    +   </div>
    +-  <span class="loading"><img src="<%RT->Config->Get('WebPath')%>/static/images/loading.gif" alt="<%loc('Loading')%>" title="<%loc('Loading')%>" /></span>
    ++  <& /Widgets/Spinner &>
    + </form>
    + </&>
    + 
    +
    +diff --git a/share/html/Helpers/RightsInspector/Search b/share/html/Helpers/RightsInspector/Search
    +--- a/share/html/Helpers/RightsInspector/Search
    ++++ b/share/html/Helpers/RightsInspector/Search
    +@@
    + # END BPS TAGGED BLOCK }}}
    + <%INIT>
    + use RT::RightsInspector;
    +-
    + my $results = RT::RightsInspector->Search(%ARGS);
    + $r->content_type('application/json; charset=utf-8');
    + RT::Interface::Web::CacheControlExpiresHeaders( Time => 'no-cache' );
    +
    +diff --git a/share/html/Widgets/Spinner b/share/html/Widgets/Spinner
    +new file mode 100644
    +--- /dev/null
    ++++ b/share/html/Widgets/Spinner
    +@@
    ++%# BEGIN BPS TAGGED BLOCK {{{
    ++%#
    ++%# COPYRIGHT:
    ++%#
    ++%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
    ++%#                                          <sales at bestpractical.com>
    ++%#
    ++%# (Except where explicitly superseded by other copyright notices)
    ++%#
    ++%#
    ++%# LICENSE:
    ++%#
    ++%# This work is made available to you under the terms of Version 2 of
    ++%# the GNU General Public License. A copy of that license should have
    ++%# been provided with this software, but in any event can be snarfed
    ++%# from www.gnu.org.
    ++%#
    ++%# This work is distributed in the hope that it will be useful, but
    ++%# WITHOUT ANY WARRANTY; without even the implied warranty of
    ++%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    ++%# General Public License for more details.
    ++%#
    ++%# You should have received a copy of the GNU General Public License
    ++%# along with this program; if not, write to the Free Software
    ++%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    ++%# 02110-1301 or visit their web page on the internet at
    ++%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
    ++%#
    ++%#
    ++%# CONTRIBUTION SUBMISSION POLICY:
    ++%#
    ++%# (The following paragraph is not intended to limit the rights granted
    ++%# to you to modify and distribute this software under the terms of
    ++%# the GNU General Public License and is only of importance to you if
    ++%# you choose to contribute your changes and enhancements to the
    ++%# community by submitting them to Best Practical Solutions, LLC.)
    ++%#
    ++%# By intentionally submitting any modifications, corrections or
    ++%# derivatives to this work, or any other work intended for use with
    ++%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
    ++%# you are the copyright holder for those contributions and you grant
    ++%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
    ++%# royalty-free, perpetual, license to use, copy, create derivative
    ++%# works based on those contributions, and sublicense and distribute
    ++%# those contributions and any derivatives thereof.
    ++%#
    ++%# END BPS TAGGED BLOCK }}}
     +<div class="spinner">
     +  <div class="d-flex justify-content-center">
     +    <div class="spinner-border" role="status">
    @@ -117,6 +219,34 @@
     diff --git a/share/static/css/elevator-light/admin.css b/share/static/css/elevator-light/admin.css
     --- a/share/static/css/elevator-light/admin.css
     +++ b/share/static/css/elevator-light/admin.css
    +@@
    + 
    + 
    + 
    +-#rights-inspector .search .loading,
    +-#rights-inspector > .loading {
    ++#rights-inspector .loading {
    +     display: none;
    + }
    + 
    +-#rights-inspector .search .loading img,
    +-#rights-inspector > .loading img,
    +-#rights-inspector .results .revoke img {
    +-    height: 1.5em;
    +-    width: 1.5em;
    +-}
    +-
    +-#rights-inspector.awaiting-first-result .search .loading {
    +-    display: inline;
    +-}
    +-
    +-#rights-inspector.continuing-load > .loading {
    +-    display: inline;
    +-}
    +-
    + #rights-inspector.error .results {
    +     color: red;
    +     font-weight: bold;
     @@
          opacity: 0.5;
      }
    @@ -222,15 +352,4 @@
      function render_inspector_primary_record (primary_record) {
          return primary_record ? '<span class="primary">Contains ' + render_inspector_record( primary_record) + '</span>'
                                : '';
    -@@
    -         +  '  <div class="principal cell col-md-3">' + render_inspector_record( item.principal) + '</div>'
    -         +  '  <div class="object cell col-md-3">' + render_inspector_record( item.object) + '</div>'
    -         +  '  <div class="right cell col-md-3">' + item.right_highlighted + '</div>'
    --        +  '  <div class="revoke cell col-md-2">'
    --        +  '      <button type="button" data-action="' + RT.Config.WebPath + '/Helpers/RightsInspector/Revoke?id=' + item.ace.id + '" ' + disabled_state + '>Revoke</button>'
    -+        +  '  <div class="revoke cell col-md-1">'
    -+        +  '      <button type="button" class="revoke-button" data-action="' + RT.Config.WebPath + '/Helpers/RightsInspector/Revoke?id=' + item.ace.id + '" ' + disabled_state + '>Revoke</button>'
    -         + '  </div>'
    -         + '</div>'
    -     ;
    -
    +
10: df2818573 !  3: a5266b786 Improve look for the dark theme
    @@ -18,4 +18,3 @@
     +    background-color: #114 !important;
     +}
     +
    -
11: b48b3136e < --:  ------- Fixes a problem with the display of disabled revoke buttons
12: fb35100b2 < --:  ------- Fixes 2 problems with t/99-policy.t testing



More information about the rt-commit mailing list