## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>

<%block name="title">
    ${_('Authentication Settings')}
</%block>

<%def name="breadcrumbs_links()">
    ${h.link_to(_('Admin'),h.url('admin_home'))}
    &raquo;
    ${_('Authentication')}
</%def>

<%block name="header_menu">
    ${self.menu('admin')}
</%block>

<%def name="main()">
<div class="box">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}
    </div>
    ${h.form(url('auth_settings'))}
    <div class="form">

    ## enabled auth plugins
    <h1>${_('Authentication Plugins')}</h1>
    <div class="fields">
       <div class="field">
           <div class="label"><label for="auth_plugins">${_("Enabled Plugins")}</label></div>
           <div class="input">${h.text("auth_plugins", class_='large')}
           <span class="help-block">${_('Comma-separated list of plugins; Kallithea will try user authentication in plugin order')}</span>
               <div style="padding:10px 0px 10px 0px;font-weight: bold">${_('Available built-in plugins')}</div>
               <ul>
               %for plugin_path in c.available_plugins:
                    <li>
                      <div style="padding:3px 0px 3px 0px">
                          <span style="margin: 0px 10px 0px 0px" plugin_id="${plugin_path}" class="toggle-plugin btn btn-mini ${'btn-success' if plugin_path in c.enabled_plugins else ''}">
                          ${_('Enabled') if plugin_path in c.enabled_plugins else _('Disabled')}</span>${plugin_path}
                      </div>
                    </li>
               %endfor
               </ul>
           </div>
       </div>
    </div>

    %for cnt, module in enumerate(c.enabled_plugins):
        <% pluginName = c.plugin_shortnames[module] %>
        <h1>${_('Plugin')}: ${pluginName}</h1>
        <div class="fields">
        ## autoform generation, based on plugin definition from it's settings
        %for setting in c.plugin_settings[module]:
            <% fullsetting = "auth_%s_%s" % (pluginName, setting["name"]) %>
            <% displayname = (setting["formname"] if ("formname" in setting) else setting["name"]) %>
            %if setting["type"] == "password":
            <div class="field">
                <div class="label"><label for="${fullsetting}">${_(displayname)}</label></div>
                <div class="input">
                    ${h.password(fullsetting,class_='small')}
                    <span class="help-block">${setting["description"]}</span>
                </div>
            </div>
            %elif setting["type"] in ["string", "int"]:
            <div class="field">
                <div class="label"><label for="${fullsetting}">${_(displayname)}</label></div>
                <div class="input">
                    ${h.text(fullsetting,class_='small')}
                    <span class="help-block">${setting["description"]}</span>
                </div>
            </div>
            %elif setting["type"] == "bool":
            <div class="field">
                <div class="label label-checkbox"><label for="${fullsetting}">${_(displayname)}</label></div>
                <div class="checkboxes">
                    <div class="checkbox">${h.checkbox(fullsetting,True,class_='small')}</div>
                    <span class="help-block">${setting["description"]}</span>
                </div>
            </div>
            %elif setting["type"] == "select":
            <div class="field">
                <div class="label"><label for="${fullsetting}">${_(displayname)}</label></div>
                <div class="select">
                    ${h.select(fullsetting,setting['values'][0],setting['values'],class_='small')}
                    <span class="help-block">${setting["description"]}</span>
                </div>
            </div>
            %else:
            <div class="field">
                <div class="label"><label for="${fullsetting}">${_(displayname)}</label></div>
                <div class="input">This field is of type ${setting['type']}, which cannot be displayed. Must be one of [string|int|bool|select].</div>
                <span class="help-block">${setting["description"]}</span>
            </div>
            %endif
        %endfor
        </div>
    %endfor
        <div class="fields">
            <div class="buttons">
                ${h.submit('save',_('Save'),class_="btn")}
            </div>
        </div>
    </div>
    ${h.end_form()}
</div>

<script>
    $('.toggle-plugin').click(function(e){
        var $auth_plugins_input = $('#auth_plugins');
        var notEmpty = function(element, index, array) {
            return (element != "");
        }
        var elems = $auth_plugins_input.val().split(',').filter(notEmpty);
        var $cur_button = $(e.currentTarget);
        var plugin_id = $cur_button.attr('plugin_id');

        if($cur_button.hasClass('btn-success')){
            elems.splice(elems.indexOf(plugin_id), 1);
            $auth_plugins_input.val(elems.join(','));
            $cur_button.removeClass('btn-success');
            $cur_button.html(_TM['disabled']);
        }
        else{
            if(elems.indexOf(plugin_id) == -1){
                elems.push(plugin_id);
            }
            $auth_plugins_input.val(elems.join(','));
            $cur_button.addClass('btn-success');
            $cur_button.html(_TM['enabled']);
        }
    });
</script>
</%def>
