├── web ├── css │ ├── .DS_Store │ ├── fonts │ │ ├── .DS_Store │ │ ├── fontawesome │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── glyphicons.pro │ │ │ ├── glyphicons-regular.eot │ │ │ ├── glyphicons-regular.ttf │ │ │ └── glyphicons-regular.woff │ │ ├── glyphicons.social.pro │ │ │ ├── glyphicons-social-regular.eot │ │ │ ├── glyphicons-social-regular.ttf │ │ │ └── glyphicons-social-regular.woff │ │ ├── glyphicons.filetypes.pro │ │ │ ├── glyphicons-filetypes-regular.eot │ │ │ ├── glyphicons-filetypes-regular.ttf │ │ │ └── glyphicons-filetypes-regular.woff │ │ ├── glyphicons.halflings.pro │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ └── Glyphicons PRO (License).txt │ ├── add.css │ ├── view.css │ └── tilda-grid-3.0.css ├── images │ ├── tildacopy.png │ ├── tildafavicon.ico │ ├── tildacopy_black.png │ ├── chainy-logo-180-black.png │ ├── eeb626f6-3286-4304-a8a5-3dde921d14e2__br01.png │ ├── tild3932-3665-4535-b439-356563363131__chainylogo160.png │ ├── lib__unsplash__cd79cff6-76c6-e003-143e-5c26b902efca__photo.jpg │ └── tild3366-3736-4530-a437-373766633863__1.svg ├── img │ └── template │ │ ├── ie8_opacity_dark_20.png │ │ ├── ie8_opacity_dark_30.png │ │ ├── ie8_opacity_dark_40.png │ │ └── ie8_opacity_dark_60.png ├── less │ ├── fonts │ │ ├── fontawesome │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── glyphicons.pro │ │ │ ├── glyphicons-regular.eot │ │ │ ├── glyphicons-regular.ttf │ │ │ └── glyphicons-regular.woff │ │ ├── glyphicons.social.pro │ │ │ ├── glyphicons-social-regular.eot │ │ │ ├── glyphicons-social-regular.ttf │ │ │ └── glyphicons-social-regular.woff │ │ ├── glyphicons.filetypes.pro │ │ │ ├── glyphicons-filetypes-regular.eot │ │ │ ├── glyphicons-filetypes-regular.ttf │ │ │ └── glyphicons-filetypes-regular.woff │ │ ├── glyphicons.halflings.pro │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ └── Glyphicons PRO (License).txt │ ├── bootstrap │ │ ├── mixins │ │ │ ├── center-block.less │ │ │ ├── text-emphasis.less │ │ │ ├── size.less │ │ │ ├── opacity.less │ │ │ ├── background-variant.less │ │ │ ├── text-overflow.less │ │ │ ├── tab-focus.less │ │ │ ├── resize.less │ │ │ ├── labels.less │ │ │ ├── progress-bar.less │ │ │ ├── reset-filter.less │ │ │ ├── nav-divider.less │ │ │ ├── alerts.less │ │ │ ├── nav-vertical-align.less │ │ │ ├── responsive-visibility.less │ │ │ ├── pagination.less │ │ │ ├── border-radius.less │ │ │ ├── panels.less │ │ │ ├── list-group.less │ │ │ ├── hide-text.less │ │ │ ├── clearfix.less │ │ │ ├── table-row.less │ │ │ ├── image.less │ │ │ ├── buttons.less │ │ │ ├── forms.less │ │ │ ├── grid-framework.less │ │ │ ├── grid.less │ │ │ ├── gradients.less │ │ │ └── vendor-prefixes.less │ │ ├── wells.less │ │ ├── breadcrumbs.less │ │ ├── responsive-embed.less │ │ ├── close.less │ │ ├── media.less │ │ ├── component-animations.less │ │ ├── thumbnails.less │ │ ├── utilities.less │ │ ├── pager.less │ │ ├── jumbotron.less │ │ ├── mixins.less │ │ ├── bootstrap.less │ │ ├── badges.less │ │ ├── labels.less │ │ ├── code.less │ │ ├── grid.less │ │ ├── alerts.less │ │ ├── progress-bars.less │ │ ├── pagination.less │ │ ├── print.less │ │ ├── tooltip.less │ │ ├── scaffolding.less │ │ ├── list-group.less │ │ ├── popovers.less │ │ ├── modals.less │ │ ├── buttons.less │ │ ├── input-groups.less │ │ ├── responsive-utilities.less │ │ ├── tables.less │ │ ├── dropdowns.less │ │ ├── navs.less │ │ ├── carousel.less │ │ ├── button-groups.less │ │ ├── panels.less │ │ └── type.less │ ├── main │ │ ├── layout.less │ │ ├── header.less │ │ └── extras.less │ ├── styles.less │ └── variables.less ├── .htaccess ├── js │ ├── pages │ │ ├── pricing.js │ │ ├── about.js │ │ ├── ecomCheckout.js │ │ ├── portfolio.js │ │ └── contact.js │ └── amilabs.devkit.engine.js └── index.php ├── .gitignore ├── app ├── init.php └── templates │ ├── index │ └── 404.tpl.php │ └── layout.tpl.php ├── README.md ├── composer.json ├── cfg ├── sample.chainy.php └── sample.service.js └── tests └── Chainy └── TX_Test.php /web/css/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/.DS_Store -------------------------------------------------------------------------------- /web/css/fonts/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/.DS_Store -------------------------------------------------------------------------------- /web/images/tildacopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/images/tildacopy.png -------------------------------------------------------------------------------- /web/images/tildafavicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/images/tildafavicon.ico -------------------------------------------------------------------------------- /web/images/tildacopy_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/images/tildacopy_black.png -------------------------------------------------------------------------------- /web/images/chainy-logo-180-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/images/chainy-logo-180-black.png -------------------------------------------------------------------------------- /web/css/fonts/fontawesome/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/fontawesome/FontAwesome.otf -------------------------------------------------------------------------------- /web/img/template/ie8_opacity_dark_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/img/template/ie8_opacity_dark_20.png -------------------------------------------------------------------------------- /web/img/template/ie8_opacity_dark_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/img/template/ie8_opacity_dark_30.png -------------------------------------------------------------------------------- /web/img/template/ie8_opacity_dark_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/img/template/ie8_opacity_dark_40.png -------------------------------------------------------------------------------- /web/img/template/ie8_opacity_dark_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/img/template/ie8_opacity_dark_60.png -------------------------------------------------------------------------------- /web/less/fonts/fontawesome/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/fontawesome/FontAwesome.otf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | composer.phar 2 | composer.lock 3 | web/*.local.php 4 | tmp 5 | log 6 | vendor 7 | cfg/config.chainy.php 8 | cfg/config.service.js 9 | -------------------------------------------------------------------------------- /web/.htaccess: -------------------------------------------------------------------------------- 1 | RewriteEngine On 2 | 3 | RewriteCond %{REQUEST_FILENAME} !-f 4 | RewriteCond %{REQUEST_FILENAME} !-d 5 | RewriteRule ^.*$ index.php 6 | -------------------------------------------------------------------------------- /web/css/fonts/fontawesome/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/fontawesome/fontawesome-webfont.eot -------------------------------------------------------------------------------- /web/css/fonts/fontawesome/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/fontawesome/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /web/css/fonts/fontawesome/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/fontawesome/fontawesome-webfont.woff -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.pro/glyphicons-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.pro/glyphicons-regular.eot -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.pro/glyphicons-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.pro/glyphicons-regular.ttf -------------------------------------------------------------------------------- /web/less/fonts/fontawesome/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/fontawesome/fontawesome-webfont.eot -------------------------------------------------------------------------------- /web/less/fonts/fontawesome/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/fontawesome/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /web/less/fonts/fontawesome/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/fontawesome/fontawesome-webfont.woff -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.pro/glyphicons-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.pro/glyphicons-regular.woff -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.pro/glyphicons-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.pro/glyphicons-regular.eot -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.pro/glyphicons-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.pro/glyphicons-regular.ttf -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.pro/glyphicons-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.pro/glyphicons-regular.woff -------------------------------------------------------------------------------- /web/images/eeb626f6-3286-4304-a8a5-3dde921d14e2__br01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/images/eeb626f6-3286-4304-a8a5-3dde921d14e2__br01.png -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.social.pro/glyphicons-social-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.social.pro/glyphicons-social-regular.eot -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.social.pro/glyphicons-social-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.social.pro/glyphicons-social-regular.ttf -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.social.pro/glyphicons-social-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.social.pro/glyphicons-social-regular.woff -------------------------------------------------------------------------------- /web/images/tild3932-3665-4535-b439-356563363131__chainylogo160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/images/tild3932-3665-4535-b439-356563363131__chainylogo160.png -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.social.pro/glyphicons-social-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.social.pro/glyphicons-social-regular.eot -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.social.pro/glyphicons-social-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.social.pro/glyphicons-social-regular.ttf -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.social.pro/glyphicons-social-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.social.pro/glyphicons-social-regular.woff -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.eot -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.ttf -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.woff -------------------------------------------------------------------------------- /web/css/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/css/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /web/images/lib__unsplash__cd79cff6-76c6-e003-143e-5c26b902efca__photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/images/lib__unsplash__cd79cff6-76c6-e003-143e-5c26b902efca__photo.jpg -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.eot -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.ttf -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.filetypes.pro/glyphicons-filetypes-regular.woff -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /web/less/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EverexIO/Chainy/HEAD/web/less/fonts/glyphicons.halflings.pro/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /web/less/bootstrap/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /web/js/pages/pricing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Document : pricing.js 3 | * Author : pixelcave 4 | * Description: Custom javascript code used in Pricing page 5 | */ 6 | 7 | var Pricing = function() { 8 | 9 | return { 10 | init: function() { 11 | // Hover functionality on price tables (by toggling 'table-featured' class on hover) 12 | $('.table-pricing') 13 | .on('mouseenter', function(){ 14 | $(this).addClass('table-featured'); 15 | }) 16 | .on('mouseleave', function(){ 17 | $(this).removeClass('table-featured'); 18 | }); 19 | } 20 | }; 21 | }(); -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /web/less/main/layout.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Document : layout.less 3 | * Author : pixelcave 4 | * 5 | * MAIN LAYOUT 6 | * Template’s main layout styles 7 | * 8 | */ 9 | 10 | /* Include Open Sans font from Google Web Fonts */ 11 | @import url('http://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic,700,700italic'); 12 | 13 | body { 14 | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; 15 | color: #353535; 16 | background-color: @background_color_body; 17 | } 18 | 19 | #page-container { 20 | margin: 0 auto; 21 | width: 100%; 22 | } 23 | 24 | #page-container.boxed { 25 | max-width: @max_width_boxed_layout; 26 | } -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /web/less/bootstrap/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /web/less/bootstrap/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | 26 | // Modifier class for 16:9 aspect ratio 27 | &.embed-responsive-16by9 { 28 | padding-bottom: 56.25%; 29 | } 30 | 31 | // Modifier class for 4:3 aspect ratio 32 | &.embed-responsive-4by3 { 33 | padding-bottom: 75%; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/init.php: -------------------------------------------------------------------------------- 1 | run(); 26 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /web/less/bootstrap/media.less: -------------------------------------------------------------------------------- 1 | .media { 2 | // Proper spacing between instances of .media 3 | margin-top: 15px; 4 | 5 | &:first-child { 6 | margin-top: 0; 7 | } 8 | } 9 | 10 | .media-right, 11 | .media > .pull-right { 12 | padding-left: 10px; 13 | } 14 | 15 | .media-left, 16 | .media > .pull-left { 17 | padding-right: 10px; 18 | } 19 | 20 | .media-left, 21 | .media-right, 22 | .media-body { 23 | display: table-cell; 24 | vertical-align: top; 25 | } 26 | 27 | .media-middle { 28 | vertical-align: middle; 29 | } 30 | 31 | .media-bottom { 32 | vertical-align: bottom; 33 | } 34 | 35 | // Reset margins on headings for tighter default spacing 36 | .media-heading { 37 | margin-top: 0; 38 | margin-bottom: 5px; 39 | } 40 | 41 | // Media list variation 42 | // 43 | // Undo default ul/ol styles 44 | .media-list { 45 | padding-left: 0; 46 | list-style: none; 47 | } 48 | -------------------------------------------------------------------------------- /web/less/bootstrap/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | visibility: hidden; 21 | 22 | &.in { display: block; visibility: visible; } 23 | tr&.in { display: table-row; } 24 | tbody&.in { display: table-row-group; } 25 | } 26 | 27 | .collapsing { 28 | position: relative; 29 | height: 0; 30 | overflow: hidden; 31 | .transition-property(~"height, visibility"); 32 | .transition-duration(.35s); 33 | .transition-timing-function(ease); 34 | } 35 | -------------------------------------------------------------------------------- /web/less/bootstrap/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/templates/index/404.tpl.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Nothing found

4 |

5 | Engrave new data 6 | Find again 7 |

8 |

9 | About Chainy 10 |

11 |
12 |
13 | -------------------------------------------------------------------------------- /web/js/pages/about.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Document : about.js 3 | * Author : pixelcave 4 | * Description: Custom javascript code used in About page 5 | */ 6 | 7 | var About = function() { 8 | 9 | return { 10 | init: function() { 11 | /* 12 | * With Gmaps.js, Check out examples and documentation at http://hpneo.github.io/gmaps/examples.html 13 | */ 14 | 15 | // Set top section height to Google Maps container 16 | $('.media-map').css('height', $('.site-section-top').outerHeight() + 50); 17 | 18 | // Initialize map 19 | new GMaps({ 20 | div: '#gmap-top', 21 | lat: -33.870, 22 | lng: 151.22, 23 | zoom: 15, 24 | disableDefaultUI: true, 25 | scrollwheel: false 26 | }).setMapTypeId(google.maps.MapTypeId.SATELLITE); 27 | } 28 | }; 29 | }(); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Chainy](/web/images/chainy-logo-180-black.png) 2 | 3 | # Chainy — blockchain engravings 4 | 5 | 6 | ### AEON links + Proof of Existence + Files + Messages 7 | 8 | Chainy is the most independent Ethereum based smart contract, which exists for as long as blockchain lives. It's independent from anybody. Even if we abandon this project, and it will be impossible to look up the data using other viewers or blockchain explorers or scanners, all previously stored proofs and data will be available via the Ethereum API, for example through Mist or open source viewer. 9 | 10 | 11 | **Sample Message** — "Hello World!": https://chainy.link/2vsxtH 12 | 13 | **Sample AEON link**: https://chainy.link/2vsYtH, alias: https://txn.me/2vsYtH 14 | 15 | *and info about the record https://chainy.link/i/2vsYtH* 16 | 17 | ## Links 18 | 19 | ### [Chainy.info](https://chainy.info) — project website 20 | 21 | #### Add your data 22 | https://chainy.link/add 23 | 24 | #### Find existing data 25 | https://chainy.info/#find 26 | 27 | -------------------------------------------------------------------------------- /web/less/bootstrap/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | } 57 | -------------------------------------------------------------------------------- /web/less/bootstrap/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: @cursor-disabled; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /web/js/amilabs.devkit.engine.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Copyright 2016 Everex https://everex.io 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | var DKApp = { 18 | request: function(method, params, successCallback){ 19 | $.ajax({ 20 | url: 'service.php', 21 | data: JSON.stringify({jsonrpc:'2.0',method:method, params:params, id:"jsonrpc"}), 22 | type:"POST", 23 | dataType:"json", 24 | success: function(data){ successCallback(data); }, 25 | error: function(err){ alert("Error"); } 26 | }); 27 | } 28 | }; -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "repositories": [ 3 | { 4 | "type": "git", 5 | "url": "https://github.com/everexio/cryptokit.git" 6 | }, 7 | { 8 | "type": "vcs", 9 | "url": "https://github.com/everexio/devkit" 10 | }, 11 | { 12 | "type": "vcs", 13 | "url": "https://github.com/everexio/JSON-RPC" 14 | }, 15 | { 16 | "type": "vcs", 17 | "url": "https://github.com/artemko7v/php-op_return" 18 | } 19 | ], 20 | "require": { 21 | "everexio/cryptokit": "dev-develop", 22 | "everexio/devkit": "dev-develop", 23 | "everexio/JSON-RPC": "dev-develop", 24 | "artemko7v/php-op_return": "dev-master" 25 | }, 26 | "autoload": { 27 | "psr-0": { 28 | "AmiLabs\\Chainy": "app/classes" 29 | } 30 | }, 31 | "minimum-stability": "dev", 32 | "prefer-stable" : false, 33 | "scripts": { 34 | "post-update-cmd": "AmiLabs\\DevKit\\Utility\\Composer::postUpdate", 35 | "post-install-cmd": "AmiLabs\\DevKit\\Utility\\Composer::postInstall" 36 | } 37 | } -------------------------------------------------------------------------------- /web/js/pages/ecomCheckout.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Document : ecomCheckout.js 3 | * Author : pixelcave 4 | * Description: Custom javascript code used in Checkout page 5 | */ 6 | 7 | var EcomCheckout = function() { 8 | 9 | return { 10 | init: function() { 11 | /* 12 | * Jquery Wizard, Check out more examples and documentation at http://www.thecodemine.org 13 | */ 14 | 15 | /* Initialize Checkout Wizard */ 16 | var checkoutWizard = $('#checkout-wizard'); 17 | 18 | checkoutWizard 19 | .formwizard({ 20 | disableUIStyles: true, 21 | inDuration: 0, 22 | outDuration: 0, 23 | textBack: 'Previous Step', 24 | textNext: 'Next Step', 25 | textSubmit: 'Confirm Order' 26 | }); 27 | 28 | $('.checkout-steps a').on('click', function(){ 29 | var gotostep = $(this).data('gotostep'); 30 | 31 | checkoutWizard 32 | .formwizard('show', gotostep); 33 | }); 34 | } 35 | }; 36 | }(); -------------------------------------------------------------------------------- /web/less/bootstrap/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding (@jumbotron-padding / 2); 8 | margin-bottom: @jumbotron-padding; 9 | color: @jumbotron-color; 10 | background-color: @jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: @jumbotron-heading-color; 15 | } 16 | p { 17 | margin-bottom: (@jumbotron-padding / 2); 18 | font-size: @jumbotron-font-size; 19 | font-weight: 200; 20 | } 21 | 22 | > hr { 23 | border-top-color: darken(@jumbotron-bg, 10%); 24 | } 25 | 26 | .container &, 27 | .container-fluid & { 28 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 29 | } 30 | 31 | .container { 32 | max-width: 100%; 33 | } 34 | 35 | @media screen and (min-width: @screen-sm-min) { 36 | padding: (@jumbotron-padding * 1.6) 0; 37 | 38 | .container & { 39 | padding-left: (@jumbotron-padding * 2); 40 | padding-right: (@jumbotron-padding * 2); 41 | } 42 | 43 | h1, 44 | .h1 { 45 | font-size: (@font-size-base * 4.5); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/image.less: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | .img-responsive(@display: block) { 10 | display: @display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { 21 | background-image: url("@{file-1x}"); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url("@{file-2x}"); 31 | background-size: @width-1x @height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /web/css/add.css: -------------------------------------------------------------------------------- 1 | .tab-pane { 2 | padding: 20px; 3 | } 4 | 5 | #chainy-tx, 6 | #chainy-data { 7 | width: 100%; 8 | height: 150px; 9 | margin-bottom: 20px; 10 | } 11 | 12 | .has-error { 13 | border: 2px solid red; 14 | } 15 | 16 | .row { 17 | margin-bottom: 8px; 18 | } 19 | 20 | .form-errors { 21 | display: none; 22 | } 23 | 24 | .check-description { 25 | width:100%; 26 | height:150px; 27 | } 28 | 29 | .nav-tabs li a { 30 | color: #555 !important; 31 | } 32 | 33 | .nav-tabs li.active a { 34 | color: #000 !important; 35 | } 36 | 37 | .col-header { 38 | font-weight: bold; 39 | text-align: right; 40 | } 41 | 42 | .check-url { 43 | width: 100%; 44 | } 45 | 46 | .container { 47 | text-align: left; 48 | } 49 | 50 | #publish-result { 51 | background:#fff; 52 | padding:20px; 53 | border-radius:16px; 54 | opacity:0.9; 55 | margin-top:0px; 56 | } 57 | 58 | #publish-result p { 59 | font-size: 18px; 60 | padding-bottom: 8px; 61 | } 62 | 63 | @media screen and (min-width: 1000px) { 64 | .t-cover__wrapper { 65 | display: block; 66 | width: 100%; 67 | } 68 | } 69 | 70 | @media screen and (max-width: 767px) { 71 | .col-header { 72 | text-align: left; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text.less"; 6 | @import "mixins/opacity.less"; 7 | @import "mixins/image.less"; 8 | @import "mixins/labels.less"; 9 | @import "mixins/reset-filter.less"; 10 | @import "mixins/resize.less"; 11 | @import "mixins/responsive-visibility.less"; 12 | @import "mixins/size.less"; 13 | @import "mixins/tab-focus.less"; 14 | @import "mixins/text-emphasis.less"; 15 | @import "mixins/text-overflow.less"; 16 | @import "mixins/vendor-prefixes.less"; 17 | 18 | // Components 19 | @import "mixins/alerts.less"; 20 | @import "mixins/buttons.less"; 21 | @import "mixins/panels.less"; 22 | @import "mixins/pagination.less"; 23 | @import "mixins/list-group.less"; 24 | @import "mixins/nav-divider.less"; 25 | @import "mixins/forms.less"; 26 | @import "mixins/progress-bar.less"; 27 | @import "mixins/table-row.less"; 28 | 29 | // Skins 30 | @import "mixins/background-variant.less"; 31 | @import "mixins/border-radius.less"; 32 | @import "mixins/gradients.less"; 33 | 34 | // Layout 35 | @import "mixins/clearfix.less"; 36 | @import "mixins/center-block.less"; 37 | @import "mixins/nav-vertical-align.less"; 38 | @import "mixins/grid-framework.less"; 39 | @import "mixins/grid.less"; 40 | -------------------------------------------------------------------------------- /web/less/bootstrap/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset and dependencies 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | 9 | // Core CSS 10 | @import "scaffolding.less"; 11 | @import "type.less"; 12 | @import "code.less"; 13 | @import "grid.less"; 14 | @import "tables.less"; 15 | @import "forms.less"; 16 | @import "buttons.less"; 17 | 18 | // Components 19 | @import "component-animations.less"; 20 | @import "dropdowns.less"; 21 | @import "button-groups.less"; 22 | @import "input-groups.less"; 23 | @import "navs.less"; 24 | @import "navbar.less"; 25 | @import "breadcrumbs.less"; 26 | @import "pagination.less"; 27 | @import "pager.less"; 28 | @import "labels.less"; 29 | @import "badges.less"; 30 | @import "jumbotron.less"; 31 | @import "thumbnails.less"; 32 | @import "alerts.less"; 33 | @import "progress-bars.less"; 34 | @import "media.less"; 35 | @import "list-group.less"; 36 | @import "panels.less"; 37 | @import "responsive-embed.less"; 38 | @import "wells.less"; 39 | @import "close.less"; 40 | 41 | // Components w/ JavaScript 42 | @import "modals.less"; 43 | @import "tooltip.less"; 44 | @import "popovers.less"; 45 | @import "carousel.less"; 46 | 47 | // Utility classes 48 | @import "utilities.less"; 49 | @import "responsive-utilities.less"; 50 | -------------------------------------------------------------------------------- /web/less/bootstrap/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | .btn-xs & { 32 | top: 0; 33 | padding: 1px 5px; 34 | } 35 | 36 | // Hover state, but only for links 37 | a& { 38 | &:hover, 39 | &:focus { 40 | color: @badge-link-hover-color; 41 | text-decoration: none; 42 | cursor: pointer; 43 | } 44 | } 45 | 46 | // Account for badges in navs 47 | a.list-group-item.active > &, 48 | .nav-pills > .active > a > & { 49 | color: @badge-active-color; 50 | background-color: @badge-active-bg; 51 | } 52 | .nav-pills > li > a > & { 53 | margin-left: 3px; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/buttons.less: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | .button-variant(@color; @background; @border) { 7 | color: @color; 8 | background-color: @background; 9 | border-color: @border; 10 | 11 | &:hover, 12 | &:focus, 13 | &.focus, 14 | &:active, 15 | &.active, 16 | .open > .dropdown-toggle& { 17 | color: @color; 18 | background-color: darken(@background, 10%); 19 | border-color: darken(@border, 12%); 20 | } 21 | &:active, 22 | &.active, 23 | .open > .dropdown-toggle& { 24 | background-image: none; 25 | } 26 | &.disabled, 27 | &[disabled], 28 | fieldset[disabled] & { 29 | &, 30 | &:hover, 31 | &:focus, 32 | &.focus, 33 | &:active, 34 | &.active { 35 | background-color: @background; 36 | border-color: @border; 37 | } 38 | } 39 | 40 | .badge { 41 | color: @background; 42 | background-color: @color; 43 | } 44 | } 45 | 46 | // Button sizes 47 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 48 | padding: @padding-vertical @padding-horizontal; 49 | font-size: @font-size; 50 | line-height: @line-height; 51 | border-radius: @border-radius; 52 | } 53 | -------------------------------------------------------------------------------- /web/less/bootstrap/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | a& { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /web/less/bootstrap/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | border-radius: @border-radius-base; 21 | } 22 | 23 | // User input typically entered via keyboard 24 | kbd { 25 | padding: 2px 4px; 26 | font-size: 90%; 27 | color: @kbd-color; 28 | background-color: @kbd-bg; 29 | border-radius: @border-radius-small; 30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 31 | 32 | kbd { 33 | padding: 0; 34 | font-size: 100%; 35 | font-weight: bold; 36 | box-shadow: none; 37 | } 38 | } 39 | 40 | // Blocks of code 41 | pre { 42 | display: block; 43 | padding: ((@line-height-computed - 1) / 2); 44 | margin: 0 0 (@line-height-computed / 2); 45 | font-size: (@font-size-base - 1); // 14px to 13px 46 | line-height: @line-height-base; 47 | word-break: break-all; 48 | word-wrap: break-word; 49 | color: @pre-color; 50 | background-color: @pre-bg; 51 | border: 1px solid @pre-border-color; 52 | border-radius: @border-radius-base; 53 | 54 | // Account for some code outputs that place code tags in pre tags 55 | code { 56 | padding: 0; 57 | font-size: inherit; 58 | color: inherit; 59 | white-space: pre-wrap; 60 | background-color: transparent; 61 | border-radius: 0; 62 | } 63 | } 64 | 65 | // Enable scrollable blocks of code 66 | .pre-scrollable { 67 | max-height: @pre-scrollable-max-height; 68 | overflow-y: scroll; 69 | } 70 | -------------------------------------------------------------------------------- /cfg/sample.chainy.php: -------------------------------------------------------------------------------- 1 | array( 29 | 'aRoutes' => array( 30 | '' => array(), 31 | ':code' => array('default' => array('byHash' => FALSE)), 32 | 'i/:code' => array('default' => array('byHash' => FALSE, 'noRedirect' => TRUE)), 33 | 'add' => array('default' => array('action' => 'add')), 34 | 'tx/:hash' => array('default' => array('code' => FALSE, 'byHash' => TRUE)), 35 | 'getShort/:hash' => array('default' => array('action' => 'short')) 36 | ) 37 | ), 38 | 'link404' => '/404', 39 | 'service' => "http://localhost:8344", // Where bin/service.js is up 40 | 'autopublish' => FALSE, 41 | 'sender' => '0x...', 42 | 'contractAddress' => '0x...' 43 | ); 44 | -------------------------------------------------------------------------------- /web/less/bootstrap/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | .container-fixed(); 12 | 13 | @media (min-width: @screen-sm-min) { 14 | width: @container-sm; 15 | } 16 | @media (min-width: @screen-md-min) { 17 | width: @container-md; 18 | } 19 | @media (min-width: @screen-lg-min) { 20 | width: @container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | .container-fixed(); 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | .make-row(); 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | .make-grid-columns(); 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | .make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: @screen-sm-min) { 65 | .make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: @screen-md-min) { 74 | .make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: @screen-lg-min) { 83 | .make-grid(lg); 84 | } 85 | -------------------------------------------------------------------------------- /web/less/bootstrap/alerts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: @alert-padding; 11 | margin-bottom: @line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: @alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing @headings-color 19 | color: inherit; 20 | } 21 | // Provide class for links that match alerts 22 | .alert-link { 23 | font-weight: @alert-link-font-weight; 24 | } 25 | 26 | // Improve alignment and spacing of inner content 27 | > p, 28 | > ul { 29 | margin-bottom: 0; 30 | } 31 | > p + p { 32 | margin-top: 5px; 33 | } 34 | } 35 | 36 | // Dismissible alerts 37 | // 38 | // Expand the right padding and account for the close button's positioning. 39 | 40 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. 41 | .alert-dismissible { 42 | padding-right: (@alert-padding + 20); 43 | 44 | // Adjust close link position 45 | .close { 46 | position: relative; 47 | top: -2px; 48 | right: -21px; 49 | color: inherit; 50 | } 51 | } 52 | 53 | // Alternate styles 54 | // 55 | // Generate contextual modifier classes for colorizing the alert. 56 | 57 | .alert-success { 58 | .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); 59 | } 60 | .alert-info { 61 | .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); 62 | } 63 | .alert-warning { 64 | .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); 65 | } 66 | .alert-danger { 67 | .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); 68 | } 69 | -------------------------------------------------------------------------------- /cfg/sample.service.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Copyright 2016 Everex https://everex.io 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Sample configuration file for Chainy service. 20 | * 21 | * Copy this file to config.service.js before making any changes. 22 | */ 23 | 24 | chainyConfig = { 25 | server: { 26 | address: 'localhost', 27 | port: 8344 28 | }, 29 | ethereum: { 30 | url: 'http://localhost:8545', 31 | testnet: false 32 | }, 33 | // Contract address 34 | contract: '0x0000000000000000000000000000000000000000', 35 | // Contract ABI 36 | ABI: [ 37 | {constant:true,inputs:[{name:"code",type:"string"}],name:"getChainyData",outputs:[{name:"",type:"string"}],type:"function"}, 38 | {constant:true,inputs:[{name:"code",type:"string"}],name:"getChainyTimestamp",outputs:[{name:"",type:"uint256"}],type:"function"} 39 | ], 40 | // Gas limit (4.5M is near block limit) 41 | gasLimit: 4500000, 42 | // Command code 43 | cmd: '0xac3e7d24', 44 | // Log topic 45 | topic: "0xdad5c3eecfdb62dd69e6e72053b88029e1d6277d4bc773c00fef243982adcb7d", 46 | // Autopublish sender 47 | /* 48 | sender: { 49 | address: '0x0000000000000000000000000000000000000000', 50 | pk: 'private key' 51 | } 52 | */ 53 | }; -------------------------------------------------------------------------------- /web/js/pages/portfolio.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Document : portfolio.js 3 | * Author : pixelcave 4 | * Description: Custom javascript code used in Portfolio pages 5 | */ 6 | 7 | var Portfolio = function() { 8 | 9 | return { 10 | init: function() { 11 | var portfolioFilter = $('.portfolio-filter'); 12 | var portfolio = $('.portfolio'); 13 | var showCategory; 14 | 15 | // When a portfolio filter link is clicked 16 | portfolioFilter.find('a').on('click', function() { 17 | // Get its data-category value 18 | showCategory = $(this).data('category'); 19 | 20 | // Procceed only if the user clicked on an inactive category 21 | if ( ! $(this).hasClass('active')) { 22 | // Remove active class from all filter links 23 | portfolioFilter.find('a').removeClass('active'); 24 | 25 | // Add the active class to the clicked link 26 | $(this).addClass('active'); 27 | 28 | // If the value is 'all' hide the current visible items and show them all together, else hide them all and show only from the category we need 29 | if (showCategory === 'all') { 30 | portfolio 31 | .find('.portfolio-item') 32 | .hide(0, function(){ 33 | $(this).show(0); 34 | }); 35 | } else { 36 | portfolio 37 | .find('.portfolio-item') 38 | .hide(0, function(){ 39 | portfolio 40 | .find('.portfolio-item[data-category="' + showCategory + '"]') 41 | .show(0); 42 | }); 43 | } 44 | } 45 | }); 46 | } 47 | }; 48 | }(); -------------------------------------------------------------------------------- /tests/Chainy/TX_Test.php: -------------------------------------------------------------------------------- 1 | assertEquals(1427753834, $blockDate); 38 | // Ordinary block date 39 | $blockDate = TX::getBlockDate(350000); 40 | $this->assertEquals(date('Y-m-d H:i:s', 1427753834), $blockDate); 41 | // Ordinary block date in custom format 42 | $format = 'd-i:s H:Y-m'; 43 | $blockDate = TX::getBlockDate(350000, $format); 44 | $this->assertEquals(date($format, 1427753834), $blockDate); 45 | // Zero block 46 | $blockDate = TX::getBlockDate(0); 47 | $this->assertEquals(FALSE, $blockDate); 48 | // Unexisting block 49 | $blockDate = TX::getBlockDate(100000000); 50 | $this->assertEquals(FALSE, $blockDate); 51 | // Not a block number 52 | $blockDate = TX::getBlockDate('test'); 53 | $this->assertEquals(FALSE, $blockDate); 54 | } 55 | */ 56 | } 57 | -------------------------------------------------------------------------------- /app/templates/layout.tpl.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Chainy - proof of media 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 38 | 39 | -------------------------------------------------------------------------------- /web/less/bootstrap/progress-bars.less: -------------------------------------------------------------------------------- 1 | // 2 | // Progress bars 3 | // -------------------------------------------------- 4 | 5 | 6 | // Bar animations 7 | // ------------------------- 8 | 9 | // WebKit 10 | @-webkit-keyframes progress-bar-stripes { 11 | from { background-position: 40px 0; } 12 | to { background-position: 0 0; } 13 | } 14 | 15 | // Spec and IE10+ 16 | @keyframes progress-bar-stripes { 17 | from { background-position: 40px 0; } 18 | to { background-position: 0 0; } 19 | } 20 | 21 | 22 | // Bar itself 23 | // ------------------------- 24 | 25 | // Outer container 26 | .progress { 27 | overflow: hidden; 28 | height: @line-height-computed; 29 | margin-bottom: @line-height-computed; 30 | background-color: @progress-bg; 31 | border-radius: @progress-border-radius; 32 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 33 | } 34 | 35 | // Bar of progress 36 | .progress-bar { 37 | float: left; 38 | width: 0%; 39 | height: 100%; 40 | font-size: @font-size-small; 41 | line-height: @line-height-computed; 42 | color: @progress-bar-color; 43 | text-align: center; 44 | background-color: @progress-bar-bg; 45 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 46 | .transition(width .6s ease); 47 | } 48 | 49 | // Striped bars 50 | // 51 | // `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the 52 | // `.progress-bar-striped` class, which you just add to an existing 53 | // `.progress-bar`. 54 | .progress-striped .progress-bar, 55 | .progress-bar-striped { 56 | #gradient > .striped(); 57 | background-size: 40px 40px; 58 | } 59 | 60 | // Call animation for the active one 61 | // 62 | // `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the 63 | // `.progress-bar.active` approach. 64 | .progress.active .progress-bar, 65 | .progress-bar.active { 66 | .animation(progress-bar-stripes 2s linear infinite); 67 | } 68 | 69 | 70 | // Variations 71 | // ------------------------- 72 | 73 | .progress-bar-success { 74 | .progress-bar-variant(@progress-bar-success-bg); 75 | } 76 | 77 | .progress-bar-info { 78 | .progress-bar-variant(@progress-bar-info-bg); 79 | } 80 | 81 | .progress-bar-warning { 82 | .progress-bar-variant(@progress-bar-warning-bg); 83 | } 84 | 85 | .progress-bar-danger { 86 | .progress-bar-variant(@progress-bar-danger-bg); 87 | } 88 | -------------------------------------------------------------------------------- /web/less/bootstrap/pagination.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pagination (multiple pages) 3 | // -------------------------------------------------- 4 | .pagination { 5 | display: inline-block; 6 | padding-left: 0; 7 | margin: @line-height-computed 0; 8 | border-radius: @border-radius-base; 9 | 10 | > li { 11 | display: inline; // Remove list-style and block-level defaults 12 | > a, 13 | > span { 14 | position: relative; 15 | float: left; // Collapse white-space 16 | padding: @padding-base-vertical @padding-base-horizontal; 17 | line-height: @line-height-base; 18 | text-decoration: none; 19 | color: @pagination-color; 20 | background-color: @pagination-bg; 21 | border: 1px solid @pagination-border; 22 | margin-left: -1px; 23 | } 24 | &:first-child { 25 | > a, 26 | > span { 27 | margin-left: 0; 28 | .border-left-radius(@border-radius-base); 29 | } 30 | } 31 | &:last-child { 32 | > a, 33 | > span { 34 | .border-right-radius(@border-radius-base); 35 | } 36 | } 37 | } 38 | 39 | > li > a, 40 | > li > span { 41 | &:hover, 42 | &:focus { 43 | color: @pagination-hover-color; 44 | background-color: @pagination-hover-bg; 45 | border-color: @pagination-hover-border; 46 | } 47 | } 48 | 49 | > .active > a, 50 | > .active > span { 51 | &, 52 | &:hover, 53 | &:focus { 54 | z-index: 2; 55 | color: @pagination-active-color; 56 | background-color: @pagination-active-bg; 57 | border-color: @pagination-active-border; 58 | cursor: default; 59 | } 60 | } 61 | 62 | > .disabled { 63 | > span, 64 | > span:hover, 65 | > span:focus, 66 | > a, 67 | > a:hover, 68 | > a:focus { 69 | color: @pagination-disabled-color; 70 | background-color: @pagination-disabled-bg; 71 | border-color: @pagination-disabled-border; 72 | cursor: @cursor-disabled; 73 | } 74 | } 75 | } 76 | 77 | // Sizing 78 | // -------------------------------------------------- 79 | 80 | // Large 81 | .pagination-lg { 82 | .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large); 83 | } 84 | 85 | // Small 86 | .pagination-sm { 87 | .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small); 88 | } 89 | -------------------------------------------------------------------------------- /web/less/bootstrap/print.less: -------------------------------------------------------------------------------- 1 | /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ 2 | 3 | // ========================================================================== 4 | // Print styles. 5 | // Inlined to avoid the additional HTTP request: h5bp.com/r 6 | // ========================================================================== 7 | 8 | @media print { 9 | *, 10 | *:before, 11 | *:after { 12 | background: transparent !important; 13 | color: #000 !important; // Black prints faster: h5bp.com/s 14 | box-shadow: none !important; 15 | text-shadow: none !important; 16 | } 17 | 18 | a, 19 | a:visited { 20 | text-decoration: underline; 21 | } 22 | 23 | a[href]:after { 24 | content: " (" attr(href) ")"; 25 | } 26 | 27 | abbr[title]:after { 28 | content: " (" attr(title) ")"; 29 | } 30 | 31 | // Don't show links that are fragment identifiers, 32 | // or use the `javascript:` pseudo protocol 33 | a[href^="#"]:after, 34 | a[href^="javascript:"]:after { 35 | content: ""; 36 | } 37 | 38 | pre, 39 | blockquote { 40 | border: 1px solid #999; 41 | page-break-inside: avoid; 42 | } 43 | 44 | thead { 45 | display: table-header-group; // h5bp.com/t 46 | } 47 | 48 | tr, 49 | img { 50 | page-break-inside: avoid; 51 | } 52 | 53 | img { 54 | max-width: 100% !important; 55 | } 56 | 57 | p, 58 | h2, 59 | h3 { 60 | orphans: 3; 61 | widows: 3; 62 | } 63 | 64 | h2, 65 | h3 { 66 | page-break-after: avoid; 67 | } 68 | 69 | // Bootstrap specific changes start 70 | // 71 | // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245 72 | // Once fixed, we can just straight up remove this. 73 | select { 74 | background: #fff !important; 75 | } 76 | 77 | // Bootstrap components 78 | .navbar { 79 | display: none; 80 | } 81 | .btn, 82 | .dropup > .btn { 83 | > .caret { 84 | border-top-color: #000 !important; 85 | } 86 | } 87 | .label { 88 | border: 1px solid #000; 89 | } 90 | 91 | .table { 92 | border-collapse: collapse !important; 93 | 94 | td, 95 | th { 96 | background-color: #fff !important; 97 | } 98 | } 99 | .table-bordered { 100 | th, 101 | td { 102 | border: 1px solid #ddd !important; 103 | } 104 | } 105 | 106 | // Bootstrap specific changes end 107 | } 108 | -------------------------------------------------------------------------------- /web/less/bootstrap/tooltip.less: -------------------------------------------------------------------------------- 1 | // 2 | // Tooltips 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .tooltip { 8 | position: absolute; 9 | z-index: @zindex-tooltip; 10 | display: block; 11 | visibility: visible; 12 | font-size: @font-size-small; 13 | line-height: 1.4; 14 | .opacity(0); 15 | 16 | &.in { .opacity(@tooltip-opacity); } 17 | &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; } 18 | &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; } 19 | &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; } 20 | &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; } 21 | } 22 | 23 | // Wrapper for the tooltip content 24 | .tooltip-inner { 25 | max-width: @tooltip-max-width; 26 | padding: 3px 8px; 27 | color: @tooltip-color; 28 | text-align: center; 29 | text-decoration: none; 30 | background-color: @tooltip-bg; 31 | border-radius: @border-radius-base; 32 | } 33 | 34 | // Arrows 35 | .tooltip-arrow { 36 | position: absolute; 37 | width: 0; 38 | height: 0; 39 | border-color: transparent; 40 | border-style: solid; 41 | } 42 | .tooltip { 43 | &.top .tooltip-arrow { 44 | bottom: 0; 45 | left: 50%; 46 | margin-left: -@tooltip-arrow-width; 47 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0; 48 | border-top-color: @tooltip-arrow-color; 49 | } 50 | &.top-left .tooltip-arrow { 51 | bottom: 0; 52 | left: @tooltip-arrow-width; 53 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0; 54 | border-top-color: @tooltip-arrow-color; 55 | } 56 | &.top-right .tooltip-arrow { 57 | bottom: 0; 58 | right: @tooltip-arrow-width; 59 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0; 60 | border-top-color: @tooltip-arrow-color; 61 | } 62 | &.right .tooltip-arrow { 63 | top: 50%; 64 | left: 0; 65 | margin-top: -@tooltip-arrow-width; 66 | border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; 67 | border-right-color: @tooltip-arrow-color; 68 | } 69 | &.left .tooltip-arrow { 70 | top: 50%; 71 | right: 0; 72 | margin-top: -@tooltip-arrow-width; 73 | border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; 74 | border-left-color: @tooltip-arrow-color; 75 | } 76 | &.bottom .tooltip-arrow { 77 | top: 0; 78 | left: 50%; 79 | margin-left: -@tooltip-arrow-width; 80 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; 81 | border-bottom-color: @tooltip-arrow-color; 82 | } 83 | &.bottom-left .tooltip-arrow { 84 | top: 0; 85 | left: @tooltip-arrow-width; 86 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; 87 | border-bottom-color: @tooltip-arrow-color; 88 | } 89 | &.bottom-right .tooltip-arrow { 90 | top: 0; 91 | right: @tooltip-arrow-width; 92 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; 93 | border-bottom-color: @tooltip-arrow-color; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /web/less/bootstrap/mixins/forms.less: -------------------------------------------------------------------------------- 1 | // Form validation states 2 | // 3 | // Used in forms.less to generate the form validation CSS for warnings, errors, 4 | // and successes. 5 | 6 | .form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) { 7 | // Color the label and help text 8 | .help-block, 9 | .control-label, 10 | .radio, 11 | .checkbox, 12 | .radio-inline, 13 | .checkbox-inline, 14 | &.radio label, 15 | &.checkbox label, 16 | &.radio-inline label, 17 | &.checkbox-inline label { 18 | color: @text-color; 19 | } 20 | // Set the border and box shadow on specific inputs to match 21 | .form-control { 22 | border-color: @border-color; 23 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work 24 | &:focus { 25 | border-color: darken(@border-color, 10%); 26 | @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%); 27 | .box-shadow(@shadow); 28 | } 29 | } 30 | // Set validation states also for addons 31 | .input-group-addon { 32 | color: @text-color; 33 | border-color: @border-color; 34 | background-color: @background-color; 35 | } 36 | // Optional feedback icon 37 | .form-control-feedback { 38 | color: @text-color; 39 | } 40 | } 41 | 42 | 43 | // Form control focus state 44 | // 45 | // Generate a customized focus state and for any input with the specified color, 46 | // which defaults to the `@input-border-focus` variable. 47 | // 48 | // We highly encourage you to not customize the default value, but instead use 49 | // this to tweak colors on an as-needed basis. This aesthetic change is based on 50 | // WebKit's default styles, but applicable to a wider range of browsers. Its 51 | // usability and accessibility should be taken into account with any change. 52 | // 53 | // Example usage: change the default blue border and shadow to white for better 54 | // contrast against a dark gray background. 55 | .form-control-focus(@color: @input-border-focus) { 56 | @color-rgba: rgba(red(@color), green(@color), blue(@color), .6); 57 | &:focus { 58 | border-color: @color; 59 | outline: 0; 60 | .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}"); 61 | } 62 | } 63 | 64 | // Form control sizing 65 | // 66 | // Relative text size, padding, and border-radii changes for form controls. For 67 | // horizontal sizing, wrap controls in the predefined grid classes. `