├── .gitmodules ├── README.md ├── admin ├── admin.inc.php ├── css │ └── admin.css ├── index.php ├── less │ └── admin.less └── template │ ├── about.tpl │ ├── changelog.tpl │ └── settings.tpl ├── fixplugins.css ├── img ├── logo.png ├── transparent.png └── user.png ├── include ├── config.php ├── index.php └── themecontroller.php ├── index.php ├── js ├── jquery.awesomeCloud.js ├── jquery.cookie.js ├── jquery.equalheights.js ├── rating.js └── theme.js ├── less ├── fixplugins.less └── theme.less ├── release.sh ├── screenshot.png ├── template ├── about.tpl ├── comment_list.tpl ├── comments.tpl ├── footer.tpl ├── grid_classes.tpl ├── header.tpl ├── http_scheme.tpl ├── identification.tpl ├── index.tpl ├── infos_errors.tpl ├── mainpage_categories.tpl ├── menubar.tpl ├── menubar_additional_pages.tpl ├── menubar_categories.tpl ├── menubar_identification.tpl ├── menubar_links.tpl ├── menubar_menu.tpl ├── menubar_specials.tpl ├── menubar_tags.tpl ├── menubar_user_collections.tpl ├── navigation_bar.tpl ├── notification.tpl ├── password.tpl ├── picture.tpl ├── picture_content.tpl ├── picture_nav_buttons.tpl ├── popuphelp.tpl ├── profile.tpl ├── profile_content.tpl ├── redirect.tpl ├── register.tpl ├── search.tpl ├── slideshow.tpl ├── stuffs_blocks.tpl ├── stuffs_logon.tpl ├── tags.tpl └── thumbnails.tpl ├── theme.css └── themeconf.inc.php /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "bootstrap"] 2 | path = bootstrap 3 | url = git@github.com:twbs/bootstrap.git 4 | [submodule "selectize.js"] 5 | path = selectize.js 6 | url = git@github.com:selectize/selectize.js.git 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Bootstrap Default theme for Piwigo 1.0.6 2 | ======================================== 3 | 4 | A modern and responsive theme for [Piwigo](http://piwigo.org/) built with standard [Bootstrap](http://getbootstrap.com/) components and using the default [Bootstrap](http://getbootstrap.com/) theme. 5 | Intended for easy customisation using [Bootstrap](http://getbootstrap.com/) styles or as a parent theme for creating responsive themes for [Piwigo](http://piwigo.org/). 6 | 7 | ## DEPRECATED 8 | 9 | This theme is no longer maintained as I'm no longer actively using Piwigo for photo hosting. The theme has served it's purpose and inspired the creation of [Bootstrap Darkroom](https://github.com/tkuther/piwigo-bootstrap-darkroom) which is great theme, actively maintained and has numerous additional features, so I recommend using this instead. 10 | 11 | ## Features 12 | 13 | * Fully responsive and fully featured theme based on Bootstrap's default theme 14 | * Browse albums as a grid or list with selectable thumbnail sizes 15 | * Image size selection enabled for better viewing of images and slide show on higher resolution monitors, with 16 | responsive scaling of over sized images 17 | * Slide in side bar with image information 18 | * Share buttons for Twitter, Facebook and Google+ 19 | * Gravatar support for comment avatars 20 | * Masonry style tag view 21 | * Configuration page in admin to customise features such as Bootstrap theme, social integration and comments 22 | * Works with all supported languages (admin page is currently English only) 23 | 24 | ## Live demo 25 | 26 | A demo of the theme can be found here: https://phil.si/ 27 | 28 | ## Installing 29 | 30 | Download the latest release from the [Piwigo website](http://piwigo.org/ext/extension_view.php?eid=796). 31 | 32 | ## Get the source 33 | 34 | Clone the [Github repository](https://github.com/Philio/bootstrapdefault): 35 | 36 | git clone git@github.com:Philio/bootstrapdefault.git 37 | 38 | *Add the `--recursive` option to include the submodules or run `git submodule update --init` after cloning.* 39 | 40 | ## Bundled libraries 41 | 42 | * [Bootstrap](http://getbootstrap.com/) 3.3.7 - Included as sub module 43 | * [Selectize.js](http://selectize.github.io/selectize.js/) 0.12.3 - Included as sub module. Note: The bundled version 44 | with Piwigo 2.7.x+ is ignored in favour of the latest build with Bootstrap styling. 45 | 46 | ## License 47 | 48 | Copyright 2015 Phil Bayfield 49 | 50 | Licensed under the Apache License, Version 2.0 (the "License"); 51 | you may not use this file except in compliance with the License. 52 | You may obtain a copy of the License at 53 | 54 | http://www.apache.org/licenses/LICENSE-2.0 55 | 56 | Unless required by applicable law or agreed to in writing, software 57 | distributed under the License is distributed on an "AS IS" BASIS, 58 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 59 | See the License for the specific language governing permissions and 60 | limitations under the License. 61 | -------------------------------------------------------------------------------- /admin/admin.inc.php: -------------------------------------------------------------------------------- 1 | fromPost($_POST); 28 | $themeconfig->save(); 29 | } 30 | } 31 | 32 | // TabSheet 33 | $tabsheet = new tabsheet(); 34 | $tabsheet->set_id('bsd'); 35 | $tabsheet->add(TAB_SETTINGS, l10n('Settings'), ADMIN_PATH . '&tab=' . TAB_SETTINGS); 36 | $tabsheet->add(TAB_CHANGELOG, l10n('Change Log'), ADMIN_PATH . '&tab=' . TAB_CHANGELOG); 37 | $tabsheet->add(TAB_ABOUT, l10n('About'), ADMIN_PATH . '&tab=' . TAB_ABOUT); 38 | $tabsheet->select($page['tab']); 39 | $tabsheet->assign(); 40 | 41 | // Fetch the template. 42 | global $template; 43 | 44 | // Add our template to the global template 45 | $template->set_filenames( 46 | array( 47 | 'theme_admin_content' => dirname(__FILE__) . '/template/' . $page['tab'] . '.tpl' 48 | ) 49 | ); 50 | 51 | // Assign the template contents to ADMIN_CONTENT 52 | $template->assign('theme_config', $themeconfig); 53 | $template->assign_var_from_handle('ADMIN_CONTENT', 'theme_admin_content'); -------------------------------------------------------------------------------- /admin/css/admin.css: -------------------------------------------------------------------------------- 1 | #configContent fieldset.mainConf label.radio { 2 | display: inline-block; 3 | width: 120px; 4 | } 5 | -------------------------------------------------------------------------------- /admin/index.php: -------------------------------------------------------------------------------- 1 | 3 |

{'Bootstrap Default'|@translate} {$TABSHEET_TITLE}

4 | 5 |
6 |

{'Bootstrap Default'|@translate}

7 |

{'Version'|@translate}: 1.0.6

8 |
{'By'|@translate}: Phil Bayfield
9 | 10 |

{'A modern and responsive theme for Piwigo built with standard Bootstrap components and using the default Bootstrap theme. Intended for easy customisation using Bootstrap styles or as a parent theme for creating responsive themes for Piwigo.'|@translate}

11 | 12 |

{'Download'|@translate}: http://piwigo.org/ext/extension_view.php?eid=796 13 |

14 | 15 |

{'Source'|@translate}: https://github.com/Philio/bootstrapdefault 16 |

17 | 18 |

{'Bug reports and features requests'|@translate} 20 |

21 |
-------------------------------------------------------------------------------- /admin/template/changelog.tpl: -------------------------------------------------------------------------------- 1 | {combine_css path="themes/bootstrapdefault/admin/css/admin.css"} 2 |
3 |

{'Bootstrap Default'|@translate} {$TABSHEET_TITLE}

4 |
5 |
6 |
7 | 1.0.6 8 | 11 |
12 |
13 | 1.0.5 14 | 19 |
20 |
21 | 1.0.4 22 | 27 |
28 |
29 | 1.0.3 30 | 34 |
35 |
36 | 1.0.2 37 | 41 |
42 |
43 | 1.0.1 44 | 49 |
50 |
51 | 1.0.0 52 | 57 |
58 |
59 | 1.0.0-rc2 60 | 68 |
69 |
70 | 1.0.0-rc1 71 | 84 |
85 |
86 | 0.9.9-pr3 87 | 90 |
91 |
92 | 0.9.9-pr2 93 | 96 |
97 |
98 | 0.9.9-pr1 99 | 102 |
103 |
-------------------------------------------------------------------------------- /admin/template/settings.tpl: -------------------------------------------------------------------------------- 1 | {combine_css path="themes/bootstrapdefault/admin/css/admin.css"} 2 | {combine_script id='common' load='footer' path='admin/themes/default/js/common.js'} 3 |
4 |

{'Bootstrap Default'|@translate} {$TABSHEET_TITLE}

5 |
6 |
7 | 8 |
9 |
10 | {'Bootstrap theme'|@translate} 11 |
    12 |
  • 13 | 17 |
  • 18 |
19 |
20 |
21 | {'Picture page display'|@translate} 22 |
    23 |
  • 24 | 28 | 32 |
  • 33 |
34 |
35 | * Hides the top menu and jumbotron containing the page title and banner 36 |
37 |
38 | {'Social integration'|@translate} 39 |
    40 |
  • 41 | 46 |
  • 47 |
  • 48 | 53 |
  • 54 |
  • 55 | 60 |
  • 61 |
  • 62 | 67 |
  • 68 |
69 |
70 |
71 | {'Comments'|@translate} 72 |
    73 |
  • 74 | 78 | 82 |
  • 83 |
  • 84 |
    85 | 86 |
  • 87 |
88 |
89 |
90 | {'Tag cloud'|@translate} 91 |
    92 |
  • 93 | 97 | 101 |
  • 102 |
103 |
104 |
105 | {'Custom CSS'|@translate} 106 | 107 |
108 |
109 |

110 | 111 |

112 |
113 | {footer_script require='jquery'}{strip} 114 | (function(){ 115 | var targets = { 116 | 'input[name="social_enabled"]': ['#social_twitter', '#social_facebook', '#social_google_plus'], 117 | '#comments_radio_disqus': ['#comments_type_disqus'], 118 | }; 119 | 120 | for (selector in targets) { 121 | for (target of targets[selector]) { 122 | jQuery(target).toggle(jQuery(selector).is(':checked')); 123 | 124 | (function(target){ 125 | jQuery(selector).on('change', function() { 126 | jQuery(target).toggle($(this).is(':checked')); 127 | }); 128 | })(target); 129 | } 130 | }; 131 | }()); 132 | {/strip}{/footer_script} -------------------------------------------------------------------------------- /fixplugins.css: -------------------------------------------------------------------------------- 1 | .thumbnail > img, 2 | .thumbnail a > img, 3 | .carousel-inner > .item > img, 4 | .carousel-inner > .item > a > img { 5 | display: block; 6 | max-width: 100%; 7 | height: auto; 8 | } 9 | .html-radios-inline input[type=radio] { 10 | position: absolute; 11 | margin-left: -20px; 12 | margin-top: 4px \9; 13 | } 14 | .html-radios-inline label + label { 15 | margin-top: 0; 16 | margin-left: 10px; 17 | } 18 | .btn-group-lg > .btn { 19 | padding: 10px 16px; 20 | font-size: 18px; 21 | line-height: 1.3333333; 22 | border-radius: 6px; 23 | } 24 | .btn-group-sm > .btn { 25 | padding: 5px 10px; 26 | font-size: 12px; 27 | line-height: 1.5; 28 | border-radius: 3px; 29 | } 30 | .btn-group-xs > .btn { 31 | padding: 1px 5px; 32 | font-size: 12px; 33 | line-height: 1.5; 34 | border-radius: 3px; 35 | } 36 | .dl-horizontal dd:before, 37 | .dl-horizontal dd:after, 38 | .container:before, 39 | .container:after, 40 | .container-fluid:before, 41 | .container-fluid:after, 42 | .row:before, 43 | .row:after, 44 | .form-horizontal .form-group:before, 45 | .form-horizontal .form-group:after, 46 | .btn-toolbar:before, 47 | .btn-toolbar:after, 48 | .btn-group-vertical > .btn-group:before, 49 | .btn-group-vertical > .btn-group:after, 50 | .nav:before, 51 | .nav:after, 52 | .navbar:before, 53 | .navbar:after, 54 | .navbar-header:before, 55 | .navbar-header:after, 56 | .navbar-collapse:before, 57 | .navbar-collapse:after, 58 | .pager:before, 59 | .pager:after, 60 | .panel-body:before, 61 | .panel-body:after, 62 | .modal-footer:before, 63 | .modal-footer:after { 64 | content: " "; 65 | display: table; 66 | } 67 | .dl-horizontal dd:after, 68 | .container:after, 69 | .container-fluid:after, 70 | .row:after, 71 | .form-horizontal .form-group:after, 72 | .btn-toolbar:after, 73 | .btn-group-vertical > .btn-group:after, 74 | .nav:after, 75 | .navbar:after, 76 | .navbar-header:after, 77 | .navbar-collapse:after, 78 | .pager:after, 79 | .panel-body:after, 80 | .modal-footer:after { 81 | clear: both; 82 | } 83 | .pwg-icon { 84 | position: relative; 85 | top: 1px; 86 | display: inline-block; 87 | font-family: 'Glyphicons Halflings'; 88 | font-style: normal; 89 | font-weight: normal; 90 | line-height: 1; 91 | -webkit-font-smoothing: antialiased; 92 | -moz-osx-font-smoothing: grayscale; 93 | } 94 | .pwg-button-text { 95 | display: none; 96 | } 97 | #languageSwitch { 98 | display: none; 99 | } 100 | ul.thumbnailCategories, 101 | ul.thumbnails, 102 | ul#thumbnails { 103 | -webkit-padding-start: 0px; 104 | } 105 | #content div.loader { 106 | display: none; 107 | } 108 | -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Philio/bootstrapdefault/d89603ec1f7dc37baa2cf4ded5b12d72f6501299/img/logo.png -------------------------------------------------------------------------------- /img/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Philio/bootstrapdefault/d89603ec1f7dc37baa2cf4ded5b12d72f6501299/img/transparent.png -------------------------------------------------------------------------------- /img/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Philio/bootstrapdefault/d89603ec1f7dc37baa2cf4ded5b12d72f6501299/img/user.png -------------------------------------------------------------------------------- /include/config.php: -------------------------------------------------------------------------------- 1 | 'default', 33 | self::KEY_PICTURE_PAGE => 'normal', 34 | self::KEY_SOCIAL_ENABLED => true, 35 | self::KEY_SOCIAL_TWITTER => true, 36 | self::KEY_SOCIAL_FACEBOOK => true, 37 | self::KEY_SOCIAL_GOOGLE_PLUS => true, 38 | self::KEY_COMMENTS_TYPE => 'piwigo', 39 | self::KEY_COMMENTS_DISQUS_SHORTNAME => null, 40 | self::KEY_TAG_CLOUD_TYPE => 'basic', 41 | self::KEY_CUSTOM_CSS => null, 42 | ); 43 | 44 | private $types = array( 45 | self::KEY_BOOTSTRAP_THEME => self::TYPE_STRING, 46 | self::KEY_PICTURE_PAGE => self::TYPE_STRING, 47 | self::KEY_SOCIAL_ENABLED => self::TYPE_BOOL, 48 | self::KEY_SOCIAL_TWITTER => self::TYPE_BOOL, 49 | self::KEY_SOCIAL_FACEBOOK => self::TYPE_BOOL, 50 | self::KEY_SOCIAL_GOOGLE_PLUS => self::TYPE_BOOL, 51 | self::KEY_COMMENTS_TYPE => self::TYPE_STRING, 52 | self::KEY_COMMENTS_DISQUS_SHORTNAME => self::TYPE_STRING, 53 | self::KEY_TAG_CLOUD_TYPE => self::TYPE_STRING, 54 | self::KEY_CUSTOM_CSS => self::TYPE_FILE, 55 | ); 56 | 57 | private $files = array(); 58 | 59 | private $config = array(); 60 | 61 | public function __construct() { 62 | global $conf; 63 | 64 | // Initialise the files array 65 | $this->initFiles(); 66 | 67 | // Create initial config if necessary 68 | if (!isset($conf[self::CONF_PARAM])) { 69 | $this->createDefaultConfig(); 70 | return; 71 | } 72 | 73 | // Load and JSON decode the config 74 | $loaded = json_decode($conf[self::CONF_PARAM], true); 75 | 76 | // Check for current version 77 | if (isset($loaded[self::KEY_VERSION]) && $loaded[self::KEY_VERSION] == self::CONF_VERSION) { 78 | $this->config = $loaded; 79 | return; 80 | } 81 | 82 | // Invalid or old config, recreate 83 | $this->createDefaultConfig(); 84 | if (is_array($loaded)) { 85 | $this->populateConfig($loaded); 86 | } 87 | $this->save(); 88 | } 89 | 90 | private function initFiles() { 91 | $this->files[self::KEY_CUSTOM_CSS] = PHPWG_ROOT_PATH . PWG_LOCAL_DIR . 'bootstrapdefault/custom.css'; 92 | } 93 | 94 | public function __set($key, $value) { 95 | if (array_key_exists($key, $this->defaults)) { 96 | switch ($this->types[$key]) { 97 | case self::TYPE_STRING: 98 | $this->config[$key] = !empty($value) ? $value : null; 99 | break; 100 | case self::TYPE_BOOL: 101 | $this->config[$key] = $value ? true : false; 102 | break; 103 | case self::TYPE_FILE: 104 | $this->saveFile($key, $value); 105 | break; 106 | } 107 | } 108 | } 109 | 110 | public function __get($key) { 111 | if (array_key_exists($key, $this->defaults)) { 112 | switch ($this->types[$key]) { 113 | case self::TYPE_STRING: 114 | case self::TYPE_BOOL: 115 | return $this->config[$key]; 116 | case self::TYPE_FILE: 117 | return $this->loadFile($key); 118 | } 119 | } else { 120 | return null; 121 | } 122 | } 123 | 124 | public function fromPost(array $post) { 125 | foreach (array_keys($this->defaults) as $key) { 126 | $this->__set($key, isset($post[$key]) ? stripslashes($post[$key]) : null); 127 | } 128 | } 129 | 130 | public function save() { 131 | conf_update_param(self::CONF_PARAM, json_encode($this->config)); 132 | } 133 | 134 | private function createDefaultConfig() { 135 | $this->config = $this->defaults; 136 | $this->config[self::KEY_VERSION] = self::CONF_VERSION; 137 | } 138 | 139 | private function populateConfig(array $config) { 140 | foreach (array_keys($this->defaults) as $key) { 141 | if (isset($config[$key])) { 142 | $this->config[$key] = $config[$key]; 143 | } 144 | } 145 | } 146 | 147 | private function saveFile($key, $content) { 148 | $file = $this->files[$key]; 149 | $dir = dirname($file); 150 | if (!file_exists($dir)) { 151 | mkdir($dir, 0755, true); 152 | } 153 | if (empty($content) && file_exists($file)) { 154 | unlink($file); 155 | } else { 156 | file_put_contents($file, $content); 157 | } 158 | } 159 | 160 | private function loadFile($key) { 161 | $file = $this->files[$key]; 162 | if (file_exists($file)) { 163 | return file_get_contents($file); 164 | } else { 165 | return null; 166 | } 167 | } 168 | 169 | } -------------------------------------------------------------------------------- /include/index.php: -------------------------------------------------------------------------------- 1 | config = new Config(); 10 | } 11 | 12 | public function init() { 13 | $this->setPluginWarnings(); 14 | 15 | add_event_handler('loc_begin_page_header', array($this, 'assignConfig')); 16 | $shortname = $this->config->comments_disqus_shortname; 17 | if ($this->config->comments_type == 'disqus' && !empty($shortname)) { 18 | add_event_handler('blockmanager_apply', array($this, 'hideMenus')); 19 | } 20 | } 21 | 22 | private function setPluginWarnings() { 23 | global $pwg_loaded_plugins, $page; 24 | if (isset($pwg_loaded_plugins['language_switch'])) { 25 | $page['errors'][] = l10n('Language Switch plugin is enabled but is not compatible with the Bootstrap Default theme. Please disable it and download the Bootstrap Default Language Switch instead.'); 26 | } 27 | } 28 | 29 | public function assignConfig() { 30 | global $template; 31 | $template->assign('theme_config', $this->config); 32 | } 33 | 34 | public function hideMenus($menus) { 35 | $menu = &$menus[0]; 36 | 37 | $mbMenu = $menu->get_block('mbMenu'); 38 | unset($mbMenu->data['comments']); 39 | 40 | $mbSpecials = $menu->get_block('mbSpecials'); 41 | if (!is_null($mbSpecials)) { 42 | unset($mbSpecials->data['calendar']); 43 | } 44 | } 45 | 46 | } -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | . 22 | 23 | Usage: $(object).equalHeights([minHeight], [maxHeight]); 24 | 25 | Example 1: $(".cols").equalHeights(); Sets all columns to the same height. 26 | Example 2: $(".cols").equalHeights(400); Sets all cols to at least 400px tall. 27 | Example 3: $(".cols").equalHeights(100,300); Cols are at least 100 but no more 28 | than 300 pixels tall. Elements with too much content will gain a scrollbar. 29 | **/ 30 | 31 | (function($) { 32 | $.fn.equalHeights = function(minHeight, maxHeight) { 33 | tallest = (minHeight) ? minHeight : 0; 34 | this.each(function() { 35 | if($(this).height() > tallest) { 36 | tallest = $(this).height(); 37 | } 38 | }); 39 | if((maxHeight) && tallest > maxHeight) tallest = maxHeight; 40 | return this.each(function() { 41 | $(this).height(tallest); 42 | }); 43 | } 44 | })(jQuery); -------------------------------------------------------------------------------- /js/rating.js: -------------------------------------------------------------------------------- 1 | var gRatingOptions, gRatingButtons, gUserRating; 2 | 3 | function makeNiceRatingForm(options) 4 | { 5 | gRatingOptions = options; 6 | var form = $('#rateForm'); 7 | if (!form) return; //? template changed 8 | 9 | gRatingButtons = form.find('span'); 10 | gUserRating = ""; 11 | gRatingButtons.each(function() { 12 | if ($(this).hasClass('rateButtonStarFull')) { 13 | gUserRating = $(this).data('value'); 14 | } 15 | }); 16 | 17 | gRatingButtons.each(function() { 18 | $(this).data('initialRateValue', $(this).data('value')); 19 | 20 | pwgAddEventListener($(this).get(0), "click", updateRating); 21 | pwgAddEventListener($(this).get(0), "mouseout", function() {updateRatingStarDisplay( gUserRating );}); 22 | pwgAddEventListener($(this).get(0), "mouseover", function(e) { 23 | updateRatingStarDisplay(e.target ? $(e.target).data('initialRateValue') : $(e.srcElement).data('initialRateValue')); 24 | }); 25 | }); 26 | 27 | updateRatingStarDisplay(gUserRating); 28 | } 29 | 30 | function updateRatingStarDisplay(userRating) 31 | { 32 | gRatingButtons.each(function() { 33 | $(this).addClass(userRating !=="" && userRating >= $(this).data('initialRateValue') ? 'rateButtonStarFull' : 'rateButtonStarEmpty'); 34 | $(this).removeClass(userRating !=="" && userRating >= $(this).data('initialRateValue') ? 'rateButtonStarEmpty' : 'rateButtonStarFull'); 35 | }); 36 | } 37 | 38 | function updateRating(e) 39 | { 40 | var elem = e.target || e.srcElement; 41 | var rateButton = $(elem); 42 | if (rateButton.data('disabled') == true || rateButton.data('initialRateValue') == gUserRating) { 43 | return false; //nothing to do 44 | } 45 | 46 | gRatingButtons.each(function() { 47 | rateButton.data('disabled', true); 48 | }); 49 | 50 | var y = new PwgWS(gRatingOptions.rootUrl); 51 | y.callService( 52 | "pwg.images.rate", {image_id: gRatingOptions.image_id, rate: rateButton.data('initialRateValue') } , 53 | { 54 | method: "POST", 55 | onFailure: function(num, text) { 56 | alert(num + " " + text); 57 | document.location = $('#rateForm').attr('action') + "&rate=" + rateButton.data('initialRateValue'); 58 | }, 59 | onSuccess: function(result) { 60 | gUserRating = rateButton.data('initialRateValue'); 61 | gRatingButtons.each(function() { 62 | rateButton.data('disabled', false); 63 | }); 64 | if (gRatingOptions.onSuccess) gRatingOptions.onSuccess(result); 65 | if (gRatingOptions.updateRateElement) gRatingOptions.updateRateElement.innerHTML = gRatingOptions.updateRateText; 66 | if (gRatingOptions.ratingSummaryElement) 67 | { 68 | var t = gRatingOptions.ratingSummaryText; 69 | var args =[result.score, result.count, result.average], idx = 0, rexp = new RegExp( /%\.?\d*[sdf]/ ); 70 | while (idx" 5 | fi 6 | mkdir -p $1/bootstrapdefault 7 | mkdir -p $1/bootstrapdefault/bootstrap/dist 8 | mkdir -p $1/bootstrapdefault/selectize.js/dist 9 | cp -rv bootstrap/dist/* $1/bootstrapdefault/bootstrap/dist 10 | cp -rv selectize.js/dist/* $1/bootstrapdefault/selectize.js/dist 11 | cp -rv admin fixplugins.css img include index.php js language less local_head.tpl screenshot.png template theme.css themeconf.inc.php $1/bootstrapdefault/ 12 | cd $1 13 | zip -r ../bootstrapdefault-$1.zip bootstrapdefault 14 | cd .. 15 | rm -r $1 16 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Philio/bootstrapdefault/d89603ec1f7dc37baa2cf4ded5b12d72f6501299/screenshot.png -------------------------------------------------------------------------------- /template/about.tpl: -------------------------------------------------------------------------------- 1 | 8 | 9 | {include file='infos_errors.tpl'} 10 | 11 |
12 |
13 |
14 | {'About'|@translate} 15 |
16 |
17 | {$ABOUT_MESSAGE} 18 | {if isset($THEME_ABOUT) } 19 |
    20 |
  • {$THEME_ABOUT}
  • 21 |
22 | {/if} 23 | {if not empty($about_msgs)} 24 | {foreach from=$about_msgs item=elt} 25 | {$elt} 26 | {/foreach} 27 | {/if} 28 |
29 |
30 |
31 | -------------------------------------------------------------------------------- /template/comment_list.tpl: -------------------------------------------------------------------------------- 1 | {if isset($comment_derivative_params)} 2 | {strip}{html_style} 3 | .commentElement .illustration{ 4 | width:{$comment_derivative_params->max_width()+5}px 5 | } 6 | 7 | .content .commentElement .description{ 8 | min-height:{$comment_derivative_params->max_height()+5}px 9 | } 10 | {/html_style}{/strip} 11 | {footer_script}var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png";{/footer_script} 12 | 13 | {/if} 14 |
15 | {foreach from=$comments item=comment name=comment_loop} 16 |
17 |
18 | {if isset($comment.src_image)} 19 | {if isset($comment_derivative_params)} 20 | {define_derivative name='cropped_derivative_params' width=$comment_derivative_params->sizing->ideal_size[0] height=$comment_derivative_params->sizing->ideal_size[0] crop=true} 21 | {else} 22 | {define_derivative name='cropped_derivative_params' width=$derivative_params->sizing->ideal_size[0] height=$derivative_params->sizing->ideal_size[0] crop=true} 23 | {/if} 24 | {assign var=derivative value=$pwg->derivative($cropped_derivative_params, $comment.src_image)} 25 | {if !$derivative->is_cached()} 26 | {combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'} 27 | {combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'} 28 | {/if} 29 | 30 | is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.icon_dir}/img_small.png" data-src="{$derivative->get_url()}"{/if} alt="{$comment.ALT}"> 31 | 32 | {else} 33 | {include file="http_scheme.tpl"} 34 | 35 | {/if} 36 |
37 |
38 | {if isset($comment.U_DELETE) or isset($comment.U_VALIDATE) or isset($comment.U_EDIT)} 39 |
40 | {if isset($comment.U_DELETE)} 41 | 42 | {'Delete'|@translate} 43 | {if isset($comment.U_VALIDATE) or isset($comment.U_EDIT) or isset($comment.U_CANCEL)} | {/if} 44 | {/if} 45 | {if isset($comment.U_CANCEL)} 46 | 47 | {'Cancel'|@translate} 48 | {if isset($comment.U_VALIDATE)} | {/if} 49 | {/if} 50 | {if isset($comment.U_EDIT) and !isset($comment.IN_EDIT)} 51 | 52 | {'Edit'|@translate} 53 | {if isset($comment.U_VALIDATE)} | {/if} 54 | {/if} 55 | {if isset($comment.U_VALIDATE)} 56 | 57 | {'Validate'|@translate} 58 | 59 | {/if}  60 |
61 | {/if} 62 | 63 | {if $comment.WEBSITE_URL}{$comment.AUTHOR}{else}{$comment.AUTHOR}{/if} 64 | {if isset($comment.EMAIL)}- {$comment.EMAIL}{/if} 65 | - {$comment.DATE} 66 | {if isset($comment.IN_EDIT)} 67 | 68 |
69 |
70 | 71 | 72 |
73 |
74 | 75 | 76 |
77 | 78 | 79 | 80 | 81 |
82 | {else} 83 |
{$comment.CONTENT}
84 | {/if} 85 |
86 |
87 | {/foreach} 88 |
89 | -------------------------------------------------------------------------------- /template/comments.tpl: -------------------------------------------------------------------------------- 1 | 8 | 9 | {include file='infos_errors.tpl'} 10 | 11 | {$shortname = $theme_config->comments_disqus_shortname} 12 | {if $theme_config->comments_type == 'disqus' and !empty($shortname)} 13 | {else} 14 |
15 |
16 |
17 |
18 | {'Filter'|@translate} 19 |
20 |
21 |
22 | 23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 | 31 |
32 |
33 |
34 | 35 |
36 | 40 |
41 |
42 |
43 | 44 |
45 | {html_options name=since options=$since_options selected=$since_options_selected} 46 |
47 |
48 |
49 |
50 |
51 |
52 | {'Display'|@translate} 53 |
54 |
55 |
56 | 57 |
58 | {html_options name=sort_by options=$sort_by_options selected=$sort_by_options_selected} 59 |
60 |
61 |
62 | 63 |
64 | {html_options name=sort_order options=$sort_order_options selected=$sort_order_options_selected} 65 |
66 |
67 |
68 | 69 |
70 | {html_options name=items_number options=$item_number_options selected=$item_number_options_selected} 71 |
72 |
73 |
74 |
75 | 76 |
77 |
78 | 79 | {if isset($comments)} 80 | 81 | 88 | {/if} 89 | 90 | {if !empty($navbar) } 91 |
92 | {include file='navigation_bar.tpl' fragment='comments'|@get_extent:'navbar'} 93 |
94 | {/if} 95 | {/if} -------------------------------------------------------------------------------- /template/footer.tpl: -------------------------------------------------------------------------------- 1 | 2 | 30 | {if isset($debug.QUERIES_LIST)} 31 |
32 | {$debug.QUERIES_LIST} 33 |
34 | {/if} 35 | 36 | 37 | -------------------------------------------------------------------------------- /template/grid_classes.tpl: -------------------------------------------------------------------------------- 1 | {* Content container widths, taken from bootstrap.css. Must be updated to match for accurate grid calcuations if image 2 | size menu is enabled in child theme *} 3 | {assign var=width_lg value=1170} 4 | {assign var=width_md value=970} 5 | {assign var=width_sm value=750} 6 | {assign var=col_padding value=15} 7 | 8 | {assign var=col_class value=""} 9 | 10 | {* Calulate grid for large desktops *} 11 | {if $width > ($width_lg - (4 * $col_padding)) / 2} 12 | {$col_class = $col_class|cat:"col-lg-12"} 13 | {elseif $width > ($width_lg - (6 * $col_padding)) / 3} 14 | {$col_class = $col_class|cat:"col-lg-6"} 15 | {elseif $width > ($width_lg - (8 * $col_padding)) / 4} 16 | {$col_class = $col_class|cat:"col-lg-4"} 17 | {elseif $width <= ($width_lg - (8 * $col_padding)) / 4 && $width > ($width_lg - (12 * $col_padding)) / 6} 18 | {$col_class = $col_class|cat:"col-lg-3"} 19 | {else} 20 | {$col_class = $col_class|cat:"col-lg-2"} 21 | {/if} 22 | 23 | {* Calulate grid for desktops *} 24 | {if $width > ($width_md - (4 * $col_padding)) / 2} 25 | {$col_class = $col_class|cat:" col-md-12"} 26 | {elseif $width > ($width_md - (6 * $col_padding)) / 3} 27 | {$col_class = $col_class|cat:" col-md-6"} 28 | {elseif $width > ($width_md - (8 * $col_padding)) / 4} 29 | {$col_class = $col_class|cat:" col-md-4"} 30 | {elseif $width <= ($width_md - (8 * $col_padding)) / 4 && $width > ($width_md - (12 * $col_padding)) / 6} 31 | {$col_class = $col_class|cat:" col-md-3"} 32 | {else} 33 | {$col_class = $col_class|cat:" col-md-2"} 34 | {/if} 35 | 36 | {* Calulate grid for tablets *} 37 | {if $width > ($width_sm - (4 * $col_padding)) / 2} 38 | {$col_class = $col_class|cat:" col-sm-12"} 39 | {elseif $width > ($width_sm - (6 * $col_padding)) / 3} 40 | {$col_class = $col_class|cat:" col-sm-6"} 41 | {elseif $width > ($width_sm - (8 * $col_padding)) / 4} 42 | {$col_class = $col_class|cat:" col-sm-4"} 43 | {elseif $width <= ($width_sm - (8 * $col_padding)) / 4 && $width > ($width_sm - (12 * $col_padding)) / 6} 44 | {$col_class = $col_class|cat:" col-sm-3"} 45 | {else} 46 | {$col_class = $col_class|cat:" col-sm-2"} 47 | {/if} 48 | 49 | {* For phones just use 1 column *} 50 | {$col_class = $col_class|cat:" col-xs-12"} 51 | 52 | {* Assign to parent *} 53 | {assign var=col_class value=$col_class scope=parent} 54 | -------------------------------------------------------------------------------- /template/header.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {if isset($meta_ref) } 10 | {if isset($INFO_AUTHOR)} 11 | 12 | {/if} 13 | {if isset($related_tags)} 14 | 15 | {/if} 16 | {if isset($COMMENT_IMG)} 17 | 18 | {else} 19 | 20 | {/if} 21 | {/if} 22 | 23 | {if $PAGE_TITLE!=l10n('Home') && $PAGE_TITLE!=$GALLERY_TITLE}{$PAGE_TITLE} | {/if}{$GALLERY_TITLE} 24 | 25 | 26 | 27 | 28 | 29 | {if isset($first.U_IMG) } 30 | 31 | {/if} 32 | {if isset($previous.U_IMG)} 33 | 34 | {/if} 35 | {if isset($next.U_IMG)} 36 | 37 | {/if} 38 | {if isset($last.U_IMG)} 39 | 40 | {/if} 41 | {if isset($U_UP)} 42 | 43 | {/if} 44 | 45 | {combine_css path="themes/bootstrapdefault/bootstrap/dist/css/bootstrap.min.css" order=-20} 46 | {foreach from=$themes item=theme} 47 | {if $theme.load_css} 48 | {combine_css path="themes/`$theme.id`/theme.css" order=-10} 49 | {/if} 50 | {if !empty($theme.local_head)}{include file=$theme.local_head load_css=$theme.load_css}{/if} 51 | {/foreach} 52 | 53 | {if $theme_config->bootstrap_theme == 'default'} 54 | {combine_css path="themes/bootstrapdefault/bootstrap/dist/css/bootstrap-theme.min.css" order=0} 55 | {/if} 56 | {if file_exists("local/bootstrapdefault/custom.css")} 57 | {combine_css path="local/bootstrapdefault/custom.css" order=10} 58 | {/if} 59 | {combine_css path="themes/bootstrapdefault/fixplugins.css" order=1000000} 60 | {get_combined_css} 61 | 62 | {if isset($U_PREFETCH)} 63 | 64 | {/if} 65 | {if not empty($page_refresh)} 66 | 67 | {/if} 68 | 69 | {combine_script id='jquery'} 70 | {combine_script id='jquery-ajaxmanager' require='jquery' path='themes/default/js/plugins/jquery.ajaxmanager.js'} 71 | {combine_script id='thumbnails-loader' require='jquery-ajaxmanager' path='themes/default/js/thumbnails.loader.js'} 72 | {combine_script id='bootstrap' require='jquery' path="themes/bootstrapdefault/bootstrap/dist/js/bootstrap.min.js"} 73 | {combine_script id=$themeconf.name require='bootstrap' path="themes/bootstrapdefault/js/theme.js"} 74 | {get_combined_scripts load='header'} 75 | 76 | 79 | 80 | {if not empty($head_elements)} 81 | {foreach from=$head_elements item=elt}{$elt} 82 | {/foreach} 83 | {/if} 84 | 85 | 86 | 87 |
88 | {if $BODY_ID != 'thePicturePage' or $theme_config->picture_page == 'normal'} 89 | 90 | 106 | {/if} 107 | 108 | {if !isset($slideshow) and ($BODY_ID != 'thePicturePage' or $theme_config->picture_page == 'normal')} 109 |
110 |
111 |
{$PAGE_BANNER}
112 |
113 |
114 | {/if} 115 | 116 | {if not empty($header_msgs)} 117 | {foreach from=$header_msgs item=msg} 118 | {/foreach} 119 | {/if} 120 | 121 | {if not empty($header_notes)} 122 | {foreach from=$header_notes item=note} 123 | {/foreach} 124 | {/if} 125 | -------------------------------------------------------------------------------- /template/http_scheme.tpl: -------------------------------------------------------------------------------- 1 | {if isset($smarty.server.HTTP_X_FORWARDED_PROTO)} 2 | {assign var=http_scheme value=$smarty.server.HTTP_X_FORWARDED_PROTO scope=parent} 3 | {elseif $smarty.server.HTTPS == "on"} 4 | {assign var=http_scheme value='https' scope=parent} 5 | {else} 6 | {assign var=http_scheme value='http' scope=parent} 7 | {/if} -------------------------------------------------------------------------------- /template/identification.tpl: -------------------------------------------------------------------------------- 1 | 8 | 9 | {include file='infos_errors.tpl'} 10 | 11 |
12 |
13 |
14 |
15 | {'Connection settings'|@translate} 16 |
17 |
18 |
19 | 20 |
21 | 22 |
23 |
24 |
25 | 26 |
27 | 28 |
29 |
30 | {if $authorize_remembering } 31 |
32 |
33 |
34 | 37 |
38 |
39 |
40 | {/if} 41 |
42 |
43 | 44 | 45 |
46 |
47 |
48 |
49 | {if isset($U_REGISTER)} 50 | 51 | {'Register'|@translate} 52 | 53 | {/if} 54 |     55 | {if isset($U_LOST_PASSWORD)} 56 | 57 | {'Forgot your password?'|@translate} 58 | 59 | {/if} 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 | 70 | -------------------------------------------------------------------------------- /template/index.tpl: -------------------------------------------------------------------------------- 1 | 2 | {combine_script id='core.switchbox' require='jquery' path='themes/default/js/switchbox.js'} 3 | {combine_script id='cookie' require='jquery' path="themes/bootstrapdefault/js/jquery.cookie.js"} 4 | {combine_script id='equalheights' require='jquery' path="themes/bootstrapdefault/js/jquery.equalheights.js"} 5 | {if !empty($PLUGIN_INDEX_CONTENT_BEFORE)}{$PLUGIN_INDEX_CONTENT_BEFORE}{/if} 6 | 7 | 127 | 128 | {include file='infos_errors.tpl'} 129 | 130 | 131 |
132 | {if !empty($PLUGIN_INDEX_CONTENT_BEGIN)}{$PLUGIN_INDEX_CONTENT_BEGIN}{/if} 133 | 134 | 153 | 154 | {if !empty($CONTENT_DESCRIPTION)} 155 |

