Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/list_db_objects.tmpl

[%
    USE JSON;
    USE Postgresql;
    USE Whostmgr;
    USE CpanelDB;

    WRAPPER 'master_templates/master.tmpl'
        header = data.header,
        app_key = data.db_object_type == 'database' ? 'manage_databases' : 'manage_database_users'
        stylesheets = [
            '/css/whm_dynamic_notices.css'
        ],
        scripts = [
            Whostmgr.find_file_url('/libraries/jquery/current/jquery.min.js'),
            Whostmgr.find_file_url('/libraries/angularjs/1.4.4/angular.min.js'),
            Whostmgr.find_file_url('/libraries/angularjs/1.4.4/angular-animate.min.js'),
            Whostmgr.find_file_url('/libraries/angular-ui-bootstrap/optimized/ui-bootstrap-tpls-1.2.5.min.js')
        ],
        theme = 'bootstrap';

    PROCESS '_ajaxapp_header.tmpl';
-%]

[% PROCESS 'warnings/_mysql_version.tmpl' %]

[% IF CpanelDB.use_prefix() %]
    <section class="callout callout-info">
        <div class="limit-info">
            [% locale.maketext('[output,strong,Note]: This interface does not enforce database prefixing. It is possible to rename a prefixed name to a non-prefixed name, but the ownership will not change.') %]
        </div>
    </section>
[% END %]

<div id="cjt_pagenotice_container"></div>

<div id="content" ng-app="getAcctList" ng-controller="initData" ng-cloak>
    <div ng-if="!all_db_objects.length" class="alert alert-info">
        <div class="alert-message" ng-bind="empty_message"></div>
    </div>
    <div ng-if="show_search">
        <div class="row search-row">
            <div class="col-lg-4 col-md-4 col-sm-6 col-xs-6">
                <div class="input-group">
                    <input name="find" id="database_filter"
                                placeholder="[% locale.maketext('Search') %]"
                                class="form-control filter-list-input"
                                title="[% locale.maketext('Type in your search filter.') %]"
                                autocomplete="off"
                                ng-model="meta.filter"
                                ng-change="meta.currentPage = 1;"
                                ng-debounce
                    />
                    <div id="searchAction" class="input-group-btn search-list search" ng-click="toggleFilter()" focus-input>
                        <button class="btn btn-default" ng-click="meta.filter = ''">
                            <span class="glyphicon" ng-class="{ 'glyphicon-search': !meta.filter, 'glyphicon-remove': meta.filter }" ></span>
                        </button>
                    </div>

                </div>
            </div>
            <div class="col-lg-7 col-md-7 col-sm-5 col-xs-5 col-xs-offset-1">
                <div class="form-inline pull-right" ng-if="pageSizes.length > 1">
                    <div class="form-group page-size-controller">
                        <select id="package-table-page-size-top" class="form-control" ng-model="meta.pageSize" ng-options="item.value as item.label for item in pageSizes"></select>
                    </div>
                    <uib-pagination ng-change="selectPage()"
                                ng-model="meta.currentPage"
                                items-per-page="meta.pageSize"
                                total-items="meta.filteredResults.length"
                                max-size="4"
                                direction-links="false"
                                boundary-links="true"
                                first-text="[% locale.maketext('First') %]"
                                last-text="[% locale.maketext('Last') %]"
                                class="pagination-small">
                    </uib-pagination>
                </div>
            </div>
        </div>
        <p class="label label-primary" ng-click="meta.selected = '';">{{ filterMsg() }}</p>
    </div>
    <table ng-if="all_db_objects.length" id="pkgtbl" role="table" class="table">
        <thead>
            <tr>
                <th ng-click="toggleSort(meta, 'name')" ng-class="selectedHeaderClass('name')">
                    <a href="">
                        [% locale.maketext('Name') %]
                    </a>
                </th>
[% IF Postgresql.is_configured -%]
                <th ng-click="toggleSort(meta, 'engine')" ng-class="selectedHeaderClass('engine')">
                    <a href="">
                        [% locale.maketext('Database Engine') %]
                    </a>
                </th>
[% END -%]
                <th ng-click="toggleSort(meta, 'cpuser')" ng-class="selectedHeaderClass('cpuser')">
                    <a href="">
                        [% locale.maketext('Owner') %]
                    </a>
                </th>
                <th ng-if="!expand_all_rows">
                    [% locale.maketext('Actions') -%]
                </th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat-start="dbobj in ((meta.filteredResults = (all_db_objects | filter:meta.filter | orderBy:meta.order:meta.reverse)) | startFrom:(meta.currentPage-1)*meta.pageSize | cpLimitTo:meta.pageSize)">
                <td ng-bind="dbobj.name" ng-class="selectedColClass('name')">
                </td>
[% IF Postgresql.is_configured -%]
                <td ng-bind="engineToDisplay[dbobj.engine]" ng-class="selectedColClass('engine')">
                </td>
