mirror of
https://github.com/Oreolek/kangana.git
synced 2024-06-28 20:55:09 +03:00
auth and look
This commit is contained in:
parent
a78da95e35
commit
e5945aaa9a
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,5 +1,4 @@
|
|||
application/config/database.php
|
||||
application/config/auth.php
|
||||
application/config/stats.php
|
||||
application/config/sphinxql.php
|
||||
application/cache
|
||||
|
|
96
application/assets/stylesheets/bootswatch.less
Normal file
96
application/assets/stylesheets/bootswatch.less
Normal file
|
@ -0,0 +1,96 @@
|
|||
// Readable 3.0.3
|
||||
// Bootswatch
|
||||
// -----------------------------------------------------
|
||||
|
||||
@import url("//fonts.googleapis.com/css?family=Raleway:700");
|
||||
|
||||
// Navbar =====================================================================
|
||||
|
||||
.navbar {
|
||||
font-family: @headings-font-family;
|
||||
text-transform: uppercase;
|
||||
|
||||
&-nav > li > a {
|
||||
padding-top: @navbar-padding-vertical + 6px;
|
||||
}
|
||||
|
||||
&-nav > .active > a,
|
||||
&-nav > .active > a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&-default .navbar-nav > .active > a:hover {
|
||||
color: @navbar-default-link-hover-color;
|
||||
}
|
||||
|
||||
&-inverse .navbar-nav > .active > a:hover {
|
||||
color: @navbar-inverse-link-hover-color;
|
||||
}
|
||||
|
||||
&-brand {
|
||||
padding-top: @navbar-padding-vertical + 5px;
|
||||
}
|
||||
}
|
||||
|
||||
// Buttons ====================================================================
|
||||
|
||||
.btn {
|
||||
font-family: @headings-font-family;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
// Typography =================================================================
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 1.4em;
|
||||
}
|
||||
|
||||
// Tables =====================================================================
|
||||
|
||||
// Forms ======================================================================
|
||||
|
||||
// Navs =======================================================================
|
||||
|
||||
.pagination {
|
||||
|
||||
.active > a,
|
||||
.active > a:hover {
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
&-lg > li > a,
|
||||
&-lg > li > span {
|
||||
padding: 14px 24px;
|
||||
}
|
||||
}
|
||||
|
||||
// Indicators =================================================================
|
||||
|
||||
.alert {
|
||||
a,
|
||||
.alert-link {
|
||||
color: @alert-success-text;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
// Progress bars ==============================================================
|
||||
|
||||
// Containers =================================================================
|
||||
|
||||
.panel {
|
||||
|
||||
&-primary,
|
||||
&-success,
|
||||
&-warning,
|
||||
&-danger,
|
||||
&-info {
|
||||
.panel-heading {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,86 +0,0 @@
|
|||
@background1: #fff;
|
||||
@background2: #ddd;
|
||||
@background3: #bbb;
|
||||
@background4: #999;
|
||||
|
||||
@foreground1: #000;
|
||||
@foreground2: #222;
|
||||
@foreground3: #444;
|
||||
@foreground4: #666;
|
||||
|
||||
@font-family-sans-serif: "Open Sans", Arial, sans-serif;
|
||||
@link-color: @foreground2;
|
||||
|
||||
@btn-primary-color: @foreground1;
|
||||
@btn-primary-bg: @background1;
|
||||
@btn-primary-border: @foreground4;
|
||||
@btn-default-color: @foreground1;
|
||||
@btn-default-bg: @background2;
|
||||
@btn-default-border: @foreground4;
|
||||
|
||||
.red {
|
||||
color: darkred;
|
||||
}
|
||||
|
||||
.green {
|
||||
color: darkgreen;
|
||||
}
|
||||
|
||||
.blue {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
body {
|
||||
color: @foreground1;
|
||||
background: @background1;
|
||||
}
|
||||
|
||||
.navigation {
|
||||
background: @background1;
|
||||
}
|
||||
|
||||
a {
|
||||
&:hover {
|
||||
color: @foreground4;
|
||||
}
|
||||
&:visited {
|
||||
color: @foreground3;
|
||||
}
|
||||
}
|
||||
|
||||
.comment {
|
||||
&:nth-child(odd) {
|
||||
background: @background2;
|
||||
}
|
||||
}
|
||||
|
||||
.paging {
|
||||
a.active {
|
||||
color: @foreground4;
|
||||
}
|
||||
}
|
||||
|
||||
input[type='text'],
|
||||
input[type='password'],
|
||||
textarea,
|
||||
.form-control {
|
||||
background: @background2;
|
||||
}
|
||||
|
||||
.sidequote() {
|
||||
color: @foreground4;
|
||||
}
|
||||
|
||||
.footer {
|
||||
color: @foreground2;
|
||||
}
|
||||
|
||||
acronym, abbr {
|
||||
border-bottom: 1px dashed @foreground4;
|
||||
color: @foreground4;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 1px dashed @background4;
|
||||
background: @background3;
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
@import 'bootstrap/bootstrap';
|
||||
@import 'fontawesome/font-awesome';
|
||||
@import 'colors';
|
||||
@import 'layout';
|
||||
@import 'variables';
|
||||
@import 'bootswatch';
|
||||
@fa-font-path: "../../assets/fonts";
|
||||
|
|
642
application/assets/stylesheets/variables.less
Normal file
642
application/assets/stylesheets/variables.less
Normal file
|
@ -0,0 +1,642 @@
|
|||
// Yeti 3.0.3
|
||||
// Variables
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Global values
|
||||
// --------------------------------------------------
|
||||
|
||||
// Grays
|
||||
// -------------------------
|
||||
|
||||
@gray-darker: lighten(#000, 13.5%); // #222
|
||||
@gray-dark: lighten(#000, 20%); // #333
|
||||
@gray: #6f6f6f;
|
||||
@gray-light: lighten(#000, 60%); // #999
|
||||
@gray-lighter: lighten(#000, 93.5%); // #eee
|
||||
|
||||
// Brand colors
|
||||
// -------------------------
|
||||
|
||||
@brand-primary: #008cba;
|
||||
@brand-success: #43ac6a;
|
||||
@brand-warning: #E99002;
|
||||
@brand-danger: #F04124;
|
||||
@brand-info: #5bc0de;
|
||||
|
||||
// Scaffolding
|
||||
// -------------------------
|
||||
|
||||
@body-bg: #fff;
|
||||
@text-color: @gray-darker;
|
||||
|
||||
// Links
|
||||
// -------------------------
|
||||
|
||||
@link-color: @brand-primary;
|
||||
@link-hover-color: darken(@link-color, 15%);
|
||||
|
||||
// Typography
|
||||
// -------------------------
|
||||
|
||||
@font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
@font-family-serif: Georgia, "Times New Roman", Times, serif;
|
||||
@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
@font-family-base: @font-family-sans-serif;
|
||||
|
||||
@font-size-base: 15px;
|
||||
@font-size-large: ceil(@font-size-base * 1.25); // ~18px
|
||||
@font-size-small: 12px;
|
||||
|
||||
@font-size-h1: floor(@font-size-base * 2.6); // ~36px
|
||||
@font-size-h2: floor(@font-size-base * 2.15); // ~30px
|
||||
@font-size-h3: ceil(@font-size-base * 1.7); // ~24px
|
||||
@font-size-h4: ceil(@font-size-base * 1.25); // ~18px
|
||||
@font-size-h5: @font-size-base;
|
||||
@font-size-h6: ceil(@font-size-base * 0.85); // ~12px
|
||||
|
||||
@line-height-base: 1.428571429; // 20/14
|
||||
@line-height-computed: floor(@font-size-base * @line-height-base); // ~20px
|
||||
|
||||
@headings-font-family: @font-family-base;
|
||||
@headings-font-weight: 300;
|
||||
@headings-line-height: 1.1;
|
||||
@headings-color: inherit;
|
||||
|
||||
|
||||
// Iconography
|
||||
// -------------------------
|
||||
|
||||
@icon-font-path: "../fonts/";
|
||||
@icon-font-name: "glyphicons-halflings-regular";
|
||||
|
||||
|
||||
// Components
|
||||
// -------------------------
|
||||
// Based on 14px font-size and 1.428 line-height (~20px to start)
|
||||
|
||||
@padding-base-vertical: 6px;
|
||||
@padding-base-horizontal: 12px;
|
||||
|
||||
@padding-large-vertical: 10px;
|
||||
@padding-large-horizontal: 16px;
|
||||
|
||||
@padding-small-vertical: 5px;
|
||||
@padding-small-horizontal: 10px;
|
||||
|
||||
@padding-xs-vertical: 1px;
|
||||
@padding-xs-horizontal: 5px;
|
||||
|
||||
@line-height-large: 1.33;
|
||||
@line-height-small: 1.5;
|
||||
|
||||
@border-radius-base: 0;
|
||||
@border-radius-large: 0;
|
||||
@border-radius-small: 0;
|
||||
|
||||
@component-active-color: #fff;
|
||||
@component-active-bg: @brand-primary;
|
||||
|
||||
@caret-width-base: 4px;
|
||||
@caret-width-large: 5px;
|
||||
|
||||
// Tables
|
||||
// -------------------------
|
||||
|
||||
@table-cell-padding: 8px;
|
||||
@table-condensed-cell-padding: 5px;
|
||||
|
||||
@table-bg: transparent; // overall background-color
|
||||
@table-bg-accent: #f9f9f9; // for striping
|
||||
@table-bg-hover: #f5f5f5;
|
||||
@table-bg-active: @table-bg-hover;
|
||||
|
||||
@table-border-color: #ddd; // table and cell border
|
||||
|
||||
|
||||
// Buttons
|
||||
// -------------------------
|
||||
|
||||
@btn-font-weight: normal;
|
||||
|
||||
@btn-default-color: @gray-dark;
|
||||
@btn-default-bg: #e7e7e7;
|
||||
@btn-default-border: #dadada;
|
||||
|
||||
@btn-primary-color: #fff;
|
||||
@btn-primary-bg: @brand-primary;
|
||||
@btn-primary-border: darken(@btn-primary-bg, 5%);
|
||||
|
||||
@btn-success-color: #fff;
|
||||
@btn-success-bg: @brand-success;
|
||||
@btn-success-border: darken(@btn-success-bg, 5%);
|
||||
|
||||
@btn-warning-color: #fff;
|
||||
@btn-warning-bg: @brand-warning;
|
||||
@btn-warning-border: darken(@btn-warning-bg, 5%);
|
||||
|
||||
@btn-danger-color: #fff;
|
||||
@btn-danger-bg: @brand-danger;
|
||||
@btn-danger-border: darken(@btn-danger-bg, 5%);
|
||||
|
||||
@btn-info-color: #fff;
|
||||
@btn-info-bg: @brand-info;
|
||||
@btn-info-border: darken(@btn-info-bg, 5%);
|
||||
|
||||
@btn-link-disabled-color: @gray-light;
|
||||
|
||||
|
||||
// Forms
|
||||
// -------------------------
|
||||
|
||||
@input-bg: #fff;
|
||||
@input-bg-disabled: @gray-lighter;
|
||||
|
||||
@input-color: @gray;
|
||||
@input-border: #ccc;
|
||||
@input-border-radius: @border-radius-base;
|
||||
@input-border-focus: #66afe9;
|
||||
|
||||
@input-color-placeholder: @gray-light;
|
||||
|
||||
@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
|
||||
@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
|
||||
@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
|
||||
|
||||
@legend-color: @gray-dark;
|
||||
@legend-border-color: #e5e5e5;
|
||||
|
||||
@input-group-addon-bg: @gray-lighter;
|
||||
@input-group-addon-border-color: @input-border;
|
||||
|
||||
|
||||
// Dropdowns
|
||||
// -------------------------
|
||||
|
||||
@dropdown-bg: #fff;
|
||||
@dropdown-border: rgba(0,0,0,.15);
|
||||
@dropdown-fallback-border: #ccc;
|
||||
@dropdown-divider-bg: rgba(0,0,0,.2);
|
||||
|
||||
@dropdown-link-color: #555;
|
||||
@dropdown-link-hover-color: darken(@gray-dark, 5%);
|
||||
@dropdown-link-hover-bg: #eee;
|
||||
|
||||
@dropdown-link-active-color: @component-active-color;
|
||||
@dropdown-link-active-bg: @component-active-bg;
|
||||
|
||||
@dropdown-link-disabled-color: @gray-light;
|
||||
|
||||
@dropdown-header-color: @gray-light;
|
||||
|
||||
|
||||
// COMPONENT VARIABLES
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// Z-index master list
|
||||
// -------------------------
|
||||
// Used for a bird's eye view of components dependent on the z-axis
|
||||
// Try to avoid customizing these :)
|
||||
|
||||
@zindex-navbar: 1000;
|
||||
@zindex-dropdown: 1000;
|
||||
@zindex-popover: 1010;
|
||||
@zindex-tooltip: 1030;
|
||||
@zindex-navbar-fixed: 1030;
|
||||
@zindex-modal-background: 1040;
|
||||
@zindex-modal: 1050;
|
||||
|
||||
// Media queries breakpoints
|
||||
// --------------------------------------------------
|
||||
|
||||
// Extra small screen / phone
|
||||
// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1
|
||||
@screen-xs: 480px;
|
||||
@screen-xs-min: @screen-xs;
|
||||
@screen-phone: @screen-xs-min;
|
||||
|
||||
// Small screen / tablet
|
||||
// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1
|
||||
@screen-sm: 768px;
|
||||
@screen-sm-min: @screen-sm;
|
||||
@screen-tablet: @screen-sm-min;
|
||||
|
||||
// Medium screen / desktop
|
||||
// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1
|
||||
@screen-md: 992px;
|
||||
@screen-md-min: @screen-md;
|
||||
@screen-desktop: @screen-md-min;
|
||||
|
||||
// Large screen / wide desktop
|
||||
// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1
|
||||
@screen-lg: 1200px;
|
||||
@screen-lg-min: @screen-lg;
|
||||
@screen-lg-desktop: @screen-lg-min;
|
||||
|
||||
// So media queries don't overlap when required, provide a maximum
|
||||
@screen-xs-max: (@screen-sm-min - 1);
|
||||
@screen-sm-max: (@screen-md-min - 1);
|
||||
@screen-md-max: (@screen-lg-min - 1);
|
||||
|
||||
|
||||
// Grid system
|
||||
// --------------------------------------------------
|
||||
|
||||
// Number of columns in the grid system
|
||||
@grid-columns: 12;
|
||||
// Padding, to be divided by two and applied to the left and right of all columns
|
||||
@grid-gutter-width: 30px;
|
||||
|
||||
// Navbar collapse
|
||||
|
||||
// Point at which the navbar becomes uncollapsed
|
||||
@grid-float-breakpoint: @screen-sm-min;
|
||||
// Point at which the navbar begins collapsing
|
||||
@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
|
||||
|
||||
|
||||
// Navbar
|
||||
// -------------------------
|
||||
|
||||
// Basics of a navbar
|
||||
@navbar-height: 45px;
|
||||
@navbar-margin-bottom: @line-height-computed;
|
||||
@navbar-border-radius: @border-radius-base;
|
||||
@navbar-padding-horizontal: floor(@grid-gutter-width / 2);
|
||||
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
|
||||
|
||||
@navbar-default-color: #fff;
|
||||
@navbar-default-bg: @gray-dark;
|
||||
@navbar-default-border: darken(@navbar-default-bg, 6.5%);
|
||||
|
||||
// Navbar links
|
||||
@navbar-default-link-color: #fff;
|
||||
@navbar-default-link-hover-color: #fff;
|
||||
@navbar-default-link-hover-bg: #272727;
|
||||
@navbar-default-link-active-color: #fff;
|
||||
@navbar-default-link-active-bg: #272727;
|
||||
@navbar-default-link-disabled-color: #ccc;
|
||||
@navbar-default-link-disabled-bg: transparent;
|
||||
|
||||
// Navbar brand label
|
||||
@navbar-default-brand-color: @navbar-default-link-color;
|
||||
@navbar-default-brand-hover-color: @navbar-default-brand-color;
|
||||
@navbar-default-brand-hover-bg: transparent;
|
||||
|
||||
// Navbar toggle
|
||||
@navbar-default-toggle-hover-bg: transparent;
|
||||
@navbar-default-toggle-icon-bar-bg: #fff;
|
||||
@navbar-default-toggle-border-color: transparent;
|
||||
|
||||
|
||||
// Inverted navbar
|
||||
//
|
||||
// Reset inverted navbar basics
|
||||
@navbar-inverse-color: #fff;
|
||||
@navbar-inverse-bg: @brand-primary;
|
||||
@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
|
||||
|
||||
// Inverted navbar links
|
||||
@navbar-inverse-link-color: #fff;
|
||||
@navbar-inverse-link-hover-color: #fff;
|
||||
@navbar-inverse-link-hover-bg: darken(@navbar-inverse-bg, 10%);
|
||||
@navbar-inverse-link-active-color: #fff;
|
||||
@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
|
||||
@navbar-inverse-link-disabled-color: #444;
|
||||
@navbar-inverse-link-disabled-bg: transparent;
|
||||
|
||||
// Inverted navbar brand label
|
||||
@navbar-inverse-brand-color: @navbar-inverse-link-color;
|
||||
@navbar-inverse-brand-hover-color: #fff;
|
||||
@navbar-inverse-brand-hover-bg: transparent;
|
||||
|
||||
// Inverted navbar toggle
|
||||
@navbar-inverse-toggle-hover-bg: transparent;
|
||||
@navbar-inverse-toggle-icon-bar-bg: #fff;
|
||||
@navbar-inverse-toggle-border-color: transparent;
|
||||
|
||||
|
||||
// Navs
|
||||
// -------------------------
|
||||
|
||||
@nav-link-padding: 10px 15px;
|
||||
@nav-link-hover-bg: @gray-lighter;
|
||||
|
||||
@nav-disabled-link-color: @gray-light;
|
||||
@nav-disabled-link-hover-color: @gray-light;
|
||||
|
||||
@nav-open-link-hover-color: #fff;
|
||||
|
||||
// Tabs
|
||||
@nav-tabs-border-color: #ddd;
|
||||
|
||||
@nav-tabs-link-hover-border-color: @gray-lighter;
|
||||
|
||||
@nav-tabs-active-link-hover-bg: @body-bg;
|
||||
@nav-tabs-active-link-hover-color: @gray;
|
||||
@nav-tabs-active-link-hover-border-color: #ddd;
|
||||
|
||||
@nav-tabs-justified-link-border-color: #ddd;
|
||||
@nav-tabs-justified-active-link-border-color: @body-bg;
|
||||
|
||||
// Pills
|
||||
@nav-pills-border-radius: @border-radius-base;
|
||||
@nav-pills-active-link-hover-bg: @component-active-bg;
|
||||
@nav-pills-active-link-hover-color: @component-active-color;
|
||||
|
||||
|
||||
// Pagination
|
||||
// -------------------------
|
||||
|
||||
@pagination-bg: transparent;
|
||||
@pagination-border: transparent;
|
||||
|
||||
@pagination-hover-bg: @gray-lighter;
|
||||
|
||||
@pagination-active-bg: @brand-primary;
|
||||
@pagination-active-color: #fff;
|
||||
|
||||
@pagination-disabled-color: @gray-light;
|
||||
|
||||
|
||||
// Pager
|
||||
// -------------------------
|
||||
|
||||
@pager-border-radius: 3px;
|
||||
@pager-disabled-color: @gray-light;
|
||||
|
||||
|
||||
// Jumbotron
|
||||
// -------------------------
|
||||
|
||||
@jumbotron-padding: 30px;
|
||||
@jumbotron-color: inherit;
|
||||
@jumbotron-bg: #fafafa;
|
||||
@jumbotron-heading-color: inherit;
|
||||
@jumbotron-font-size: ceil(@font-size-base * 1.5);
|
||||
|
||||
|
||||
// Form states and alerts
|
||||
// -------------------------
|
||||
|
||||
@state-success-text: @brand-success;
|
||||
@state-success-bg: #dff0d8;
|
||||
@state-success-border: darken(@state-success-text, 5%);
|
||||
|
||||
@state-info-text: @brand-info;
|
||||
@state-info-bg: #d9edf7;
|
||||
@state-info-border: darken(@state-info-text, 7%);
|
||||
|
||||
@state-warning-text: @brand-warning;
|
||||
@state-warning-bg: #fcf8e3;
|
||||
@state-warning-border: darken(@state-warning-text, 5%);
|
||||
|
||||
@state-danger-text: @brand-danger;
|
||||
@state-danger-bg: #f2dede;
|
||||
@state-danger-border: darken(@state-danger-text, 5%);
|
||||
|
||||
|
||||
// Tooltips
|
||||
// -------------------------
|
||||
@tooltip-max-width: 200px;
|
||||
@tooltip-color: #fff;
|
||||
@tooltip-bg: @gray-dark;
|
||||
|
||||
@tooltip-arrow-width: 5px;
|
||||
@tooltip-arrow-color: @tooltip-bg;
|
||||
|
||||
|
||||
// Popovers
|
||||
// -------------------------
|
||||
@popover-bg: @gray-dark;
|
||||
@popover-max-width: 276px;
|
||||
@popover-border-color: transparent;
|
||||
@popover-fallback-border-color: @gray-dark;
|
||||
|
||||
@popover-title-bg: @popover-bg;
|
||||
|
||||
@popover-arrow-width: 10px;
|
||||
@popover-arrow-color: @popover-bg;
|
||||
|
||||
@popover-arrow-outer-width: (@popover-arrow-width + 1);
|
||||
@popover-arrow-outer-color: rgba(0,0,0,.25);
|
||||
@popover-arrow-outer-fallback-color: #999;
|
||||
|
||||
|
||||
// Labels
|
||||
// -------------------------
|
||||
|
||||
@label-default-bg: @gray-light;
|
||||
@label-primary-bg: @brand-primary;
|
||||
@label-success-bg: @brand-success;
|
||||
@label-info-bg: @brand-info;
|
||||
@label-warning-bg: @brand-warning;
|
||||
@label-danger-bg: @brand-danger;
|
||||
|
||||
@label-color: #fff;
|
||||
@label-link-hover-color: #fff;
|
||||
|
||||
|
||||
// Modals
|
||||
// -------------------------
|
||||
@modal-inner-padding: 20px;
|
||||
|
||||
@modal-title-padding: 15px;
|
||||
@modal-title-line-height: @line-height-base;
|
||||
|
||||
@modal-content-bg: #fff;
|
||||
@modal-content-border-color: rgba(0,0,0,.2);
|
||||
@modal-content-fallback-border-color: #999;
|
||||
|
||||
@modal-backdrop-bg: #000;
|
||||
@modal-header-border-color: #e5e5e5;
|
||||
@modal-footer-border-color: @modal-header-border-color;
|
||||
|
||||
|
||||
// Alerts
|
||||
// -------------------------
|
||||
@alert-padding: 15px;
|
||||
@alert-border-radius: @border-radius-base;
|
||||
@alert-link-font-weight: bold;
|
||||
|
||||
@alert-success-bg: @brand-success;
|
||||
@alert-success-text: #fff;
|
||||
@alert-success-border: @state-success-border;
|
||||
|
||||
@alert-info-bg: @brand-info;
|
||||
@alert-info-text: #fff;
|
||||
@alert-info-border: @state-info-border;
|
||||
|
||||
@alert-warning-bg: @brand-warning;
|
||||
@alert-warning-text: #fff;
|
||||
@alert-warning-border: @state-warning-border;
|
||||
|
||||
@alert-danger-bg: @brand-danger;
|
||||
@alert-danger-text: #fff;
|
||||
@alert-danger-border: @state-danger-border;
|
||||
|
||||
|
||||
// Progress bars
|
||||
// -------------------------
|
||||
@progress-bg: #f5f5f5;
|
||||
@progress-bar-color: #fff;
|
||||
|
||||
@progress-bar-bg: @brand-primary;
|
||||
@progress-bar-success-bg: @brand-success;
|
||||
@progress-bar-warning-bg: @brand-warning;
|
||||
@progress-bar-danger-bg: @brand-danger;
|
||||
@progress-bar-info-bg: @brand-info;
|
||||
|
||||
|
||||
// List group
|
||||
// -------------------------
|
||||
@list-group-bg: #fff;
|
||||
@list-group-border: #ddd;
|
||||
@list-group-border-radius: @border-radius-base;
|
||||
|
||||
@list-group-hover-bg: #f5f5f5;
|
||||
@list-group-active-color: @component-active-color;
|
||||
@list-group-active-bg: @component-active-bg;
|
||||
@list-group-active-border: @list-group-active-bg;
|
||||
|
||||
@list-group-link-color: #555;
|
||||
@list-group-link-heading-color: #333;
|
||||
|
||||
|
||||
// Panels
|
||||
// -------------------------
|
||||
@panel-bg: #fff;
|
||||
@panel-inner-border: #ddd;
|
||||
@panel-border-radius: @border-radius-base;
|
||||
@panel-footer-bg: #f5f5f5;
|
||||
|
||||
@panel-default-text: @gray-dark;
|
||||
@panel-default-border: #ddd;
|
||||
@panel-default-heading-bg: #f5f5f5;
|
||||
|
||||
@panel-primary-text: #fff;
|
||||
@panel-primary-border: @brand-primary;
|
||||
@panel-primary-heading-bg: @brand-primary;
|
||||
|
||||
@panel-success-text: @state-success-text;
|
||||
@panel-success-border: @state-success-border;
|
||||
@panel-success-heading-bg: @state-success-bg;
|
||||
|
||||
@panel-warning-text: @state-warning-text;
|
||||
@panel-warning-border: @state-warning-border;
|
||||
@panel-warning-heading-bg: @state-warning-bg;
|
||||
|
||||
@panel-danger-text: @state-danger-text;
|
||||
@panel-danger-border: @state-danger-border;
|
||||
@panel-danger-heading-bg: @state-danger-bg;
|
||||
|
||||
@panel-info-text: @state-info-text;
|
||||
@panel-info-border: @state-info-border;
|
||||
@panel-info-heading-bg: @state-info-bg;
|
||||
|
||||
|
||||
// Thumbnails
|
||||
// -------------------------
|
||||
@thumbnail-padding: 4px;
|
||||
@thumbnail-bg: @body-bg;
|
||||
@thumbnail-border: #ddd;
|
||||
@thumbnail-border-radius: @border-radius-base;
|
||||
|
||||
@thumbnail-caption-color: @text-color;
|
||||
@thumbnail-caption-padding: 9px;
|
||||
|
||||
|
||||
// Wells
|
||||
// -------------------------
|
||||
@well-bg: @jumbotron-bg;
|
||||
|
||||
|
||||
// Badges
|
||||
// -------------------------
|
||||
@badge-color: #777;
|
||||
@badge-link-hover-color: #fff;
|
||||
@badge-bg: @btn-default-bg;
|
||||
|
||||
@badge-active-color: @link-color;
|
||||
@badge-active-bg: #fff;
|
||||
|
||||
@badge-font-weight: bold;
|
||||
@badge-line-height: 1;
|
||||
@badge-border-radius: 10px;
|
||||
|
||||
|
||||
// Breadcrumbs
|
||||
// -------------------------
|
||||
@breadcrumb-bg: #f5f5f5;
|
||||
@breadcrumb-color: @gray-light;
|
||||
@breadcrumb-active-color: @gray-dark;
|
||||
@breadcrumb-separator: "/";
|
||||
|
||||
|
||||
// Carousel
|
||||
// ------------------------
|
||||
|
||||
@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
|
||||
|
||||
@carousel-control-color: #fff;
|
||||
@carousel-control-width: 15%;
|
||||
@carousel-control-opacity: .5;
|
||||
@carousel-control-font-size: 20px;
|
||||
|
||||
@carousel-indicator-active-bg: #fff;
|
||||
@carousel-indicator-border-color: #fff;
|
||||
|
||||
@carousel-caption-color: #fff;
|
||||
|
||||
|
||||
// Close
|
||||
// ------------------------
|
||||
@close-font-weight: bold;
|
||||
@close-color: #000;
|
||||
@close-text-shadow: 0 1px 0 #fff;
|
||||
|
||||
|
||||
// Code
|
||||
// ------------------------
|
||||
@code-color: #c7254e;
|
||||
@code-bg: #f9f2f4;
|
||||
|
||||
@pre-bg: #f5f5f5;
|
||||
@pre-color: @gray-dark;
|
||||
@pre-border-color: #ccc;
|
||||
@pre-scrollable-max-height: 340px;
|
||||
|
||||
// Type
|
||||
// ------------------------
|
||||
@text-muted: @gray-light;
|
||||
@abbr-border-color: @gray-light;
|
||||
@headings-small-color: @gray-light;
|
||||
@blockquote-small-color: @gray;
|
||||
@blockquote-border-color: @hr-border;
|
||||
@page-header-border-color: @hr-border;
|
||||
|
||||
// Miscellaneous
|
||||
// -------------------------
|
||||
|
||||
// Hr border color
|
||||
@hr-border: #ddd;
|
||||
|
||||
// Horizontal forms & lists
|
||||
@component-offset-horizontal: 180px;
|
||||
|
||||
|
||||
// Container sizes
|
||||
// --------------------------------------------------
|
||||
|
||||
// Small screen / tablet
|
||||
@container-tablet: ((720px + @grid-gutter-width));
|
||||
@container-sm: @container-tablet;
|
||||
|
||||
// Medium screen / desktop
|
||||
@container-desktop: ((940px + @grid-gutter-width));
|
||||
@container-md: @container-desktop;
|
||||
|
||||
// Large screen / wide desktop
|
||||
@container-large-desktop: ((1140px + @grid-gutter-width));
|
||||
@container-lg: @container-large-desktop;
|
|
@ -118,6 +118,11 @@ Kohana::modules(array(
|
|||
* Set the routes. Each route must have a minimum of a name, a URI and a set of
|
||||
* defaults for the URI.
|
||||
*/
|
||||
Route::set('minion', 'minion(/<action>)', array('action' => '.+'))
|
||||
->defaults(array(
|
||||
'controller' => 'Minion',
|
||||
));
|
||||
|
||||
Route::set('error', 'error/<action>(/<message>)', array('action' => '[0-9]++','message' => '.+'))
|
||||
->defaults(array(
|
||||
'controller' => 'Error',
|
||||
|
@ -125,6 +130,6 @@ Route::set('error', 'error/<action>(/<message>)', array('action' => '[0-9]++','m
|
|||
|
||||
Route::set('default', '(<controller>(/<action>(/<id>)(/page/<page>)))')
|
||||
->defaults(array(
|
||||
'controller' => 'Client',
|
||||
'action' => 'search',
|
||||
'controller' => 'User',
|
||||
'action' => 'signin',
|
||||
));
|
||||
|
|
|
@ -4,4 +4,18 @@
|
|||
* Client controller.
|
||||
**/
|
||||
class Controller_Client extends Controller_Layout {
|
||||
/**
|
||||
* Manually add a client.
|
||||
**/
|
||||
public function action_add()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Search a client.
|
||||
**/
|
||||
public function action_search()
|
||||
{
|
||||
$this->template = new View_Client_Search;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,33 +11,19 @@ class Controller_Layout extends Controller {
|
|||
parent::before();
|
||||
$action_name = $this->request->action();
|
||||
if (
|
||||
Kohana::$environment === Kohana::PRODUCTION &&
|
||||
is_array($this->secure_actions) &&
|
||||
array_key_exists($action_name, $this->secure_actions)
|
||||
)
|
||||
{
|
||||
if ( Auth::instance()->logged_in($this->secure_actions[$action_name]) === FALSE)
|
||||
{
|
||||
if (Auth::instance()->logged_in())
|
||||
{
|
||||
$this->redirect('error/403');
|
||||
}
|
||||
else
|
||||
if ( Auth::instance()->logged_in() === FALSE)
|
||||
{
|
||||
$this->redirect('user/signin');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//user is clear to go but his pages are cache-sensitive
|
||||
$this->is_private = TRUE;
|
||||
// force https
|
||||
if (Kohana::$config->load('common')->get('force_https'))
|
||||
{
|
||||
if (!$this->request->secure())
|
||||
{
|
||||
$this->request->secure(TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,10 +5,6 @@
|
|||
* Sign in and edit password.
|
||||
**/
|
||||
class Controller_User extends Controller_Layout {
|
||||
protected $secure_actions = array(
|
||||
'edit' => array('login'),
|
||||
'search' => array('login', 'admin')
|
||||
);
|
||||
public function action_view()
|
||||
{
|
||||
$this->redirect('');
|
||||
|
@ -22,13 +18,19 @@ class Controller_User extends Controller_Layout {
|
|||
$this->template = new View_Edit;
|
||||
$this->template->title = __('User login');
|
||||
$this->template->errors = array();
|
||||
$this->template->controls = array(
|
||||
'username' => 'input',
|
||||
'password' => 'password'
|
||||
$this->template->custom_controls = array(
|
||||
'username' => array(
|
||||
'type' => 'input',
|
||||
'label' => __('Username'),
|
||||
'value' => ''
|
||||
),
|
||||
'password' => array(
|
||||
'type' => 'password',
|
||||
'label' => __('Password'),
|
||||
'value' => ''
|
||||
),
|
||||
);
|
||||
$user = ORM::factory('User');
|
||||
if (HTTP_Request::POST == $this->request->method()) {
|
||||
$user->username = $this->request->post('username');
|
||||
$validation = Validation::factory($this->request->post())
|
||||
->rules('username', array(
|
||||
array('not_empty'),
|
||||
|
@ -38,7 +40,7 @@ class Controller_User extends Controller_Layout {
|
|||
if ($validation->check()) {
|
||||
if (Auth::instance()->login( $this->request->post('username'), $this->request->post('password'), true))
|
||||
{
|
||||
$this->redirect('post/index');
|
||||
$this->redirect('page/index');
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -50,92 +52,5 @@ class Controller_User extends Controller_Layout {
|
|||
$this->template->errors = $validation->errors('default');
|
||||
}
|
||||
}
|
||||
$this->template->model = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user password - available only in development mode
|
||||
**/
|
||||
public function action_password()
|
||||
{
|
||||
$this->template = new View_Edit;
|
||||
$this->template->title = 'Изменение пароля';
|
||||
$this->template->errors = array();
|
||||
$this->template->controls = array(
|
||||
'username' => 'input',
|
||||
'password' => 'password'
|
||||
);
|
||||
$user = ORM::factory('User');
|
||||
if (HTTP_Request::POST == $this->request->method()) {
|
||||
$user = ORM::factory('User')->where('username', '=', $this->request->post('username'))->find();
|
||||
if (!$user->loaded())
|
||||
{
|
||||
$this->template->errors = array('Указанный пользователь не найден. Пожалуйста, проверьте имя пользователя.');
|
||||
}
|
||||
else
|
||||
{
|
||||
$validation = Validation::factory($this->request->post())
|
||||
->rule('password', 'not_empty');
|
||||
if ($validation->check()) {
|
||||
$user->password = $this->request->post('password');
|
||||
if ($user->update())
|
||||
{
|
||||
$this->redirect('user/pwmessage');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->template->errors = $validation->errors('default');
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->template->model = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Message when password is successfully changed.
|
||||
**/
|
||||
public function action_pwmessage()
|
||||
{
|
||||
$this->template = new View_Message;
|
||||
$this->template->title = 'Пароль изменён';
|
||||
$this->template->message = 'Пароль пользователя успешно изменён.';
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit own user information -- change password etc.
|
||||
**/
|
||||
public function action_edit()
|
||||
{
|
||||
if (!Auth::instance()->logged_in())
|
||||
{
|
||||
$this->redirect('post/index');
|
||||
}
|
||||
$this->template = new View_Edit;
|
||||
$this->template->title = 'Редактирование логина и пароля';
|
||||
$this->template->errors = array();
|
||||
$this->template->controls = array(
|
||||
'username' => 'input',
|
||||
'password' => 'password'
|
||||
);
|
||||
$user = Auth::instance()->get_user();
|
||||
if (HTTP_Request::POST == $this->request->method()) {
|
||||
$validation = Validation::factory($this->request->post())
|
||||
->rules('username', array(
|
||||
array('not_empty'),
|
||||
array('max_length', array(':value', 32))
|
||||
))
|
||||
->rule('password', 'not_empty');
|
||||
if ($validation->check()) {
|
||||
$user->values($this->request->post());
|
||||
$user->update();
|
||||
$this->redirect('post/index');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->template->errors = $validation->errors();
|
||||
}
|
||||
}
|
||||
$this->template->model = $user;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
<?php defined('SYSPATH') OR die('No direct access allowed.');
|
||||
class Model_User extends Model_Auth_User {
|
||||
/**
|
||||
* Array of field labels.
|
||||
* Used in forms.
|
||||
**/
|
||||
protected $_labels = array(
|
||||
'username' => 'Имя пользователя',
|
||||
'password' => 'Пароль пользователя',
|
||||
'email' => 'Email',
|
||||
);
|
||||
}
|
||||
|
7
application/classes/View/Client/Search.php
Normal file
7
application/classes/View/Client/Search.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php defined('SYSPATH') or die('No direct script access.');
|
||||
|
||||
/**
|
||||
* Search client view controller
|
||||
**/
|
||||
class View_Client_Search extends View_Layout {
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
return array(
|
||||
|
||||
'driver' => 'ORM',
|
||||
'hash_method' => 'sha256',
|
||||
'hash_key' => "choose your own hash key",
|
||||
'lifetime' => 1209600,
|
||||
'session_key' => 'auth_user',
|
||||
|
||||
);
|
|
@ -2,5 +2,7 @@
|
|||
|
||||
return array(
|
||||
'User login' => 'Вход пользователя',
|
||||
'Authorization error. Please check user login and password.' => 'Ошибка авторизации. Проверьте правильность имени пользователя и пароля.'
|
||||
'Authorization error. Please check user login and password.' => 'Ошибка авторизации. Проверьте правильность имени пользователя и пароля.',
|
||||
'Username' => 'Имя пользователя',
|
||||
'Password' => 'Пароль'
|
||||
);
|
||||
|
|
1
application/templates/client/search.mustache
Normal file
1
application/templates/client/search.mustache
Normal file
|
@ -0,0 +1 @@
|
|||
{{content}}
|
|
@ -9,19 +9,33 @@
|
|||
</head>
|
||||
<body>
|
||||
<div class="container-fluid">
|
||||
<header>
|
||||
<h1>{{site_title}}</h1>
|
||||
</header>
|
||||
<div class="paging">
|
||||
{{{get_paging}}}
|
||||
</div>
|
||||
<div class = "navigation">
|
||||
<ul>
|
||||
<nav class="navbar navbar-default" role="navigation">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">{{site_title}}</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse">
|
||||
<form class="navbar-form navbar-left" role="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" placeholder="Search">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</form>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
{{#navigation}}
|
||||
<li><a href="{{url}}">{{title}}</a></li>
|
||||
{{/navigation}}
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<a href="#" class="link_top hidden-xs"><i class="fa fa-angle-up"> </i>Наверх</a>
|
||||
<div class = "main_content">
|
||||
<h2>{{title}}</h2>
|
||||
|
|
Loading…
Reference in a new issue