diff --git a/ce-mois-ci.php b/ce-mois-ci.php new file mode 100755 index 0000000..6370266 --- /dev/null +++ b/ce-mois-ci.php @@ -0,0 +1,350 @@ + + +
+
+
+ +
> +

+ +
+ + 1000) { + // HD + $hd = '../../zenphoto/cache/photos-du-mois/' . substr($tableau[$i], 0, strlen($tableau[$i]) - 4) . "_FULL_watermark.jpg"; + if (file_exists($hd)) { + $size_hd = getimagesize($hd, $info_hd); + $imgs['img_hd'] = array( + 'url' => $hd, + 'width' => $size_hd[0], + 'height' => $size_hd[1] + ); + } + else { + $imgs['img_hd'] = array( + 'url' => '../' . $photo_du_mois, + 'width' => $size[0], + 'height' => $size[1] + ); + } + // SD + $sd = '../../zenphoto/cache/photos-du-mois/' . substr($tableau[$i], 0, strlen($tableau[$i]) - 4) . "_800_watermark.jpg"; + if (file_exists($sd)) { + $size_sd = getimagesize($sd, $info_sd); + $imgs['img_sd'] = array( + 'url' => $sd, + 'width' => $size_sd[0], + 'height' => $size_sd[1] + ); + } + } + else { + // SD + $sd = '../../zenphoto/cache/photos-du-mois/' . substr($tableau[$i], 0, strlen($tableau[$i]) - 4) . "_800_watermark.jpg"; + if (file_exists($sd)) { + $size_sd = getimagesize($sd, $info_sd); + $imgs['img_sd'] = array( + 'url' => $sd, + 'width' => $size_sd[0], + 'height' => $size_sd[1] + ); + } + $imgs['img_hd'] = array( + 'url' => "", + 'width' => "", + 'height' => "" + ); + } // if ($size[0] > 1000) + + $title = explode('.',$title); + $title = explode('_',$title[0]); + $title = mois2($title[0]) . ' ' . $title[1]; + $imgs['img_sd']['title'] = $title; + + if (isset($info["APP13"])) { + $iptc = iptcparse($info["APP13"]); + + if (isset($iptc['2#120'][0])) $legende = $iptc['2#120'][0]; + else $legende = ""; + if (isset($iptc['2#005'][0])) $titre = $iptc['2#005'][0]; + else $titre = ""; + + $keyword = ""; + if (isset($iptc['2#025'])) { + foreach ($iptc['2#025'] as $key => $val) { + $keyword .= ''; + $keyword .= ', '; + } + $keyword = substr($keyword, 0, -2); + } + + $imgs['img_sd']['legende'] = $legende; + $imgs['img_sd']['titre'] = $titre; + $imgs['img_sd']['keyword'] = $keyword; + } + + $exifInfo = ""; + $exif_array = read_exif_data_raw($file,'EXIF'); + $exifInfo = __('The','CreatorThemeRes-child') . " " .date(__("F j, Y, g:i a",'CreatorThemeRes-child'),strtotime($exif_array['SubIFD']['DateTimeOriginal'])).' - '; + $exifInfo .= $exif_array['SubIFD']['ExposureTime']. __(' at ','CreatorThemeRes-child') .$exif_array['SubIFD']['FNumber'].' - ' .$exif_array['SubIFD']['ISOSpeedRatings'].' ISO - '. __('Focal','CreatorThemeRes-child') .$exif_array['SubIFD']['FocalLength']; + $imgs['img_sd']['exif'] = $exifInfo; + + preprint($exif_array); + break; + } + $i++; + } + //preprint($imgs); + + ?> + + + +
+ + +

Titre

+

Légende

+ + + + + + + + + + + + + '; + ?> + + + + +
+ + +

Titre

+

Légende

+ + +

+ + + +connect_error) { + trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR); + exit(); + } + $conn->set_charset("utf8"); + + $excquery = "SELECT `id` FROM `" . $table['albums'] . "` WHERE `folder` = '" . $album . "'"; + + if ($result = $conn->query($excquery)) { + $result->data_seek(0); + $row = $result->fetch_row(); + $id_album = $row[0]; + $result->close(); + } + + $conn->close(); + + // Récupérer toutes les fichiers de l'album 'photos-du-mois' ($fichier[]) + + $conn = new mysqli($dbhost, $dbuser, $dbpassword, $zptable); + if ($conn->connect_error) { + trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR); + exit(); + } + $conn->set_charset("utf8"); + + $pictquery = "SELECT `filename` FROM `" . $table['images'] . "` WHERE `albumid` = ? ORDER BY `date` DESC"; + + $stmt = $conn->prepare($pictquery); + //echo $pictquery; + if($stmt === false) { + trigger_error('Wrong SQL: ' . $pictquery . ' Error: ' . $conn->error, E_USER_ERROR); + } + else { + $stmt->bind_param('i', $id_album); + $stmt->execute(); + $stmt->bind_result($filename); + while ($stmt->fetch()) { + $fichier[] = $filename; + $i++; + //echo $filename; + } + } + $stmt->close(); + + // +?> + + ? Utilisation: cliquer sur une vignette, puis....
"; +$aide .= " -sur ordinateur: naviguer avec les touches flèches droite et gauche, quitter avec ESC.
"; +$aide .= " -sur tablettes et smartphones: balayer l'écran avec un doigt vers la droite ou vers la gauche, ou naviguer avec les touches flèches droite et gauche. Cliquer sur la X pour quitter."; +?> + +
+

+

( ? )

+ + + + +

