1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-08 10:22:46 +00:00

[repo, repo_history]redesign ui

This commit is contained in:
llj
2012-09-15 21:01:06 +08:00
parent c8d708980c
commit 15bb2ce923
5 changed files with 397 additions and 281 deletions

View File

@@ -175,7 +175,7 @@ ul.with-bg li {
line-height:20px; line-height:20px;
background: #fff url('../img/li.gif') no-repeat scroll left 6px; background: #fff url('../img/li.gif') no-repeat scroll left 6px;
} }
#paginator { margin-top:10px; } #paginator { margin:10px; }
.tri-bg { /*triangle bg, <span>*/ .tri-bg { /*triangle bg, <span>*/
display:inline-block; display:inline-block;
font-size:0; font-size:0;
@@ -634,15 +634,35 @@ ul.with-bg li {
} }
/*repo page*/ /*repo page*/
#repo-basic-info {
color:#333;
background:#fafafa;
border:1px solid #ddd;
border-radius:3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
margin: 10px 0;
}
#repo-basic-info .desc,
#repo-basic-info .size {
padding:5px 10px;
margin:0;
}
#repo-basic-info .desc {
border-bottom:1px solid #ddd;
}
.path, .access-notice { margin: 0.8em 0 0.4em; } .path, .access-notice { margin: 0.8em 0 0.4em; }
.repo-op button { .repo-op {
text-align:right;
}
.repo-op button,
#repo-download-btn {
height:25px; height:25px;
background:#f5f5f5 scroll no-repeat 3px 48%; background:#f5f5f5 scroll no-repeat 3px 48%;
} }
#upload-file { #upload-file {
padding-left:19px; padding-left:19px;
background-image:url('../img/upload.png'); background-image:url('../img/upload.png');
margin-right:5px;
} }
#add-new-dir { #add-new-dir {
padding-left:23px; padding-left:23px;
@@ -652,20 +672,51 @@ ul.with-bg li {
padding-left:23px; padding-left:23px;
background-image:url('../img/new-file-icon.png'); background-image:url('../img/new-file-icon.png');
} }
.more-op { .repo-file-list-outer-container,
.commit-list-outer-container {
padding:3px;
background:#eee;
border-radius:3px;
margin:20px 0 25px;
}
.repo-file-list-inner-container,
.commit-list-inner-container {
min-height:250px;
background:#fff;
border:1px solid #ddd;
border-radius:3px;
}
.repo-file-list-not-show {
padding-left:10px;
}
.repo-file-list-topbar {
padding:8px 10px;
border-bottom:1px solid #ddd;
}
.repo-file-list-topbar .path {
line-height:25px;
margin:0;
}
.repo-file-list {
margin:15px 0 0;
}
.displayed-op {
display:inline;
margin-right:8px;
}
.repo-file-list .more-op-icon {
cursor:pointer; cursor:pointer;
} }
.op-list { .repo-file-list .hidden-op {
position:absolute; position:absolute;
left:18px; left:18px;
background:#fff; background:#fff;
padding:6px 1px; padding:6px 1px;
border:1px solid #eee; border:1px solid #eee;
border-radius:5px; border-radius:5px;
-moz-border-radius:5px;
z-index:10; z-index:10;
} }
.op-list li a { .hidden-op li a {
display:block; display:block;
padding:0 12px; padding:0 12px;
} }
@@ -694,33 +745,51 @@ ul.with-bg li {
border-top-color:#333; border-top-color:#333;
} }
#rename-form .new-name { #rename-form .new-name {
margin-top:8px; min-width:180px;
} margin-top:6px;
.latest-commit .more:hover {
text-decoration:none;
} }
.icon-container { .icon-container {
text-align:center; text-align:center;
} }
.latest-commit-time-author { #repo-download-btn {
color:#333; font-size:14px;
font-size:13px; height:26px;
font-weight:normal; padding:0 5px 0 27px;
background-image: url('../img/sync-20.png');
} }
.latest-commit { .latest-commit {
word-wrap:break-word; word-wrap:break-word;
border: 1px solid #C5D5DD;
border-radius: 4px;
margin-top:10px;
} }
.latest-commit .author { .latest-commit .commit-msg,
font-style:italic; .latest-commit .meta-info {
padding:4px 10px;
margin:0;
}
.latest-commit .commit-msg {
width:928px;
padding:8px 10px;
background: #E6F1F6;
border-bottom: 1px solid #D8E6EC;
border-top-left-radius:3px;
border-top-right-radius:3px;
}
.latest-commit .commit-msg .more {
margin-left:10px;
}
.latest-commit .author .avatar {
border-radius:3px;
}
.latest-commit .author .avatar,
.latest-commit .author .name,
.latest-commit .time {
vertical-align:middle;
} }
.latest-commit .time { .latest-commit .time {
color:#666; color:#666;
margin-left:2px; margin-left:5px;
}
.repo-history {
font-weight:normal;
font-size:16px;
margin: 4px 0 12px 0;
} }
.lsch { .lsch {
font-size:12px; font-size:12px;
@@ -735,12 +804,30 @@ ul.with-bg li {
max-height:550px; max-height:550px;
overflow:auto; overflow:auto;
} }
#ls-ch .latest-commit-time-author {
color:#333;
font-size:13px;
font-weight:normal;
}
#ls-ch ul { #ls-ch ul {
padding:0 0 6px 0; padding:0 0 6px 0;
} }
#dirs { /* file mv */ #dirs { /* file mv */
margin-top:8px; margin-top:8px;
} }
/* repo-history */
#history-back-to-repo {
margin-top:5px;
}
.commit-list {
margin:0 0 20px;
}
.commit-list .time {
padding-left:10px;
}
.commit-list .avatar {
border-radius:2px;
}
/*repo-share-form*/ /*repo-share-form*/
#email, #email,
#email_or_group, #email_or_group,

