view rhodecode/templates/admin/repos/repo_edit.html @ 3628:c734686b3cf2 beta

moved permission management into separate entity. - this solves issues when whole form submision could influence permission management particular case is that when repo group permission is revoked and user is no longer able to update repository settings
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 28 Mar 2013 02:11:26 +0100
parents 32cb8d45f330
children 802c94bdfc85
line wrap: on
line source

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

<%def name="title()">
    ${_('Edit repository')} ${c.repo_info.repo_name} &middot; ${c.rhodecode_name}
</%def>

<%def name="breadcrumbs_links()">
    ${_('Settings')}
</%def>

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

<%def name="main()">
${self.context_bar('options')}
<div class="box box-left">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}
    </div>
    ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='put')}
    <div class="form">
        <!-- fields -->
        <div class="fields">
            <div class="field">
                <div class="label">
                    <label for="repo_name">${_('Name')}:</label>
                </div>
                <div class="input">
                    ${h.text('repo_name',class_="medium")}
                </div>
           </div>
           <div class="field">
               <div class="label">
                   <label for="clone_uri">${_('Clone uri')}:</label>
               </div>
               <div class="input">
                   ${h.text('clone_uri',class_="medium")}
                 <span class="help-block">${_('Optional http[s] url from which repository should be cloned.')}</span>
               </div>
            </div>
            <div class="field">
                <div class="label">
                    <label for="repo_group">${_('Repository group')}:</label>
                </div>
                <div class="input">
                    ${h.select('repo_group','',c.repo_groups,class_="medium")}
                    <span class="help-block">${_('Optional select a group to put this repository into.')}</span>
                </div>
            </div>
            <div class="field">
                <div class="label">
                    <label for="repo_type">${_('Type')}:</label>
                </div>
                <div class="input">
                    ${h.select('repo_type','hg',c.backends,class_="medium")}
                </div>
            </div>
            <div class="field">
                <div class="label">
                    <label for="repo_landing_rev">${_('Landing revision')}:</label>
                </div>
                <div class="input">
                    ${h.select('repo_landing_rev','',c.landing_revs,class_="medium")}
                    <span class="help-block">${_('Default revision for files page, downloads, whoosh and readme')}</span>
                </div>
            </div>
            <div class="field">
                <div class="label label-textarea">
                    <label for="repo_description">${_('Description')}:</label>
                </div>
                <div class="textarea text-area editor">
                    ${h.textarea('repo_description')}
                    <span class="help-block">${_('Keep it short and to the point. Use a README file for longer descriptions.')}</span>
                </div>
            </div>

            <div class="field">
                <div class="label label-checkbox">
                    <label for="repo_private">${_('Private repository')}:</label>
                </div>
                <div class="checkboxes">
                    ${h.checkbox('repo_private',value="True")}
                    <span class="help-block">${_('Private repositories are only visible to people explicitly added as collaborators.')}</span>
                </div>
            </div>
            <div class="field">
                <div class="label label-checkbox">
                    <label for="repo_enable_statistics">${_('Enable statistics')}:</label>
                </div>
                <div class="checkboxes">
                    ${h.checkbox('repo_enable_statistics',value="True")}
                    <span class="help-block">${_('Enable statistics window on summary page.')}</span>
                </div>
            </div>
            <div class="field">
                <div class="label label-checkbox">
                    <label for="repo_enable_downloads">${_('Enable downloads')}:</label>
                </div>
                <div class="checkboxes">
                    ${h.checkbox('repo_enable_downloads',value="True")}
                    <span class="help-block">${_('Enable download menu on summary page.')}</span>
                </div>
            </div>
            <div class="field">
                <div class="label label-checkbox">
                    <label for="repo_enable_locking">${_('Enable locking')}:</label>
                </div>
                <div class="checkboxes">
                    ${h.checkbox('repo_enable_locking',value="True")}
                    <span class="help-block">${_('Enable lock-by-pulling on repository.')}</span>
                </div>
            </div>
            <div class="field">
                <div class="label">
                    <label for="user">${_('Owner')}:</label>
                </div>
                <div class="input input-medium ac">
                    <div class="perm_ac">
                       ${h.text('user',class_='yui-ac-input')}
                       <span class="help-block">${_('Change owner of this repository.')}</span>
                       <div id="owner_container"></div>
                    </div>
                </div>
             </div>
            %if c.visual.repository_fields:
              ## EXTRA FIELDS
              %for field in c.repo_fields:
                <div class="field">
                    <div class="label">
                        <label for="${field.field_key_prefixed}">${field.field_label} (${field.field_key}):</label>
                    </div>
                    <div class="input input-medium">
                        ${h.text(field.field_key_prefixed, field.field_value, class_='medium')}
                        %if field.field_desc:
                          <span class="help-block">${field.field_desc}</span>
                        %endif
                    </div>
                 </div>
              %endfor
            %endif
            <div class="buttons">
              ${h.submit('save',_('Save'),class_="ui-btn large")}
              ${h.reset('reset',_('Reset'),class_="ui-btn large")}
            </div>
        </div>
    </div>
    ${h.end_form()}
