mirror of
https://github.com/strapi/strapi.git
synced 2025-11-01 02:16:03 +00:00
Merge branch 'master' into update_knex
This commit is contained in:
commit
b393f3edea
@ -194,7 +194,7 @@ You can also apply different parameters to the query to make more complex querie
|
||||
- `<field>_lt`: Lower than.
|
||||
- `<field>_lte`: Lower than or equal to.
|
||||
- `<field>_gt`: Greater than.
|
||||
- `<field>_gte`: Lower than or equal to.
|
||||
- `<field>_gte`: Greater than or equal to.
|
||||
- `<field>_contains`: Contains.
|
||||
- `<field>_containss`: Contains sensitive.
|
||||
|
||||
|
||||
@ -8,6 +8,8 @@ import React from 'react';
|
||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||
import { PropTypes } from 'prop-types';
|
||||
|
||||
import LeftMenuLink from 'components/LeftMenuLink';
|
||||
|
||||
import styles from './styles.scss';
|
||||
import messages from './messages.json';
|
||||
defineMessages(messages);
|
||||
@ -15,8 +17,22 @@ defineMessages(messages);
|
||||
function LeftMenuFooter({ version }) { // eslint-disable-line react/prefer-stateless-function
|
||||
return (
|
||||
<div className={styles.leftMenuFooter}>
|
||||
<FormattedMessage {...messages.poweredBy} />
|
||||
<a href={`https://github.com/strapi/strapi/releases/tag/v${version}`} target="_blank">v{version}</a>
|
||||
<ul className={styles.list}>
|
||||
<LeftMenuLink
|
||||
icon="book"
|
||||
label={messages.documentation.id}
|
||||
destination="https://strapi.io/documentation"
|
||||
/>
|
||||
<LeftMenuLink
|
||||
icon="question-circle"
|
||||
label={messages.help.id}
|
||||
destination="https://strapi.io/help"
|
||||
/>
|
||||
</ul>
|
||||
<div className={styles.poweredBy}>
|
||||
<FormattedMessage {...messages.poweredBy} />
|
||||
<a href="https://strapi.io" target="_blank">Strapi</a> <a href={`https://github.com/strapi/strapi/releases/tag/v${version}`} target="_blank">v{version}</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,4 +1,12 @@
|
||||
{
|
||||
"documentation": {
|
||||
"id": "app.components.LeftMenuFooter.documentation",
|
||||
"defaultMessage": "Documentation"
|
||||
},
|
||||
"help": {
|
||||
"id": "app.components.LeftMenuFooter.help",
|
||||
"defaultMessage": "Help"
|
||||
},
|
||||
"poweredBy": {
|
||||
"id": "app.components.LeftMenuFooter.poweredBy",
|
||||
"defaultMessage": "Proudly powered by "
|
||||
|
||||
@ -4,26 +4,27 @@
|
||||
.leftMenuFooter { /* stylelint-disable */
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
background: $left-menu-bg;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.poweredBy {
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
height: 3rem;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
line-height: 3rem;
|
||||
font-family: 'Lato';
|
||||
background-color: rgba(255, 255, 255, .02);
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.05rem;
|
||||
vertical-align: middle;
|
||||
color: $strapi-gray-light;
|
||||
|
||||
a {
|
||||
color: #0097f7;
|
||||
}
|
||||
|
||||
select{
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,8 +47,22 @@ class LeftMenuLink extends React.Component {
|
||||
<span className={styles.linkLabel}>{this.props.label}</span>
|
||||
);
|
||||
|
||||
return (
|
||||
<li className={styles.item}>
|
||||
// Icon.
|
||||
const icon = <i className={`${styles.linkIcon} fa-${this.props.icon} fa`} />;
|
||||
|
||||
// Create external or internal link.
|
||||
const link = this.props.destination.includes('http')
|
||||
? (
|
||||
<a
|
||||
className={`${styles.link} ${isLinkActive ? styles.linkActive : ''}`}
|
||||
href={this.props.destination}
|
||||
target="_blank"
|
||||
>
|
||||
{icon}
|
||||
{content}
|
||||
</a>
|
||||
)
|
||||
: (
|
||||
<Link
|
||||
className={`${styles.link} ${isLinkActive ? styles.linkActive : ''}`}
|
||||
to={{
|
||||
@ -56,9 +70,14 @@ class LeftMenuLink extends React.Component {
|
||||
search: this.props.source ? `?source=${this.props.source}` : '',
|
||||
}}
|
||||
>
|
||||
<i className={`${styles.linkIcon} fa-${this.props.icon} fa`} />
|
||||
{icon}
|
||||
{content}
|
||||
</Link>
|
||||
);
|
||||
|
||||
return (
|
||||
<li className={styles.item}>
|
||||
{link}
|
||||
{plugin}
|
||||
</li>
|
||||
);
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
.leftMenuLinkContainer { /* stylelint-ignore */
|
||||
padding-top: .6rem;
|
||||
padding-bottom: 10.2rem; // LeftMenuFooter height
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
right: 0;
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { get } from 'lodash';
|
||||
import PropTypes from 'prop-types';
|
||||
import { ButtonDropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';
|
||||
@ -40,10 +41,10 @@ class Logout extends React.Component { // eslint-disable-line react/prefer-state
|
||||
</DropdownToggle>
|
||||
<DropdownMenu className={styles.dropDownContent}>
|
||||
<DropdownItem onClick={this.handleGoTo} className={styles.item}>
|
||||
Profile
|
||||
<FormattedMessage id="app.components.Logout.profile" />
|
||||
</DropdownItem>
|
||||
<DropdownItem onClick={this.handleLogout}>
|
||||
Logout
|
||||
<FormattedMessage id="app.components.Logout.logout" />
|
||||
<i className="fa fa-sign-out" />
|
||||
</DropdownItem>
|
||||
</DropdownMenu>
|
||||
|
||||
@ -256,6 +256,7 @@ AdminPage.propTypes = {
|
||||
blockApp: PropTypes.bool.isRequired,
|
||||
disableGlobalOverlayBlocker: PropTypes.func.isRequired,
|
||||
enableGlobalOverlayBlocker: PropTypes.func.isRequired,
|
||||
getAdminData: PropTypes.func.isRequired,
|
||||
hasUserPlugin: PropTypes.bool,
|
||||
history: PropTypes.object.isRequired,
|
||||
isAppLoading: PropTypes.bool,
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "قائمة الإضافيات المثبتة في المشروع.",
|
||||
"app.components.ListPluginsPage.helmet.title": "قائمة الإضافات",
|
||||
"app.components.ListPluginsPage.title": "الإضافات",
|
||||
"app.components.Logout.profile": "الملف الشخصي",
|
||||
"app.components.Logout.logout": "الخروج",
|
||||
"app.components.NotFoundPage.back": "العودة للرئيسية",
|
||||
"app.components.NotFoundPage.description": "لا يوجد",
|
||||
"app.components.Official": "الرسمية",
|
||||
@ -138,4 +140,4 @@
|
||||
"notification.error.layout": "تعذّر استرداد التنسيق",
|
||||
"request.error.model.unknow": "هذا النموذج غير موجود",
|
||||
"request.error.model.unknown": "هذا النموذج غير موجود"
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.LeftMenuLinkContainer.plugins": "Plugins",
|
||||
"app.components.ListPluginsPage.description": "Liste aller im Projekt installierten Plugins.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Plugins anzeigen",
|
||||
"app.components.Logout.profile": "Profil",
|
||||
"app.components.Logout.logout": "Ausloggen",
|
||||
"app.components.ListPluginsPage.title": "Plugins",
|
||||
"app.components.NotFoundPage.back": "Zurück zur Homepage",
|
||||
"app.components.NotFoundPage.description": "Nicht gefunden",
|
||||
|
||||
@ -65,6 +65,8 @@
|
||||
"app.components.InstallPluginPopup.navLink.faq": "faq",
|
||||
"app.components.InstallPluginPopup.navLink.screenshots": "Screenshots",
|
||||
"app.components.InstallPluginPopup.noDescription": "No description available",
|
||||
"app.components.LeftMenuFooter.documentation": "Documentation",
|
||||
"app.components.LeftMenuFooter.help": "Help",
|
||||
"app.components.LeftMenuFooter.poweredBy": "Powered by ",
|
||||
"app.components.LeftMenuLinkContainer.configuration": "Configurations",
|
||||
"app.components.LeftMenuLinkContainer.general": "General",
|
||||
@ -75,6 +77,8 @@
|
||||
"app.components.ListPluginsPage.description": "List of the installed plugins in the project.",
|
||||
"app.components.ListPluginsPage.helmet.title": "List plugins",
|
||||
"app.components.ListPluginsPage.title": "Plugins",
|
||||
"app.components.Logout.profile": "Profile",
|
||||
"app.components.Logout.logout": "Logout",
|
||||
"app.components.NotFoundPage.back": "Back to homepage",
|
||||
"app.components.NotFoundPage.description": "Not Found",
|
||||
"app.components.Official": "Official",
|
||||
@ -138,4 +142,4 @@
|
||||
"notification.error.layout": "Couldn't retrieve the layout",
|
||||
"request.error.model.unknown": "This model doesn't exist",
|
||||
"app.utils.delete": "Delete"
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Lista de los plugins instalados en el proyecto.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Lista de plugins",
|
||||
"app.components.ListPluginsPage.title": "Plugins",
|
||||
"app.components.Logout.profile": "Perfil",
|
||||
"app.components.Logout.logout": "Cerrar sesión",
|
||||
"app.components.NotFoundPage.back": "Volver a la página de inicio",
|
||||
"app.components.NotFoundPage.description": "No encontrado",
|
||||
"app.components.Official": "Oficial",
|
||||
@ -138,4 +140,4 @@
|
||||
"notification.error.layout": "No se pudo recuperar el esquema",
|
||||
"request.error.model.unknown": "Este modelo no existe",
|
||||
"app.utils.delete": "Eliminar"
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,6 +66,8 @@
|
||||
"app.components.InstallPluginPopup.navLink.faq": "FAQ",
|
||||
"app.components.InstallPluginPopup.navLink.screenshots": "Captures d'écran",
|
||||
"app.components.InstallPluginPopup.noDescription": "Aucune description disponible",
|
||||
"app.components.LeftMenuFooter.documentation": "Documentation",
|
||||
"app.components.LeftMenuFooter.help": "Aide",
|
||||
"app.components.LeftMenuFooter.poweredBy": "Propulsé par ",
|
||||
"app.components.LeftMenuLinkContainer.configuration": "Configurations",
|
||||
"app.components.LeftMenuLinkContainer.general": "Général",
|
||||
@ -75,6 +77,8 @@
|
||||
"app.components.LeftMenuLinkContainer.plugins": "Plugins",
|
||||
"app.components.ListPluginsPage.description": "Liste des plugins installés dans le projet.",
|
||||
"app.components.ListPluginsPage.helmet.title": "List plugins",
|
||||
"app.components.Logout.profile": "Profil",
|
||||
"app.components.Logout.logout": "Connectez - Out",
|
||||
"app.components.ListPluginsPage.title": "Plugins",
|
||||
"app.components.NotFoundPage.back": "Retourner à la page d'accueil",
|
||||
"app.components.NotFoundPage.description": "Page introuvable",
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Lista dei plugin installati nel progetto.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Lista plugin",
|
||||
"app.components.ListPluginsPage.title": "Plugins",
|
||||
"app.components.Logout.profile": "Profilo",
|
||||
"app.components.Logout.logout": "Disconnettersi",
|
||||
"app.components.NotFoundPage.back": "Torna alla home",
|
||||
"app.components.NotFoundPage.description": "Non trovato",
|
||||
"app.components.Official": "Ufficiale",
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "このプロジェクトでインストールされたプラグイン一覧",
|
||||
"app.components.ListPluginsPage.helmet.title": "プラグイン一覧",
|
||||
"app.components.ListPluginsPage.title": "プラグイン",
|
||||
"app.components.Logout.profile": "プロフィール",
|
||||
"app.components.Logout.logout": "ログアウト",
|
||||
"app.components.NotFoundPage.back": "ホームページに戻る",
|
||||
"app.components.NotFoundPage.description": "見つかりません",
|
||||
"app.components.Official": "オフィシャル",
|
||||
|
||||
@ -74,6 +74,8 @@
|
||||
"app.components.ListPluginsPage.description": "이 프로젝트에 설치된 플러그인 목록입니다.",
|
||||
"app.components.ListPluginsPage.helmet.title": "플러그인 목록",
|
||||
"app.components.ListPluginsPage.title": "플러그인",
|
||||
"app.components.Logout.profile": "옆모습",
|
||||
"app.components.Logout.logout": "로그 아웃",
|
||||
"app.components.NotFoundPage.back": "홈으로 돌아가기",
|
||||
"app.components.NotFoundPage.description": "찾을 수 없는 페이지입니다.",
|
||||
"app.components.Official": "공식",
|
||||
@ -136,4 +138,4 @@
|
||||
"notification.error": "에러가 발생했습니다.",
|
||||
"notification.error.layout": "레이아웃을 가져올 수 없습니다.",
|
||||
"request.error.model.unknown": "모델이 없습니다."
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Lijst van alle plugins voor dit project",
|
||||
"app.components.ListPluginsPage.helmet.title": "Alle extensies",
|
||||
"app.components.ListPluginsPage.title": "Extensies",
|
||||
"app.components.Logout.profile": "Profil",
|
||||
"app.components.Logout.logout": "Log ud",
|
||||
"app.components.NotFoundPage.back": "Terug naar home pagina",
|
||||
"app.components.NotFoundPage.description": "Niets gevonden",
|
||||
"app.components.Official": "Officieel",
|
||||
@ -137,4 +139,4 @@
|
||||
"notification.error": "Er is een fout opgetreden",
|
||||
"notification.error.layout": "Kon de opzet niet laden",
|
||||
"request.error.model.unknown": "Dit model bestaat niet"
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Lista zainstalowanych wtyczek w projekcie.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Lista wtyczek",
|
||||
"app.components.ListPluginsPage.title": "Wtyczki",
|
||||
"app.components.Logout.profile": "Profil",
|
||||
"app.components.Logout.logout": "Wyloguj",
|
||||
"app.components.NotFoundPage.back": "Powrót do strony głównej",
|
||||
"app.components.NotFoundPage.description": "Nie znaleziono",
|
||||
"app.components.Official": "Oficjalna",
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Lista de extensões instaladas no projeto.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Lista de extensões",
|
||||
"app.components.ListPluginsPage.title": "Extensões",
|
||||
"app.components.Logout.profile": "Perfil",
|
||||
"app.components.Logout.logout": "Sair",
|
||||
"app.components.NotFoundPage.back": "Voltar à página inicial",
|
||||
"app.components.NotFoundPage.description": "Não encontrado",
|
||||
"app.components.Official": "Oficial",
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Lista de extensões instaladas no projecto.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Lista de extensões",
|
||||
"app.components.ListPluginsPage.title": "Extensões",
|
||||
"app.components.Logout.profile": "Perfil",
|
||||
"app.components.Logout.logout": "Sair",
|
||||
"app.components.NotFoundPage.back": "Voltar à página inicial",
|
||||
"app.components.NotFoundPage.description": "Não encontrado",
|
||||
"app.components.Official": "Oficial",
|
||||
@ -137,4 +139,4 @@
|
||||
"notification.error": "Ocorreu um erro",
|
||||
"notification.error.layout": "Não foi possível recuperar o layout",
|
||||
"request.error.model.unknown": "Este modelo não existe"
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Список установленых плагинов.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Список плагинов",
|
||||
"app.components.ListPluginsPage.title": "Плагины",
|
||||
"app.components.Logout.profile": "Профиль",
|
||||
"app.components.Logout.logout": "Выйти",
|
||||
"app.components.NotFoundPage.back": "Вернуться на главную",
|
||||
"app.components.NotFoundPage.description": "Не найдено",
|
||||
"app.components.Official": "Официальный",
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "Projedeki yüklenen eklentiler.",
|
||||
"app.components.ListPluginsPage.helmet.title": "Eklenti Listesi",
|
||||
"app.components.ListPluginsPage.title": "Etklentiler",
|
||||
"app.components.Logout.profile": "Profil",
|
||||
"app.components.Logout.logout": "Çıkış Yap",
|
||||
"app.components.NotFoundPage.back": "Anasayfaya geri dön",
|
||||
"app.components.NotFoundPage.description": "Bulunamadı",
|
||||
"app.components.Official": "Resmi",
|
||||
@ -138,4 +140,4 @@
|
||||
"notification.error.layout": "Düzen alınamadı",
|
||||
"request.error.model.unknown": "Bu model bulunmamaktadır.",
|
||||
"app.utils.delete": "Sil"
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,6 +72,8 @@
|
||||
"app.components.ListPluginsPage.description": "项目中已安装的插件列表",
|
||||
"app.components.ListPluginsPage.helmet.title": "插件列表",
|
||||
"app.components.ListPluginsPage.title": "插件",
|
||||
"app.components.Logout.profile": "轮廓",
|
||||
"app.components.Logout.logout": "登出",
|
||||
"app.components.NotFoundPage.back": "返回主页",
|
||||
"app.components.NotFoundPage.description": "没有找到",
|
||||
"app.components.Official": "官方",
|
||||
@ -133,4 +135,4 @@
|
||||
"notification.error": "发生了一个错误",
|
||||
"notification.error.layout": "无法获取布局",
|
||||
"request.error.model.unknown": "这个模型已不存在"
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,6 +75,8 @@
|
||||
"app.components.ListPluginsPage.description": "這個專案安裝的擴充功能列表",
|
||||
"app.components.ListPluginsPage.helmet.title": "擴充功能列表",
|
||||
"app.components.ListPluginsPage.title": "擴充功能",
|
||||
"app.components.Logout.profile": "輪廓",
|
||||
"app.components.Logout.logout": "登出",
|
||||
"app.components.NotFoundPage.back": "回到主頁",
|
||||
"app.components.NotFoundPage.description": "找不到此頁面",
|
||||
"app.components.Official": "官方",
|
||||
@ -138,4 +140,4 @@
|
||||
"notification.error.layout": "無法取得佈局",
|
||||
"request.error.model.unknown": "不存在的資料",
|
||||
"app.utils.delete": "刪除"
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user