+ + +
+ += 2) echo ' '; + +for ($i = 1; $i <= $nbpages; $i++) { + if ($i != $ppage) { + echo ''.$i.'  '; + } + else { + echo "".$i."  "; + } + } + +if ($page < $nbpages) echo ' '; + +?> +
+ +
+ +
+ +
+ +
+ +
+
+
+
+ \ No newline at end of file diff --git a/css/featherlight.gallery.min.css b/css/featherlight.gallery.min.css new file mode 100644 index 0000000..fd79392 --- /dev/null +++ b/css/featherlight.gallery.min.css @@ -0,0 +1,8 @@ +/** + * Featherlight Gallery – an extension for the ultra slim jQuery lightbox + * Version 1.3.4 - http://noelboss.github.io/featherlight/ + * + * Copyright 2015, Noël Raoul Bossart (http://www.noelboss.com) + * MIT Licensed. +**/ +@media all{.featherlight-next,.featherlight-previous{display:block;position:absolute;top:25px;right:25px;bottom:0;left:80%;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:rgba(0,0,0,0)}.featherlight-previous{left:25px;right:80%}.featherlight-next:hover,.featherlight-previous:hover{background:rgba(255,255,255,.25)}.featherlight-next span,.featherlight-previous span{display:none;position:absolute;top:50%;left:5%;width:82%;text-align:center;font-size:80px;line-height:80px;margin-top:-40px;text-shadow:0 0 5px #fff;color:#fff;font-style:normal;font-weight:400}.featherlight-next span{right:5%;left:auto}.featherlight-next:hover span,.featherlight-previous:hover span{display:inline-block}.featherlight-loading .featherlight-next,.featherlight-loading .featherlight-previous{display:none}}@media only screen and (max-device-width:1024px){.featherlight-next:hover,.featherlight-previous:hover{background:0 0}.featherlight-next span,.featherlight-previous span{display:block}}@media only screen and (max-width:1024px){.featherlight-next,.featherlight-previous{top:10px;right:10px;left:85%}.featherlight-previous{left:10px;right:85%}.featherlight-next span,.featherlight-previous span{margin-top:-30px;font-size:40px}} \ No newline at end of file diff --git a/css/featherlight.min.css b/css/featherlight.min.css new file mode 100755 index 0000000..1ad2abb --- /dev/null +++ b/css/featherlight.min.css @@ -0,0 +1,8 @@ +/** + * Featherlight - ultra slim jQuery lightbox + * Version 1.7.0 - http://noelboss.github.io/featherlight/ + * + * Copyright 2016, Noël Raoul Bossart (http://www.noelboss.com) + * MIT Licensed. +**/ +@media all{.featherlight{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483647;text-align:center;white-space:nowrap;cursor:pointer;background:#333;background:rgba(0,0,0,0)}.featherlight:last-of-type{background:rgba(0,0,0,.8)}.featherlight:before{content:'';display:inline-block;height:100%;vertical-align:middle}.featherlight .featherlight-content{position:relative;text-align:left;vertical-align:middle;display:inline-block;overflow:auto;padding:25px 25px 0;border-bottom:25px solid transparent;margin-left:5%;margin-right:5%;max-height:95%;background:#fff;cursor:auto;white-space:normal}.featherlight .featherlight-inner{display:block}.featherlight .featherlight-close-icon{position:absolute;z-index:9999;top:0;right:0;line-height:25px;width:25px;cursor:pointer;text-align:center;font-family:Arial,sans-serif;background:#fff;background:rgba(255,255,255,.3);color:#000;border:0;padding:0}.featherlight .featherlight-close-icon::-moz-focus-inner{border:0;padding:0}.featherlight .featherlight-image{width:100%}.featherlight-iframe .featherlight-content{border-bottom:0;padding:0;-webkit-overflow-scrolling:touch;overflow-y:scroll}.featherlight iframe{border:0}.featherlight *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}@media only screen and (max-width:1024px){.featherlight .featherlight-content{margin-left:0;margin-right:0;max-height:98%;padding:10px 10px 0;border-bottom:10px solid transparent}} \ No newline at end of file diff --git a/css/ionicons.min.css b/css/ionicons.min.css new file mode 100644 index 0000000..841dec1 --- /dev/null +++ b/css/ionicons.min.css @@ -0,0 +1,11 @@ +@charset "UTF-8";/*! + Ionicons, v2.0.1 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons + + Android-style icons originally built by Google’s + Material Design Icons: https://github.com/google/material-design-icons + used under CC BY http://creativecommons.org/licenses/by/4.0/ + Modified icons to fit ionicon’s grid from original. +*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=2.0.1");src:url("../fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"),url("../fonts/ionicons.ttf?v=2.0.1") format("truetype"),url("../fonts/ionicons.woff?v=2.0.1") format("woff"),url("../fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-alert:before,.ion-alert-circled:before,.ion-android-add:before,.ion-android-add-circle:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done:before,.ion-android-done-all:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite:before,.ion-android-favorite-outline:before,.ion-android-film:before,.ion-android-folder:before,.ion-android-folder-open:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone:before,.ion-android-microphone-off:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person:before,.ion-android-person-add:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove:before,.ion-android-remove-circle:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share:before,.ion-android-share-alt:before,.ion-android-star:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace:before,.ion-backspace-outline:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox:before,.ion-chatbox-working:before,.ion-chatboxes:before,.ion-chatbubble:before,.ion-chatbubble-working:before,.ion-chatbubbles:before,.ion-checkmark:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close:before,.ion-close-circled:before,.ion-close-round:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code:before,.ion-code-download:before,.ion-code-working:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document:before,.ion-document-text:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email:before,.ion-email-unread:before,.ion-erlenmeyer-flask:before,.ion-erlenmeyer-flask-bubbles:before,.ion-eye:before,.ion-eye-disabled:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash:before,.ion-flash-off:before,.ion-folder:before,.ion-fork:before,.ion-fork-repo:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy:before,.ion-happy-outline:before,.ion-headphone:before,.ion-heart:before,.ion-heart-broken:before,.ion-help:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information:before,.ion-information-circled:before,.ion-ionic:before,.ion-ios-alarm:before,.ion-ios-alarm-outline:before,.ion-ios-albums:before,.ion-ios-albums-outline:before,.ion-ios-americanfootball:before,.ion-ios-americanfootball-outline:before,.ion-ios-analytics:before,.ion-ios-analytics-outline:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-at-outline:before,.ion-ios-barcode:before,.ion-ios-barcode-outline:before,.ion-ios-baseball:before,.ion-ios-baseball-outline:before,.ion-ios-basketball:before,.ion-ios-basketball-outline:before,.ion-ios-bell:before,.ion-ios-bell-outline:before,.ion-ios-body:before,.ion-ios-body-outline:before,.ion-ios-bolt:before,.ion-ios-bolt-outline:before,.ion-ios-book:before,.ion-ios-book-outline:before,.ion-ios-bookmarks:before,.ion-ios-bookmarks-outline:before,.ion-ios-box:before,.ion-ios-box-outline:before,.ion-ios-briefcase:before,.ion-ios-briefcase-outline:before,.ion-ios-browsers:before,.ion-ios-browsers-outline:before,.ion-ios-calculator:before,.ion-ios-calculator-outline:before,.ion-ios-calendar:before,.ion-ios-calendar-outline:before,.ion-ios-camera:before,.ion-ios-camera-outline:before,.ion-ios-cart:before,.ion-ios-cart-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatbubble:before,.ion-ios-chatbubble-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock:before,.ion-ios-clock-outline:before,.ion-ios-close:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-download:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-outline:before,.ion-ios-cog:before,.ion-ios-cog-outline:before,.ion-ios-color-filter:before,.ion-ios-color-filter-outline:before,.ion-ios-color-wand:before,.ion-ios-color-wand-outline:before,.ion-ios-compose:before,.ion-ios-compose-outline:before,.ion-ios-contact:before,.ion-ios-contact-outline:before,.ion-ios-copy:before,.ion-ios-copy-outline:before,.ion-ios-crop:before,.ion-ios-crop-strong:before,.ion-ios-download:before,.ion-ios-download-outline:before,.ion-ios-drag:before,.ion-ios-email:before,.ion-ios-email-outline:before,.ion-ios-eye:before,.ion-ios-eye-outline:before,.ion-ios-fastforward:before,.ion-ios-fastforward-outline:before,.ion-ios-filing:before,.ion-ios-filing-outline:before,.ion-ios-film:before,.ion-ios-film-outline:before,.ion-ios-flag:before,.ion-ios-flag-outline:before,.ion-ios-flame:before,.ion-ios-flame-outline:before,.ion-ios-flask:before,.ion-ios-flask-outline:before,.ion-ios-flower:before,.ion-ios-flower-outline:before,.ion-ios-folder:before,.ion-ios-folder-outline:before,.ion-ios-football:before,.ion-ios-football-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-b:before,.ion-ios-game-controller-b-outline:before,.ion-ios-gear:before,.ion-ios-gear-outline:before,.ion-ios-glasses:before,.ion-ios-glasses-outline:before,.ion-ios-grid-view:before,.ion-ios-grid-view-outline:before,.ion-ios-heart:before,.ion-ios-heart-outline:before,.ion-ios-help:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-home:before,.ion-ios-home-outline:before,.ion-ios-infinite:before,.ion-ios-infinite-outline:before,.ion-ios-information:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-ionic-outline:before,.ion-ios-keypad:before,.ion-ios-keypad-outline:before,.ion-ios-lightbulb:before,.ion-ios-lightbulb-outline:before,.ion-ios-list:before,.ion-ios-list-outline:before,.ion-ios-location:before,.ion-ios-location-outline:before,.ion-ios-locked:before,.ion-ios-locked-outline:before,.ion-ios-loop:before,.ion-ios-loop-strong:before,.ion-ios-medical:before,.ion-ios-medical-outline:before,.ion-ios-medkit:before,.ion-ios-medkit-outline:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-minus:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-monitor:before,.ion-ios-monitor-outline:before,.ion-ios-moon:before,.ion-ios-moon-outline:before,.ion-ios-more:before,.ion-ios-more-outline:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-navigate-outline:before,.ion-ios-nutrition:before,.ion-ios-nutrition-outline:before,.ion-ios-paper:before,.ion-ios-paper-outline:before,.ion-ios-paperplane:before,.ion-ios-paperplane-outline:before,.ion-ios-partlysunny:before,.ion-ios-partlysunny-outline:before,.ion-ios-pause:before,.ion-ios-pause-outline:before,.ion-ios-paw:before,.ion-ios-paw-outline:before,.ion-ios-people:before,.ion-ios-people-outline:before,.ion-ios-person:before,.ion-ios-person-outline:before,.ion-ios-personadd:before,.ion-ios-personadd-outline:before,.ion-ios-photos:before,.ion-ios-photos-outline:before,.ion-ios-pie:before,.ion-ios-pie-outline:before,.ion-ios-pint:before,.ion-ios-pint-outline:before,.ion-ios-play:before,.ion-ios-play-outline:before,.ion-ios-plus:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetags:before,.ion-ios-pricetags-outline:before,.ion-ios-printer:before,.ion-ios-printer-outline:before,.ion-ios-pulse:before,.ion-ios-pulse-strong:before,.ion-ios-rainy:before,.ion-ios-rainy-outline:before,.ion-ios-recording:before,.ion-ios-recording-outline:before,.ion-ios-redo:before,.ion-ios-redo-outline:before,.ion-ios-refresh:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-reload:before,.ion-ios-reverse-camera:before,.ion-ios-reverse-camera-outline:before,.ion-ios-rewind:before,.ion-ios-rewind-outline:before,.ion-ios-rose:before,.ion-ios-rose-outline:before,.ion-ios-search:before,.ion-ios-search-strong:before,.ion-ios-settings:before,.ion-ios-settings-strong:before,.ion-ios-shuffle:before,.ion-ios-shuffle-strong:before,.ion-ios-skipbackward:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipforward:before,.ion-ios-skipforward-outline:before,.ion-ios-snowy:before,.ion-ios-speedometer:before,.ion-ios-speedometer-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stopwatch:before,.ion-ios-stopwatch-outline:before,.ion-ios-sunny:before,.ion-ios-sunny-outline:before,.ion-ios-telephone:before,.ion-ios-telephone-outline:before,.ion-ios-tennisball:before,.ion-ios-tennisball-outline:before,.ion-ios-thunderstorm:before,.ion-ios-thunderstorm-outline:before,.ion-ios-time:before,.ion-ios-time-outline:before,.ion-ios-timer:before,.ion-ios-timer-outline:before,.ion-ios-toggle:before,.ion-ios-toggle-outline:before,.ion-ios-trash:before,.ion-ios-trash-outline:before,.ion-ios-undo:before,.ion-ios-undo-outline:before,.ion-ios-unlocked:before,.ion-ios-unlocked-outline:before,.ion-ios-upload:before,.ion-ios-upload-outline:before,.ion-ios-videocam:before,.ion-ios-videocam-outline:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass:before,.ion-ios-wineglass-outline:before,.ion-ios-world:before,.ion-ios-world-outline:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon:before,.ion-navicon-round:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person:before,.ion-person-add:before,.ion-person-stalker:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply:before,.ion-reply-all:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad:before,.ion-sad-outline:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android:before,.ion-social-android-outline:before,.ion-social-angular:before,.ion-social-angular-outline:before,.ion-social-apple:before,.ion-social-apple-outline:before,.ion-social-bitcoin:before,.ion-social-bitcoin-outline:before,.ion-social-buffer:before,.ion-social-buffer-outline:before,.ion-social-chrome:before,.ion-social-chrome-outline:before,.ion-social-codepen:before,.ion-social-codepen-outline:before,.ion-social-css3:before,.ion-social-css3-outline:before,.ion-social-designernews:before,.ion-social-designernews-outline:before,.ion-social-dribbble:before,.ion-social-dribbble-outline:before,.ion-social-dropbox:before,.ion-social-dropbox-outline:before,.ion-social-euro:before,.ion-social-euro-outline:before,.ion-social-facebook:before,.ion-social-facebook-outline:before,.ion-social-foursquare:before,.ion-social-foursquare-outline:before,.ion-social-freebsd-devil:before,.ion-social-github:before,.ion-social-github-outline:before,.ion-social-google:before,.ion-social-google-outline:before,.ion-social-googleplus:before,.ion-social-googleplus-outline:before,.ion-social-hackernews:before,.ion-social-hackernews-outline:before,.ion-social-html5:before,.ion-social-html5-outline:before,.ion-social-instagram:before,.ion-social-instagram-outline:before,.ion-social-javascript:before,.ion-social-javascript-outline:before,.ion-social-linkedin:before,.ion-social-linkedin-outline:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest:before,.ion-social-pinterest-outline:before,.ion-social-python:before,.ion-social-reddit:before,.ion-social-reddit-outline:before,.ion-social-rss:before,.ion-social-rss-outline:before,.ion-social-sass:before,.ion-social-skype:before,.ion-social-skype-outline:before,.ion-social-snapchat:before,.ion-social-snapchat-outline:before,.ion-social-tumblr:before,.ion-social-tumblr-outline:before,.ion-social-tux:before,.ion-social-twitch:before,.ion-social-twitch-outline:before,.ion-social-twitter:before,.ion-social-twitter-outline:before,.ion-social-usd:before,.ion-social-usd-outline:before,.ion-social-vimeo:before,.ion-social-vimeo-outline:before,.ion-social-whatsapp:before,.ion-social-whatsapp-outline:before,.ion-social-windows:before,.ion-social-windows-outline:before,.ion-social-wordpress:before,.ion-social-wordpress-outline:before,.ion-social-yahoo:before,.ion-social-yahoo-outline:before,.ion-social-yen:before,.ion-social-yen-outline:before,.ion-social-youtube:before,.ion-social-youtube-outline:before,.ion-soup-can:before,.ion-soup-can-outline:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle:before,.ion-toggle-filled:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt:before,.ion-tshirt-outline:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:"\f101"}.ion-alert-circled:before{content:"\f100"}.ion-android-add:before{content:"\f2c7"}.ion-android-add-circle:before{content:"\f359"}.ion-android-alarm-clock:before{content:"\f35a"}.ion-android-alert:before{content:"\f35b"}.ion-android-apps:before{content:"\f35c"}.ion-android-archive:before{content:"\f2c9"}.ion-android-arrow-back:before{content:"\f2ca"}.ion-android-arrow-down:before{content:"\f35d"}.ion-android-arrow-dropdown:before{content:"\f35f"}.ion-android-arrow-dropdown-circle:before{content:"\f35e"}.ion-android-arrow-dropleft:before{content:"\f361"}.ion-android-arrow-dropleft-circle:before{content:"\f360"}.ion-android-arrow-dropright:before{content:"\f363"}.ion-android-arrow-dropright-circle:before{content:"\f362"}.ion-android-arrow-dropup:before{content:"\f365"}.ion-android-arrow-dropup-circle:before{content:"\f364"}.ion-android-arrow-forward:before{content:"\f30f"}.ion-android-arrow-up:before{content:"\f366"}.ion-android-attach:before{content:"\f367"}.ion-android-bar:before{content:"\f368"}.ion-android-bicycle:before{content:"\f369"}.ion-android-boat:before{content:"\f36a"}.ion-android-bookmark:before{content:"\f36b"}.ion-android-bulb:before{content:"\f36c"}.ion-android-bus:before{content:"\f36d"}.ion-android-calendar:before{content:"\f2d1"}.ion-android-call:before{content:"\f2d2"}.ion-android-camera:before{content:"\f2d3"}.ion-android-cancel:before{content:"\f36e"}.ion-android-car:before{content:"\f36f"}.ion-android-cart:before{content:"\f370"}.ion-android-chat:before{content:"\f2d4"}.ion-android-checkbox:before{content:"\f374"}.ion-android-checkbox-blank:before{content:"\f371"}.ion-android-checkbox-outline:before{content:"\f373"}.ion-android-checkbox-outline-blank:before{content:"\f372"}.ion-android-checkmark-circle:before{content:"\f375"}.ion-android-clipboard:before{content:"\f376"}.ion-android-close:before{content:"\f2d7"}.ion-android-cloud:before{content:"\f37a"}.ion-android-cloud-circle:before{content:"\f377"}.ion-android-cloud-done:before{content:"\f378"}.ion-android-cloud-outline:before{content:"\f379"}.ion-android-color-palette:before{content:"\f37b"}.ion-android-compass:before{content:"\f37c"}.ion-android-contact:before{content:"\f2d8"}.ion-android-contacts:before{content:"\f2d9"}.ion-android-contract:before{content:"\f37d"}.ion-android-create:before{content:"\f37e"}.ion-android-delete:before{content:"\f37f"}.ion-android-desktop:before{content:"\f380"}.ion-android-document:before{content:"\f381"}.ion-android-done:before{content:"\f383"}.ion-android-done-all:before{content:"\f382"}.ion-android-download:before{content:"\f2dd"}.ion-android-drafts:before{content:"\f384"}.ion-android-exit:before{content:"\f385"}.ion-android-expand:before{content:"\f386"}.ion-android-favorite:before{content:"\f388"}.ion-android-favorite-outline:before{content:"\f387"}.ion-android-film:before{content:"\f389"}.ion-android-folder:before{content:"\f2e0"}.ion-android-folder-open:before{content:"\f38a"}.ion-android-funnel:before{content:"\f38b"}.ion-android-globe:before{content:"\f38c"}.ion-android-hand:before{content:"\f2e3"}.ion-android-hangout:before{content:"\f38d"}.ion-android-happy:before{content:"\f38e"}.ion-android-home:before{content:"\f38f"}.ion-android-image:before{content:"\f2e4"}.ion-android-laptop:before{content:"\f390"}.ion-android-list:before{content:"\f391"}.ion-android-locate:before{content:"\f2e9"}.ion-android-lock:before{content:"\f392"}.ion-android-mail:before{content:"\f2eb"}.ion-android-map:before{content:"\f393"}.ion-android-menu:before{content:"\f394"}.ion-android-microphone:before{content:"\f2ec"}.ion-android-microphone-off:before{content:"\f395"}.ion-android-more-horizontal:before{content:"\f396"}.ion-android-more-vertical:before{content:"\f397"}.ion-android-navigate:before{content:"\f398"}.ion-android-notifications:before{content:"\f39b"}.ion-android-notifications-none:before{content:"\f399"}.ion-android-notifications-off:before{content:"\f39a"}.ion-android-open:before{content:"\f39c"}.ion-android-options:before{content:"\f39d"}.ion-android-people:before{content:"\f39e"}.ion-android-person:before{content:"\f3a0"}.ion-android-person-add:before{content:"\f39f"}.ion-android-phone-landscape:before{content:"\f3a1"}.ion-android-phone-portrait:before{content:"\f3a2"}.ion-android-pin:before{content:"\f3a3"}.ion-android-plane:before{content:"\f3a4"}.ion-android-playstore:before{content:"\f2f0"}.ion-android-print:before{content:"\f3a5"}.ion-android-radio-button-off:before{content:"\f3a6"}.ion-android-radio-button-on:before{content:"\f3a7"}.ion-android-refresh:before{content:"\f3a8"}.ion-android-remove:before{content:"\f2f4"}.ion-android-remove-circle:before{content:"\f3a9"}.ion-android-restaurant:before{content:"\f3aa"}.ion-android-sad:before{content:"\f3ab"}.ion-android-search:before{content:"\f2f5"}.ion-android-send:before{content:"\f2f6"}.ion-android-settings:before{content:"\f2f7"}.ion-android-share:before{content:"\f2f8"}.ion-android-share-alt:before{content:"\f3ac"}.ion-android-star:before{content:"\f2fc"}.ion-android-star-half:before{content:"\f3ad"}.ion-android-star-outline:before{content:"\f3ae"}.ion-android-stopwatch:before{content:"\f2fd"}.ion-android-subway:before{content:"\f3af"}.ion-android-sunny:before{content:"\f3b0"}.ion-android-sync:before{content:"\f3b1"}.ion-android-textsms:before{content:"\f3b2"}.ion-android-time:before{content:"\f3b3"}.ion-android-train:before{content:"\f3b4"}.ion-android-unlock:before{content:"\f3b5"}.ion-android-upload:before{content:"\f3b6"}.ion-android-volume-down:before{content:"\f3b7"}.ion-android-volume-mute:before{content:"\f3b8"}.ion-android-volume-off:before{content:"\f3b9"}.ion-android-volume-up:before{content:"\f3ba"}.ion-android-walk:before{content:"\f3bb"}.ion-android-warning:before{content:"\f3bc"}.ion-android-watch:before{content:"\f3bd"}.ion-android-wifi:before{content:"\f305"}.ion-aperture:before{content:"\f313"}.ion-archive:before{content:"\f102"}.ion-arrow-down-a:before{content:"\f103"}.ion-arrow-down-b:before{content:"\f104"}.ion-arrow-down-c:before{content:"\f105"}.ion-arrow-expand:before{content:"\f25e"}.ion-arrow-graph-down-left:before{content:"\f25f"}.ion-arrow-graph-down-right:before{content:"\f260"}.ion-arrow-graph-up-left:before{content:"\f261"}.ion-arrow-graph-up-right:before{content:"\f262"}.ion-arrow-left-a:before{content:"\f106"}.ion-arrow-left-b:before{content:"\f107"}.ion-arrow-left-c:before{content:"\f108"}.ion-arrow-move:before{content:"\f263"}.ion-arrow-resize:before{content:"\f264"}.ion-arrow-return-left:before{content:"\f265"}.ion-arrow-return-right:before{content:"\f266"}.ion-arrow-right-a:before{content:"\f109"}.ion-arrow-right-b:before{content:"\f10a"}.ion-arrow-right-c:before{content:"\f10b"}.ion-arrow-shrink:before{content:"\f267"}.ion-arrow-swap:before{content:"\f268"}.ion-arrow-up-a:before{content:"\f10c"}.ion-arrow-up-b:before{content:"\f10d"}.ion-arrow-up-c:before{content:"\f10e"}.ion-asterisk:before{content:"\f314"}.ion-at:before{content:"\f10f"}.ion-backspace:before{content:"\f3bf"}.ion-backspace-outline:before{content:"\f3be"}.ion-bag:before{content:"\f110"}.ion-battery-charging:before{content:"\f111"}.ion-battery-empty:before{content:"\f112"}.ion-battery-full:before{content:"\f113"}.ion-battery-half:before{content:"\f114"}.ion-battery-low:before{content:"\f115"}.ion-beaker:before{content:"\f269"}.ion-beer:before{content:"\f26a"}.ion-bluetooth:before{content:"\f116"}.ion-bonfire:before{content:"\f315"}.ion-bookmark:before{content:"\f26b"}.ion-bowtie:before{content:"\f3c0"}.ion-briefcase:before{content:"\f26c"}.ion-bug:before{content:"\f2be"}.ion-calculator:before{content:"\f26d"}.ion-calendar:before{content:"\f117"}.ion-camera:before{content:"\f118"}.ion-card:before{content:"\f119"}.ion-cash:before{content:"\f316"}.ion-chatbox:before{content:"\f11b"}.ion-chatbox-working:before{content:"\f11a"}.ion-chatboxes:before{content:"\f11c"}.ion-chatbubble:before{content:"\f11e"}.ion-chatbubble-working:before{content:"\f11d"}.ion-chatbubbles:before{content:"\f11f"}.ion-checkmark:before{content:"\f122"}.ion-checkmark-circled:before{content:"\f120"}.ion-checkmark-round:before{content:"\f121"}.ion-chevron-down:before{content:"\f123"}.ion-chevron-left:before{content:"\f124"}.ion-chevron-right:before{content:"\f125"}.ion-chevron-up:before{content:"\f126"}.ion-clipboard:before{content:"\f127"}.ion-clock:before{content:"\f26e"}.ion-close:before{content:"\f12a"}.ion-close-circled:before{content:"\f128"}.ion-close-round:before{content:"\f129"}.ion-closed-captioning:before{content:"\f317"}.ion-cloud:before{content:"\f12b"}.ion-code:before{content:"\f271"}.ion-code-download:before{content:"\f26f"}.ion-code-working:before{content:"\f270"}.ion-coffee:before{content:"\f272"}.ion-compass:before{content:"\f273"}.ion-compose:before{content:"\f12c"}.ion-connection-bars:before{content:"\f274"}.ion-contrast:before{content:"\f275"}.ion-crop:before{content:"\f3c1"}.ion-cube:before{content:"\f318"}.ion-disc:before{content:"\f12d"}.ion-document:before{content:"\f12f"}.ion-document-text:before{content:"\f12e"}.ion-drag:before{content:"\f130"}.ion-earth:before{content:"\f276"}.ion-easel:before{content:"\f3c2"}.ion-edit:before{content:"\f2bf"}.ion-egg:before{content:"\f277"}.ion-eject:before{content:"\f131"}.ion-email:before{content:"\f132"}.ion-email-unread:before{content:"\f3c3"}.ion-erlenmeyer-flask:before{content:"\f3c5"}.ion-erlenmeyer-flask-bubbles:before{content:"\f3c4"}.ion-eye:before{content:"\f133"}.ion-eye-disabled:before{content:"\f306"}.ion-female:before{content:"\f278"}.ion-filing:before{content:"\f134"}.ion-film-marker:before{content:"\f135"}.ion-fireball:before{content:"\f319"}.ion-flag:before{content:"\f279"}.ion-flame:before{content:"\f31a"}.ion-flash:before{content:"\f137"}.ion-flash-off:before{content:"\f136"}.ion-folder:before{content:"\f139"}.ion-fork:before{content:"\f27a"}.ion-fork-repo:before{content:"\f2c0"}.ion-forward:before{content:"\f13a"}.ion-funnel:before{content:"\f31b"}.ion-gear-a:before{content:"\f13d"}.ion-gear-b:before{content:"\f13e"}.ion-grid:before{content:"\f13f"}.ion-hammer:before{content:"\f27b"}.ion-happy:before{content:"\f31c"}.ion-happy-outline:before{content:"\f3c6"}.ion-headphone:before{content:"\f140"}.ion-heart:before{content:"\f141"}.ion-heart-broken:before{content:"\f31d"}.ion-help:before{content:"\f143"}.ion-help-buoy:before{content:"\f27c"}.ion-help-circled:before{content:"\f142"}.ion-home:before{content:"\f144"}.ion-icecream:before{content:"\f27d"}.ion-image:before{content:"\f147"}.ion-images:before{content:"\f148"}.ion-information:before{content:"\f14a"}.ion-information-circled:before{content:"\f149"}.ion-ionic:before{content:"\f14b"}.ion-ios-alarm:before{content:"\f3c8"}.ion-ios-alarm-outline:before{content:"\f3c7"}.ion-ios-albums:before{content:"\f3ca"}.ion-ios-albums-outline:before{content:"\f3c9"}.ion-ios-americanfootball:before{content:"\f3cc"}.ion-ios-americanfootball-outline:before{content:"\f3cb"}.ion-ios-analytics:before{content:"\f3ce"}.ion-ios-analytics-outline:before{content:"\f3cd"}.ion-ios-arrow-back:before{content:"\f3cf"}.ion-ios-arrow-down:before{content:"\f3d0"}.ion-ios-arrow-forward:before{content:"\f3d1"}.ion-ios-arrow-left:before{content:"\f3d2"}.ion-ios-arrow-right:before{content:"\f3d3"}.ion-ios-arrow-thin-down:before{content:"\f3d4"}.ion-ios-arrow-thin-left:before{content:"\f3d5"}.ion-ios-arrow-thin-right:before{content:"\f3d6"}.ion-ios-arrow-thin-up:before{content:"\f3d7"}.ion-ios-arrow-up:before{content:"\f3d8"}.ion-ios-at:before{content:"\f3da"}.ion-ios-at-outline:before{content:"\f3d9"}.ion-ios-barcode:before{content:"\f3dc"}.ion-ios-barcode-outline:before{content:"\f3db"}.ion-ios-baseball:before{content:"\f3de"}.ion-ios-baseball-outline:before{content:"\f3dd"}.ion-ios-basketball:before{content:"\f3e0"}.ion-ios-basketball-outline:before{content:"\f3df"}.ion-ios-bell:before{content:"\f3e2"}.ion-ios-bell-outline:before{content:"\f3e1"}.ion-ios-body:before{content:"\f3e4"}.ion-ios-body-outline:before{content:"\f3e3"}.ion-ios-bolt:before{content:"\f3e6"}.ion-ios-bolt-outline:before{content:"\f3e5"}.ion-ios-book:before{content:"\f3e8"}.ion-ios-book-outline:before{content:"\f3e7"}.ion-ios-bookmarks:before{content:"\f3ea"}.ion-ios-bookmarks-outline:before{content:"\f3e9"}.ion-ios-box:before{content:"\f3ec"}.ion-ios-box-outline:before{content:"\f3eb"}.ion-ios-briefcase:before{content:"\f3ee"}.ion-ios-briefcase-outline:before{content:"\f3ed"}.ion-ios-browsers:before{content:"\f3f0"}.ion-ios-browsers-outline:before{content:"\f3ef"}.ion-ios-calculator:before{content:"\f3f2"}.ion-ios-calculator-outline:before{content:"\f3f1"}.ion-ios-calendar:before{content:"\f3f4"}.ion-ios-calendar-outline:before{content:"\f3f3"}.ion-ios-camera:before{content:"\f3f6"}.ion-ios-camera-outline:before{content:"\f3f5"}.ion-ios-cart:before{content:"\f3f8"}.ion-ios-cart-outline:before{content:"\f3f7"}.ion-ios-chatboxes:before{content:"\f3fa"}.ion-ios-chatboxes-outline:before{content:"\f3f9"}.ion-ios-chatbubble:before{content:"\f3fc"}.ion-ios-chatbubble-outline:before{content:"\f3fb"}.ion-ios-checkmark:before{content:"\f3ff"}.ion-ios-checkmark-empty:before{content:"\f3fd"}.ion-ios-checkmark-outline:before{content:"\f3fe"}.ion-ios-circle-filled:before{content:"\f400"}.ion-ios-circle-outline:before{content:"\f401"}.ion-ios-clock:before{content:"\f403"}.ion-ios-clock-outline:before{content:"\f402"}.ion-ios-close:before{content:"\f406"}.ion-ios-close-empty:before{content:"\f404"}.ion-ios-close-outline:before{content:"\f405"}.ion-ios-cloud:before{content:"\f40c"}.ion-ios-cloud-download:before{content:"\f408"}.ion-ios-cloud-download-outline:before{content:"\f407"}.ion-ios-cloud-outline:before{content:"\f409"}.ion-ios-cloud-upload:before{content:"\f40b"}.ion-ios-cloud-upload-outline:before{content:"\f40a"}.ion-ios-cloudy:before{content:"\f410"}.ion-ios-cloudy-night:before{content:"\f40e"}.ion-ios-cloudy-night-outline:before{content:"\f40d"}.ion-ios-cloudy-outline:before{content:"\f40f"}.ion-ios-cog:before{content:"\f412"}.ion-ios-cog-outline:before{content:"\f411"}.ion-ios-color-filter:before{content:"\f414"}.ion-ios-color-filter-outline:before{content:"\f413"}.ion-ios-color-wand:before{content:"\f416"}.ion-ios-color-wand-outline:before{content:"\f415"}.ion-ios-compose:before{content:"\f418"}.ion-ios-compose-outline:before{content:"\f417"}.ion-ios-contact:before{content:"\f41a"}.ion-ios-contact-outline:before{content:"\f419"}.ion-ios-copy:before{content:"\f41c"}.ion-ios-copy-outline:before{content:"\f41b"}.ion-ios-crop:before{content:"\f41e"}.ion-ios-crop-strong:before{content:"\f41d"}.ion-ios-download:before{content:"\f420"}.ion-ios-download-outline:before{content:"\f41f"}.ion-ios-drag:before{content:"\f421"}.ion-ios-email:before{content:"\f423"}.ion-ios-email-outline:before{content:"\f422"}.ion-ios-eye:before{content:"\f425"}.ion-ios-eye-outline:before{content:"\f424"}.ion-ios-fastforward:before{content:"\f427"}.ion-ios-fastforward-outline:before{content:"\f426"}.ion-ios-filing:before{content:"\f429"}.ion-ios-filing-outline:before{content:"\f428"}.ion-ios-film:before{content:"\f42b"}.ion-ios-film-outline:before{content:"\f42a"}.ion-ios-flag:before{content:"\f42d"}.ion-ios-flag-outline:before{content:"\f42c"}.ion-ios-flame:before{content:"\f42f"}.ion-ios-flame-outline:before{content:"\f42e"}.ion-ios-flask:before{content:"\f431"}.ion-ios-flask-outline:before{content:"\f430"}.ion-ios-flower:before{content:"\f433"}.ion-ios-flower-outline:before{content:"\f432"}.ion-ios-folder:before{content:"\f435"}.ion-ios-folder-outline:before{content:"\f434"}.ion-ios-football:before{content:"\f437"}.ion-ios-football-outline:before{content:"\f436"}.ion-ios-game-controller-a:before{content:"\f439"}.ion-ios-game-controller-a-outline:before{content:"\f438"}.ion-ios-game-controller-b:before{content:"\f43b"}.ion-ios-game-controller-b-outline:before{content:"\f43a"}.ion-ios-gear:before{content:"\f43d"}.ion-ios-gear-outline:before{content:"\f43c"}.ion-ios-glasses:before{content:"\f43f"}.ion-ios-glasses-outline:before{content:"\f43e"}.ion-ios-grid-view:before{content:"\f441"}.ion-ios-grid-view-outline:before{content:"\f440"}.ion-ios-heart:before{content:"\f443"}.ion-ios-heart-outline:before{content:"\f442"}.ion-ios-help:before{content:"\f446"}.ion-ios-help-empty:before{content:"\f444"}.ion-ios-help-outline:before{content:"\f445"}.ion-ios-home:before{content:"\f448"}.ion-ios-home-outline:before{content:"\f447"}.ion-ios-infinite:before{content:"\f44a"}.ion-ios-infinite-outline:before{content:"\f449"}.ion-ios-information:before{content:"\f44d"}.ion-ios-information-empty:before{content:"\f44b"}.ion-ios-information-outline:before{content:"\f44c"}.ion-ios-ionic-outline:before{content:"\f44e"}.ion-ios-keypad:before{content:"\f450"}.ion-ios-keypad-outline:before{content:"\f44f"}.ion-ios-lightbulb:before{content:"\f452"}.ion-ios-lightbulb-outline:before{content:"\f451"}.ion-ios-list:before{content:"\f454"}.ion-ios-list-outline:before{content:"\f453"}.ion-ios-location:before{content:"\f456"}.ion-ios-location-outline:before{content:"\f455"}.ion-ios-locked:before{content:"\f458"}.ion-ios-locked-outline:before{content:"\f457"}.ion-ios-loop:before{content:"\f45a"}.ion-ios-loop-strong:before{content:"\f459"}.ion-ios-medical:before{content:"\f45c"}.ion-ios-medical-outline:before{content:"\f45b"}.ion-ios-medkit:before{content:"\f45e"}.ion-ios-medkit-outline:before{content:"\f45d"}.ion-ios-mic:before{content:"\f461"}.ion-ios-mic-off:before{content:"\f45f"}.ion-ios-mic-outline:before{content:"\f460"}.ion-ios-minus:before{content:"\f464"}.ion-ios-minus-empty:before{content:"\f462"}.ion-ios-minus-outline:before{content:"\f463"}.ion-ios-monitor:before{content:"\f466"}.ion-ios-monitor-outline:before{content:"\f465"}.ion-ios-moon:before{content:"\f468"}.ion-ios-moon-outline:before{content:"\f467"}.ion-ios-more:before{content:"\f46a"}.ion-ios-more-outline:before{content:"\f469"}.ion-ios-musical-note:before{content:"\f46b"}.ion-ios-musical-notes:before{content:"\f46c"}.ion-ios-navigate:before{content:"\f46e"}.ion-ios-navigate-outline:before{content:"\f46d"}.ion-ios-nutrition:before{content:"\f470"}.ion-ios-nutrition-outline:before{content:"\f46f"}.ion-ios-paper:before{content:"\f472"}.ion-ios-paper-outline:before{content:"\f471"}.ion-ios-paperplane:before{content:"\f474"}.ion-ios-paperplane-outline:before{content:"\f473"}.ion-ios-partlysunny:before{content:"\f476"}.ion-ios-partlysunny-outline:before{content:"\f475"}.ion-ios-pause:before{content:"\f478"}.ion-ios-pause-outline:before{content:"\f477"}.ion-ios-paw:before{content:"\f47a"}.ion-ios-paw-outline:before{content:"\f479"}.ion-ios-people:before{content:"\f47c"}.ion-ios-people-outline:before{content:"\f47b"}.ion-ios-person:before{content:"\f47e"}.ion-ios-person-outline:before{content:"\f47d"}.ion-ios-personadd:before{content:"\f480"}.ion-ios-personadd-outline:before{content:"\f47f"}.ion-ios-photos:before{content:"\f482"}.ion-ios-photos-outline:before{content:"\f481"}.ion-ios-pie:before{content:"\f484"}.ion-ios-pie-outline:before{content:"\f483"}.ion-ios-pint:before{content:"\f486"}.ion-ios-pint-outline:before{content:"\f485"}.ion-ios-play:before{content:"\f488"}.ion-ios-play-outline:before{content:"\f487"}.ion-ios-plus:before{content:"\f48b"}.ion-ios-plus-empty:before{content:"\f489"}.ion-ios-plus-outline:before{content:"\f48a"}.ion-ios-pricetag:before{content:"\f48d"}.ion-ios-pricetag-outline:before{content:"\f48c"}.ion-ios-pricetags:before{content:"\f48f"}.ion-ios-pricetags-outline:before{content:"\f48e"}.ion-ios-printer:before{content:"\f491"}.ion-ios-printer-outline:before{content:"\f490"}.ion-ios-pulse:before{content:"\f493"}.ion-ios-pulse-strong:before{content:"\f492"}.ion-ios-rainy:before{content:"\f495"}.ion-ios-rainy-outline:before{content:"\f494"}.ion-ios-recording:before{content:"\f497"}.ion-ios-recording-outline:before{content:"\f496"}.ion-ios-redo:before{content:"\f499"}.ion-ios-redo-outline:before{content:"\f498"}.ion-ios-refresh:before{content:"\f49c"}.ion-ios-refresh-empty:before{content:"\f49a"}.ion-ios-refresh-outline:before{content:"\f49b"}.ion-ios-reload:before{content:"\f49d"}.ion-ios-reverse-camera:before{content:"\f49f"}.ion-ios-reverse-camera-outline:before{content:"\f49e"}.ion-ios-rewind:before{content:"\f4a1"}.ion-ios-rewind-outline:before{content:"\f4a0"}.ion-ios-rose:before{content:"\f4a3"}.ion-ios-rose-outline:before{content:"\f4a2"}.ion-ios-search:before{content:"\f4a5"}.ion-ios-search-strong:before{content:"\f4a4"}.ion-ios-settings:before{content:"\f4a7"}.ion-ios-settings-strong:before{content:"\f4a6"}.ion-ios-shuffle:before{content:"\f4a9"}.ion-ios-shuffle-strong:before{content:"\f4a8"}.ion-ios-skipbackward:before{content:"\f4ab"}.ion-ios-skipbackward-outline:before{content:"\f4aa"}.ion-ios-skipforward:before{content:"\f4ad"}.ion-ios-skipforward-outline:before{content:"\f4ac"}.ion-ios-snowy:before{content:"\f4ae"}.ion-ios-speedometer:before{content:"\f4b0"}.ion-ios-speedometer-outline:before{content:"\f4af"}.ion-ios-star:before{content:"\f4b3"}.ion-ios-star-half:before{content:"\f4b1"}.ion-ios-star-outline:before{content:"\f4b2"}.ion-ios-stopwatch:before{content:"\f4b5"}.ion-ios-stopwatch-outline:before{content:"\f4b4"}.ion-ios-sunny:before{content:"\f4b7"}.ion-ios-sunny-outline:before{content:"\f4b6"}.ion-ios-telephone:before{content:"\f4b9"}.ion-ios-telephone-outline:before{content:"\f4b8"}.ion-ios-tennisball:before{content:"\f4bb"}.ion-ios-tennisball-outline:before{content:"\f4ba"}.ion-ios-thunderstorm:before{content:"\f4bd"}.ion-ios-thunderstorm-outline:before{content:"\f4bc"}.ion-ios-time:before{content:"\f4bf"}.ion-ios-time-outline:before{content:"\f4be"}.ion-ios-timer:before{content:"\f4c1"}.ion-ios-timer-outline:before{content:"\f4c0"}.ion-ios-toggle:before{content:"\f4c3"}.ion-ios-toggle-outline:before{content:"\f4c2"}.ion-ios-trash:before{content:"\f4c5"}.ion-ios-trash-outline:before{content:"\f4c4"}.ion-ios-undo:before{content:"\f4c7"}.ion-ios-undo-outline:before{content:"\f4c6"}.ion-ios-unlocked:before{content:"\f4c9"}.ion-ios-unlocked-outline:before{content:"\f4c8"}.ion-ios-upload:before{content:"\f4cb"}.ion-ios-upload-outline:before{content:"\f4ca"}.ion-ios-videocam:before{content:"\f4cd"}.ion-ios-videocam-outline:before{content:"\f4cc"}.ion-ios-volume-high:before{content:"\f4ce"}.ion-ios-volume-low:before{content:"\f4cf"}.ion-ios-wineglass:before{content:"\f4d1"}.ion-ios-wineglass-outline:before{content:"\f4d0"}.ion-ios-world:before{content:"\f4d3"}.ion-ios-world-outline:before{content:"\f4d2"}.ion-ipad:before{content:"\f1f9"}.ion-iphone:before{content:"\f1fa"}.ion-ipod:before{content:"\f1fb"}.ion-jet:before{content:"\f295"}.ion-key:before{content:"\f296"}.ion-knife:before{content:"\f297"}.ion-laptop:before{content:"\f1fc"}.ion-leaf:before{content:"\f1fd"}.ion-levels:before{content:"\f298"}.ion-lightbulb:before{content:"\f299"}.ion-link:before{content:"\f1fe"}.ion-load-a:before{content:"\f29a"}.ion-load-b:before{content:"\f29b"}.ion-load-c:before{content:"\f29c"}.ion-load-d:before{content:"\f29d"}.ion-location:before{content:"\f1ff"}.ion-lock-combination:before{content:"\f4d4"}.ion-locked:before{content:"\f200"}.ion-log-in:before{content:"\f29e"}.ion-log-out:before{content:"\f29f"}.ion-loop:before{content:"\f201"}.ion-magnet:before{content:"\f2a0"}.ion-male:before{content:"\f2a1"}.ion-man:before{content:"\f202"}.ion-map:before{content:"\f203"}.ion-medkit:before{content:"\f2a2"}.ion-merge:before{content:"\f33f"}.ion-mic-a:before{content:"\f204"}.ion-mic-b:before{content:"\f205"}.ion-mic-c:before{content:"\f206"}.ion-minus:before{content:"\f209"}.ion-minus-circled:before{content:"\f207"}.ion-minus-round:before{content:"\f208"}.ion-model-s:before{content:"\f2c1"}.ion-monitor:before{content:"\f20a"}.ion-more:before{content:"\f20b"}.ion-mouse:before{content:"\f340"}.ion-music-note:before{content:"\f20c"}.ion-navicon:before{content:"\f20e"}.ion-navicon-round:before{content:"\f20d"}.ion-navigate:before{content:"\f2a3"}.ion-network:before{content:"\f341"}.ion-no-smoking:before{content:"\f2c2"}.ion-nuclear:before{content:"\f2a4"}.ion-outlet:before{content:"\f342"}.ion-paintbrush:before{content:"\f4d5"}.ion-paintbucket:before{content:"\f4d6"}.ion-paper-airplane:before{content:"\f2c3"}.ion-paperclip:before{content:"\f20f"}.ion-pause:before{content:"\f210"}.ion-person:before{content:"\f213"}.ion-person-add:before{content:"\f211"}.ion-person-stalker:before{content:"\f212"}.ion-pie-graph:before{content:"\f2a5"}.ion-pin:before{content:"\f2a6"}.ion-pinpoint:before{content:"\f2a7"}.ion-pizza:before{content:"\f2a8"}.ion-plane:before{content:"\f214"}.ion-planet:before{content:"\f343"}.ion-play:before{content:"\f215"}.ion-playstation:before{content:"\f30a"}.ion-plus:before{content:"\f218"}.ion-plus-circled:before{content:"\f216"}.ion-plus-round:before{content:"\f217"}.ion-podium:before{content:"\f344"}.ion-pound:before{content:"\f219"}.ion-power:before{content:"\f2a9"}.ion-pricetag:before{content:"\f2aa"}.ion-pricetags:before{content:"\f2ab"}.ion-printer:before{content:"\f21a"}.ion-pull-request:before{content:"\f345"}.ion-qr-scanner:before{content:"\f346"}.ion-quote:before{content:"\f347"}.ion-radio-waves:before{content:"\f2ac"}.ion-record:before{content:"\f21b"}.ion-refresh:before{content:"\f21c"}.ion-reply:before{content:"\f21e"}.ion-reply-all:before{content:"\f21d"}.ion-ribbon-a:before{content:"\f348"}.ion-ribbon-b:before{content:"\f349"}.ion-sad:before{content:"\f34a"}.ion-sad-outline:before{content:"\f4d7"}.ion-scissors:before{content:"\f34b"}.ion-search:before{content:"\f21f"}.ion-settings:before{content:"\f2ad"}.ion-share:before{content:"\f220"}.ion-shuffle:before{content:"\f221"}.ion-skip-backward:before{content:"\f222"}.ion-skip-forward:before{content:"\f223"}.ion-social-android:before{content:"\f225"}.ion-social-android-outline:before{content:"\f224"}.ion-social-angular:before{content:"\f4d9"}.ion-social-angular-outline:before{content:"\f4d8"}.ion-social-apple:before{content:"\f227"}.ion-social-apple-outline:before{content:"\f226"}.ion-social-bitcoin:before{content:"\f2af"}.ion-social-bitcoin-outline:before{content:"\f2ae"}.ion-social-buffer:before{content:"\f229"}.ion-social-buffer-outline:before{content:"\f228"}.ion-social-chrome:before{content:"\f4db"}.ion-social-chrome-outline:before{content:"\f4da"}.ion-social-codepen:before{content:"\f4dd"}.ion-social-codepen-outline:before{content:"\f4dc"}.ion-social-css3:before{content:"\f4df"}.ion-social-css3-outline:before{content:"\f4de"}.ion-social-designernews:before{content:"\f22b"}.ion-social-designernews-outline:before{content:"\f22a"}.ion-social-dribbble:before{content:"\f22d"}.ion-social-dribbble-outline:before{content:"\f22c"}.ion-social-dropbox:before{content:"\f22f"}.ion-social-dropbox-outline:before{content:"\f22e"}.ion-social-euro:before{content:"\f4e1"}.ion-social-euro-outline:before{content:"\f4e0"}.ion-social-facebook:before{content:"\f231"}.ion-social-facebook-outline:before{content:"\f230"}.ion-social-foursquare:before{content:"\f34d"}.ion-social-foursquare-outline:before{content:"\f34c"}.ion-social-freebsd-devil:before{content:"\f2c4"}.ion-social-github:before{content:"\f233"}.ion-social-github-outline:before{content:"\f232"}.ion-social-google:before{content:"\f34f"}.ion-social-google-outline:before{content:"\f34e"}.ion-social-googleplus:before{content:"\f235"}.ion-social-googleplus-outline:before{content:"\f234"}.ion-social-hackernews:before{content:"\f237"}.ion-social-hackernews-outline:before{content:"\f236"}.ion-social-html5:before{content:"\f4e3"}.ion-social-html5-outline:before{content:"\f4e2"}.ion-social-instagram:before{content:"\f351"}.ion-social-instagram-outline:before{content:"\f350"}.ion-social-javascript:before{content:"\f4e5"}.ion-social-javascript-outline:before{content:"\f4e4"}.ion-social-linkedin:before{content:"\f239"}.ion-social-linkedin-outline:before{content:"\f238"}.ion-social-markdown:before{content:"\f4e6"}.ion-social-nodejs:before{content:"\f4e7"}.ion-social-octocat:before{content:"\f4e8"}.ion-social-pinterest:before{content:"\f2b1"}.ion-social-pinterest-outline:before{content:"\f2b0"}.ion-social-python:before{content:"\f4e9"}.ion-social-reddit:before{content:"\f23b"}.ion-social-reddit-outline:before{content:"\f23a"}.ion-social-rss:before{content:"\f23d"}.ion-social-rss-outline:before{content:"\f23c"}.ion-social-sass:before{content:"\f4ea"}.ion-social-skype:before{content:"\f23f"}.ion-social-skype-outline:before{content:"\f23e"}.ion-social-snapchat:before{content:"\f4ec"}.ion-social-snapchat-outline:before{content:"\f4eb"}.ion-social-tumblr:before{content:"\f241"}.ion-social-tumblr-outline:before{content:"\f240"}.ion-social-tux:before{content:"\f2c5"}.ion-social-twitch:before{content:"\f4ee"}.ion-social-twitch-outline:before{content:"\f4ed"}.ion-social-twitter:before{content:"\f243"}.ion-social-twitter-outline:before{content:"\f242"}.ion-social-usd:before{content:"\f353"}.ion-social-usd-outline:before{content:"\f352"}.ion-social-vimeo:before{content:"\f245"}.ion-social-vimeo-outline:before{content:"\f244"}.ion-social-whatsapp:before{content:"\f4f0"}.ion-social-whatsapp-outline:before{content:"\f4ef"}.ion-social-windows:before{content:"\f247"}.ion-social-windows-outline:before{content:"\f246"}.ion-social-wordpress:before{content:"\f249"}.ion-social-wordpress-outline:before{content:"\f248"}.ion-social-yahoo:before{content:"\f24b"}.ion-social-yahoo-outline:before{content:"\f24a"}.ion-social-yen:before{content:"\f4f2"}.ion-social-yen-outline:before{content:"\f4f1"}.ion-social-youtube:before{content:"\f24d"}.ion-social-youtube-outline:before{content:"\f24c"}.ion-soup-can:before{content:"\f4f4"}.ion-soup-can-outline:before{content:"\f4f3"}.ion-speakerphone:before{content:"\f2b2"}.ion-speedometer:before{content:"\f2b3"}.ion-spoon:before{content:"\f2b4"}.ion-star:before{content:"\f24e"}.ion-stats-bars:before{content:"\f2b5"}.ion-steam:before{content:"\f30b"}.ion-stop:before{content:"\f24f"}.ion-thermometer:before{content:"\f2b6"}.ion-thumbsdown:before{content:"\f250"}.ion-thumbsup:before{content:"\f251"}.ion-toggle:before{content:"\f355"}.ion-toggle-filled:before{content:"\f354"}.ion-transgender:before{content:"\f4f5"}.ion-trash-a:before{content:"\f252"}.ion-trash-b:before{content:"\f253"}.ion-trophy:before{content:"\f356"}.ion-tshirt:before{content:"\f4f7"}.ion-tshirt-outline:before{content:"\f4f6"}.ion-umbrella:before{content:"\f2b7"}.ion-university:before{content:"\f357"}.ion-unlocked:before{content:"\f254"}.ion-upload:before{content:"\f255"}.ion-usb:before{content:"\f2b8"}.ion-videocamera:before{content:"\f256"}.ion-volume-high:before{content:"\f257"}.ion-volume-low:before{content:"\f258"}.ion-volume-medium:before{content:"\f259"}.ion-volume-mute:before{content:"\f25a"}.ion-wand:before{content:"\f358"}.ion-waterdrop:before{content:"\f25b"}.ion-wifi:before{content:"\f25c"}.ion-wineglass:before{content:"\f2b9"}.ion-woman:before{content:"\f25d"}.ion-wrench:before{content:"\f2ba"}.ion-xbox:before{content:"\f30c"} diff --git a/fonts/ionicons.eot b/fonts/ionicons.eot new file mode 100755 index 0000000..9caa348 Binary files /dev/null and b/fonts/ionicons.eot differ diff --git a/fonts/ionicons.svg b/fonts/ionicons.svg new file mode 100755 index 0000000..2a47a0f --- /dev/null +++ b/fonts/ionicons.svg @@ -0,0 +1,2230 @@ + + + + + +Created by FontForge 20120731 at Wed Jan 14 22:40:14 2015 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/ionicons.ttf b/fonts/ionicons.ttf new file mode 100755 index 0000000..180ce51 Binary files /dev/null and b/fonts/ionicons.ttf differ diff --git a/fonts/ionicons.woff b/fonts/ionicons.woff new file mode 100755 index 0000000..5bb6aec Binary files /dev/null and b/fonts/ionicons.woff differ diff --git a/footer.php b/footer.php index ffac4bf..b00d5e0 100755 --- a/footer.php +++ b/footer.php @@ -40,6 +40,23 @@ */ + + + + + + \ No newline at end of file diff --git a/functions.php b/functions.php index 77ec7eb..9caec44 100644 --- a/functions.php +++ b/functions.php @@ -2,10 +2,10 @@ $serial ) ); -update_option( 'mfrh_pro_status', _( "Your subscription is manually enabled." ) ); -update_option( 'mfrh_pro_serial', _( $serial ) ); -set_transient( 'mfrh_validated', $serial, 3600 * 24 * 100 ); +update_option( 'wr2x_pro', array( 'subscr_id' => $serial ) ); +update_option( 'wr2x_pro_status', _( "Your subscription is manually enabled." ) ); +update_option( 'wr2x_pro_serial', _( $serial ) ); +set_transient( 'wr2x_validated', $serial, 3600 * 24 * 100 ); /* @@ -31,7 +31,8 @@ function add_author_rules() { function google_jquery() { if (!is_admin()) { wp_deregister_script('jquery'); - wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js', false, '3.1.1'); + //wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js', false, '3.1.1'); + wp_register_script('jquery', get_stylesheet_directory_uri() . '/js/jquery.min.js', false, '3.1.1'); wp_enqueue_script('jquery'); } } @@ -46,13 +47,15 @@ function enqueue_my_scripts() { //featherlight : http://noelboss.github.io/featherlight/ //selector: class="gallery" //wp_enqueue_script('jquery'); //include jQuery version bundled with Wordpress in your page - //wp_enqueue_style( 'featherlight', get_template_directory_uri() . '/css/featherlight.min.css' ); - //wp_enqueue_script('featherlight', get_template_directory_uri() . '/js/featherlight.min.js', array( 'jquery' ) ); - wp_enqueue_style( 'featherlight', 'http://cdn.rawgit.com/noelboss/featherlight/1.7.0/release/featherlight.min.css' ); - wp_enqueue_style( 'featherlight-gallery', 'http://cdn.rawgit.com/noelboss/featherlight/1.3.4/release/featherlight.gallery.min.css' ); + //wp_enqueue_style( 'featherlight', 'http://cdn.rawgit.com/noelboss/featherlight/1.7.0/release/featherlight.min.css' ); + wp_enqueue_style( 'featherlight', get_stylesheet_directory_uri() . '/css/featherlight.min.css' ); + //wp_enqueue_style( 'featherlight-gallery', 'http://cdn.rawgit.com/noelboss/featherlight/1.3.4/release/featherlight.gallery.min.css' ); + wp_enqueue_style( 'featherlight-gallery', get_stylesheet_directory_uri() . '/css/featherlight.gallery.min.css' ); wp_enqueue_style( 'featherlight2', get_stylesheet_directory_uri() . '/css/my-featherlight.css' ); - wp_enqueue_script( 'featherlight', 'http://cdn.rawgit.com/noelboss/featherlight/1.7.0/release/featherlight.min.js', array( 'jquery' ), '',true ); - wp_enqueue_script( 'featherlight-gallery', 'http://cdn.rawgit.com/noelboss/featherlight/1.3.4/release/featherlight.gallery.min.js', array( 'jquery', 'featherlight' ), '',true ); + //wp_enqueue_script( 'featherlight', 'http://cdn.rawgit.com/noelboss/featherlight/1.7.0/release/featherlight.min.js', array( 'jquery' ), '',true ); + wp_enqueue_script( 'featherlight', get_stylesheet_directory_uri() . '/js/featherlight.min.js', array( 'jquery' ), '',true ); + //wp_enqueue_script( 'featherlight-gallery', 'http://cdn.rawgit.com/noelboss/featherlight/1.3.4/release/featherlight.gallery.min.js', array( 'jquery', 'featherlight' ), '',true ); + wp_enqueue_script( 'featherlight-gallery', get_stylesheet_directory_uri() . '/js/featherlight.gallery.min.js', array( 'jquery', 'featherlight' ), '',true ); wp_enqueue_script( 'featherlight-script', get_stylesheet_directory_uri() . '/js/featherlight.js', array( 'jquery', 'featherlight' ), '',true ); } if ($lightbox_choice == 'b') { @@ -65,6 +68,14 @@ function enqueue_my_scripts() { if ($lightbox_choice == 'a') { //meow-box } + + //ionicons: http://ionicons.com + //wp_enqueue_style( 'ionicons', 'http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css' ); + wp_enqueue_style( 'ionicons', get_stylesheet_directory_uri() . '/css/ionicons.min.css' ); + + //wp_enqueue_script( 'googlemaps', ''; + + } add_action( 'wp_enqueue_scripts', 'enqueue_my_scripts' ); /**/ @@ -98,6 +109,31 @@ function custom_class( $classes ) { return $classes; } +// Bouton Shortcode zenphoto dans l'éditeur + +function register_button( $buttons ) { + array_push( $buttons, "|", "zenphoto" ); + return $buttons; +} +function add_plugin( $plugin_array ) { + $plugin_array['zenphoto'] = get_stylesheet_directory_uri() . '/js/short-zenphoto.js'; + return $plugin_array; +} +function my_zenphoto_button() { + + if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') ) { + return; + } + + if ( get_user_option('rich_editing') == 'true' ) { + add_filter( 'mce_external_plugins', 'add_plugin' ); + add_filter( 'mce_buttons', 'register_button' ); + } + +} +add_action('init', 'my_zenphoto_button'); + + function RelativeTime() { $jour = get_the_date('U'); @@ -180,6 +216,8 @@ function exif_date($date,$apn) { $date = date('d.m.Y à H:i',$timestamp); return $date; } + + function mois2 ($mois) { switch ($mois) { @@ -226,6 +264,7 @@ function mois2 ($mois) { return $mois; } + function display ($filename,$album) { $display = '
'. '
' . @@ -241,6 +280,7 @@ function display ($filename,$album) { return $display; } + function displayRetina ($filename,$album) { global $ppage; @@ -320,6 +360,7 @@ function displayRetina ($filename,$album) { return $display; } + function get_image_title ($photo) { $photo = '../zenphoto/albums/photos-du-mois/' . $photo; $size = getimagesize($photo, $info); @@ -332,77 +373,177 @@ function get_image_title ($photo) { return $caption; } + function date_archive ($chaine) { - $pieces = explode(".", $chaine); - $b = explode("_", $pieces[0]); - $mois = $b[0]; - $an = $b[1]; - $chaine = mois2($mois) . ' '. $an; + $pieces = explode(".", $chaine); + $b = explode("_", $pieces[0]); + $mois = $b[0]; + $an = $b[1]; + $chaine = mois2($mois) . ' '. $an; return $chaine; } + +function flickr_handler($atts, $content=null) { + // flickr = pas d'exifs + + $link = ! empty( $atts['link'] ) ? $atts['link'] : ''; + $link = filter_var($link, FILTER_SANITIZE_URL); + + $small = ! empty( $atts['small'] ) ? $atts['small'] : ''; + $small = filter_var($small, FILTER_SANITIZE_URL); + + $big = ! empty( $atts['big'] ) ? $atts['big'] : ''; + $big = filter_var($big, FILTER_SANITIZE_URL); + + $alt = ! empty( $atts['alt'] ) ? $atts['alt'] : ''; + $alt = filter_var($alt, FILTER_SANITIZE_URL); + + // Notice: Undefined index: caption + $caption = ! empty( $atts['caption'] ) ? $atts['caption'] : ''; + // Sanitize + $caption = filter_var($caption, FILTER_SANITIZE_STRING); + + $lb = ! empty( $atts['lb'] ) ? $atts['lb'] : ''; + $lb = filter_var($lb, FILTER_SANITIZE_STRING); + $info = array(); + + // 1220 -610 + $lb = toBool($lb); + $rnd = rand (1000, 9999); + $selector = dess_setting('dess_lightbox_select'); + + $flickr_size = getimagesize(htmlentities($small), $info); + if (isset($info["APP13"])) { + $iptc = iptcparse($info["APP13"]); + //var_dump($iptc); + } + //else echo "no info !!"; + + $links = (($caption != "") ? '' : ''); + + return $links; + } +add_filter( 'the_content', 'do_shortcode'); +add_shortcode( 'flickr', 'flickr_handler' ); + + function zenphoto_handler($atts, $content=null) { //utilise le cacheManager de zenphoto (extensions/utilitaires/cacheManager) - //utilisation: [zenphoto album="lievres" image="2008-08-18_Lievre_8927.jpg"] + // ** Utilisation ** + // [zenphoto album="lievres" image="2008-08-18_Lievre_8927.jpg"] // [zenphoto album="sports-mecaniques/gp-france" image="2010-05-23_gp-france-2010_5321.jpg"] + // [zenphoto album="lievres"] + // //taille des photos dans Worpress, theme Twenty Ten Child : 610x406 - - $selector = dess_setting('dess_lightbox_select'); + $selector = dess_setting('dess_lightbox_select'); + $zenphoto_url = dess_setting('dess_zenphoto'); + $size = dess_setting('dess_zp_size'); +/* $host = (($_SERVER['HTTPS'] != "") ? "https" : "http") . '://' . $_SERVER['HTTP_HOST'] . '/zenphoto/'; - //$zenphoto_url2 = get_option( 'zenphoto_url' ); - $zenphoto_url2 = 'http://macbook-pro.lcal/zenphoto/'; - -//echo $zenphoto_url2 . "
"; -//preprint($zenphoto_url2); -//echo substr_count($zenphoto_url2, "https"); -//echo $_SERVER['HTTPS']; - if (substr_count($zenphoto_url2, "https") == 1) { - //echo "toto"; $zenphoto_url = (($_SERVER['HTTPS'] != "") ? substr_replace($zenphoto_url2, 'https', 0, 4) : $zenphoto_url2); } $zenphoto_url = $host; -//echo $zenphoto_url; +*/ + $album = ! empty( $atts['album'] ) ? $atts['album'] : ''; + $album = filter_var($album, FILTER_SANITIZE_STRING); - //$size = get_option( 'img_size' ); + $image = ! empty( $atts['image'] ) ? $atts['image'] : ''; + $image = filter_var($image, FILTER_SANITIZE_STRING); + $size = 610; $folder = false; $zenphoto_img = ""; -//preprint($atts); - $a = $atts['image']; - $b = zp_query($a); // ligne 808 + + // Si ALBUM mais pas IMAGE + //if ((isset($atts['album'])) && (!isset($atts['image']))) { + if (($album != "") && ($image == "")) { + require('../Connections/cnx.php'); + $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbtable); + if (mysqli_connect_errno()) { + printf("Échec de la connexion : %s\n", mysqli_connect_error()); + exit(); + } + // Trouver l'ID de l'album + $album_id_query = "SELECT `id` FROM `" . $zp_prefix . "albums` WHERE `folder` = '" . $atts['album'] . "'"; + if ($result = $mysqli->query($album_id_query)) { + if ($mysqli->affected_rows != 0) { + $row = $result->fetch_row(); + $album_id = $row[0]; + } + else { + _e("Unknow album.", 'CreatorThemeRes-child' ); + } + $result->close(); + } + + // Trouver le filename de la plus récente image de l'album + $img_album_query = "SELECT filename FROM `" . $zp_prefix . "images` WHERE `albumid` = '" . $album_id . "' ORDER BY `id` DESC LIMIT 1"; + if ($result = $mysqli->query($img_album_query)) { + if ($mysqli->affected_rows != 0) { + $row = $result->fetch_row(); + $img_album = $row[0]; + } + else { + _e("Unknow image.", 'CreatorThemeRes-child' ); + } + $result->close(); + } + + $image = $img_album; + $folder = true; + } +/* if (isset($atts['folder'])) { if ($atts['folder'] == "true") $folder = true; } +*/ + + $img = substr($image, 0, strlen($image) - 4); - $img = substr($atts['image'], 0, strlen($atts['image']) - 4); - - $filename = $zenphoto_url . 'cache/' . $atts['album'] . '/' . urlencode($img) . '_' . $size . '_watermark.jpg'; + $filename = $zenphoto_url . 'cache/' . $album . '/' . urlencode($img) . '_' . $size . '_watermark.jpg'; $zp_size = getimagesize(htmlentities($filename)); //if ($folder == false) $zenphoto_link = ''; //if ($folder == false) $zenphoto_link = ''; - if ($folder == false) $zenphoto_link = ''; - else $zenphoto_link = ''; + if ($folder == false) $zenphoto_link = ''; + else $zenphoto_link = ''; $zenphoto_img .= $zenphoto_link; $zenphoto_img .= ' - + - + '; $zenphoto_img .= ''; /* + $a = $atts['image']; + $b = zp_query_exif($a); // ligne 808 + if ($b['image_meta']['description'] != "") { $caption = ""; $caption .= '

'; @@ -414,21 +555,23 @@ function zenphoto_handler($atts, $content=null) { return $zenphoto_img; } - add_shortcode( 'zenphoto', 'zenphoto_handler' ); -function zp_query($zpimage) { + +function zp_query_exif($zpimage) { $exif = array(); require('../Connections/cnx.php'); $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbtable); - if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } - $excquery = "SELECT `EXIFModel`, `EXIFDateTimeOriginal`, `EXIFExposureTime`, `EXIFFNumber`, `EXIFISOSpeedRatings`, `EXIFFocalLength`, `EXIFGPSLatitude`, `EXIFGPSLatitudeRef`, `EXIFGPSLongitude`, `EXIFGPSLongitudeRef`, `EXIFGPSAltitude`, `EXIFGPSAltitudeRef`, `desc`, `title` FROM `" . $zp_prefix . "images` WHERE `filename` = \"$zpimage\""; + $excquery = "SELECT `EXIFModel`, `EXIFDateTimeOriginal`, `EXIFExposureTime`, `EXIFFNumber`, `EXIFISOSpeedRatings`, `EXIFFocalLength`, "; + $excquery .= "`EXIFGPSLatitude`, `EXIFGPSLatitudeRef`, `EXIFGPSLongitude`, `EXIFGPSLongitudeRef`, `EXIFGPSAltitude`, `EXIFGPSAltitudeRef`, "; + $excquery .= "`desc`, `title`, `EXIFLensType`, `EXIFLensInfo`, `EXIFOrientation`, `credit`, `copyright`, `id` "; + $excquery .= "FROM `" . $zp_prefix . "images` WHERE `filename` = \"$zpimage\""; //echo $excquery; if ($result = $mysqli->query($excquery)) { $exif = $result->fetch_row(); @@ -438,134 +581,162 @@ function zp_query($zpimage) { //preprint($exif); /* - Array +Array ( - [0] => Canon EOS 7D - [1] => 2011:06:30 20:43:30 - [2] => 1/400 sec - [3] => f/6,3 - [4] => 640 - [5] => 600 mm - [6] => lat - [7] => lat ref - [8] => long - [9] => long ref - [10] => alt - [11] => alt ref - [12] => desc - [13] => title -)*/ - $meta = array(); - $meta['image_meta']['camera'] = $exif[0]; - $meta['image_meta']['created_timestamp'] = $exif[1]; - $meta['image_meta']['shutter_speed'] = $exif[2]; - $meta['image_meta']['aperture'] = $exif[3]; - $meta['image_meta']['iso'] = $exif[4]; - $meta['image_meta']['focal_length'] = $exif[5]; - $meta['image_meta']['latitude'] = $exif[6]; - $meta['image_meta']['latitude_ref'] = $exif[7]; - $meta['image_meta']['longitude'] = $exif[8]; - $meta['image_meta']['longitude_ref'] = $exif[9]; - $meta['image_meta']['altitude'] = $exif[10]; - $meta['image_meta']['altitude_ref'] = $exif[11]; - - if ($exif[12] != "") { + - [0] => Canon EOS-1D Mark IV + - [1] => 2014:10:21 14:42:26 + - [2] => 1/80 sec + - [3] => f/9 + - [4] => 320 + - [5] => 17 mm + - [6] => 44,381861666667 + - [7] => N + - [8] => 4,4162216666667 + - [9] => E + - [10] => 104,1771m + [11] => *AltitudeRef* + - [12] => a:1:{s:5:"fr_FR";s:10:"Pont d'Arc";} *desc* + - [13] => a:1:{s:5:"fr_FR";s:24:"2014-10-21_PontDArc_0406";} *title* + [14] => *EXIFLensType* + - [15] => EF17-40mm f/4L USM *EXIFLensInfo* + - [16] => 1: Normal (0 degr�) *EXIFOrientation* + - [17] => Bruno Pesenti *credit* + - [18] => bruno@clicclac.info *copyright* + - [19] => *id* +) +*/ + $meta = array( + 'aperture' => 0, + 'credit' => '', + 'camera' => '', + 'caption' => '', + 'created_timestamp' => 0, + 'copyright' => '', + 'focal_length' => 0, + 'iso' => 0, + 'shutter_speed' => 0, + 'title' => '', + 'orientation' => 0, + 'latitude' => 0, + 'longitude' => 0, + 'altitude' => 0, + 'lens' => '', + 'keywords' => array(), + ); + + if ( ! empty( $exif[3] ) ) { + $meta['aperture'] = str_replace(",", ".", $exif[3]); + } + if ( ! empty( $exif[17] ) ) { + if (((stripos($exif[17], "pesenti")) === true) || ($exif[17] == "")) $meta['credit'] = $exif[17]; + } + if ( ! empty( $exif[0] ) ) { + $meta['camera'] = $exif[0]; + } + //caption + if ( ! empty( $exif[12] ) ) { $desc = explode(':', $exif[12]); $description = explode('"', end($desc)); - //print_r($description); - $meta['image_meta']['description'] = utf8_encode($description[1]); + $meta['description'] = utf8_encode($description[1]); } - else $meta['image_meta']['description'] = ""; - - if ($exif[13] != "") { + + if ( ! empty( $exif[1] ) ) { + //$meta['created_timestamp'] = $exif[1]; + $meta['created_timestamp'] = strtotime($exif[1]); + } + //*copyright + if ( ! empty( $exif[5] ) ) { + $meta['focal_length'] = $exif[5]; + } + if ( ! empty( $exif[4] ) ) { + $meta['iso'] = $exif[4]; + } + if ( ! empty( $exif[2] ) ) { + $shutter = explode(' ', $exif[2]); + $meta['shutter_speed'] = $shutter[0]; + } + //title + if ( ! empty( $exif[13] ) ) { //echo "exif: " . $exif[13] . "
"; - // a:1:{s:5:"fr_FR";s:30:"2011-05-15_GP-France-2011_9798";} - + // a:1:{s:5:"fr_FR";s:30:"2011-05-15_GP-France-2011_9798";} $titr = explode(':', $exif[13]); - //echo count($titr) . "
"; - if (count($titr) == 1) { - //print_r($titr); - //$titr[0] - $meta['image_meta']['title'] = utf8_encode($titr[0]); + $meta['title'] = utf8_encode($titr[0]); } else { $titre = explode('"', end($titr)); - //print_r($titre); - //$titre[1] - $meta['image_meta']['title'] = utf8_encode($titre[1]); + $meta['title'] = utf8_encode($titre[1]); } - /* - echo "titr: "; - print_r($titr); - echo "
"; - - $titre = explode('"', end($titr)); - print_r($titre); - - foreach ($titr as $var) { - echo "" . $var . "
"; - } - - */ - //$meta['image_meta']['title'] = utf8_encode($titre[1]); } - else $meta['image_meta']['title'] = ""; + if ( ! empty( $exif[16] ) ) { + $meta['orientation'] = $exif[16]; + } + if ( ! empty( $exif[6] ) ) { + $lat = floatval(str_replace(",", ".", $exif[6])); + $meta['latitude'] = number_format($lat, 6); + } + if ( ! empty( $exif[8] ) ) { + $long = floatval(str_replace(",", ".", $exif[8])); + $meta['longitude'] = number_format($long, 6); + } + if ( ! empty( $exif[10] ) ) { + $alt = floatval(str_replace(",", ".", $exif[10])); + $meta['altitude'] = number_format($alt); + } + if ( ! empty( $exif[15] ) ) { + $meta['lens'] = $exif[15]; + } + if ( ! empty( $exif[18] ) ) { + $meta['copyright'] = $exif[18]; + } + //keywords + if ( ! empty( $exif[19] ) ) { + $img = $exif[19]; + + $result2 = $mysqli->query("SELECT `tagid` FROM `" . $zp_prefix . "obj_to_tag` WHERE `type`='images' AND `objectid`='$img'"); + if ($result2) { + while ($row = $result2->fetch_row()) { + $result3 = $mysqli->query("SELECT `name` FROM `" . $zp_prefix . "tags` WHERE `id`='" . $row[0] . "'"); + $dbtag = $result3->fetch_row(); + if ($dbtag) $tags[] = utf8_encode(ucfirst($dbtag[0])); + } + } + $meta['keywords'] = $tags; + } - //echo "

"; - $meta['image_meta']['file'] = $image; - - //preprint($meta['image_meta']); - - /* - [camera] => Canon EOS-1D Mark IV - [created_timestamp] => 2014:10:21 14:42:26 - [shutter_speed] => 1/80 sec - [aperture] => f/9 - [iso] => 320 - [focal_length] => 17 mm - [latitude] => 44,381861666667 - [latitude_ref] => N - [longitude] => 4,4162216666667 - [longitude_ref] => E - [altitude] => 104,1771m - [altitude_ref] => - [description] => - [title] => - */ return $meta; } + function add_class_lightbox($content) { - $selector = dess_setting('dess_lightbox_select'); + $selector = dess_setting('dess_lightbox_select'); - //$selector = "gallery"; - //Check the page for link images direct to image (no trailing attributes) - $string = '/<\/a>/i'; - preg_match_all( $string, $content, $matches, PREG_SET_ORDER); + //$selector = "gallery"; + //Check the page for link images direct to image (no trailing attributes) + $string = '/<\/a>/i'; + preg_match_all( $string, $content, $matches, PREG_SET_ORDER); +//preprint($matches); + //Check which attachment is referenced + foreach ($matches as $val) { + $slimbox_caption = ''; - //Check which attachment is referenced - foreach ($matches as $val) - { - $slimbox_caption = ''; + $post = get_post($val[5]); + $slimbox_caption = esc_attr( $post->post_content ); - $post = get_post($val[5]); - $slimbox_caption = esc_attr( $post->post_content ); - - //Replace the instance with the lightbox and title(caption) references. Won't fail if caption is empty. - $string = ''; - //echo "string" . "
" . $string; - //$replace = ''; - $replace = ''; - //echo "replace" . "
" . $replace; - $content = str_replace( $string, $replace, $content); + //Replace the instance with the lightbox and title(caption) references. Won't fail if caption is empty. + $string = ''; + //echo "string" . "
" . $string; + //$replace = ''; + $replace = ''; + //echo "replace" . "
" . $replace; + $content = str_replace( $string, $replace, $content); } return $content; } -add_filter('the_content', 'add_class_lightbox', 2); +//add_filter('the_content', 'add_class_lightbox', 2); if ( ! function_exists( 'creator_post_nav' ) ) : @@ -597,6 +768,7 @@ function creator_post_nav() { } endif; + if ( ! function_exists( 'creator_entry_meta' ) ) : /** * Print HTML with meta information for current post: categories, tags, permalink, author, and date. @@ -610,23 +782,23 @@ function creator_entry_meta() { echo '' . esc_html__( 'Sticky', 'CreatorThemeRes-child' ) . ''; if ( ! has_post_format( 'link' ) && 'post' == get_post_type() ) - twentythirteen_entry_date(); + creator_entry_date(); // Translators: used between list items, there is a space after the comma. $categories_list = get_the_category_list( __( ', ', 'CreatorThemeRes-child' ) ); if ( $categories_list ) { - echo '' . $categories_list . ''; + echo ' ' . $categories_list . ''; } // Translators: used between list items, there is a space after the comma. $tag_list = get_the_tag_list( '', __( ', ', 'CreatorThemeRes-child' ) ); if ( $tag_list ) { - echo '' . $tag_list . ''; + echo ' ' . $tag_list . ''; } // Post author if ( 'post' == get_post_type() ) { - printf( '', + printf( ' ', esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), esc_attr( sprintf( __( 'View all posts by %s', 'CreatorThemeRes-child' ), get_the_author() ) ), get_the_author() @@ -635,6 +807,7 @@ function creator_entry_meta() { } endif; + if ( ! function_exists( 'twentythirteen_entry_date' ) ) : /** * Print HTML with date information for current post. @@ -646,13 +819,13 @@ if ( ! function_exists( 'twentythirteen_entry_date' ) ) : * @param boolean $echo (optional) Whether to echo the date. Default true. * @return string The HTML-formatted post date. */ -function twentythirteen_entry_date( $echo = true ) { +function creator_entry_date( $echo = true ) { if ( has_post_format( array( 'chat', 'status' ) ) ) $format_prefix = _x( '%1$s on %2$s', '1: post format name. 2: date', 'twentythirteen' ); else $format_prefix = '%2$s'; - $date = sprintf( '', + $date = sprintf( ' ', esc_url( get_permalink() ), esc_attr( sprintf( __( 'Permalink to %s', 'twentythirteen' ), the_title_attribute( 'echo=0' ) ) ), esc_attr( get_the_date( 'c' ) ), @@ -666,71 +839,749 @@ function twentythirteen_entry_date( $echo = true ) { } endif; -/** - * Create a definition list containing EXIF data of featured image (if exists) - * - * @param string $post ID - * @return echo definition list - */ -function pa_the_post_thumbnail_exif_data($postID = NULL) { - // if $postID not specified, then get global post and assign ID - if (!$postID) { - global $post; - $postID = $post->ID; - } - if (has_post_thumbnail($postID)) { - // get the meta data from the featured image - $postThumbnailID = get_post_thumbnail_id( $postID ); - $photoMeta = wp_get_attachment_metadata( $postThumbnailID ); - // if the shutter speed is not equal to 0 - if ($photoMeta['image_meta']['shutter_speed'] != 0) { +function addexif ($content) { + global $post; + global $coord; + $postID = $post->ID; - // Convert the shutter speed to a fraction - if ((1 / $photoMeta['image_meta']['shutter_speed']) > 1) { - if ((number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1)) == 1.3 - or number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1) == 1.5 - or number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1) == 1.6 - or number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1) == 2.5) { - $photoShutterSpeed = "1/" . number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1, '.', '') . " second"; - } else { - $photoShutterSpeed = "1/" . number_format((1 / $photoMeta['image_meta']['shutter_speed']), 0, '.', '') . " second"; + $display_exif = dess_setting('dess_display_exif'); + $display_gps = dess_setting('dess_display_gps'); + + if ($display_exif == true) { + + $matches3 = array(); + //$coord = array(); + + + + // Le caption + //$pattern = '/

(.*?)<\/p>/'; + + //$pattern = '/

]*>(.*?)\<\/div>/'; + + // `attachment_1049` `width: 810px` `wp-caption aligncenter` + //$pattern = '/
/'; + // `attachment_1049` + //$pattern = '/
]*>(.*?)\<\/div>/'; + // `1049` + + $pattern = '/
]*>(.*?)\<\/div>/'; + preg_match_all($pattern, $content, $matches, PREG_SET_ORDER); + /* + echo "matches[0][0]"; //
...
+ echo $matches[0][0]; + echo "matches[0][1]"; // 1114 + echo $matches[0][1]; + echo "matches[0][2]"; // ... + echo $matches[0][2]; + */ + + // Pour tous les DIV (attachment) on cherche les + for ($i = 0; $i <= (count($matches) - 1); $i++) { + + $pattern2 = '/]*href=\"([^\"]*)\"[^>]*>(.*)<\/a>/siU'; + preg_match_all($pattern2, $matches[$i][0] , $matches2, PREG_SET_ORDER); + + array_push($matches3, array($matches2[0][1], $matches[$i][0])); + + /* + echo "matches2[0][0]"; // Vautour dans le brouillard de Rémuzat + echo $matches2[0][0]; + echo "matches2[0][1]"; // http://macbook-pro.local/wordpress/wp-content/uploads/2017/01/2016-12-01_VautourFauve_8789.jpg + echo $matches2[0][1]; + echo "matches2[0][2]"; // Vautour dans le brouillard de Rémuzat + echo $matches2[0][2]; + */ + //echo "count(matches2): " . count($matches2) . "
"; + + $court = $matches2[0][1]; + + $meta = creator_get_exif( $court ); + //preprint($meta); + $exif_array = img_wp_exif( $meta ); + $exifs = "
" . $exif_array[0] . (($display_gps == true) ? $exif_array[2] : '') . "
"; + $content = str_replace($matches[$i][0], $matches[$i][0] . $exifs, $content); + $matches2 = array(); + if (($meta['longitude'] != "") && ($meta['latitude'] != "")) { + if ($meta['caption'] != "") $fichier = $meta['caption']; + else if ($meta['title'] != "") $fichier = $meta['title']; + else $fichier = end(explode("/", $court)); + array_push($coord, array($meta['latitude'], $meta['longitude'], $fichier)); } - } else { - $photoShutterSpeed = $photoMeta['image_meta']['shutter_speed'] . " seconds"; - } - // print our definition list - ?> -
-
Date Taken
-
-
Camera
-
-
Focal Length
-
mm
-
Aperture
-
f/
-
ISO
-
-
Shutter Speed
-
-
- EXIF data not found