</div>

<div class="box box-right">
    <div class="title">
        <h5>${_('Permissions')}</h5>
    </div>
    ${h.form(url('set_repo_perm_member', repo_name=c.repo_info.repo_name),method='post')}
    <div class="form">
       <div class="fields">
            <div class="field">
                <div class="label">
                    <label for="input">${_('Permissions')}:</label>
                </div>
                <div class="input">
                    <%include file="repo_edit_perms.html"/>
                </div>
            </div>
            <div class="buttons">
              ${h.submit('save',_('Save'),class_="ui-btn large")}
              ${h.reset('reset',_('Reset'),class_="ui-btn large")}
            </div>            
       </div>
    </div>
    ${h.end_form()} 
</div>
          

<div class="box box-right"  style="clear:right">
    <div class="title">
        <h5>${_('Advanced settings')}</h5>
    </div>

    <h3>${_('Statistics')}</h3>
    ${h.form(url('repo_stats', repo_name=c.repo_info.repo_name),method='delete')}
    <div class="form">
       <div class="fields">
           ${h.submit('reset_stats_%s' % c.repo_info.repo_name,_('Reset current statistics'),class_="ui-btn",onclick="return confirm('"+_('Confirm to remove current statistics')+"');")}
           <div class="field" style="border:none;color:#888">
           <ul>
                <li>${_('Fetched to rev')}: ${c.stats_revision}/${c.repo_last_rev}</li>
                <li>${_('Stats gathered')}: ${c.stats_percentage}%</li>
           </ul>
           </div>
       </div>
    </div>
    ${h.end_form()}

    %if c.repo_info.clone_uri:
    <h3>${_('Remote')}</h3>
    ${h.form(url('repo_pull', repo_name=c.repo_info.repo_name),method='put')}
    <div class="form">
       <div class="fields">
           ${h.submit('remote_pull_%s' % c.repo_info.repo_name,_('Pull changes from remote location'),class_="ui-btn",onclick="return confirm('"+_('Confirm to pull changes from remote side')+"');")}
           <div class="field" style="border:none">
           <ul>
                <li><a href="${c.repo_info.clone_uri}">${c.repo_info.clone_uri}</a></li>
           </ul>
           </div>
       </div>
    </div>
    ${h.end_form()}
    %endif

    <h3>${_('Cache')}</h3>
    ${h.form(url('repo_cache', repo_name=c.repo_info.repo_name),method='delete')}
    <div class="form">
       <div class="fields">
           ${h.submit('reset_cache_%s' % c.repo_info.repo_name,_('Invalidate repository cache'),class_="ui-btn",onclick="return confirm('"+_('Confirm to invalidate repository cache')+"');")}
          <div class="field" style="border:none;color:#888">
          <ul>
              <li>${_('Manually invalidate cache for this repository. On first access repository will be cached again')}
              </li>
          </ul>
          </div>
          <div class="field" style="border:none;">
            ${_('List of cached values')}
               <table>
               <tr>
                <th>${_('Prefix')}</th>
                <th>${_('Key')}</th>
                <th>${_('Active')}</th>
                </tr>
              %for cache in c.repo_info.cache_keys:
                  <tr>
                    <td>${cache.get_prefix() or '-'}</td>
                    <td>${cache.cache_key}</td>
                    <td>${h.boolicon(cache.cache_active)}</td>
                  </tr>
              %endfor
              </table>
          </div>
       </div>
    </div>
    ${h.end_form()}

    <h3>${_('Public journal')}</h3>
    ${h.form(url('repo_public_journal', repo_name=c.repo_info.repo_name),method='put')}
    <div class="form">
      ${h.hidden('auth_token',str(h.get_token()))}
      <div class="field">
      %if c.in_public_journal:
        ${h.submit('set_public_%s' % c.repo_info.repo_name,_('Remove from public journal'),class_="ui-btn")}
      %else:
        ${h.submit('set_public_%s' % c.repo_info.repo_name,_('Add to public journal'),class_="ui-btn")}
      %endif
      </div>
     <div class="field" style="border:none;color:#888">
     <ul>
          <li>${_('All actions made on this repository will be accessible to everyone in public journal')}
          </li>
     </ul>
     </div>
    </div>
    ${h.end_form()}

    <h3>${_('Locking')}</h3>
    ${h.form(url('repo_locking', repo_name=c.repo_info.repo_name),method='put')}
    <div class="form">
       <div class="fields">
          %if c.repo_info.locked[0]:
           ${h.submit('set_unlock' ,_('Unlock locked repo'),class_="ui-btn",onclick="return confirm('"+_('Confirm to unlock repository')+"');")}
           ${'Locked by %s on %s' % (h.person_by_id(c.repo_info.locked[0]),h.fmt_date(h.time_to_datetime(c.repo_info.locked[1])))}
          %else:
            ${h.submit('set_lock',_('lock repo'),class_="ui-btn",onclick="return confirm('"+_('Confirm to lock repository')+"');")}
            ${_('Repository is not locked')}
          %endif
       </div>
       <div class="field" style="border:none;color:#888">
       <ul>
            <li>${_('Force locking on repository. Works only when anonymous access is disabled')}
            </li>
       </ul>
       </div>
    </div>
    ${h.end_form()}

    <h3>${_('Set as fork of')}</h3>
    ${h.form(url('repo_as_fork', repo_name=c.repo_info.repo_name),method='put')}
    <div class="form">
       <div class="fields">
           ${h.select('id_fork_of','',c.repos_list,class_="medium")}
           ${h.submit('set_as_fork_%s' % c.repo_info.repo_name,_('set'),class_="ui-btn",)}
       </div>
           <div class="field" style="border:none;color:#888">
           <ul>
                <li>${_('''Manually set this repository as a fork of another from the list''')}</li>
           </ul>
           </div>
    </div>
    ${h.end_form()}

    <h3>${_('Delete')}</h3>
    ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='delete')}
    <div class="form">
        <div class="fields">
            <div class="field" style="border:none;color:#888">