156 | {$CONTENT_DESCRIPTION} 157 |

158 | {/if} 159 |
160 | {if !empty($CONTENT)} 161 | 162 | {$CONTENT} 163 | 164 | {/if} 165 | 166 | {if !empty($CATEGORIES)} 167 | 168 | {$CATEGORIES} 169 | {footer_script}{literal}$(document).ready(function(){$('#content img').load(function(){$('#content .col-inner').equalHeights()})});{/literal}{/footer_script} 170 | 171 | {/if} 172 | 173 | {if !empty($THUMBNAILS)} 174 | 175 |
{$THUMBNAILS}
176 | {footer_script}{literal}$(document).ready(function(){$('#content img').load(function(){$('#content .col-inner').equalHeights()})});{/literal}{/footer_script} 177 | 178 | {/if} 179 |
180 |
181 | {if !empty($cats_navbar) || !empty($thumb_navbar)} 182 |
183 | {if !empty($cats_navbar)} 184 | {include file='navigation_bar.tpl' fragment="content"|@get_extent:'navbar' navbar=$cats_navbar} 185 | {/if} 186 | {if !empty($thumb_navbar)} 187 | {include file='navigation_bar.tpl' fragment="content"|@get_extent:'navbar' navbar=$thumb_navbar} 188 | {/if} 189 |
190 | {/if} 191 | 192 | {if !empty($category_search_results)} 193 |
194 |