'; + } // for + + } // ($display_exif == true) + + + $pattern2 = '/]*href=\"([^\"]*)\"[^>]*>(.*)<\/a>/siU'; + preg_match_all($pattern2, $content , $matches4, PREG_SET_ORDER); + + for ($i = 0; $i <= (count($matches4) - 1); $i++) { + $ancien = $matches4[$i][0]; + $court = $matches4[$i][1]; + + // si source wordpress + if (substr_count($ancien, "wordpress") > 0) { + //echo "ancien: " . htmlentities($ancien) . "
"; + /* + $patternWP = '#wp-image-[0-9]{1,4}#'; + if (preg_match($patternWP, $ancien, $matches5) === 1) { + $attachment = substr($matches5[0],9); + */ + + // si $court est déjà dans $matches3 (si l'image est déjà dans un DIV) + if (in_multiarray($court, $matches3) == false) { + //echo "ancien: " . htmlentities($ancien) . "
"; + //echo "court: " . htmlentities($court) . "
"; + + $meta = creator_get_exif( $court ); + $exif_array = img_wp_exif( $meta ); + $exifs = "
" . $exif_array[0] . (($display_gps == true) ? $exif_array[2] : '') . "
"; + + $content = str_replace($matches4[$i][0], $matches4[$i][0] . $exifs, $content); + + if (($meta['longitude'] != "") && ($meta['latitude'] != "")) { + if ($meta['caption'] != "") $fichier = $meta['caption']; + else if ($meta['title'] != "") $fichier = $meta['title']; + else $fichier = end(explode("/", $court)); + array_push($coord, array($meta['latitude'], $meta['longitude'], $fichier)); + } + } // if in_multiarray + + } //if wordpress + + // si source zenphoto + elseif ((substr_count($ancien, 'zenphoto') != 0) and (substr_count($ancien, 'zenphoto" . "
"; + + $patternZP = '/]*href=\"([^\"]*)\"[^>]*>(.*)<\/a>/siU'; + preg_match($patternZP, $ancien , $matches2); + + $img = explode("/", $matches2[1]); + $zp_image = end($img); + $zp_album = prev($img); + + $meta = zp_query_exif( $zp_image ); + $exif_array = img_wp_exif( $meta ); + $exifs = "
" . $exif_array[0] . (($display_gps == true) ? $exif_array[2] : '') . "
"; + + $content = str_replace($matches4[$i][0], $matches4[$i][0] . $exifs, $content); + + if (($meta['longitude'] != "") && ($meta['latitude'] != "")) { + if ($meta['caption'] != "") $fichier = $meta['caption']; + else if ($meta['title'] != "") $fichier = $meta['title']; + else $fichier = end(explode("/", $court)); + array_push($coord, array($meta['latitude'], $meta['longitude'], $fichier)); + } + + } // else zenphoto + + // Autres sources que WP et ZP + elseif (substr_count($ancien, 'jpg') > 0) { + + echo $ancien; + $meta = creator_get_exif( $court ); + /* + Flicker (portrait): + + + Flicker (paysage) vautour avec branche: + + + 1600x1066 https://www.flickr.com/photos/funnymac/24826683615/sizes/o/ + https://c2.staticflickr.com/2/1544/24826683615_c42292df06_o.jpg + BBCODE [url=https://flic.kr/p/DPRf6e][img]https://c1.staticflickr.com/2/1544/24826683615_558bff1744_h.jpg[/img][/url] + + + 800x533 https://www.flickr.com/photos/funnymac/24826683615/sizes/c/ + https://c2.staticflickr.com/2/1544/24826683615_3967bc60d2_c.jpg + + $atts['link'] = $link; + $atts['small'] = $small; + $atts['big'] = $big; + + */ + + + //$anc = str_replace("/>", "class='aligncenter' style='width: " . (($portrait === false) ? "610" : "408") . "px;' />", $ancien) . "\r\n"; + //$anc = str_replace("/>", "class='aligncenter' />", $ancien) . "\r\n"; + + } // else + + + } // for + + //preprint ($coord); + + + + + return $content; + +} +add_action('the_content','addexif'); + + +function img_wp_exif( $exif_array ) { + +/* +Array +( + [aperture] => 10 + [credit] => + [camera] => Canon EOS 5D Mark III + [caption] => + [created_timestamp] => 1454520944 + [copyright] => + [focal_length] => 118 + [iso] => 800 + [shutter_speed] => 1/200 + [title] => Etang des Fontaines + [orientation] => 1 + [latitude] => 47.109745 + [longitude] => 5.0787033333333 + [keywords] => Array + ( + [0] => Etang + [1] => coucher de soleil + ) + + [latitudeRef] => N + [longitudeRef] => E + [altitude] => 206.5042 +) +*/ + + $exifInfo = ""; + $exifGPS = ""; + $geo_link = ""; + + // Si données GPS: + if ($exif_array['aperture'] != "") { + + // bloc exif (avec icones) + //$exifInfo = "
"; + $exifInfo .= "" . date(__("F j, Y, g:i a",'CreatorThemeRes-child'),$exif_array['created_timestamp']) . ""; + $exifInfo .= "" . $exif_array['camera'] . ""; + $exifInfo .= "" . $exif_array['shutter_speed'] . ""; + $exifInfo .= "" . $exif_array['aperture'] . ""; + $exifInfo .= "" . $exif_array['iso'] . ""; + $exifInfo .= ""; + $exifInfo .= (($exif_array['lens'] != "") ? $exif_array['lens'] : $exif_array['focal_length']); + $exifInfo .= ""; + //$exifInfo .= "
"; + /* + // lien exif (texte) + $exifInfo = ""; + $exifInfo = __('The','CreatorThemeRes-child') . " " . date(__("F j, Y, g:i a",'CreatorThemeRes-child'),$exif_array['created_timestamp']); + $exifInfo .= ' - ' . $exif_array['shutter_speed']; + $exifInfo .= '' . __(' at ','CreatorThemeRes-child') . "f/" . $exif_array['aperture']; + $exifInfo .= ' - ' .$exif_array['iso'].' ISO - '; + $exifInfo .= (($exif_array['lens'] != "") ? __('Lens: ','CreatorThemeRes-child') . $exif_array['lens'] : __('Focal: ','CreatorThemeRes-child') . $exif_array['focal_length'] . "mm"); + */ } - // if no featured image, echo error message - } else { - echo '

