zh_CN translation + footer fix

This commit is contained in:
Benjamin Gamard 2017-11-04 20:39:39 +01:00
parent cfe5690a73
commit d2f9fcdda0
15 changed files with 483 additions and 46 deletions

View File

@ -345,7 +345,8 @@ angular.module('docs',
prefix: 'locale/',
suffix: '.json'
})
.registerAvailableLanguageKeys(['en', 'fr'], {
.registerAvailableLanguageKeys(['en', 'fr', 'zh_CN', 'zh_HK', 'zh_TW'], {
'zh_*': 'zh_CN',
'en_*': 'en',
'fr_*': 'fr',
'*': 'en'
@ -354,7 +355,7 @@ angular.module('docs',
.fallbackLanguage('en');
// Configuring Timago
timeAgoSettings.overrideLang = $translateProvider.proposedLanguage;
timeAgoSettings.overrideLang = $translateProvider.preferredLanguage();
timeAgoSettings.fullDateAfterSeconds = 60 * 60 * 24 * 30; // 30 days
// Configuring $http to act like jQuery.ajax

View File

@ -0,0 +1,26 @@
'use strict';
/**
* Footer controller.
*/
angular.module('docs').controller('Footer', function($scope, Restangular, $translate, timeAgoSettings) {
// Load app data
Restangular.one('app').get().then(function(data) {
$scope.app = data;
});
$scope.currentLang = $translate.use();
// Change the current language and save it to local storage
$scope.changeLanguage = function(lang) {
$translate.use(lang);
timeAgoSettings.overrideLang = lang;
localStorage.overrideLang = lang;
$scope.currentLang = lang;
};
// Set the current language if an override is saved in local storage
if (!_.isUndefined(localStorage.overrideLang)) {
$scope.changeLanguage(localStorage.overrideLang);
}
});

View File

@ -3,7 +3,7 @@
/**
* Navigation controller.
*/
angular.module('docs').controller('Navigation', function($scope, $http, $state, $rootScope, User, Restangular) {
angular.module('docs').controller('Navigation', function($scope, $state, $rootScope, User, Restangular) {
User.userInfo().then(function(data) {
$rootScope.userInfo = data;
});

View File

@ -4,11 +4,6 @@
* Document default controller.
*/
angular.module('docs').controller('DocumentDefault', function($scope, $rootScope, $state, Restangular, $upload, $translate) {
// Load app data
Restangular.one('app').get().then(function(data) {
$scope.app = data;
});
// Load user audit log
Restangular.one('auditlog').get().then(function(data) {
$scope.logs = data.logs;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -44,6 +44,9 @@
<script src="lib/angular.timeago.js" type="text/javascript"></script>
<script src="app/docs/app.js" type="text/javascript"></script>
<script src="app/docs/controller/Main.js" type="text/javascript"></script>
<script src="app/docs/controller/Login.js" type="text/javascript"></script>
<script src="app/docs/controller/Navigation.js" type="text/javascript"></script>
<script src="app/docs/controller/Footer.js" type="text/javascript"></script>
<script src="app/docs/controller/document/Document.js" type="text/javascript"></script>
<script src="app/docs/controller/document/DocumentDefault.js" type="text/javascript"></script>
<script src="app/docs/controller/document/DocumentEdit.js" type="text/javascript"></script>
@ -55,10 +58,8 @@
<script src="app/docs/controller/document/DocumentModalPdf.js" type="text/javascript"></script>
<script src="app/docs/controller/document/FileView.js" type="text/javascript"></script>
<script src="app/docs/controller/document/FileModalView.js" type="text/javascript"></script>
<script src="app/docs/controller/Login.js" type="text/javascript"></script>
<script src="app/docs/controller/tag/Tag.js" type="text/javascript"></script>
<script src="app/docs/controller/tag/TagEdit.js" type="text/javascript"></script>
<script src="app/docs/controller/Navigation.js" type="text/javascript"></script>
<script src="app/docs/controller/settings/Settings.js" type="text/javascript"></script>
<script src="app/docs/controller/settings/SettingsDefault.js" type="text/javascript"></script>
<script src="app/docs/controller/settings/SettingsAccount.js" type="text/javascript"></script>
@ -149,9 +150,28 @@
<div ui-view="page">
</div>
<div class="row">
<div class="col-md-12 footer text-center">
<img src="img/sismics.png" />
<div class="row" ng-controller="Footer">
<div class="col-md-12 footer text-center text-muted">
<ul class="list-inline">
<li dropdown class="dropdown">
<a href dropdown-toggle>
<span ng-switch="currentLang">
<span ng-switch-when="en">English</span>
<span ng-switch-when="fr">Français</span>
<span ng-switch-when="zh_CN">简体中文</span>
</span>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href ng-click="changeLanguage('en')" ng-class="{ 'bg-info': currentLang == 'en' }">English</a></li>
<li><a href ng-click="changeLanguage('fr')" ng-class="{ 'bg-info': currentLang == 'fr' }">Français</a></li>
<li><a href ng-click="changeLanguage('zh_CN')" ng-class="{ 'bg-info': currentLang == 'zh_CN' }">简体中文</a></li>
</ul>
</li>
<li translate="document.default.footer_sismics"></li>
<li><a href="apidoc/">{{ 'document.default.api_documentation' | translate }}</a></li>
<li>v{{ app.current_version }}</li>
</ul>
</div>
</div>
</body>

View File

@ -196,7 +196,7 @@ angular.module('yaru22.angular-timeago').config(["timeAgoSettings", function(tim
'use strict';
angular.module('yaru22.angular-timeago').config(["timeAgoSettings", function(timeAgoSettings) {
timeAgoSettings.strings['fr_FR'] = {
timeAgoSettings.strings['fr'] = {
prefixAgo: 'il y a',
prefixFromNow: 'dans',
suffixAgo: null,

View File

@ -96,7 +96,7 @@
"document_added_with_errors": "Document successfully added but some files cannot be uploaded",
"quota_reached": "Quota reached",
"primary_metadata": "Primary metadata",
"title_placeholder": "The nature or genre of the resource",
"title_placeholder": "A name given to the resource",
"description_placeholder": "An account of the resource",
"new_files": "New files",
"orphan_files": "+ {{ count }} file{{ count > 1 ? 's' : '' }}",
@ -119,9 +119,7 @@
"add_new_document": "Add to new document",
"latest_activity": "Latest activity",
"footer_sismics": "Crafted with <span class=\"glyphicon glyphicon-heart\"></span> by <a href=\"https://www.sismics.com\" target=\"_blank\">Sismics</a>",
"api_documentation": "API Documentation",
"version": "Version:",
"memory": "Memory:"
"api_documentation": "API Documentation"
},
"pdf": {
"export_title": "Export to PDF",
@ -233,7 +231,7 @@
"message_2": "Those applications automatically generate a validation code that changes after a certain period of time.<br/>You will be required to enter this validation code each time you login on <strong>{{ appName }}</strong>.",
"secret_key": "Your secret key is: <strong>{{ secret }}</strong>",
"secret_key_warning": "Configure your TOTP app on your phone with this secret key now, you will not be able to access it later.",
"totp_enabled_message": "Two-factor authentication is enabled on your account.<br/>Each time you login on <strong>{{ appName }}</strong>, you will be asked a validation code from your configured phone app.<br/>If you loose your phone, you will not be able to login into your account but active sessions will allow you to regenerate a secrey key.",
"totp_enabled_message": "Two-factor authentication is enabled on your account.<br/>Each time you login on <strong>{{ appName }}</strong>, you will be asked a validation code from your configured phone app.<br/>If you lose your phone, you will not be able to login into your account but active sessions will allow you to regenerate a secrey key.",
"disable_totp": {
"disable_totp": "Disable two-factor authentication",
"message": "Your account will not be protected by the two-factor authentication anymore.",
@ -259,6 +257,7 @@
}
},
"account": {
"title": "User <small>account</small>",
"password": "Password",
"password_confirm": "Password (confirm)",
"updated": "Account successfully updated"
@ -353,6 +352,12 @@
"number": "Number required",
"no_space": "Spaces are not allowed"
},
"pagination": {
"previous": "Previous",
"next": "Next",
"first": "First",
"last": "Last"
},
"ok": "OK",
"cancel": "Cancel",
"share": "Share",

View File

@ -96,16 +96,16 @@
"document_added_with_errors": "Document ajouté avec succès, mais certains fichiers n'ont pu être envoyés",
"quota_reached": "Quota atteint",
"primary_metadata": "Métadonnées principales",
"title_placeholder": "La nature ou le genre de la ressource",
"description_placeholder": "Un résumé de la ressource",
"title_placeholder": "Titre principal du document",
"description_placeholder": "Résumé, table des matières, ou texte libre",
"new_files": "Nouveaux fichiers",
"orphan_files": "+ {{ count }} fichier{{ count > 1 ? 's' : '' }}",
"additional_metadata": "Métadonnées secondaires",
"subject_placeholder": "Le sujet de la ressource",
"identifier_placeholder": "Une référence unique de la ressource dans un contexte donné",
"publisher_placeholder": "Une entité responsable de la mise à disposition de la ressource",
"format_placeholder": "Le format physique ou numérique de la ressource",
"source_placeholder": "Une ressource liée à cette ressource",
"subject_placeholder": "Mots-clefs, phrases de résumé, ou codes de classement",
"identifier_placeholder": "Identificateur non ambigu",
"publisher_placeholder": "Nom de la personne, de l'organisation ou du service à l'origine de la publication du document",
"format_placeholder": "Type MIME, ou format physique du document",
"source_placeholder": "Ressource dont dérive le document",
"uploading_files": "Envoi des fichiers..."
},
"default": {
@ -119,9 +119,7 @@
"add_new_document": "Ajouter à un nouveau document",
"latest_activity": "Activité récente",
"footer_sismics": "Conçu avec <span class=\"glyphicon glyphicon-heart\"></span> par <a href=\"https://www.sismics.com\" target=\"_blank\">Sismics</a>",
"api_documentation": "Documentation API",
"version": "Version :",
"memory": "Mémoire :"
"api_documentation": "Documentation API"
},
"pdf": {
"export_title": "Exporter en PDF",
@ -259,6 +257,7 @@
}
},
"account": {
"title": "<small>Compte</small> utilisateur",
"password": "Mot de passe",
"password_confirm": "Mot de passe (confirmation)",
"updated": "Compte mis à jour avec succès"
@ -353,6 +352,12 @@
"number": "Nombre requis",
"no_space": "Les espaces ne sont pas autorisés"
},
"pagination": {
"previous": "Précédent",
"next": "Suivant",
"first": "Première",
"last": "Dernière"
},
"ok": "OK",
"cancel": "Annuler",
"share": "Partager",

View File

@ -0,0 +1,377 @@
{
"login": {
"username": "用户名",
"password": "密码",
"validation_code_required": "请输入验证码",
"validation_code_title": "您的帐号已经激活了双身份验证. 请输入您配置手机app的提供的验证码.",
"validation_code": "验证码",
"remember_me": "记住我",
"submit": "登录",
"login_as_guest": "以游客身份登录",
"login_failed_title": "登录失败",
"login_failed_message": "用户名或密码不正确"
},
"index": {
"toggle_navigation": "切换导航",
"nav_documents": "文档",
"nav_tags": "标签",
"nav_users_groups": "用户 & 群组",
"error_info": "{{ count }} 新错误",
"logged_as": "以 {{ username }}登录",
"nav_settings": "设置",
"logout": "退出"
},
"document": {
"add_document": "添加一个文档",
"tags": "标签",
"no_tags": "无标签",
"no_documents": "数据库中无该文档",
"search": "搜索",
"search_empty": "无匹配 <strong>\"{{ search }}\"</strong>",
"shared": "分享",
"title": "标题",
"description": "介绍",
"contributors": "贡献者",
"language": "语言",
"creation_date": "创建时间",
"subject": "主题",
"identifier": "识别码",
"publisher": "发布者",
"format": "格式",
"source": "来源",
"type": "类型",
"coverage": "覆盖",
"rights": "权利",
"relations": "关联",
"page_size": "页面大小",
"page_size_10": "10 每页",
"page_size_20": "20 每页",
"page_size_30": "30 每页",
"upgrade_quota": "如需要升级您的限额, 请联系管理员",
"quota": "{{ current | number: 0 }}MB ({{ current | number: 1 }}%) 已使用 {{ total | number: 0 }}MB",
"count": "{{ count }} 文档 找到",
"view": {
"delete_comment_title": "删除评论",
"delete_comment_message": "您是否确认删除此评论?",
"delete_document_title": "删除文档",
"delete_document_message": "您是否确认删除此文档?",
"shared_document_title": "共享文档",
"shared_document_message": "您可以直接通过发送该链接来分享该文档. 注意:任何有该链接的人员均可查看该文档.<br/><input class=\"form-control share-link\" type=\"text\" readonly=\"readonly\" value=\"{{ link }}\" onclick=\"this.select(); document.execCommand('copy');\" />",
"not_found": "文档未找到",
"forbidden": "无权限",
"download_files": "下载文档",
"export_pdf": "以PDF格式导出",
"by_creator": "由",
"comments": "评论",
"no_comments": "此文档暂无评论",
"add_comment": "添加评论",
"error_loading_comments": "评论加载失败",
"content": {
"content": "内容",
"delete_file_title": "删除文档",
"delete_file_message": "您是否确认删除此文档?",
"upload_pending": "等待中...",
"upload_progress": "上传中...",
"upload_error": "上传失败",
"upload_error_quota": "已达到您的限额",
"drop_zone": "将文件拖放至此处上传",
"add_files": "添加文件"
},
"permissions": {
"permissions": "权限",
"message": "权限可以直接应用于此文档, 或从 <a href=\"#/tag\">标签</a>获取.",
"title": "该文档权限",
"inherited_tags": "由标签获取的权限",
"acl_source": "从",
"acl_target": "为",
"acl_permission": "权限"
},
"activity": {
"activity": "活动",
"message": "对该文档的任何更改都将记录于此."
}
},
"edit": {
"document_edited_with_errors": "文档编辑成功但部分文件没能上传",
"document_added_with_errors": "文档成功添加但部分文件没能上传",
"quota_reached": "达到限额",
"primary_metadata": "主要元数据",
"title_placeholder": "资源的性质或类型",
"description_placeholder": "资源的账户",
"new_files": "新文件",
"orphan_files": "+ {{ count }} 文件",
"additional_metadata": "附加元数据",
"subject_placeholder": "资源话题",
"identifier_placeholder": "在给定的上下文中对资源的明确引用",
"publisher_placeholder": "负责提供资源的实体",
"format_placeholder": "资源的文件格式, 物理介质或维度",
"source_placeholder": "从中导出所描述的资源的相关来源",
"uploading_files": "上传文件中..."
},
"default": {
"upload_pending": "等待中...",
"upload_progress": "上传中...",
"upload_error": "上传失败",
"upload_error_quota": "达到限额",
"quick_upload": "快速上传",
"drop_zone": "将文件拖放至此处上传",
"add_files": "添加文件",
"add_new_document": "添加至新文档",
"latest_activity": "最新活动",
"footer_sismics": "精心制作 <span class=\"glyphicon glyphicon-heart\"></span> 由 <a href=\"https://www.sismics.com\" target=\"_blank\">Sismics</a>",
"api_documentation": "API 存档"
},
"pdf": {
"export_title": "以PDF形式导出",
"export_metadata": "到处元数据",
"export_comments": "到处评论",
"fit_to_page": "将图像与页面适配",
"margin": "边缘",
"millimeter": "毫米"
},
"share": {
"title": "共享文档",
"message": "如果您想多次共享同一文档,请将共享命名.",
"submit": "共享"
}
},
"file": {
"view": {
"previous": "上一个",
"next": "下一个",
"not_found": "文件未找到"
}
},
"tag": {
"new_tag": "新标签",
"search": "搜索",
"edit_tag": "更改标签",
"default": {
"title": "标签",
"message_1": "<strong>标签</strong> 是和文档相关的标示.",
"message_2": "一个文档可以由多个标签标记, 同时一个标签可以运用于多个文档.",
"message_3": "使用该 <span class=\"glyphicon glyphicon-pencil\"></span> 按钮, 您可以编辑标签的权限.",
"message_4": "如果一个标签可以被另一个用户或组读取, 相关的文件也可以被这些人阅读.",
"message_5": "例如, 用一个标签标记您公司的文档 <span class=\"label label-info\">我的公司</span> 并同时添加权限 <strong>可读</strong> 给一个群组的 <span class=\"btn btn-default\">员工</span>"
},
"edit": {
"delete_tag_title": "删除标签",
"delete_tag_message": "您是否确认删除该标签?",
"name": "名称",
"color": "颜色",
"parent": "母",
"info": "此标记的权限也将应用于已标记的文档 <span class=\"label label-info\" ng-style=\"{ 'background': color }\">{{ name }}</span>"
}
},
"group": {
"profile": {
"members": "组成员",
"no_members": "无组成员",
"related_links": "相关链接",
"edit_group": "编辑 {{ Name }} 组"
}
},
"user": {
"profile": {
"groups": "群组",
"quota_used": "已使用配额",
"percent_used": "{{ percent | number: 0 }}% 已使用",
"related_links": "相关链接",
"document_created": "文档由 {{ username }} 创建",
"edit_user": "编辑 {{ username }} 用户"
}
},
"usergroup": {
"search_groups": "搜索群组",
"search_users": "搜索用户",
"you": "就是你了!",
"default": {
"title": "用户 & 群组",
"message": "此处您可以浏览用户和群组信息."
}
},
"settings": {
"menu_personal_settings": "个人设置",
"menu_user_account": "用户帐号",
"menu_two_factor_auth": "双重身份验证",
"menu_opened_sessions": "已打开会话",
"menu_general_settings": "一般设置",
"menu_users": "用户",
"menu_groups": "群组",
"menu_vocabularies": "词条",
"menu_configuration": "配置",
"menu_server_logs": "服务器日志",
"user": {
"title": "用户 <small>管理</small>",
"add_user": "添加用户",
"username": "用户名",
"create_date": "创建日期",
"edit": {
"delete_user_title": "删除用户",
"delete_user_message": "您是否确认删除该用户? 所有相关文档,文件和标签将被删除",
"edit_user_title": "<small>编辑</small> \"{{ username }}\"",
"add_user_title": "<small>添加一个</small> 用户",
"username": "用户名",
"email": "邮箱",
"groups": "群组",
"storage_quota": "存储限额",
"storage_quota_placeholder": "存储限额 (in MB)",
"password": "密码",
"password_confirm": "密码 (确认)"
}
},
"security": {
"enable_totp": "激活双重身份验证",
"enable_totp_message": "请确保您的手机上已经拥有一个TOTP兼容的应用程序方可添加新账户",
"title": "双重身份 <small>验证</small>",
"message_1": "双重身份验证将让您的<strong>{{ appName }}</strong> 帐号获得多一层的安全保障.<br/>在启用该功能前, 请确保在您的手机上拥有一个与TOTP兼容的应用程序:",
"message_google_authenticator": "给安卓, 苹果, and 黑莓系统: <a href=\"https://support.google.com/accounts/answer/1066447\" target=\"_blank\">谷歌认证</a>",
"message_duo_mobile": "给 安卓 和 苹果系统: <a href=\"https://guide.duo.com/third-party-accounts\" target=\"_blank\">Duo Mobile</a>",
"message_authenticator": "给 Windows 系统手机: <a href=\"https://www.microsoft.com/en-US/store/apps/Authenticator/9WZDNCRFJ3RJ\" target=\"_blank\">认证</a>",
"message_2": "这些应用程序会自动生成一个验证码,且该验证码在一段时间内会变化.<br/>每次登录 <strong>{{ appName }}</strong>时您都需要输入该验证码.",
"secret_key": "您的秘钥是: <strong>{{ secret }}</strong>",
"secret_key_warning": "现在用该秘钥配置您的手机应用程序上的TOTP, 您之后将无获取权限.",
"totp_enabled_message": "双重身份验证将确保您的帐号.<br/>每次您登录 <strong>{{ appName }}</strong>时, 您都需要从您配置的手机应用程序的验证码.<br/>如果您丢失您的手机, 您将无法登录您的帐号但有效会话将允许您重新生成密钥.",
"disable_totp": {
"disable_totp": "不激活双重身份验证",
"message": "您的帐户将不再受双重身份验证保护.",
"confirm_password": "确认您的密码",
"submit": "不激活双重身份验证"
}
},
"group": {
"title": "群组 <small>管理</small>",
"add_group": "添加组",
"name": "名称",
"edit": {
"delete_group_title": "删除组",
"delete_group_message": "您是否确认删除该组?",
"edit_group_title": "编辑 <small>\"{{ name }}\"</small>",
"add_group_title": "添加 <small>组</small>",
"name": "名称",
"parent_group": "母群组",
"search_group": "搜索组",
"members": "成员",
"new_member": "新成员",
"search_user": "搜索用户"
}
},
"account": {
"title": "用户<small>帐号</small>",
"password": "密码",
"password_confirm": "密码 (确认)",
"updated": "帐号更新成功"
},
"config": {
"title_guest_access": "游客 <small>权限</small>",
"message_guest_access": "游客权限是所有人都能无需密码即获取 {{ appName }} 的权限模式.<br/>和其他正常用户一样, 游客权限用户也只能通过其获取的权限来访问其文档.<br/>",
"enable_guest_access": "激活游客权限",
"disable_guest_access": "不激活游客权限",
"title_theme": "主题 <small>定制</small>",
"application_name": "申请名",
"main_color": "主颜色",
"custom_css": "用户样式表",
"custom_css_placeholder": "在主样式表之后添加客户自定义样式表",
"logo": "图标 (正方形)",
"background_image": "背景图片",
"uploading_image": "上传图片中..."
},
"log": {
"title": "服务器 <small>日志</small>",
"date": "日期",
"tag": "标签",
"message": "信息"
},
"session": {
"title": "打开 <small>会话</small>",
"created_date": "创建日期",
"last_connection_date": "最后登录时间",
"user_agent": "从",
"current": "当前",
"current_session": "这是目前会话",
"clear_message": "该帐号的所有其他连接将终止",
"clear": "清除所有其他会话"
},
"vocabulary": {
"title": "词条 <small>输入</small>",
"choose_vocabulary": "选择一个词条编辑",
"type": "类型",
"coverage": "覆盖",
"rights": "权利",
"value": "值",
"order": "顺序",
"new_entry": "新输入"
}
},
"directive": {
"acledit": {
"acl_target": "用于",
"acl_permission": "允许",
"add_permission": "添加一个许可",
"search_user_group": "搜索一个用户或组"
},
"auditlog": {
"log_created": "创建",
"log_updated": "更新",
"log_deleted": "删除",
"Acl": "ACL",
"Comment": "评论",
"Document": "文档",
"File": "文件",
"Group": "组",
"Tag": "标签",
"User": "用户"
},
"selectrelation": {
"typeahead": "请输入文档名称"
},
"selecttag": {
"typeahead": "请输入标签"
}
},
"filter": {
"filesize": {
"mb": "MB",
"kb": "kB"
}
},
"acl": {
"READ": "可读",
"READWRITE": "可写",
"WRITE": "可写",
"USER": "用户",
"GROUP": "组",
"SHARE": "已共享"
},
"validation": {
"required": "必填",
"too_short": "过短",
"too_long": "过长",
"email": "必须是一个有效邮箱地址",
"password_confirm": "密码和确认密码必须完全一致",
"number": "必须为数字",
"no_space": "不允许空格"
},
"pagination": {
"previous": "上一个",
"next": "下一个",
"first": "第一",
"last": "持续"
},
"ok": "确认",
"cancel": "取消",
"share": "共享",
"unshare": "不共享",
"close": "关闭",
"add": "添加",
"open": "打开",
"see": "查看",
"save": "保存",
"export": "导出",
"edit": "编辑",
"delete": "删除",
"loading": "加载中...",
"send": "发送",
"enabled": "激活",
"disabled": "未激活"
}

View File

@ -1,6 +1,6 @@
<img src="img/loader.gif" ng-show="!app" />
<img src="img/loader.gif" ng-show="!logs" />
<div ng-show="app">
<div ng-show="logs">
<div class="well drop-zone">
<h3><span class="glyphicon glyphicon-cloud-upload"></span> {{ 'document.default.quick_upload' | translate }}</h3>
<div class="row upload-zone" ng-model="dropFiles" ng-file-drop drag-over-class="bg-success"
@ -55,17 +55,6 @@
<div ui-view="file"></div>
<div>
<h3><span class="glyphicon glyphicon-tasks"></span> {{ 'document.default.latest_activity' | translate }}</h3>
<audit-log logs="logs" />
</div>
<div class="text-muted text-right">
<ul class="list-inline">
<li translate="document.default.footer_sismics"></li>
<li><a href="apidoc/">{{ 'document.default.api_documentation' | translate }}</a></li>
<li><strong>{{ 'document.default.version' | translate }}</strong> {{ app.current_version }}</li>
<li><strong>{{ 'document.default.memory' | translate }}</strong> {{ app.free_memory / 1000000 | number: 0 }}/{{ app.total_memory / 1000000 | number: 0 }} MB</li>
</ul>
</div>
</div>

View File

@ -77,7 +77,12 @@
</table>
<div class="text-center pagination-box">
<pagination total-items="totalDocuments" items-per-page="limit" max-size="5" page="currentPage"></pagination>
<pagination
previous-text="{{ 'pagination.previous' | translate }}"
next-text="{{ 'pagination.next' | translate }}"
first-text="{{ 'pagination.first' | translate }}"
last-text="{{ 'pagination.last' | translate }}"
total-items="totalDocuments" items-per-page="limit" max-size="5" page="currentPage"></pagination>
<label class="sr-only" for="pagesizeSelect">{{ 'document.page_size' | translate }}</label>
<select ng-model="limit" id="pagesizeSelect" class="form-control">
<option value="10">{{ 'document.page_size_10' | translate }}</option>

View File

@ -3,6 +3,14 @@
.navbar {
display: none;
}
/* Absolute positionned footer on top of the login background */
.footer {
position: absolute;
bottom: 0;
border: none;
color: #fff;
}
</style>
<div class="row vertical-center login-box-container">
<div class="col-sm-offset-5 col-sm-2 login-box">

View File

@ -1,4 +1,4 @@
<h1>User <small>account</small></h1>
<h1 translate="settings.account.title"></h1>
<form class="form-horizontal" name="editUserForm" novalidate>
<div class="form-group" ng-class="{ 'has-error': !editUserForm.password.$valid && editUserForm.$dirty, success: editUserForm.password.$valid }">
<label class="col-sm-2 control-label" for="inputPassword">{{ 'settings.account.password' | translate }}</label>

View File

@ -67,6 +67,7 @@
.col-full {
margin-top: 20px;
margin-bottom: 20px;
}
}
@ -78,6 +79,11 @@
img {
opacity: 0.1;
}
.dropdown-menu {
top: -10px;
transform: translateY(-100%);
}
}
// Drop zone