##              <div class="label">
##                  <label for="">${_('Remove repository')}:</label>
##              </div>
                <div class="checkboxes">
                    ${h.submit('remove_%s' % c.repo_info.repo_name,_('Remove this repository'),class_="ui-btn red",onclick="return confirm('"+_('Confirm to delete this repository')+"');")}
                    %if c.repo_info.forks.count():
                        - ${ungettext('this repository has %s fork', 'this repository has %s forks', c.repo_info.forks.count()) % c.repo_info.forks.count()}
                        <input type="radio" name="forks" value="detach_forks" checked="checked"/> <label for="forks">${_('Detach forks')}</label>
                        <input type="radio" name="forks" value="delete_forks" /> <label for="forks">${_('Delete forks')}</label>
                    %endif
                    <ul>
                        <li>${_('This repository will be renamed in a special way in order to be unaccesible for RhodeCode and VCS systems. If you need to fully delete it from file system please do it manually')}</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
    ${h.end_form()}
</div>

##TODO: this should be controlled by the VISUAL setting
%if c.visual.repository_fields:
<div class="box box-left" style="clear:left">
    <!-- box / title -->
    <div class="title">
        <h5>${_('Extra fields')}</h5>
    </div>

    <div class="emails_wrap">
      <table class="noborder">
      %for field in c.repo_fields:
        <tr>
            <td>${field.field_label} (${field.field_key})</td>
            <td>${field.field_type}</td>
            <td>
              ${h.form(url('delete_repo_fields', repo_name=c.repo_info.repo_name, field_id=field.repo_field_id),method='delete')}
                  ${h.submit('remove_%s' % field.repo_field_id, _('delete'), id="remove_field_%s" % field.repo_field_id,
                  class_="delete_icon action_button", onclick="return confirm('"+_('Confirm to delete this field: %s') % field.field_key+"');")}
              ${h.end_form()}
            </td>
        </tr>
      %endfor
      </table>
    </div>

    ${h.form(url('create_repo_fields', repo_name=c.repo_info.repo_name),method='put')}
    <div class="form">
        <!-- fields -->
        <div class="fields">
             <div class="field">
                <div class="label">
                    <label for="new_field_key">${_('New field key')}:</label>
                </div>
                <div class="input">
                    ${h.text('new_field_key', class_='small')}
                </div>
             </div>
             <div class="field">
                <div class="label">
                    <label for="new_field_label">${_('New field label')}:</label>
                </div>
                <div class="input">
                    ${h.text('new_field_label', class_='small', placeholder=_('Enter short label'))}
                </div>
             </div>

             <div class="field">
                <div class="label">
                    <label for="new_field_desc">${_('New field description')}:</label>
                </div>
                <div class="input">
                    ${h.text('new_field_desc', class_='small', placeholder=_('Enter description of a field'))}
                </div>
             </div>

            <div class="buttons">
              ${h.submit('save',_('Add'),class_="ui-btn large")}
              ${h.reset('reset',_('Reset'),class_="ui-btn large")}
            </div>
        </div>
    </div>
    ${h.end_form()}
</div>
%endif
</%def>