{'Album results for'|@translate} {$QUERY_SEARCH}

195 |

196 | 197 | {foreach from=$category_search_results item=res name=res_loop} 198 | {if !$smarty.foreach.res_loop.first} — {/if} 199 | {$res} 200 | {/foreach} 201 | 202 |

203 |
204 | {/if} 205 | 206 | {if !empty($tag_search_results)} 207 |
208 |

{'Tag results for'|@translate} {$QUERY_SEARCH}

209 |

210 | 211 | {foreach from=$tag_search_results item=tag name=res_loop} 212 | {if !$smarty.foreach.res_loop.first} — {/if} 213 | {$tag.name} 214 | {/foreach} 215 | 216 |

217 |
218 | {/if} 219 | 220 |
221 | {if !empty($PLUGIN_INDEX_CONTENT_END)}{$PLUGIN_INDEX_CONTENT_END}{/if} 222 |
223 | 224 | {if !empty($PLUGIN_INDEX_CONTENT_AFTER)}{$PLUGIN_INDEX_CONTENT_AFTER}{/if} 225 | 226 | -------------------------------------------------------------------------------- /template/infos_errors.tpl: -------------------------------------------------------------------------------- 1 | {if isset($errors) } 2 |
3 | {foreach from=$errors item=error} 4 | 8 | {/foreach} 9 |
10 | {/if} 11 | 12 | {if not empty($infos)} 13 |
14 | {foreach from=$infos item=info} 15 | 19 | {/foreach} 20 |
21 | {/if} -------------------------------------------------------------------------------- /template/mainpage_categories.tpl: -------------------------------------------------------------------------------- 1 | {footer_script} 2 | var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png", max_requests = {$maxRequests}; 3 | {/footer_script} 4 | {define_derivative name='derivative_params' width=260 height=180 crop=true} 5 | {foreach from=$category_thumbnails item=cat name=cat_loop} 6 | {assign var=derivative value=$pwg->derivative($derivative_params, $cat.representative.src_image)} 7 | {if !$derivative->is_cached()} 8 | {combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'} 9 | {combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'} 10 | {/if} 11 | {include file="grid_classes.tpl" width=260 height=180} 12 |
13 |
14 | 15 |
16 | is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}themes/bootstrapdefault/img/transparent.png" 17 | data-src="{$derivative->get_url()}"{/if} 18 | alt="{$cat.TN_ALT}" 19 | title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}">{/strip} 20 |
21 |
22 |
23 |