[% END -%]
                <td ng-bind="dbobj.cpuser" ng-class="selectedColClass('cpuser')">
                </td>
                <td ng-if="!expand_all_rows">
                    <button id="db_action_{{dbobj.engine}}_{{dbobj.name}}" type="button" class="btn btn-default btn-sm" ng-click="toggleEdit(this,dbobj)" title="[% data.db_object_type == 'user' ? locale.maketext('Rename this user or set its password.') : locale.maketext('Rename this database.') %]">
                        <span class="glyphicon glyphicon-pencil"></span>
                    </button>
                </td>
            </tr>
            <tr ng-repeat-end ng-if="expand_all_rows || dbobj.inEdit" class="active">
                <td colspan="99" id="edit_{{dbobj.engine}}_{{dbobj.name}}">
                    <form id="xfer_cpanel_{{dbobj.cpuser}}" action='/xfercpanel' method='POST' target='_blank'>
                        <input type='hidden' name='user' value="{{dbobj.cpuser}}">
                        <input type='hidden' name='token' value="[% cp_security_token %]">
                    </form>
                    <form ng-init="!dbobj.newName && (dbobj.newName = dbobj.name)" ng-submit="submitDbObjectEdit(dbobj)">
                        <div class="alert alert-warning" ng-if="dbobj.engine === 'mysql' && db_object_type === 'database'">
                            <span class="glyphicon glyphicon-exclamation-sign"></span>
                            <div class="alert-message" ng-bind-html="getRenameWarning(dbobj) | trustAsHtml">
                            </div>
                        </div>

                        <div class="alert alert-warning" ng-if="dbobj.engine === 'postgresql' && db_object_type === 'user'">
                            <span class="glyphicon glyphicon-exclamation-sign"></span>
                            <div class="alert-message">[% locale.maketext('PostgreSQL uses a user’s name to secure the user’s password internally. As a consequence of this, you must set the user’s password again as part of renaming the user.') %]</div>
                        </div>

                        <div id="notice_area_for_{{dbobj.engine}}_{{dbobj.name}}"></div>

                        <div ng-class="{'has-error':dbobj.error.name}">
                            <label for="rename_input_{{dbobj.name}}">[% locale.maketext('Rename to:') %]</label>
                            <input id="rename_input_{{dbobj.name}}" type="text" size="{{renameSize(dbobj)}}" ng-init="validateName(dbobj)" ng-change="validateName(dbobj); validatePassword(dbobj)" ng-model="dbobj.newName" maxlength="{{CPANEL.sql.get_name_length_limit(dbobj.engine,db_object_type)}}">
                            <span ng-if="dbobj.error.name">{{dbobj.error.name}}</span>
                        </div>

                        <div ng-if="db_object_type === 'user'" ng-class="{'has-error':dbobj.error.password}">
                            <label for="set_password_{{dbobj.name}}">[% locale.maketext('Set Password:') %]</label>
                            <input type="password" id="set_password_{{dbobj.name}}" type="text" ng-change="validatePassword(dbobj)" ng-model="dbobj.password" ng-debounce placeholder="[% locale.maketext('No change') %]">
                            <span ng-if="dbobj.password && !dbobj.passwordStrength">[% locale.maketext('Loading …') %]</span>
                            <span ng-if="dbobj.password && dbobj.passwordStrength">[% locale.maketext('Strength:') %] {{ dbobj.passwordStrengthStr }}</span>
                            <br />
                            <span ng-if="dbobj.error.password">{{dbobj.error.password}}</span>
                        </div>

                        <div class="button-area">
                            <button type="submit" class="btn btn-default" ng-disabled="(dbobj.name === dbobj.newName) && ((db_object_type !== 'user') || !dbobj.password)"><span class="glyphicon glyphicon-ok"></span> [% locale.maketext('Submit') %]</button>
                            <button class="btn btn-link" ng-click="dbobj.inEdit = false"><span class="glyphicon glyphicon-remove"></span> [% locale.maketext('Close') %]</button>
                        </div>
                    </form>
                </td>
            </tr>
        </tbody>
    </table>
</div>

[%# NB: This will be obsolete with the next version of Angular Bootstrap UI (post-0.10.0). -%]
<script type="text/plain" id="ng_pagination_html">
    <ul class="pagination">
        <li ng-repeat="page in pages" ng-class="{active: page.active, disabled: page.disabled}">
            <a ng-if='!page.active' href="" ng-click="selectPage(page.number)">{{page.text}}</a>
            <input ng-if='page.active' defaultValue='{{page.number}}' ng-keypress='($event.keyCode === 13) && selectPage(jumpPage)' title="[% locale.maketext('Enter a page number to jump to that page.') %]" maxlength='{{(""+totalPages).length}}' class='cp-page-jumper' size='{{(""+totalPages).length}}' ng-model='jumpPage' ng-init='jumpPage = page.number' ng-disabled='page.disabled || (totalPages === 1)'>
        </li>
    </ul>
</script>

<script>
    window.PAGE = [% JSON.stringify(data) -%];
    window.MYSQL_SERVER_VERSION = [% JSON.stringify(data.mysql_server_version) %];
</script>

[% SET lex_path = locale.cpanel_get_lex_path('/usr/local/cpanel/base/cjt/sql.js', '/cjt/sql.js') %]
[% IF lex_path %]<script src="[% lex_path %]"></script>[% END %]
<script src="[% CPANEL.get_js_url('/cjt/sql.js') %]"></script>

[% PROCESS '_ajaxapp_footer.tmpl'; -%]

[% END #wrapper -%]
Back to Directory File Manager