View File

@@ -18,10 +18,6 @@ $('#yes-btn').click(function() {
location.href = Op_url; location.href = Op_url;
}); });
//handle table
$("table tr:nth-child(even)").addClass("even");
$("table tr:nth-child(odd)").addClass("odd");
//highlight the tr when mouse hover on it //highlight the tr when mouse hover on it
$("table tr:gt(0)").hover( $("table tr:gt(0)").hover(
function() { function() {

View File

@@ -1,6 +1,6 @@
{% extends base_template %} {% extends base_template %}
{% load seahub_tags %} {% load seahub_tags avatar_tags %}
{% load url from future %} {% load url from future %}
{% block info_bar_message %} {% block info_bar_message %}
@@ -14,133 +14,159 @@
{% endblock %} {% endblock %}
{% block main_panel %} {% block main_panel %}
<h2>{{repo.props.name}}</h2> <div class="w100 ovhd">
<div class="side fright"> <h2 class="fleft">{{repo.props.name}}</h2>
<h3>基本信息</h3> {% if not repo.props.encrypted or password_set %}
<p>{{repo.props.desc}}</p> {% if can_access %}
<p>大小:{{ repo_size|filesizeformat }}</p> <button id="repo-download-btn" class="fright">同步到本地</button>
{% endif %}
{% if not repo.props.encrypted or password_set %} {% endif %}
{% if can_access %}
<div class="latest-commit">
<h3>最新修改
{% if request.user.is_authenticated %}
<a href="{% url 'seahub.views.repo_history' repo.id %}" class="more">(更多)</a>
{% endif %}
</h3>
<p>{{ current_commit.props.desc|translate_commit_desc }}</p>
<p class="al-rt">
<span class="author">by
{% if current_commit.props.creator_name %}
{{ current_commit.props.creator_name|short_email }}
{% else %}
未知
{% endif %}
</span>
<span class="time">{{ current_commit.props.ctime|translate_commit_time }}</span>
</p>
</div>
{% endif %}
{% endif %}
</div> </div>
<div id="repo-basic-info">
<div class="main fleft"> <p class="desc">{{repo.props.desc}}</p>
{% if repo.props.encrypted and not password_set %} <p class="size">大小:{{ repo_size|filesizeformat }}</p>
<p class="access-notice">该目录已加密。如需在线查看里面的内容请输入解密密码。密码只会在服务器上暂存1小时。</p> </div>
<form action="{{ SITE_ROOT }}repo/{{ repo.id }}/" method="post">
<label>密码:</label> {% if not repo.props.encrypted or password_set %}
<input type="hidden" name="repo_id" value="{{ repo.id }}" /> {% if can_access %}
<input type="hidden" name="username" value="{{ request.user.username }}" /> <div class="latest-commit">
<input id="id_password" type="password" name="password" maxlength="64" /><br /> <p class="commit-msg ovhd">
{% for error in form.errors.values %} <span class="fleft">
<p class="error">{{ error|escape }}</p> {{ current_commit.props.desc|translate_commit_desc }}
{% endfor %} <a class="lsch" href="{{ SITE_ROOT }}repo/history/changes/{{ repo.id }}/?commit_id={{ current_commit.id }}" data="{{ current_commit.props.ctime|tsstr_sec }}">详情</a>
<input type="submit" value="提交" /> </span>
</form> {% if request.user.is_authenticated %}
<a href="{% url 'seahub.views.repo_history' repo.id %}" class="more fright">更多历史</a>
{% endif %}
</p>
<p class="meta-info">
<span class="author">
{% if current_commit.props.creator_name %}
{% avatar current_commit.props.creator_name 20 %}
<a class="name" href="{% url 'profile.views.user_profile' current_commit.props.creator_name %}">{{ current_commit.props.creator_name|short_email }}</a>
{% else %}
未知
{% endif %}
</span>
<span class="time">{{ current_commit.props.ctime|translate_commit_time }}</span>
</p>
<div id="ls-ch" class="hide"></div><!--list modification details of a commit-->
</div>
{% endif %}
{% endif %}
{% else %} <div class="repo-file-list-outer-container">
{% if not can_access %} <div class="repo-file-list-inner-container">
<p class="access-notice">无法在线查看该同步目录。</p> {% if repo.props.encrypted and not password_set %}
{% else %} <div class="repo-file-list-not-show">
<p class="path"> <p class="access-notice">该目录已加密。如需在线查看里面的内容请输入解密密码。密码只会在服务器上暂存1小时。</p>
当前路径: <form action="{{ SITE_ROOT }}repo/{{ repo.id }}/" method="post">
{% for name, link in zipped %} <label>密码:</label>
{% if not forloop.last %} <input type="hidden" name="repo_id" value="{{ repo.id }}" />
<input type="hidden" name="username" value="{{ request.user.username }}" />
<input id="id_password" type="password" name="password" maxlength="64" />
{% for error in form.errors.values %}
<p class="error">{{ error|escape }}</p>
{% endfor %}
<input type="submit" value="提交" />
</form>
</div>
{% else %}
{% if not can_access %}
<div class="repo-file-list-not-show">
<p class="access-notice">无法在线查看该同步目录。</p>
</div>
{% else %}
<div class="repo-file-list-topbar ovhd">
<p class="path fleft">
当前路径:
{% for name, link in zipped %}
{% if not forloop.last %}
<a href="{{ SITE_ROOT }}repo/{{ repo.id }}/?p={{ link|urlencode }}">{{ name }}</a> / <a href="{{ SITE_ROOT }}repo/{{ repo.id }}/?p={{ link|urlencode }}">{{ name }}</a> /
{% else %} {% else %}
{{ name }} {{ name }}
{% endif %}
{% endfor %}
</p>
{% if request.user.is_authenticated %}
<div class="repo-op">
<button data="{{ SITE_ROOT }}repo/upload_file/{{repo.id}}/?p={{ path|urlencode }}" id="upload-file" class="op-btn">上传</button>
<button id="add-new-dir" class="op-btn">新建目录</button>
<button id="add-new-file" class="op-btn">新建文件</button>
</div>
{% endif %}
<table>
<tr>
<th width="5%"></th>
<th width="67%">名字</th>
<th width="13%">大小</th>
<th width="15%">操作</th>
</tr>
{% for dirent in dir_list %}
<tr>
<td class="icon-container"><img src="{{ MEDIA_URL }}img/folder-icon-24.png" alt="目录" /></td>
<td>
<a href="{{ SITE_ROOT }}repo/{{ repo.id }}/?p={{ path|urlencode }}{{ dirent.obj_name|urlencode }}">{{ dirent.obj_name }}</a>
</td>
<td></td>
<td>
{% if request.user.is_authenticated %}
<div>
<img src="{{ MEDIA_URL }}img/dropdown-arrow.png" alt="更多操作" class="more-op vh" data="no-popup" />
<ul class="op-list hide">
<li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?p={{ path|urlencode }}&file_name={{ dirent.props.obj_name|urlencode }}&op=del">删除</a></li>
<li><a class="op dir-rename" href="#" data="{{ dirent.obj_name }}">重命名</a></li>
<li><a class="op dir-mv" href="#" data="{{ dirent.obj_name }}">移动</a></li>
<li><a class="op dir-cp" href="#" data="{{ dirent.obj_name }}">复制</a></li>
</ul>
</div>
{% endif %} {% endif %}
</td> {% endfor %}
</tr> </p>
{% endfor %} {% if request.user.is_authenticated %}
<div class="repo-op fright">
<button data="{{ SITE_ROOT }}repo/upload_file/{{repo.id}}/?p={{ path|urlencode }}" id="upload-file" class="op-btn">上传</button>
<button id="add-new-dir" class="op-btn">新建目录</button>
<button id="add-new-file" class="op-btn">新建文件</button>
</div>
{% endif %}
</div>
<table class="repo-file-list">
<tr>
<th width="5%"></th>
<th width="60%">名字</th>
<th width="10%">大小</th>
<th width="30%">操作</th>
</tr>
{% for dirent in file_list %} {% for dirent in dir_list %}
<tr> <tr>
<td class="icon-container"><img src="{{ MEDIA_URL }}img/file/{{ dirent.obj_name|file_icon_filter }}" alt="文件" /></td> <td class="icon-container"><img src="{{ MEDIA_URL }}img/folder-icon-24.png" alt="目录" /></td>
<td> <td>
<a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/files/?p={{ path|urlencode }}{{ dirent.obj_name|urlencode }}">{{ dirent.props.obj_name }}</a> <a href="{{ SITE_ROOT }}repo/{{ repo.id }}/?p={{ path|urlencode }}{{ dirent.obj_name|urlencode }}">{{ dirent.obj_name }}</a>
</td> </td>
<td>{{ dirent.file_size|filesizeformat }}</td> <td></td>
<td> <td>
<div> {% if request.user.is_authenticated %}
<img src="{{ MEDIA_URL }}img/dropdown-arrow.png" alt="更多操作" class="more-op vh" data="no-popup" /> <div>
<ul class="op-list hide"> <div class="displayed-op vh">
<li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?file_name={{ dirent.props.obj_name }}&op=download">下载</a></li> <a class="op dir-rename" href="#" data="{{ dirent.obj_name }}">重命名</a>
{% if request.user.is_authenticated %} </div>
<li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?p={{ path|urlencode }}&file_name={{ dirent.props.obj_name|urlencode }}&op=del">删除</a></li> <img src="{{ MEDIA_URL }}img/dropdown-arrow.png" title="更多操作" alt="更多操作" class="more-op-icon vh" data="no-popup" />
<li><a class="op file-rename" href="#" data="{{ dirent.obj_name }}">重命名</a></li> <ul class="hidden-op hide">
<li><a class="op file-mv" href="#" data="{{ dirent.obj_name }}">移动</a></li> <li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?p={{ path|urlencode }}&file_name={{ dirent.props.obj_name|urlencode }}&op=del">删除</a></li>
<li><a class="op file-cp" href="#" data="{{ dirent.obj_name }}">复制</a></li> <!--li><a class="op dir-rename" href="#" data="{{ dirent.obj_name }}">重命名</a></li-->
<li><a class="op file-update" href="{{ SITE_ROOT }}repo/update_file/{{repo.id}}/?p={{ path|urlencode }}{{dirent.obj_name|urlencode}}">更新</a></li> <li><a class="op dir-mv" href="#" data="{{ dirent.obj_name }}">移动</a></li>
<li><a href="{{ SITE_ROOT }}repo/revert_file/{{ repo.id }}/?commit={{ current_commit.id }}&p={{path|urlencode}}{{ dirent.obj_name|urlencode }}&from=repo_history" class="op file-revert">还原</a></li> <li><a class="op dir-cp" href="#" data="{{ dirent.obj_name }}">复制</a></li>
{% endif %} </ul>
</ul> </div>
</div> {% endif %}
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</table>
{% endif %} {% for dirent in file_list %}
{% endif %} <tr>
<td class="icon-container"><img src="{{ MEDIA_URL }}img/file/{{ dirent.obj_name|file_icon_filter }}" alt="文件" /></td>
<td>
<a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/files/?p={{ path|urlencode }}{{ dirent.obj_name|urlencode }}">{{ dirent.props.obj_name }}</a>
</td>
<td>{{ dirent.file_size|filesizeformat }}</td>
<td>
<div>
<div class="displayed-op vh">
<a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?file_name={{ dirent.props.obj_name }}&op=download">下载</a>
<a class="op file-rename" href="#" data="{{ dirent.obj_name }}">重命名</a>
<a class="op file-update" href="{{ SITE_ROOT }}repo/update_file/{{repo.id}}/?p={{ path|urlencode }}{{dirent.obj_name|urlencode}}">更新</a>
</div>
<img src="{{ MEDIA_URL }}img/dropdown-arrow.png" title="更多操作" alt="更多操作" class="more-op-icon vh" data="no-popup" />
<ul class="hidden-op hide">
<!--li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?file_name={{ dirent.props.obj_name }}&op=download">下载</a></li-->
{% if request.user.is_authenticated %}
<li><a class="op" href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/{{ dirent.props.obj_id }}/?p={{ path|urlencode }}&file_name={{ dirent.props.obj_name|urlencode }}&op=del">删除</a></li>
<!--li><a class="op file-rename" href="#" data="{{ dirent.obj_name }}">重命名</a></li-->
<li><a class="op file-mv" href="#" data="{{ dirent.obj_name }}">移动</a></li>
<li><a class="op file-cp" href="#" data="{{ dirent.obj_name }}">复制</a></li>
<!--li><a class="op file-update" href="{{ SITE_ROOT }}repo/update_file/{{repo.id}}/?p={{ path|urlencode }}{{dirent.obj_name|urlencode}}">更新</a></li-->
<li><a href="{{ SITE_ROOT }}repo/revert_file/{{ repo.id }}/?commit={{ current_commit.id }}&p={{path|urlencode}}{{ dirent.obj_name|urlencode }}&from=repo_history" class="op file-revert">还原</a></li>
{% endif %}
</ul>
</div>
</td>
</tr>
{% endfor %}
</table>
{% endif %}
{% endif %}
</div>
</div> </div>
<form id="add-new-dir-form" action="" method="post" class="hide">{% csrf_token %} <form id="add-new-dir-form" action="" method="post" class="hide">{% csrf_token %}
@@ -204,26 +230,27 @@
<script type="text/javascript"> <script type="text/javascript">
$("table tr:gt(0)").hover( $("table tr:gt(0)").hover(
function() { function() {
$(this).find('.more-op').removeClass('vh'); $(this).find('.displayed-op, .more-op-icon').removeClass('vh');
}, },
function() { function() {
$(this).find('.more-op').addClass('vh'); $(this).find('.displayed-op, .more-op-icon').addClass('vh');
} }
); );
$('#main-panel').removeClass('ovhd'); $('#main-panel').removeClass('ovhd');
var clicked_more_op; var clicked_more_op;
$('.more-op').click(function(e) { $('.more-op-icon').click(function(e) {
var its_op_list = $(this).next(); var its_op_list = $(this).next();
if ($(this).attr('data')) { // no popup if ($(this).attr('data')) { // no popup
clicked_more_op = $(this); clicked_more_op = $(this);
$(this).parent().css('position','relative'); $(this).parent().css('position','relative');
its_op_list.css('left', $(this).position().left + $(this).width() + 5);
if ($(this).offset().top + its_op_list.height() <= $('#main').offset().top + $('#main').height()) { if ($(this).offset().top + its_op_list.height() <= $('#main').offset().top + $('#main').height()) {
its_op_list.css('top', 6); its_op_list.css('top', 6);
} else { } else {
its_op_list.css('bottom', 2); its_op_list.css('bottom', 2);
} }
$('.op-list').addClass('hide'); $('.hidden-op').addClass('hide');
its_op_list.removeClass('hide'); its_op_list.removeClass('hide');
$(this).attr('data',''); $(this).attr('data','');
} else { } else {
@@ -238,7 +265,7 @@ $(document).click(function(e) {
clicked_more_op.attr('data','no-popup'); clicked_more_op.attr('data','no-popup');
} }
}); });
$('.op-list li').hover( $('.hidden-op li').hover(
function() { function() {
$(this).css('background', '#eee'); $(this).css('background', '#eee');
}, },
@@ -250,10 +277,13 @@ $('.op-list li').hover(
$('.file-rename, .dir-rename').click(function () { $('.file-rename, .dir-rename').click(function () {
var type = $(this).hasClass('file-rename') ? '文件 ' : '目录 ', var type = $(this).hasClass('file-rename') ? '文件 ' : '目录 ',
name = $(this).attr('data'); name = $(this).attr('data');
newname = $('#rename-form input[name="newname"]');
$('#rename-target').html(type + name); $('#rename-target').html(type + name);
$('input[name="oldname"]').val(name); $('#rename-form input[name="oldname"]').val(name);
$('input[name="newname"]').val(name);
$('#rename-form').modal({appendTo:'#main'}); $('#rename-form').modal({appendTo:'#main'});
newname.before('<p class="hide">' + name + '</p>');
newname.val(name).css('width', newname.prev().width() + 3);
newname.prev().remove();
return false; return false;
}); });
@@ -489,7 +519,7 @@ $('#add-new-file').click(function () {
$('#add-new-file-form').modal({appendTo:'#main'}); $('#add-new-file-form').modal({appendTo:'#main'});
}); });
$('#upload-file, #add-new-dir, #add-new-file').hover( $('#upload-file, #add-new-dir, #add-new-file, #repo-download-btn').hover(
function() { function() {
$(this).css({'background-color': '#fff', 'cursor': 'pointer'}); $(this).css({'background-color': '#fff', 'cursor': 'pointer'});
}, },
@@ -498,6 +528,10 @@ $('#upload-file, #add-new-dir, #add-new-file').hover(
} }
); );
$('#repo-download-btn').click(function() {
window.open('{{ SITE_ROOT }}seafile_access_check/?repo_id={{repo.props.id}}');
});
{% include "snippets/list_commit_detail.html" %}
{% include "snippets/bottom_bar.html" %} {% include "snippets/bottom_bar.html" %}
</script> </script>

View File

@@ -2,137 +2,87 @@
{% load seahub_tags avatar_tags %} {% load seahub_tags avatar_tags %}
{% load url from future %} {% load url from future %}
{% block left_panel %} {% block main_panel %}
<h3>操作</h3> <div class="w100 ovhd">
<ul class="with-bg"> <h2 class="fleft">{{repo.props.name}} 修改历史</h2>
<li><a href="{{ SITE_ROOT }}repo/{{ repo.props.id }}/">返回同步目录</a></li> <button data="{{ SITE_ROOT }}repo/{{ repo.props.id }}/" class="fright" id="history-back-to-repo">返回同步目录</button>
</ul>
{% endblock %}
{% block right_panel %}
<h2 class="repo-history">{{repo.props.name}} 修改历史</h2>
<table>
<tr>
<th width="12%">修改时间</th>
<th width="13%">修改者</th>
<th width="62%">描述</th>
<th width="13%">操作</th>
</tr>
{% for commit in commits %}
<tr>
<td>{{ commit.ctime|translate_commit_time }}</td>
{% if commit.creator_name %}
<td>
<a href="{{ SITE_ROOT }}profile/{{ commit.creator_name }}/">{% avatar commit.creator_name 16 %}</a>
<a href="{{ SITE_ROOT }}profile/{{ commit.creator_name }}/">{{ commit.creator_name|email2nickname }}</a>
</td>
{% else %}
<td>未知</td>
{% endif %}
<td>
{{ commit.props.desc|translate_commit_desc }}
{% if not forloop.last %}
<a class="lsch" href="{{ SITE_ROOT }}repo/history/changes/{{ repo.id }}/?commit_id={{ commit.id }}" data="{{ commit.props.ctime|tsstr_sec }}">详情</a>
{% endif %}
</td>
{% if not forloop.last %}
<td>
<a href="{% url 'repo_history_view' repo.id %}?commit_id={{ commit.id }}" class="op">浏览</a>
<a href="#" data="{{ SITE_ROOT }}repo/history/revert/{{ repo.id }}/?commit_id={{ commit.id }}" class="repo-revert op">还原</a>
</td>
{% else %}
<td></td>
{% endif %}
</tr>
{% endfor %}
</table>
<div id="paginator">
{% if current_page != 1 %}
<a href="?page={{ prev_page }}&per_page={{ per_page }}">上一页</a>
{% endif %}
{% if page_next %}
<a href="?page={{ next_page }}&per_page={{ per_page }}">下一页</a>
{% endif %}
<span>每页:</span>
{% if per_page == 25 %}
<span> 25 </span>
{% else %}
<a href="?per_page=25" class="per-page">25</a>
{% endif %}
{% if per_page == 50 %}
<span> 50 </span>
{% else %}
<a href="?per_page=50" class="per-page">50</a>
{% endif %}
{% if per_page == 100 %}
<span> 100 </span>
{% else %}
<a href="?per_page=100" class="per-page">100</a>
{% endif %}
</div> </div>
<div class="commit-list-outer-container">
<div class="commit-list-inner-container">
<table class="commit-list">
<tr>
<th width="13%" class="time">修改时间</th>
<th width="15%">修改者</th>
<th width="57%">描述</th>
<th width="15%">操作</th>
</tr>
<div id="ls-ch" class="hide"></div><!--list modification details of a commit--> {% for commit in commits %}
<tr>
<td class="time">{{ commit.ctime|translate_commit_time }}</td>
{% if commit.creator_name %}
<td>
<a href="{{ SITE_ROOT }}profile/{{ commit.creator_name }}/">{% avatar commit.creator_name 16 %}</a>
<a href="{{ SITE_ROOT }}profile/{{ commit.creator_name }}/">{{ commit.creator_name|email2nickname }}</a>
</td>
{% else %}
<td>未知</td>
{% endif %}
<td>
{{ commit.props.desc|translate_commit_desc }}
{% if not forloop.last %}
<a class="lsch" href="{{ SITE_ROOT }}repo/history/changes/{{ repo.id }}/?commit_id={{ commit.id }}" data="{{ commit.props.ctime|tsstr_sec }}">详情</a>
{% endif %}
</td>
{% if not forloop.last %}
<td>
<a href="{% url 'repo_history_view' repo.id %}?commit_id={{ commit.id }}" class="op">浏览</a>
<a href="#" data="{{ SITE_ROOT }}repo/history/revert/{{ repo.id }}/?commit_id={{ commit.id }}" class="repo-revert op">还原</a>
</td>
{% else %}
<td></td>
{% endif %}
</tr>
{% endfor %}
</table>
<div id="paginator">
{% if current_page != 1 %}
<a href="?page={{ prev_page }}&per_page={{ per_page }}">上一页</a>
{% endif %}
{% if page_next %}
<a href="?page={{ next_page }}&per_page={{ per_page }}">下一页</a>
{% endif %}
<span>每页:</span>
{% if per_page == 25 %}
<span> 25 </span>
{% else %}
<a href="?per_page=25" class="per-page">25</a>
{% endif %}
{% if per_page == 50 %}
<span> 50 </span>
{% else %}
<a href="?per_page=50" class="per-page">50</a>
{% endif %}
{% if per_page == 100 %}
<span> 100 </span>
{% else %}
<a href="?per_page=100" class="per-page">100</a>
{% endif %}
</div>
<div id="ls-ch" class="hide"></div><!--list modification details of a commit-->
</div>
</div>
{% endblock %} {% endblock %}
{% block extra_script %} {% block extra_script %}
<script type="text/javascript"> <script type="text/javascript">
//list modification made by a commit {% include 'snippets/list_commit_detail.html' %}
$('.lsch').each(function() { $('#history-back-to-repo').click(function() {
$(this).click(function() { location.href = $(this).attr('data');
var time = '<span class="latest-commit-time-author">(' + $(this).attr('data') + ')</span>';
$.ajax({
url: $(this).attr('href'),
dataType: 'json',
cache: false,
contentType: 'application/json; charset=utf-8',
success: function(data) {
var title = '<h3>修改详情' + time + '</h3>',
con = '';
var show = function(data_) {
con += '<ul>';
for (var i = 0, len = data_.length; i < len; i++) {
con += '<li>' + data_[i] + '</li>';
}
con += '</ul>';
};
if (data['new'].length > 0) {
con += '<h4 id="ls-ch-new">新文件</h4>';
show(data['new']);
}
if (data['removed'].length > 0) {
con += '<h4 id="ls-ch-rm">删除的文件</h4>';
show(data['removed']);
}
if (data['renamed'].length > 0) {
con += '<h4 id="ls-ch-rn">重命名或移动的文件</h4>';
show(data['renamed']);
}
if (data['modified'].length > 0) {
con += '<h4 id="ls-ch-modi">修改的文件</h4>';
show(data['modified']);
}
if (data['newdir'].length > 0) {
con += '<h4 id="ls-ch-newdir">新目录</h4>';
show(data['newdir']);
}
if (data['deldir'].length > 0) {
con += '<h4 id="ls-ch-deldir">删除的目录</h4>';
show(data['deldir']);
}
if (!con) {
con = '<p>没有文件被改动</p>';
}
$('#ls-ch').html(title + con).modal({appendTo:'#main', maxHeight: window.innerHeight - 57, autoResize:true});
}
});
return false;
});
}); });
addConfirmTo($(".repo-revert"), '确定要还原该目录?'); addConfirmTo($(".repo-revert"), '确定要还原该目录?');
</script> </script>
{% endblock %} {% endblock %}

View File

@@ -0,0 +1,49 @@
$('.lsch').click(function() {
var time = '<span class="latest-commit-time-author">(' + $(this).attr('data') + ')</span>';
$.ajax({
url: $(this).attr('href'),
dataType: 'json',
cache: false,
contentType: 'application/json; charset=utf-8',
success: function(data) {
var title = '<h3>修改详情' + time + '</h3>',
con = '';
var show = function(data_) {
con += '<ul>';
for (var i = 0, len = data_.length; i < len; i++) {
con += '<li>' + data_[i] + '</li>';
}
con += '</ul>';
};
if (data['new'].length > 0) {
con += '<h4 id="ls-ch-new">新文件</h4>';
show(data['new']);
}
if (data['removed'].length > 0) {
con += '<h4 id="ls-ch-rm">删除的文件</h4>';
show(data['removed']);
}
if (data['renamed'].length > 0) {
con += '<h4 id="ls-ch-rn">重命名或移动的文件</h4>';
show(data['renamed']);
}
if (data['modified'].length > 0) {
con += '<h4 id="ls-ch-modi">修改的文件</h4>';
show(data['modified']);
}
if (data['newdir'].length > 0) {
con += '<h4 id="ls-ch-newdir">新目录</h4>';
show(data['newdir']);
}
if (data['deldir'].length > 0) {
con += '<h4 id="ls-ch-deldir">删除的目录</h4>';
show(data['deldir']);
}
if (!con) {
con = '<p>没有文件被改动</p>';
}
$('#ls-ch').html(title + con).modal({appendTo:'#main', maxHeight: window.innerHeight - 57, autoResize:true});
}
});
return false;
});