24 | {$cat.NAME} 25 | {if !empty($cat.icon_ts)} 26 | (!) 27 | {/if} 28 |

29 | {if isset($cat.INFO_DATES) } 30 |

{$cat.INFO_DATES}

31 | {/if} 32 |

{$cat.CAPTION_NB_IMAGES}

33 | {if not empty($cat.DESCRIPTION)} 34 |

{$cat.DESCRIPTION}

35 | {/if} 36 |
37 |
38 |
39 | {/foreach} 40 | 41 | -------------------------------------------------------------------------------- /template/menubar.tpl: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | -------------------------------------------------------------------------------- /template/menubar_additional_pages.tpl: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /template/menubar_categories.tpl: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /template/menubar_identification.tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /template/menubar_links.tpl: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /template/menubar_menu.tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /template/menubar_specials.tpl: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /template/menubar_tags.tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /template/menubar_user_collections.tpl: -------------------------------------------------------------------------------- 1 | 30 | -------------------------------------------------------------------------------- /template/navigation_bar.tpl: -------------------------------------------------------------------------------- 1 |
2 | 28 |
-------------------------------------------------------------------------------- /template/notification.tpl: -------------------------------------------------------------------------------- 1 | {html_head} 2 | 3 | 4 | {/html_head} 5 | 6 | 13 | 14 | {include file='infos_errors.tpl'} 15 | 16 |
17 |
18 |
19 | {'Notification'|@translate} 20 |
21 |
22 |