Featured image not found

'; + + // Si données GPS: + if ($exif_array['latitude'] != "") { + + // lien lat/long/alt (avec icones) + //$exifGPS = "
"; + $exifGPS .= "" . $exif_array['latitude'] . ""; + $exifGPS .= "" . $exif_array['longitude'] . ""; + $exifGPS .= "" . $exif_array['altitude'] . ""; + //$exifGPS .= "
"; + + // lien lat/long/alt (texte) + //$exifGPS .= __('Latitude: ','CreatorThemeRes-child') . $exif_array['latitude'] . __(' Longitude: ','CreatorThemeRes-child') . $exif_array['longitude'] . __(' Altitude: ','CreatorThemeRes-child') . number_format($exif_array['altitude']) . 'm'; + + //lien vers Googlemaps (globe) + $geo_link = ''; + //$geo_link .= ''; + $geo_link .= ''; + $geo_link .= ''; + } + + return array($exifInfo, $exifGPS, $geo_link); + } + + +function creator_get_exif( $file ) { + /* + if ( ! file_exists( $file ) ) { + echo "pas de fichier"; + return false; + } + */ + + list( , , $sourceImageType ) = getimagesize( $file ); + + /* + * EXIF contains a bunch of data we'll probably never need formatted in ways + * that are difficult to use. We'll normalize it and just extract the fields + * that are likely to be useful. Fractions and numbers are converted to + * floats, dates to unix timestamps, and everything else to strings. + */ + $meta = array( + 'aperture' => 0, + 'credit' => '', + 'camera' => '', + 'caption' => '', + 'created_timestamp' => 0, + 'copyright' => '', + 'focal_length' => 0, + 'iso' => 0, + 'shutter_speed' => 0, + 'title' => '', + 'orientation' => 0, + 'latitude' => 0, + 'longitude' => 0, + 'latitude' => 0, + 'altitude' => 0, + 'lens' => '', + 'keywords' => array(), + ); + + $iptc = array(); + /* + * Read IPTC first, since it might contain data not available in exif such + * as caption, description etc. + */ + if ( is_callable( 'iptcparse' ) ) { + getimagesize( $file, $info ); + + if ( ! empty( $info['APP13'] ) ) { + $iptc = iptcparse( $info['APP13'] ); + + // Headline, "A brief synopsis of the caption." + if ( ! empty( $iptc['2#105'][0] ) ) { + $meta['title'] = trim( $iptc['2#105'][0] ); + /* + * Title, "Many use the Title field to store the filename of the image, + * though the field may be used in many ways." + */ + } elseif ( ! empty( $iptc['2#005'][0] ) ) { + $meta['title'] = trim( $iptc['2#005'][0] ); + } + + if ( ! empty( $iptc['2#120'][0] ) ) { // description / legacy caption + $caption = trim( $iptc['2#120'][0] ); + + mbstring_binary_safe_encoding(); + $caption_length = strlen( $caption ); + reset_mbstring_encoding(); + + if ( empty( $meta['title'] ) && $caption_length < 80 ) { + // Assume the title is stored in 2:120 if it's short. + $meta['title'] = $caption; + } + + $meta['caption'] = $caption; + } + + if ( ! empty( $iptc['2#110'][0] ) ) // credit + $meta['credit'] = trim( $iptc['2#110'][0] ); + elseif ( ! empty( $iptc['2#080'][0] ) ) // creator / legacy byline + $meta['credit'] = trim( $iptc['2#080'][0] ); + + if ( ! empty( $iptc['2#055'][0] ) && ! empty( $iptc['2#060'][0] ) ) // created date and time + $meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] ); + + if ( ! empty( $iptc['2#116'][0] ) ) // copyright + $meta['copyright'] = trim( $iptc['2#116'][0] ); + + if ( ! empty( $iptc['2#025'][0] ) ) { // keywords array + $meta['keywords'] = array_values( $iptc['2#025'] ); + } + } + } + + //if ( is_callable( 'exif_read_data' ) && in_array( $sourceImageType, apply_filters( 'wp_read_image_metadata_types', array( IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM ) ) ) ) { + if ( is_callable( 'exif_read_data' )) { + $exif = @exif_read_data( $file ); + +//preprint($exif); + + if ( ! empty( $exif['ImageDescription'] ) ) { + mbstring_binary_safe_encoding(); + $description_length = strlen( $exif['ImageDescription'] ); + reset_mbstring_encoding(); + + if ( empty( $meta['title'] ) && $description_length < 80 ) { + // Assume the title is stored in ImageDescription + $meta['title'] = trim( $exif['ImageDescription'] ); + } + + if ( empty( $meta['caption'] ) && ! empty( $exif['COMPUTED']['UserComment'] ) ) { + $meta['caption'] = trim( $exif['COMPUTED']['UserComment'] ); + } + + if ( empty( $meta['caption'] ) ) { + $meta['caption'] = trim( $exif['ImageDescription'] ); + } + } elseif ( empty( $meta['caption'] ) && ! empty( $exif['Comments'] ) ) { + $meta['caption'] = trim( $exif['Comments'] ); + } + + if ( empty( $meta['credit'] ) ) { + if ( ! empty( $exif['Artist'] ) ) { + $meta['credit'] = trim( $exif['Artist'] ); + } elseif ( ! empty($exif['Author'] ) ) { + $meta['credit'] = trim( $exif['Author'] ); + } + } + + if ( empty( $meta['copyright'] ) && ! empty( $exif['Copyright'] ) ) { + $meta['copyright'] = trim( $exif['Copyright'] ); + } + if ( ! empty( $exif['FNumber'] ) ) { + $meta['aperture'] = "f/" . round( geo_frac2dec( $exif['FNumber'] ), 2 ); + } + if ( ! empty( $exif['Model'] ) ) { + $meta['camera'] = trim( $exif['Model'] ); + } + if ( empty( $meta['created_timestamp'] ) && ! empty( $exif['DateTimeDigitized'] ) ) { + //$meta['created_timestamp'] = wp_exif_date2ts( $exif['DateTimeDigitized'] ); + $meta['created_timestamp'] = $exif['DateTimeDigitized']; + } + if ( ! empty( $exif['FocalLength'] ) ) { + $meta['focal_length'] = (string) geo_frac2dec( $exif['FocalLength'] ) . " mm"; + } + if ( ! empty( $exif['ISOSpeedRatings'] ) ) { + $meta['iso'] = is_array( $exif['ISOSpeedRatings'] ) ? reset( $exif['ISOSpeedRatings'] ) : $exif['ISOSpeedRatings']; + $meta['iso'] = trim( $meta['iso'] ); + } + if ( ! empty( $exif['ExposureTime'] ) ) { + //$meta['shutter_speed'] = (string) wp_exif_frac2dec( $exif['ExposureTime'] ); + $meta['shutter_speed'] = $exif['ExposureTime']; + } + if ( ! empty( $exif['Orientation'] ) ) { + $meta['orientation'] = $exif['Orientation']; + } + if ( ! empty( $exif['GPSLatitude'] ) ) { + $lat = gps($exif['GPSLatitude'], trim( $exif['GPSLatitudeRef'] )); + $meta['latitude'] = number_format($lat, 6); + } + if ( ! empty( $exif['GPSLongitude'] ) ) { + $long = gps($exif['GPSLongitude'], trim( $exif['GPSLongitudeRef'] )); + $meta['longitude'] = number_format($long, 6); + } + /* + if ( ! empty( $exif['GPSLatitudeRef'] ) ) { + $meta['latitudeRef'] = trim( $exif['GPSLatitudeRef'] ); + } + if ( ! empty( $exif['GPSLongitudeRef'] ) ) { + $meta['longitudeRef'] = trim( $exif['GPSLongitudeRef'] ); + } + */ + if ( ! empty( $exif['GPSAltitude'] ) ) { + $meta['altitude'] = number_format(geo_frac2dec($exif['GPSAltitude'])); + } + if ( ! empty( $exif['UndefinedTag:0xA434'] ) ) { + $meta['lens'] = trim($exif['UndefinedTag:0xA434']); + } + // [UndefinedTag:0xA434] => 10.0-22.0 mm + // [UndefinedTag:0xA434] => EF500mm f/4L IS USM +1.4x + + } + + foreach ( array( 'title', 'caption', 'credit', 'copyright', 'camera', 'iso' ) as $key ) { + if ( $meta[ $key ] && ! seems_utf8( $meta[ $key ] ) ) { + $meta[ $key ] = utf8_encode( $meta[ $key ] ); + } + } + + foreach ( $meta['keywords'] as $key => $keyword ) { + if ( ! seems_utf8( $keyword ) ) { + $meta['keywords'][ $key ] = utf8_encode( $keyword ); + } + } + + + //$meta = wp_kses_post_deep( $meta ); + + /** + * Filters the array of meta data read from an image's exif data. + * + * @since 2.5.0 + * @since 4.4.0 The `$iptc` parameter was added. + * + * @param array $meta Image meta data. + * @param string $file Path to image file. + * @param int $sourceImageType Type of image. + * @param array $iptc IPTC data. + */ + //return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType, $iptc ); + + + return $meta; + +} + +function geo_single_fracs2dec($fracs) { + return geo_frac2dec($fracs[0]) + + geo_frac2dec($fracs[1]) / 60 + + geo_frac2dec($fracs[2]) / 3600; +} + +function geo_frac2dec($str) { + @list( $n, $d ) = explode( '/', $str ); + if ( !empty($d) ) + return $n / $d; + return $str; +} + +function gps($coordinate, $hemisphere) { + for ($i = 0; $i < 3; $i++) { + $part = explode('/', $coordinate[$i]); + if (count($part) == 1) { + $coordinate[$i] = $part[0]; + } else if (count($part) == 2) { + $coordinate[$i] = floatval($part[0])/floatval($part[1]); + } else { + $coordinate[$i] = 0; + } + } + list($degrees, $minutes, $seconds) = $coordinate; + $sign = ($hemisphere == 'W' || $hemisphere == 'S') ? -1 : 1; + return $sign * ($degrees + $minutes/60 + $seconds/3600); } -//http://cssmary.com/wordpress/customizer-api-child-theme/ +remove_shortcode('gallery', 'gallery_shortcode'); +add_shortcode('gallery', 'creator_gallery_shortcode'); + +/** + * Builds the Gallery shortcode output. + * + * This implements the functionality of the Gallery Shortcode for displaying + * WordPress images on a post. + * + * @since 2.5.0 + * + * @staticvar int $instance + * + * @param array $attr { + * Attributes of the gallery shortcode. + * + * @type string $order Order of the images in the gallery. Default 'ASC'. Accepts 'ASC', 'DESC'. + * @type string $orderby The field to use when ordering the images. Default 'menu_order ID'. + * Accepts any valid SQL ORDERBY statement. + * @type int $id Post ID. + * @type string $itemtag HTML tag to use for each image in the gallery. + * Default 'dl', or 'figure' when the theme registers HTML5 gallery support. + * @type string $icontag HTML tag to use for each image's icon. + * Default 'dt', or 'div' when the theme registers HTML5 gallery support. + * @type string $captiontag HTML tag to use for each image's caption. + * Default 'dd', or 'figcaption' when the theme registers HTML5 gallery support. + * @type int $columns Number of columns of images to display. Default 3. + * @type string|array $size Size of the images to display. Accepts any valid image size, or an array of width + * and height values in pixels (in that order). Default 'thumbnail'. + * @type string $ids A comma-separated list of IDs of attachments to display. Default empty. + * @type string $include A comma-separated list of IDs of attachments to include. Default empty. + * @type string $exclude A comma-separated list of IDs of attachments to exclude. Default empty. + * @type string $link What to link each image to. Default empty (links to the attachment page). + * Accepts 'file', 'none'. + * } + * @return string HTML content to display gallery. + */ +function creator_gallery_shortcode( $attr ) { + $post = get_post(); + + static $instance = 0; + $instance++; + + if ( ! empty( $attr['ids'] ) ) { + // 'ids' is explicitly ordered, unless you specify otherwise. + if ( empty( $attr['orderby'] ) ) { + $attr['orderby'] = 'post__in'; + } + $attr['include'] = $attr['ids']; + } + + /** + * Filters the default gallery shortcode output. + * + * If the filtered output isn't empty, it will be used instead of generating + * the default gallery template. + * + * @since 2.5.0 + * @since 4.2.0 The `$instance` parameter was added. + * + * @see gallery_shortcode() + * + * @param string $output The gallery output. Default empty. + * @param array $attr Attributes of the gallery shortcode. + * @param int $instance Unique numeric ID of this gallery shortcode instance. + */ + $output = apply_filters( 'post_gallery', '', $attr, $instance ); + if ( $output != '' ) { + return $output; + } + + $html5 = current_theme_supports( 'html5', 'gallery' ); + $atts = shortcode_atts( array( + 'order' => 'ASC', + 'orderby' => 'menu_order ID', + 'id' => $post ? $post->ID : 0, + 'itemtag' => $html5 ? 'figure' : 'dl', + 'icontag' => $html5 ? 'div' : 'dt', + 'captiontag' => $html5 ? 'figcaption' : 'dd', + 'columns' => 3, + 'size' => 'thumbnail', + 'include' => '', + 'exclude' => '', + 'link' => '' + ), $attr, 'gallery' ); + + $id = intval( $atts['id'] ); + + if ( ! empty( $atts['include'] ) ) { + $_attachments = get_posts( array( 'include' => $atts['include'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) ); + + $attachments = array(); + foreach ( $_attachments as $key => $val ) { + $attachments[$val->ID] = $_attachments[$key]; + } + } elseif ( ! empty( $atts['exclude'] ) ) { + $attachments = get_children( array( 'post_parent' => $id, 'exclude' => $atts['exclude'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) ); + } else { + $attachments = get_children( array( 'post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) ); + } + + if ( empty( $attachments ) ) { + return ''; + } + + if ( is_feed() ) { + $output = "\n"; + foreach ( $attachments as $att_id => $attachment ) { + $output .= wp_get_attachment_link( $att_id, $atts['size'], true ) . "\n"; + } + return $output; + } + + $itemtag = tag_escape( $atts['itemtag'] ); + $captiontag = tag_escape( $atts['captiontag'] ); + $icontag = tag_escape( $atts['icontag'] ); + $valid_tags = wp_kses_allowed_html( 'post' ); + if ( ! isset( $valid_tags[ $itemtag ] ) ) { + $itemtag = 'dl'; + } + if ( ! isset( $valid_tags[ $captiontag ] ) ) { + $captiontag = 'dd'; + } + if ( ! isset( $valid_tags[ $icontag ] ) ) { + $icontag = 'dt'; + } + + $columns = intval( $atts['columns'] ); + $itemwidth = $columns > 0 ? floor(100/$columns) : 100; + $float = is_rtl() ? 'right' : 'left'; + + $selector = "gallery-{$instance}"; + + $gallery_style = ''; + + /** + * Filters whether to print default gallery styles. + * + * @since 3.1.0 + * + * @param bool $print Whether to print default gallery styles. + * Defaults to false if the theme supports HTML5 galleries. + * Otherwise, defaults to true. + */ + if ( apply_filters( 'use_default_gallery_style', ! $html5 ) ) { + $gallery_style = " + \n\t\t"; + } + + $size_class = sanitize_html_class( $atts['size'] ); + $gallery_div = "\n"; + + return $output; +} + + +//http://cssmary.com/wordpress/customizer-api-child-theme/ function childtheme_customize_register( $wp_customize ) { - // remove + // remove settings $remove_socials = array('google-plus','instagram','pinterest','linkedin'); for($i=0;$iremove_setting( 'dess_'.$remove_socials[$i] ); @@ -741,7 +1592,7 @@ function childtheme_customize_register( $wp_customize ) { $wp_customize->remove_setting( 'dess_tel' ); $wp_customize->remove_control( 'dess_tel' ); - // add + // add settings $add_socials = array('500px','flickr','rss','mail'); for($i=0;$i 'settings_section', 'type' => 'text', ))); - $wp_customize->add_setting( 'dess_lightbox_choice', array( 'default' => 'b', ) ); - $wp_customize->add_control(new WP_Customize_Control($wp_customize, 'dess_lightbox_choice', array( 'label' => __('Choice of lightbox','CreatorThemeRes-child'), 'section' => 'settings_section', @@ -816,7 +1665,40 @@ function childtheme_customize_register( $wp_customize ) { 'c' => 'Featherlight', ), ))); - + $wp_customize->add_setting( 'dess_display_exif', array( + 'default' => 'trlue', + 'type' => 'theme_mod', + 'capability' => 'edit_theme_options', + ) ); + $wp_customize->add_control( 'dess_display_exif', array( + 'settings' => 'dess_display_exif', + 'label' => __('Display EXIFs','CreatorThemeRes-child'), + 'section' => 'settings_section', + 'type' => 'checkbox', + ) ); + $wp_customize->add_setting( 'dess_display_gps', array( + 'default' => 'false', + 'type' => 'theme_mod', + 'capability' => 'edit_theme_options', + ) ); + $wp_customize->add_control( 'dess_display_gps', array( + 'settings' => 'dess_display_gps', + 'label' => __('Display Geo datas','CreatorThemeRes-child'), + 'section' => 'settings_section', + 'type' => 'checkbox', + ) ); + $wp_customize->add_setting( 'dess_display_meta', array( + 'default' => 'false', + 'type' => 'theme_mod', + 'capability' => 'edit_theme_options', + ) ); + $wp_customize->add_control( 'dess_display_meta', array( + 'settings' => 'dess_display_meta', + 'label' => __('Display meta (single)','CreatorThemeRes-child'), + 'section' => 'settings_section', + 'type' => 'checkbox', + ) ); + } add_action( 'customize_register', 'childtheme_customize_register', 12); @@ -844,6 +1726,7 @@ function choice_c_callback( $control ) { } } */ + function show_bookmark_list(){ ?>
    } add_shortcode('show_bookmark_list', 'show_bookmark_list'); + +function in_multiarray($elem, $array) { + // add_exif() + + $top = sizeof($array) - 1; + $bottom = 0; + while($bottom <= $top) { + if($array[$bottom] == $elem) + return true; + else + if(is_array($array[$bottom])) + if(in_multiarray($elem, ($array[$bottom]))) + return true; + + $bottom++; + } + return false; + } + + +function toBool($var) { + //flickr + + if (!is_string($var)) return (bool) $var; + switch (strtolower($var)) { + case '1': + case 'true': + case 'on': + case 'yes': + case 'y': + return true; + default: + return false; + } +} + + //wp_prepare_attachment_for_js($attachment_id) function wp_get_attachment( $attachment_id ) { @@ -871,4 +1791,217 @@ function wp_get_attachment( $attachment_id ) { ); } + +/*** INUTILE ***/ + +/** + * Ajoute les données GPS aux métadata lors de l'importation du média + */ +function add_geo_exif($meta,$file,$sourceImageType) { + $exif = @exif_read_data( $file ); + if (!empty($exif['GPSLatitude'])) + $meta['latitude'] = $exif['GPSLatitude'] ; + if (!empty($exif['GPSLatitudeRef'])) + $meta['latitude_ref'] = trim( $exif['GPSLatitudeRef'] ); + if (!empty($exif['GPSLongitude'])) + $meta['longitude'] = $exif['GPSLongitude'] ; + if (!empty($exif['GPSLongitudeRef'])) + $meta['longitude_ref'] = trim( $exif['GPSLongitudeRef'] ); + + return $meta; +} + +add_filter('wp_read_image_metadata', 'add_geo_exif','',3); + + + +/*** A SUPPRIMER (CI-DESSOUS) ***/ + +function exifme($content) { + + /*ID du post*/ + global $post; + $postID = $post->ID; + + + if (function_exists( ' wr2x_init' ) ) $pattern = '/]* src=\"([^\"]*)\"[^>]*>/Ui'; + // sans retina + else $pattern = '/]*src=\"?([^\"]*)\"?([^>]*alt=\"?([^\"]*)\"?)?[^>]*>/Ui'; + //preg_match_all($pattern, $content , $matches, PREG_SET_ORDER); + // 2 (do_shortcode) renard wp / gp zp + + $pattern2 = '/]*href=\"([^\"]*)\"[^>]*>(.*)<\/a>/siU'; + preg_match_all($pattern2, $content , $matches, PREG_SET_ORDER); + // 8 (do_shortcode) 2 gp / 2 renard / 4 gp + + // post: gp (shortcode) / renard (wordpress) / gp (zenphoto) / gp (zenphoto) + + //preprint($matches); + + for ($i = 0; $i <= (count($matches) - 1); $i++) { + $ancien = $matches[$i][0]; + + $court = $matches[$i][1]; + + // source wordpress + if (substr_count($ancien, 'wordpress') != 0) { + + $patternWP = '#wp-image-[0-9]{1,4}#'; + if (preg_match($patternWP, $ancien, $matches2) === 1) { + $attachment = substr($matches2[0],9); + //echo $court; + echo $ancien; + + $meta = creator_get_exif( $court ); + //preprint($meta); + //$exif_array = img_wp_exif( $meta ); + //echo $exif_array[0]; + //preprint($exif_array); + + } // preg_match + + } // if wordpress + + // source zenphoto + elseif ((substr_count($ancien, 'zenphoto') != 0) and (substr_count($ancien, ' + + Flicker (paysage) vautour avec branche: + + + 1600x1066 https://www.flickr.com/photos/funnymac/24826683615/sizes/o/ + https://c2.staticflickr.com/2/1544/24826683615_c42292df06_o.jpg + BBCODE [url=https://flic.kr/p/DPRf6e][img]https://c1.staticflickr.com/2/1544/24826683615_558bff1744_h.jpg[/img][/url] + + + 800x533 https://www.flickr.com/photos/funnymac/24826683615/sizes/c/ + https://c2.staticflickr.com/2/1544/24826683615_3967bc60d2_c.jpg + + $atts['link'] = $link; + $atts['small'] = $small; + $atts['big'] = $big; + + */ + + + //$anc = str_replace("/>", "class='aligncenter' style='width: " . (($portrait === false) ? "610" : "408") . "px;' />", $ancien) . "\r\n"; + $anc = str_replace("/>", "class='aligncenter' />", $ancien) . "\r\n"; + + } // else + + // commun à WP et ZP + $exif_array = img_wp_exif( $meta ); + //preprint($exif_array); + echo $exif_array[0]; + + + } // for + + /*-----------------*/ + + return $content; + + /*-----------------*/ + + } +//add_action('the_content','exifme'); + + +/** + * Create a definition list containing EXIF data of featured image (if exists) + * + * @param string $post ID + * @return echo definition list + */ +function pa_the_post_thumbnail_exif_data($content) { + // if $postID not specified, then get global post and assign ID + if (!$postID) { + global $post; + $postID = $post->ID; + } + if (has_post_thumbnail($postID)) { + // get the meta data from the featured image + $postThumbnailID = get_post_thumbnail_id( $postID ); + $photoMeta = wp_get_attachment_metadata( $postThumbnailID ); + + // if the shutter speed is not equal to 0 + if ($photoMeta['image_meta']['shutter_speed'] != 0) { + + // Convert the shutter speed to a fraction + if ((1 / $photoMeta['image_meta']['shutter_speed']) > 1) { + if ((number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1)) == 1.3 + or number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1) == 1.5 + or number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1) == 1.6 + or number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1) == 2.5) { + $photoShutterSpeed = "1/" . number_format((1 / $photoMeta['image_meta']['shutter_speed']), 1, '.', '') . " second"; + } else { + $photoShutterSpeed = "1/" . number_format((1 / $photoMeta['image_meta']['shutter_speed']), 0, '.', '') . " second"; + } + } else { + $photoShutterSpeed = $photoMeta['image_meta']['shutter_speed'] . " seconds"; + } + // print our definition list + ?> +
    +
    Date Taken
    +
    +
    Camera
    +
    +
    Focal Length
    +
    mm
    +
    Aperture
    +
    f/
    +
    ISO
    +
    +
    Shutter Speed
    +
    +
    + EXIF data not found

    '; + } + // if no featured image, echo error message + } else { + echo '

    Featured image not found

    '; + } +} + +/* +function wp_exif_frac2dec($str) { + @list( $n, $d ) = explode( '/', $str ); + if ( !empty($d) ) + return $n / $d; + return $str; +} +function wp_exif_date2ts($str) { + @list( $date, $time ) = explode( ' ', trim($str) ); + @list( $y, $m, $d ) = explode( ':', $date ); + + return strtotime( "{$y}-{$m}-{$d} {$time}" ); +} +*/ + ?> \ No newline at end of file diff --git a/header.php b/header.php index a180ccb..0198cc5 100755 --- a/header.php +++ b/header.php @@ -60,20 +60,14 @@ height: 100%; } - + >
+ +

+

+ + + + +
+
+
+ \ No newline at end of file diff --git a/searchform.php b/searchform.php new file mode 100644 index 0000000..daa07ee --- /dev/null +++ b/searchform.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/single.php b/single.php index ecd226e..7501d93 100755 --- a/single.php +++ b/single.php @@ -1,5 +1,6 @@
@@ -7,29 +8,108 @@ get_header();
>

- + + - - + 0) ? "block" : "none") . ';">
'; ?> - + function initMap() { + var locations = [ + " . $coord[$i][2] . "', " . $coord[$i][0] . ", " . $coord[$i][1] . "]" . (($i<$j) ? "," : "")."\r\n"; + echo "['" . $coord[$i][2] . "', " . $coord[$i][0] . ", " . $coord[$i][1] . "]" . (($i<$j) ? "," : "")."\r\n"; + } + ?> + ]; - echo $my_data['image_meta']['credit']; - ?> + // Setup the different icons and shadows + var iconURLPrefix = 'https://maps.google.com/mapfiles/ms/icons/'; + + var icons = [ + iconURLPrefix + 'red-dot.png', + iconURLPrefix + 'green-dot.png', + iconURLPrefix + 'blue-dot.png', + iconURLPrefix + 'orange-dot.png', + iconURLPrefix + 'purple-dot.png', + iconURLPrefix + 'pink-dot.png', + iconURLPrefix + 'yellow-dot.png' + ] + var iconsLength = icons.length; -

EXIF Data

- + window.map = new google.maps.Map(document.getElementById('map'), { + mapTypeId: google.maps.MapTypeId.ROADMAP + }); - '+ + '
'+ + '
'+ + '

' + locations[i][0] + '

'+ + '
'+ + '
'+ + '
'; + infowindow.setContent(contentString); + */ + infowindow.setContent(locations[i][0]); + infowindow.open(map, marker); + } + })(marker, i)); + } + + map.fitBounds(bounds); + + var listener = google.maps.event.addListener(map, "idle", function () { + map.setZoom(8); + google.maps.event.removeListener(listener); + }); +} + + + + + + + + + + '', @@ -37,8 +117,7 @@ get_header(); 'link_after' => '' )); ?> - Tags: ', ', ', '
' ); ?> - ' . __('Tags: ', 'CreatorThemeRes-child'), ', ', '
' ); ?> + ' . __('Tags: ', 'CreatorThemeRes-child'), ', ', '' ); ?>