{'The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'|@translate}

23 |

{'Photos only RSS feed'|@translate}

24 |

{'Complete RSS feed (photos, comments)'|@translate}

25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /template/password.tpl: -------------------------------------------------------------------------------- 1 | 8 | 9 | {include file='infos_errors.tpl'} 10 | 11 | {if $action ne 'none'} 12 |
13 |
14 |
15 |
16 | {'Forgot your password?'|@translate} 17 |
18 |
19 | 20 | {if $action eq 'lost'} 21 |
22 | {'Please enter your username or email address.'|@translate} 23 | {'You will receive a link to create a new password via email.'|@translate} 24 |
25 |
26 |
27 | 28 |
29 | 30 |
31 |
32 |
33 |
34 | 35 |
36 |
37 | {elseif $action eq 'reset'} 38 |
{'Hello'|@translate} {$username}. {'Enter your new password below.'|@translate}
39 |
40 |
41 | 42 |
43 | 44 |
45 |
46 |
47 | 48 |
49 | 50 |
51 |
52 |
53 |
54 | 55 |
56 |
57 | {/if} 58 |
59 |
60 |
61 |
62 | {/if} 63 | 64 | 71 | -------------------------------------------------------------------------------- /template/picture.tpl: -------------------------------------------------------------------------------- 1 | 2 | {combine_css path="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"} 3 | 4 | {if !empty($PLUGIN_PICTURE_BEFORE)}{$PLUGIN_PICTURE_BEFORE}{/if} 5 | 6 | 132 | 133 | {include file='infos_errors.tpl'} 134 | 135 |
136 | {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'} 137 |
138 | 139 |
140 | {$ELEMENT_CONTENT} 141 |
142 | 254 | 255 |
256 |
257 | {if isset($COMMENT_IMG)} 258 |

{$COMMENT_IMG}

259 | {/if} 260 | {if $display_info.visits} 261 |
262 | {'Visits'|@translate} 263 | {$INFO_VISITS} 264 |
265 | {/if} 266 | {if $display_info.rating_score and isset($rate_summary)} 267 |
268 |
269 |
{'Rating score'|@translate} ({if $rate_summary.count}{$rate_summary.count|@translate_dec:'%d rate':'%d rates'}{else}{'no rate'|@translate}{/if})
270 |
271 | {foreach from=$rating.marks item=mark name=rate_loop} 272 | 273 | {/foreach} 274 |
275 | {if isset($rating)} 276 |
{if isset($rating.USER_RATE)}{'Update your rating'|@translate}{else}{'Rate this photo'|@translate}{/if}
277 |
278 |
279 | {foreach from=$rating.marks item=mark name=rate_loop} 280 | {if isset($rating.USER_RATE) && $mark==$rating.USER_RATE} 281 | 282 | {else} 283 | 284 | {/if} 285 | {/foreach} 286 | {strip}{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'} 287 | {combine_script id='rating' load='async' require='core.scripts' require='jquery' path="themes/bootstrapdefault/js/rating.js"} 288 | {footer_script require='jquery'} 289 | var _pwgRatingAutoQueue = _pwgRatingAutoQueue||[]; 290 | _pwgRatingAutoQueue.push( {ldelim}rootUrl: '{$ROOT_URL}', image_id: {$current.id}, 291 | onSuccess : function(rating) {ldelim} 292 | var e = document.getElementById("updateRate"); 293 | if (e) e.innerHTML = "{'Update your rating'|@translate|@escape:'javascript'}"; 294 | e = document.getElementById("ratingScore"); 295 | if (e) e.innerHTML = rating.score; 296 | e = document.getElementById("ratingCount"); 297 | if (e) {ldelim} 298 | if (rating.count == 1) {ldelim} 299 | e.innerHTML = "({'1 rate'|@translate|@escape:'javascript'})"; 300 | } else {ldelim} 301 | e.innerHTML = "({'%d rates'|@translate|@escape:'javascript'})".replace( "%d", rating.count); 302 | } 303 | {rdelim} 304 | $('#averageRate').find('span').each(function() {ldelim} 305 | $(this).addClass(rating.average > $(this).data('value') - 0.5 ? 'rateButtonStarFull' : 'rateButtonStarEmpty'); 306 | $(this).removeClass(rating.average > $(this).data('value') - 0.5 ? 'rateButtonStarEmpty' : 'rateButtonStarFull'); 307 | {rdelim}); 308 | {rdelim} 309 | {rdelim} ); 310 | {/footer_script} 311 | {/strip} 312 |
313 |
314 | {/if} 315 |
316 |
317 | {/if} 318 |
319 |
320 | 321 | {include file="http_scheme.tpl"} 322 | {if $theme_config->social_enabled} 323 |
324 |
325 | {if $theme_config->social_twitter} 326 | 328 | 329 | 330 | {/if} 331 | {if $theme_config->social_facebook} 332 | 334 | 335 | 336 | {/if} 337 | {if $theme_config->social_google_plus} 338 | 340 | 341 | 342 | {/if} 343 |
344 |
345 | {/if} 346 | 347 | {if isset($comment_add) || $COMMENT_COUNT > 0} 348 | 349 |
350 |
351 |
352 | {$shortname = $theme_config->comments_disqus_shortname} 353 | {if $theme_config->comments_type == 'disqus' and !empty($shortname)} 354 |
355 | {footer_script}{strip} 356 | var disqus_shortname = '{/strip}{$shortname}{strip}'; 357 | 358 | (function() { 359 | var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 360 | dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; 361 | (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 362 | })(); 363 | {/strip} 364 | {/footer_script} 365 | {else} 366 |

{'Comments'|@translate}

367 |
368 | 376 |
377 | {if $COMMENT_COUNT > 0} 378 |
379 | {include file='comment_list.tpl'} 380 |
381 | {/if} 382 | {if isset($comment_add)} 383 |
384 |
385 | {if $comment_add.SHOW_AUTHOR} 386 |
387 | 388 | 389 |
390 | {/if} 391 | {if $comment_add.SHOW_EMAIL} 392 |
393 | 394 | 395 |
396 | {/if} 397 | {if $comment_add.SHOW_WEBSITE} 398 |
399 | 400 | 401 |
402 | {/if} 403 |
404 | 405 | 406 |
407 | 408 | 409 |
410 |
411 | {/if} 412 |
413 |
414 | {/if} 415 |
416 |
417 |
418 | {/if} 419 | 420 | {if !empty($navbar) } 421 |
422 | {include file='navigation_bar.tpl' fragment='comments'|@get_extent:'navbar'} 423 |
424 | {/if} 425 | 426 | 436 | {if !empty($PLUGIN_PICTURE_AFTER)}{$PLUGIN_PICTURE_AFTER}{/if} 437 | -------------------------------------------------------------------------------- /template/picture_content.tpl: -------------------------------------------------------------------------------- 1 | {if !$current.selected_derivative->is_cached()} 2 | {combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'} 3 | {combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'} 4 | {footer_script}var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png"{/footer_script} 5 | {/if} 6 | 7 | is_cached()}src="{$current.selected_derivative->get_url()}" {$current.selected_derivative->get_size_htm()}{else}src="{$ROOT_URL}themes/bootstrapdefault/img/transparent.png" data-src="{$current.selected_derivative->get_url()}"{/if} alt="{$ALT_IMG}" id="theMainImage" usemap="#map{$current.selected_derivative->get_type()}" title="{if isset($COMMENT_IMG)}{$COMMENT_IMG|@strip_tags:false|@replace:'"':' '}{else}{$current.TITLE_ESC} - {$ALT_IMG}{/if}"> 8 | 9 | {foreach from=$current.unique_derivatives item=derivative key=derivative_type}{strip} 10 | 11 | {assign var='size' value=$derivative->get_size()} 12 | {if isset($previous)} 13 | {$previous.TITLE_ESC} 14 | {/if} 15 | {'Thumbnails'|@translate} 16 | {if isset($next)} 17 | {$next.TITLE_ESC} 18 | {/if} 19 | 20 | {/strip}{/foreach} -------------------------------------------------------------------------------- /template/picture_nav_buttons.tpl: -------------------------------------------------------------------------------- 1 | 84 | {strip} 85 | {footer_script} 86 | document.onkeydown = function(e){ldelim} 87 | e=e||window.event; 88 | if (e.altKey) return true; 89 | var target=e.target||e.srcElement; 90 | if (target && target.type) return true;{* an input editable element *} 91 | var keyCode=e.keyCode||e.which, docElem=document.documentElement, url; 92 | switch(keyCode){ldelim} 93 | {if isset($next)} 94 | case 63235: case 39: if (e.ctrlKey || docElem.scrollLeft==docElem.scrollWidth-docElem.clientWidth)url="{$next.U_IMG}"; break; 95 | {/if} 96 | {if isset($previous)} 97 | case 63234: case 37: if (e.ctrlKey || docElem.scrollLeft==0)url="{$previous.U_IMG}"; break; 98 | {/if} 99 | {if isset($first)} 100 | {* Home *}case 36: if (e.ctrlKey)url="{$first.U_IMG}"; break; 101 | {/if} 102 | {if isset($last)} 103 | {* End *}case 35: if (e.ctrlKey)url="{$last.U_IMG}"; break; 104 | {/if} 105 | {if isset($U_UP) and !isset($slideshow)} 106 | {* Up *}case 38: if (e.ctrlKey)url="{$U_UP}"; break; 107 | {/if} 108 | {if isset($slideshow.U_START_PLAY)} 109 | {* Pause *}case 32: url="{$slideshow.U_START_PLAY}"; break; 110 | {/if} 111 | {if isset($slideshow.U_STOP_PLAY)} 112 | {* Play *}case 32: url="{$slideshow.U_STOP_PLAY}"; break; 113 | {/if} 114 | } 115 | if (url) {ldelim}window.location=url.replace("&","&"); return false;} 116 | return true; 117 | } 118 | {/footer_script} 119 | {/strip} -------------------------------------------------------------------------------- /template/popuphelp.tpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | {$HELP_CONTENT} 5 | 6 | 9 | 10 | {footer_script require='jquery'} 11 | if (window.opener || window.name) { 12 | jQuery("#closeLink").show(); 13 | jQuery("#homeLink").hide(); 14 | } 15 | {/footer_script} 16 |
17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /template/profile.tpl: -------------------------------------------------------------------------------- 1 | 8 | 9 | {include file='infos_errors.tpl'} 10 | 11 | {$PROFILE_CONTENT} 12 | -------------------------------------------------------------------------------- /template/profile_content.tpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | {'Registration'|@translate} 6 |
7 |
8 |
9 | 10 |
11 |

{$USERNAME}

12 |
13 |
14 | {if not $SPECIAL_USER} {* can modify password + email*} 15 |
16 | 17 |
18 | 19 |
20 |
21 |
22 | 23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 | 31 |
32 |
33 |
34 | 35 |
36 | 37 |
38 |
39 | {if !$ALLOW_USER_CUSTOMIZATION} 40 |
41 |
42 | 43 | 44 |
45 |
46 | {/if} 47 | {/if} 48 |
49 |
50 | {if $ALLOW_USER_CUSTOMIZATION} 51 |
52 |
53 | {'Preferences'|@translate} 54 |
55 |
56 |
57 | 58 |
59 | 60 |
61 |
62 |
63 | 64 |
65 | {html_options name=theme options=$template_options selected=$template_selection} 66 |
67 |
68 |
69 | 70 |
71 | {html_options name=language options=$language_options selected=$language_selection} 72 |
73 |
74 |
75 | 76 |
77 | 78 |
79 |
80 |
81 | 82 |
83 | {html_radios name='expand' options=$radio_options selected=$EXPAND} 84 |
85 |
86 | {if $ACTIVATE_COMMENTS} 87 |
88 | 89 |
90 | {html_radios name='show_nb_comments' options=$radio_options selected=$NB_COMMENTS} 91 |
92 |
93 | {/if} 94 |
95 | 96 |
97 | {html_radios name='show_nb_hits' options=$radio_options selected=$NB_HITS} 98 |
99 |
100 |
101 |
102 | 103 | 104 | 105 | 106 | {/if} 107 | 108 | 109 |
110 |
-------------------------------------------------------------------------------- /template/redirect.tpl: -------------------------------------------------------------------------------- 1 |
2 | {$REDIRECT_MSG} 3 |
4 | 5 | 12 | -------------------------------------------------------------------------------- /template/register.tpl: -------------------------------------------------------------------------------- 1 | 8 | 9 | {include file='infos_errors.tpl'} 10 | 11 |
12 |
13 |
14 |
15 | {'Enter your personnal informations'|@translate} 16 |
17 |
18 |
19 | 20 |
21 | 22 |
23 |
24 |
25 | 26 |
27 | 28 |
29 |
30 |
31 | 32 |
33 | 34 |
35 |
36 |
37 | 38 |
39 | 40 | {if not $obligatory_user_mail_address} 41 | ({'useful when password forgotten'|@translate}) 42 | {/if} 43 |
44 |
45 |
46 |
47 |
48 | 51 |
52 |
53 |
54 |
55 |
56 | 57 | 58 | 59 |
60 |
61 |
62 |
63 |
64 |
65 | 66 | -------------------------------------------------------------------------------- /template/search.tpl: -------------------------------------------------------------------------------- 1 | {combine_css path="themes/bootstrapdefault/selectize.js/dist/css/selectize.bootstrap2.css"} 2 | {combine_script id='jquery.selectize' load='footer' path="themes/bootstrapdefault/selectize.js/dist/js/standalone/selectize.min.js"} 3 | {footer_script} 4 | jQuery(document).ready(function() { 5 | jQuery("#authors, #tags, #categories").each(function() { 6 | jQuery(this).selectize({ 7 | plugins: ['remove_button'], 8 | maxOptions:jQuery(this).find("option").length 9 | }); 10 | }) 11 | }); 12 | {/footer_script} 13 | 14 | 30 | 31 | {include file='infos_errors.tpl'} 32 | 33 |
34 |
35 |
36 |
37 | {'Search for words'|@translate} 38 |
39 |
40 |
41 |
42 | 43 |
44 |
45 |
46 | 49 | 52 |
53 | 54 |
55 | 58 | 61 | 64 | {if isset($TAGS)} 65 | 68 | {/if} 69 |
70 |
71 |
72 | {if count($AUTHORS)>=1} 73 |
74 |
75 | {'Search for Author'|@translate} 76 |
77 |
78 |
79 |
80 | 85 |
86 |
87 |
88 |
89 | {/if} 90 | {if isset($TAGS)} 91 |
92 |
93 | {'Search tags'|@translate} 94 |
95 |
96 |
97 |
98 | 103 |
104 |
105 |
106 | 109 | 112 |
113 |
114 |
115 | {/if} 116 |
117 |
118 | {'Search by date'|@translate} 119 |
120 |
121 | 122 |
123 | 126 | 129 |
130 | 131 |
132 | 138 | 141 | 142 | 143 | {'today'|@translate} 144 |
145 | 146 |
147 | 153 | 156 | 157 | 158 | {'today'|@translate} 159 |
160 |
161 |
162 |
163 |
164 | {'Search in albums'|@translate} 165 |
166 |
167 |
168 |
169 | 172 |
173 |
174 |
175 | 178 |
179 |
180 |
181 | 182 | 183 |
184 |
185 | 186 | -------------------------------------------------------------------------------- /template/slideshow.tpl: -------------------------------------------------------------------------------- 1 |
2 | {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'} 3 | 4 |
5 | {$ELEMENT_CONTENT} 6 |
7 | 8 |
9 |
10 |

{$current.TITLE}

11 | {if isset($COMMENT_IMG)} 12 |

{$COMMENT_IMG}

13 | {/if} 14 |
15 |
16 |
17 | -------------------------------------------------------------------------------- /template/stuffs_blocks.tpl: -------------------------------------------------------------------------------- 1 | {foreach from=$blocks item=block key=key} 2 |
3 | {if isset($block.TITLE)} 4 | 28 | {/if} 29 | 30 |
31 | {include file=$block.TEMPLATE} 32 |
33 |
34 | {/foreach} 35 | -------------------------------------------------------------------------------- /template/stuffs_logon.tpl: -------------------------------------------------------------------------------- 1 | {include file='infos_errors.tpl'} 2 | 3 |
4 |
5 |
6 | {'Connection settings'|@translate} 7 |
8 |
9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 |
18 | 19 |
20 |
21 | {if $authorize_remembering } 22 |
23 |
24 |
25 | 28 |
29 |
30 |
31 | {/if} 32 |
33 |
34 | 35 | 36 |
37 |
38 |
39 |
40 | {if isset($block.U_REGISTER)} 41 | 42 | {'Register'|@translate} 43 | 44 | {/if} 45 |     46 | {if isset($block.U_LOST_PASSWORD)} 47 | 48 | {'Forgot your password?'|@translate} 49 | 50 | {/if} 51 |
52 |
53 |
54 |
55 |
56 | 57 | 60 | -------------------------------------------------------------------------------- /template/tags.tpl: -------------------------------------------------------------------------------- 1 | 26 | 27 | {include file='infos_errors.tpl'} 28 | 29 | {if $display_mode == 'cloud' and isset($tags)} 30 |
31 | {if $theme_config->tag_cloud_type == 'basic'} 32 |
33 | {foreach from=$tags item=tag} 34 | {$tag.name} 35 | {/foreach} 36 |
37 | {else} 38 | {combine_script id='jquery.awesomeCloud' load='footer' path="themes/bootstrapdefault/js/jquery.awesomeCloud.js"} 39 | {footer_script require='jquery.awesomeCloud'}{strip} 40 | $(document).ready(function(){ 41 | $("#tagCloudCanvas").awesomeCloud({ 42 | "size" : { 43 | "grid": 12, 44 | "factor": 0, 45 | "normalize": false 46 | }, 47 | "options": { 48 | "color": "gradient", 49 | "rotationRatio": 0.2, 50 | }, 51 | "color": { 52 | "start": $('#tagCloudGradientStart').css('color'), 53 | "end": $('#tagCloudGradientEnd').css('color') 54 | }, 55 | "font": "'Helvetica Neue',Helvetica,Arial,sans-serif", 56 | "shape": "circle" 57 | }); 58 | }); 59 | {/strip}{/footer_script} 60 |
61 | {foreach from=$tags item=tag} 62 | {$tag.name} 63 | {/foreach} 64 |
65 |
66 |
67 | {/if} 68 |
69 | {/if} 70 | 71 | {if $display_mode == 'letters' and isset($letters)} 72 |
73 |
74 | 84 |
85 |
86 | {/if} 87 | 88 |
89 | -------------------------------------------------------------------------------- /template/thumbnails.tpl: -------------------------------------------------------------------------------- 1 | {if !empty($thumbnails)} 2 | {footer_script} 3 | var error_icon = "{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png", max_requests = {$maxRequests}; 4 | {/footer_script} 5 | {if $derivative_params->type == "thumb"} 6 | {assign var=width value=260} 7 | {assign var=height value=180} 8 | {else} 9 | {assign var=width value=$derivative_params->sizing->ideal_size[0]} 10 | {assign var=height value=$derivative_params->sizing->ideal_size[1]} 11 | {/if} 12 | {define_derivative name='derivative_params' width=$width height=$height crop=true} 13 | 20 | {foreach from=$thumbnails item=thumbnail} 21 | {assign var=derivative value=$pwg->derivative($derivative_params, $thumbnail.src_image)} 22 | {if !$derivative->is_cached()} 23 | {combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'} 24 | {combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'} 25 | {/if} 26 | {include file="grid_classes.tpl" width=$width height=$height} 27 |
28 |
29 | 30 |
31 | is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}themes/bootstrapdefault/img/transparent.png" 32 | data-src="{$derivative->get_url()}"{/if} 33 | alt="{$thumbnail.TN_ALT}" 34 | title="{$thumbnail.TN_TITLE}"> 35 |
36 |
37 | {if $SHOW_THUMBNAIL_CAPTION } 38 |
39 |

40 | {$thumbnail.NAME} 41 | {if !empty($thumbnail.icon_ts)} 42 | (!) 43 | {/if} 44 |

45 | {if isset($thumbnail.NB_COMMENTS)} 46 |

47 | {$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)} 48 |

49 | {/if} 50 | 51 | {if isset($thumbnail.NB_HITS)} 52 |

53 | {$pwg->l10n_dec('%d view', '%d views',$thumbnail.NB_HITS)} 54 |

55 | {/if} 56 |
57 | {/if} 58 |
59 |
60 | {/foreach} 61 | {/if} -------------------------------------------------------------------------------- /theme.css: -------------------------------------------------------------------------------- 1 | .thumbnail > img, 2 | .thumbnail a > img, 3 | .carousel-inner > .item > img, 4 | .carousel-inner > .item > a > img { 5 | display: block; 6 | max-width: 100%; 7 | height: auto; 8 | } 9 | .html-radios-inline input[type=radio] { 10 | position: absolute; 11 | margin-left: -20px; 12 | margin-top: 4px \9; 13 | } 14 | .html-radios-inline label + label { 15 | margin-top: 0; 16 | margin-left: 10px; 17 | } 18 | .btn-group-lg > .btn { 19 | padding: 10px 16px; 20 | font-size: 18px; 21 | line-height: 1.3333333; 22 | border-radius: 6px; 23 | } 24 | .btn-group-sm > .btn { 25 | padding: 5px 10px; 26 | font-size: 12px; 27 | line-height: 1.5; 28 | border-radius: 3px; 29 | } 30 | .btn-group-xs > .btn { 31 | padding: 1px 5px; 32 | font-size: 12px; 33 | line-height: 1.5; 34 | border-radius: 3px; 35 | } 36 | .dl-horizontal dd:before, 37 | .dl-horizontal dd:after, 38 | .container:before, 39 | .container:after, 40 | .container-fluid:before, 41 | .container-fluid:after, 42 | .row:before, 43 | .row:after, 44 | .form-horizontal .form-group:before, 45 | .form-horizontal .form-group:after, 46 | .btn-toolbar:before, 47 | .btn-toolbar:after, 48 | .btn-group-vertical > .btn-group:before, 49 | .btn-group-vertical > .btn-group:after, 50 | .nav:before, 51 | .nav:after, 52 | .navbar:before, 53 | .navbar:after, 54 | .navbar-header:before, 55 | .navbar-header:after, 56 | .navbar-collapse:before, 57 | .navbar-collapse:after, 58 | .pager:before, 59 | .pager:after, 60 | .panel-body:before, 61 | .panel-body:after, 62 | .modal-footer:before, 63 | .modal-footer:after { 64 | content: " "; 65 | display: table; 66 | } 67 | .dl-horizontal dd:after, 68 | .container:after, 69 | .container-fluid:after, 70 | .row:after, 71 | .form-horizontal .form-group:after, 72 | .btn-toolbar:after, 73 | .btn-group-vertical > .btn-group:after, 74 | .nav:after, 75 | .navbar:after, 76 | .navbar-header:after, 77 | .navbar-collapse:after, 78 | .pager:after, 79 | .panel-body:after, 80 | .modal-footer:after { 81 | clear: both; 82 | } 83 | div#the_page { 84 | position: relative; 85 | overflow-x: hidden; 86 | } 87 | #quickconnect .form-control { 88 | margin-bottom: 10px; 89 | } 90 | .navbar-form-desktop { 91 | display: none; 92 | } 93 | .navbar-main { 94 | margin-bottom: 0px; 95 | } 96 | .navbar .navbar-right { 97 | margin-right: 0; 98 | } 99 | .jumbotron { 100 | margin-bottom: 0px; 101 | } 102 | @media screen and (min-width: 768px) { 103 | .jumbotron h1, 104 | .jumbotron .h1 { 105 | font-size: 49px; 106 | } 107 | } 108 | .glyphicon-text { 109 | display: none; 110 | } 111 | .html-options select { 112 | display: block; 113 | width: 100%; 114 | height: 34px; 115 | padding: 6px 12px; 116 | font-size: 14px; 117 | line-height: 1.42857143; 118 | color: #555555; 119 | background-color: #ffffff; 120 | background-image: none; 121 | border: 1px solid #cccccc; 122 | border-radius: 4px; 123 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 124 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 125 | -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; 126 | -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; 127 | transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; 128 | } 129 | .html-options select:focus { 130 | border-color: #66afe9; 131 | outline: 0; 132 | -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); 133 | box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); 134 | } 135 | .html-options select::-moz-placeholder { 136 | color: #999999; 137 | opacity: 1; 138 | } 139 | .html-options select:-ms-input-placeholder { 140 | color: #999999; 141 | } 142 | .html-options select::-webkit-input-placeholder { 143 | color: #999999; 144 | } 145 | .html-options select[disabled], 146 | .html-options select[readonly], 147 | fieldset[disabled] .html-options select { 148 | background-color: #eeeeee; 149 | opacity: 1; 150 | } 151 | .html-options select[disabled], 152 | fieldset[disabled] .html-options select { 153 | cursor: not-allowed; 154 | } 155 | textarea.html-options select { 156 | height: auto; 157 | } 158 | .html-radios-inline label { 159 | position: relative; 160 | display: inline-block; 161 | padding-left: 20px; 162 | margin-bottom: 0; 163 | vertical-align: middle; 164 | font-weight: normal; 165 | cursor: pointer; 166 | } 167 | .html-radios-inline label.disabled, 168 | fieldset[disabled] .html-radios-inline label { 169 | cursor: not-allowed; 170 | } 171 | .form-horizontal .html-radios-inline { 172 | padding-top: 6px; 173 | } 174 | #content .col-outer { 175 | -webkit-transition: all 0.5s ease; 176 | -moz-transition: all 0.5s ease; 177 | -o-transition: all 0.5s ease; 178 | transition: all 0.5s ease; 179 | } 180 | #content .col-inner .col-thumbnail .placeholder { 181 | width: 260px; 182 | height: 180px; 183 | } 184 | .content-grid .col-outer { 185 | margin-top: 10px; 186 | margin-bottom: 10px; 187 | } 188 | .content-grid .col-inner .col-thumbnail { 189 | float: none; 190 | margin-right: 0px; 191 | } 192 | .content-grid .col-inner .caption h3.title { 193 | position: relative; 194 | } 195 | .content-grid .col-inner .caption h3.title a.recent { 196 | padding-right: 16px; 197 | } 198 | .content-grid .col-inner .caption h3.title img { 199 | position: absolute; 200 | top: 6px; 201 | right: 0; 202 | } 203 | .content-grid .col-inner .caption .description { 204 | display: none; 205 | } 206 | .content-list .col-outer { 207 | margin-top: 20px; 208 | margin-bottom: 20px; 209 | } 210 | .content-list .col-inner .col-thumbnail { 211 | float: left; 212 | margin-right: 20px; 213 | } 214 | .content-list .col-inner .caption .description { 215 | display: block; 216 | } 217 | .copyright { 218 | padding: 30px; 219 | } 220 | .ellipsis { 221 | display: block; 222 | white-space: nowrap; 223 | overflow: hidden; 224 | text-overflow: ellipsis; 225 | } 226 | #navigationButtons { 227 | text-align: center; 228 | margin-bottom: 15px; 229 | font-size: 1.6em; 230 | } 231 | #navigationButtons a { 232 | text-decoration: none; 233 | } 234 | #navigationButtons span.glyphicon { 235 | margin-left: 25px; 236 | margin-right: 25px; 237 | } 238 | #slideshow #navigationButtons { 239 | margin-top: 20px; 240 | } 241 | #theImage { 242 | position: relative; 243 | overflow-x: hidden; 244 | text-align: center; 245 | } 246 | #theImage img { 247 | max-width: 100%; 248 | height: auto; 249 | } 250 | #sidebar { 251 | position: absolute; 252 | right: -250px; 253 | text-align: left; 254 | z-index: 10000; 255 | } 256 | #sidebar .handle { 257 | margin-top: 30px; 258 | float: right; 259 | background-color: #ccc; 260 | border-top: 1px solid #ccc; 261 | border-bottom: 1px solid #ccc; 262 | border-left: 1px solid #ccc; 263 | border-top-left-radius: 10px; 264 | border-bottom-left-radius: 10px; 265 | box-shadow: -5px 0 10px 0px #dddddd; 266 | } 267 | #sidebar .handle a { 268 | display: block; 269 | padding: 10px; 270 | color: #fff; 271 | } 272 | #sidebar .handle a:hover { 273 | color: #eee; 274 | } 275 | #sidebar .handle .glyphicon { 276 | font-size: 1.2em; 277 | } 278 | #sidebar .info { 279 | float: right; 280 | background-color: #eeeeee; 281 | border-top: 1px solid #ccc; 282 | border-bottom: 1px solid #ccc; 283 | border-left: 1px solid #ccc; 284 | border-top-left-radius: 10px; 285 | border-bottom-left-radius: 10px; 286 | width: 250px; 287 | padding: 20px; 288 | box-shadow: -5px 0 10px 0px #dddddd; 289 | } 290 | #sidebar .info dl { 291 | margin-bottom: 0; 292 | } 293 | #sidebar .info button { 294 | max-width: 210px; 295 | } 296 | #important-info { 297 | margin-top: 20px; 298 | } 299 | #important-info #visits { 300 | float: left; 301 | } 302 | #important-info #visits span.count { 303 | margin-left: 15px; 304 | } 305 | #important-info #rating { 306 | float: right; 307 | } 308 | #important-info #rating .rateButtonStarFull { 309 | position: relative; 310 | top: 1px; 311 | display: inline-block; 312 | font-family: 'Glyphicons Halflings'; 313 | font-style: normal; 314 | font-weight: normal; 315 | line-height: 1; 316 | -webkit-font-smoothing: antialiased; 317 | -moz-osx-font-smoothing: grayscale; 318 | cursor: pointer; 319 | } 320 | #important-info #rating .rateButtonStarFull:before { 321 | content: "\e006"; 322 | } 323 | #important-info #rating .rateButtonStarEmpty { 324 | position: relative; 325 | top: 1px; 326 | display: inline-block; 327 | font-family: 'Glyphicons Halflings'; 328 | font-style: normal; 329 | font-weight: normal; 330 | line-height: 1; 331 | -webkit-font-smoothing: antialiased; 332 | -moz-osx-font-smoothing: grayscale; 333 | cursor: pointer; 334 | } 335 | #important-info #rating .rateButtonStarEmpty:before { 336 | content: "\e007"; 337 | } 338 | #share { 339 | font-size: 2.5em; 340 | text-align: center; 341 | } 342 | #share a { 343 | padding-left: 20px; 344 | padding-right: 20px; 345 | text-decoration: none; 346 | } 347 | #disqus_thread { 348 | margin-top: 20px; 349 | } 350 | #commentList .comment { 351 | clear: both; 352 | } 353 | #commentList .comment .image img { 354 | float: left; 355 | width: 80px; 356 | height: 80px; 357 | } 358 | #commentList .comment .description { 359 | margin-left: 100px; 360 | } 361 | #commentList .comment .description form { 362 | margin-top: 15px; 363 | margin-bottom: 15px; 364 | } 365 | #commentList .comment .description .actions { 366 | float: right; 367 | font-size: 90%; 368 | } 369 | .comment-search { 370 | margin-top: 20px; 371 | } 372 | .nav-pills { 373 | margin-top: 25px; 374 | margin-bottom: 25px; 375 | } 376 | #tagCloud { 377 | font-size: 120%; 378 | text-align: center; 379 | } 380 | #tagCloud span { 381 | margin: 5px; 382 | } 383 | #tagCloud .tagLevel5 { 384 | font-size: 150% !important; 385 | } 386 | #tagCloud .tagLevel4 { 387 | font-size: 140% !important; 388 | } 389 | #tagCloud .tagLevel3 { 390 | font-size: 120% !important; 391 | } 392 | #tagCloud .tagLevel2 { 393 | font-size: 100% !important; 394 | } 395 | #tagCloud .tagLevel1 { 396 | font-size: 90% !important; 397 | } 398 | #tagCloudCanvas { 399 | width: 100%; 400 | height: 600px; 401 | margin: 0 auto; 402 | } 403 | #tagCloudCanvas span { 404 | display: none; 405 | } 406 | #tagCloudGradientStart { 407 | display: none; 408 | color: #ccc; 409 | } 410 | #tagCloudGradientEnd { 411 | display: none; 412 | color: #337ab7; 413 | } 414 | #tagLetters { 415 | padding-left: 2px; 416 | padding-right: 7px; 417 | } 418 | #tagLetters *, 419 | #tagLetters *:before, 420 | #tagLetters *:after { 421 | box-sizing: border-box !important; 422 | } 423 | #tagLetters .row { 424 | -moz-column-width: 17em; 425 | -webkit-column-width: 17em; 426 | -moz-column-gap: -1em; 427 | -webkit-column-gap: -1em; 428 | } 429 | #tagLetters .menu-category { 430 | display: inline-block; 431 | margin: 0.26rem; 432 | padding: 1rem; 433 | width: 100%; 434 | } 435 | #thePopuphelpPage .jumbotron { 436 | display: none; 437 | } 438 | @media (min-width: 768px) { 439 | .navbar-collapse { 440 | padding-right: 0; 441 | } 442 | .dropdown-menu-scrollable { 443 | height: auto; 444 | max-height: 300px; 445 | overflow-x: hidden; 446 | } 447 | .dropdown-menu-scrollable::-webkit-scrollbar { 448 | width: 1em; 449 | } 450 | .dropdown-menu-scrollable::-webkit-scrollbar-track { 451 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); 452 | } 453 | .dropdown-menu-scrollable::-webkit-scrollbar-thumb { 454 | background-color: #777777; 455 | outline: 1px solid #777777; 456 | } 457 | } 458 | @media (min-width: 992px) { 459 | .navbar-form-desktop { 460 | display: block; 461 | } 462 | } 463 | 464 | #collectionsDropdown { 465 | padding: 10px; 466 | background-color: #fff; 467 | } 468 | 469 | .user-collections-icon { 470 | width:16px; 471 | height:16px; 472 | } -------------------------------------------------------------------------------- /themeconf.inc.php: -------------------------------------------------------------------------------- 1 | 'bootstrapdefault', 15 | 'parent' => 'default', 16 | 'load_parent_css' => false, 17 | 'load_parent_local_head' => false, 18 | 'url' => 'https://philio.me/' 19 | ); 20 | 21 | $controller = new \BootstrapDefault\ThemeController(); 22 | $controller->init(); 23 | --------------------------------------------------------------------------------