From 9e86892917f0dcc68aab57810f2545f34067d120 Mon Sep 17 00:00:00 2001 From: Ricardo Rauch Date: Sat, 28 Sep 2013 06:22:57 -0300 Subject: [PATCH] first commit --- 404.php | 47 + README.md | 14 + archive.php | 96 ++ comments.php | 73 + content.php | 28 + footer.php | 27 + functions.php | 132 ++ header.php | 88 + image.php | 111 ++ images/.DS_Store | Bin 0 -> 6148 bytes images/Untitled-2.png | Bin 0 -> 275 bytes images/anchor.svg | 19 + images/favicon.ico | Bin 0 -> 113 bytes images/icon-about.png | Bin 0 -> 332 bytes images/icon-email.png | Bin 0 -> 415 bytes images/icon-github.png | Bin 0 -> 450 bytes images/icon-instagram.png | Bin 0 -> 49156 bytes images/icon-music.png | Bin 0 -> 559 bytes images/icon-page.png | Bin 0 -> 228 bytes images/icon-rss.png | Bin 0 -> 410 bytes images/icon-twitter.png | Bin 0 -> 369 bytes images/icons/acting_large.png | Bin 0 -> 3060 bytes images/icons/atom_large.png | Bin 0 -> 3302 bytes images/icons/automobile_large.png | Bin 0 -> 2232 bytes images/icons/bear_large.png | Bin 0 -> 1869 bytes images/icons/beer_large.png | Bin 0 -> 4135 bytes images/icons/bolt_large.png | Bin 0 -> 2503 bytes images/icons/bullhorn_large.png | Bin 0 -> 1981 bytes images/icons/business_man_large.png | Bin 0 -> 2798 bytes images/icons/cassette_large.png | Bin 0 -> 1946 bytes images/icons/cell_phone_large.png | Bin 0 -> 2100 bytes images/icons/chain_link_large.png | Bin 0 -> 2128 bytes images/icons/cloudrain_large.png | Bin 0 -> 2389 bytes images/icons/coffee_large.png | Bin 0 -> 2297 bytes images/icons/cog_head_large.png | Bin 0 -> 2744 bytes images/icons/crab_large.png | Bin 0 -> 9040 bytes images/icons/day_night_large.png | Bin 0 -> 10402 bytes images/icons/disapprove_large.png | Bin 0 -> 1939 bytes images/icons/dog_large.png | Bin 0 -> 2171 bytes images/icons/eye_large.png | Bin 0 -> 2157 bytes images/icons/film_large.png | Bin 0 -> 2027 bytes images/icons/flask_large.png | Bin 0 -> 2176 bytes images/icons/ghost_large.png | Bin 0 -> 1964 bytes images/icons/glasses_large.png | Bin 0 -> 2173 bytes images/icons/glider_large.png | Bin 0 -> 5800 bytes images/icons/guitar_large.png | Bin 0 -> 2335 bytes images/icons/hand_large.png | Bin 0 -> 5817 bytes images/icons/hat_large.png | Bin 0 -> 2412 bytes images/icons/heart_large.png | Bin 0 -> 1744 bytes images/icons/infection_large.png | Bin 0 -> 8244 bytes images/icons/infinity_large.png | Bin 0 -> 1972 bytes images/icons/iphone_large.png | Bin 0 -> 1540 bytes images/icons/lemon_large.png | Bin 0 -> 3986 bytes images/icons/like_large.png | Bin 0 -> 2331 bytes images/icons/lotus_large.png | Bin 0 -> 8385 bytes images/icons/man_stairs_large.png | Bin 0 -> 2668 bytes images/icons/mine_cross_large.png | Bin 0 -> 2710 bytes images/icons/money_large.png | Bin 0 -> 2244 bytes images/icons/motorcycle_large.png | Bin 0 -> 7606 bytes images/icons/mustache_large.png | Bin 0 -> 4155 bytes images/icons/no_smoking_large.png | Bin 0 -> 3234 bytes images/icons/pan_ui_large.png | Bin 0 -> 1545 bytes images/icons/paperplane_large.png | Bin 0 -> 2947 bytes images/icons/quotes_large.png | Bin 0 -> 3385 bytes images/icons/radio_large.png | Bin 0 -> 3252 bytes images/icons/rain_large.png | Bin 0 -> 6510 bytes images/icons/robot_square_large.png | Bin 0 -> 2097 bytes images/icons/scenic_viewpoint_large.png | Bin 0 -> 7895 bytes images/icons/soccer_shoe_large.png | Bin 0 -> 6400 bytes images/icons/star_large.png | Bin 0 -> 1933 bytes images/icons/stress_large.png | Bin 0 -> 2314 bytes images/icons/sunrise_large.png | Bin 0 -> 2483 bytes images/icons/thumbs/acting.png | Bin 0 -> 2005 bytes images/icons/thumbs/atom.png | Bin 0 -> 1114 bytes images/icons/thumbs/automobile.png | Bin 0 -> 1616 bytes images/icons/thumbs/bear.png | Bin 0 -> 743 bytes images/icons/thumbs/beer.png | Bin 0 -> 608 bytes images/icons/thumbs/bolt.png | Bin 0 -> 658 bytes images/icons/thumbs/bullhorn.png | Bin 0 -> 478 bytes images/icons/thumbs/business_man.png | Bin 0 -> 939 bytes images/icons/thumbs/cassette.png | Bin 0 -> 496 bytes images/icons/thumbs/cell_phone.png | Bin 0 -> 556 bytes images/icons/thumbs/chain_link.png | Bin 0 -> 900 bytes images/icons/thumbs/cloudrain.png | Bin 0 -> 1756 bytes images/icons/thumbs/coffee.png | Bin 0 -> 636 bytes images/icons/thumbs/cog_head.png | Bin 0 -> 906 bytes images/icons/thumbs/crab.png | Bin 0 -> 1199 bytes images/icons/thumbs/day_night.png | Bin 0 -> 1564 bytes images/icons/thumbs/disapprove.png | Bin 0 -> 466 bytes images/icons/thumbs/dog.png | Bin 0 -> 583 bytes images/icons/thumbs/eye.png | Bin 0 -> 973 bytes images/icons/thumbs/film.png | Bin 0 -> 565 bytes images/icons/thumbs/flask.png | Bin 0 -> 958 bytes images/icons/thumbs/ghost.png | Bin 0 -> 506 bytes images/icons/thumbs/glasses.png | Bin 0 -> 639 bytes images/icons/thumbs/glider.png | Bin 0 -> 786 bytes images/icons/thumbs/guitar.png | Bin 0 -> 1628 bytes images/icons/thumbs/hand.png | Bin 0 -> 787 bytes images/icons/thumbs/hat.png | Bin 0 -> 707 bytes images/icons/thumbs/heart.png | Bin 0 -> 528 bytes images/icons/thumbs/infection.png | Bin 0 -> 1302 bytes images/icons/thumbs/infinity.png | Bin 0 -> 827 bytes images/icons/thumbs/iphone.png | Bin 0 -> 296 bytes images/icons/thumbs/lemon.png | Bin 0 -> 567 bytes images/icons/thumbs/like.png | Bin 0 -> 643 bytes images/icons/thumbs/lotus.png | Bin 0 -> 1097 bytes images/icons/thumbs/man_stairs.png | Bin 0 -> 836 bytes images/icons/thumbs/mine_cross.png | Bin 0 -> 934 bytes images/icons/thumbs/money.png | Bin 0 -> 1679 bytes images/icons/thumbs/motorcycle.png | Bin 0 -> 1110 bytes images/icons/thumbs/mustache.png | Bin 0 -> 580 bytes images/icons/thumbs/no_smoking.png | Bin 0 -> 1180 bytes images/icons/thumbs/pan_ui.png | Bin 0 -> 503 bytes images/icons/thumbs/paperplane.png | Bin 0 -> 1989 bytes images/icons/thumbs/quotes.png | Bin 0 -> 416 bytes images/icons/thumbs/radio.png | Bin 0 -> 1167 bytes images/icons/thumbs/rain.png | Bin 0 -> 995 bytes images/icons/thumbs/robot_square.png | Bin 0 -> 534 bytes images/icons/thumbs/scenic_viewpoint.png | Bin 0 -> 1243 bytes images/icons/thumbs/soccer_shoe.png | Bin 0 -> 961 bytes images/icons/thumbs/star.png | Bin 0 -> 731 bytes images/icons/thumbs/stress.png | Bin 0 -> 601 bytes images/icons/thumbs/sunrise.png | Bin 0 -> 646 bytes images/icons/thumbs/whale.png | Bin 0 -> 1553 bytes images/icons/thumbs/wrench.png | Bin 0 -> 1004 bytes images/icons/whale_large.png | Bin 0 -> 2126 bytes images/icons/wrench_large.png | Bin 0 -> 7755 bytes images/logo.png | Bin 0 -> 51609 bytes images/open.png | Bin 0 -> 944 bytes inc/Theme-Updater/.gitignore | 7 + inc/Theme-Updater/admin-style.css | 47 + inc/Theme-Updater/assets.php | 296 ++++ inc/Theme-Updater/readme.markdown | 132 ++ inc/Theme-Updater/screenshot-1.png | Bin 0 -> 69174 bytes inc/Theme-Updater/screenshot-2.png | Bin 0 -> 26388 bytes inc/Theme-Updater/screenshot-3.png | Bin 0 -> 65014 bytes inc/Theme-Updater/updater.php | 167 ++ inc/licence.php | 118 ++ .../css/color-picker.min.css | 1 + .../css/optionsframework.css | 239 +++ inc/options-framework/images/ico-delete.png | Bin 0 -> 715 bytes inc/options-framework/js/color-picker.min.js | 1 + inc/options-framework/js/iris.min.js | 4 + inc/options-framework/js/media-uploader.js | 79 + inc/options-framework/js/options-custom.js | 91 + .../lang/options-framework-hu_HU.po | 135 ++ .../lang/options-framework.pot | 370 +++++ .../lang/optionsframework-es_ES.mo | Bin 0 -> 2555 bytes .../lang/optionsframework-es_ES.po | 142 ++ .../lang/optionsframework-fa_IR.mo | Bin 0 -> 1768 bytes .../lang/optionsframework-fa_IR.po | 141 ++ .../lang/optionsframework-fr_FR.mo | Bin 0 -> 2559 bytes .../lang/optionsframework-fr_FR.po | 149 ++ .../lang/optionsframework-it_IT.mo | Bin 0 -> 2435 bytes .../lang/optionsframework-it_IT.po | 142 ++ .../lang/optionsframework-pt_BR.mo | Bin 0 -> 2459 bytes .../lang/optionsframework-pt_BR.po | 142 ++ .../lang/optionsframework-ru_RU.mo | Bin 0 -> 3215 bytes .../lang/optionsframework-ru_RU.po | 143 ++ .../lang/optionsframework-sv_SE.mo | Bin 0 -> 2464 bytes .../lang/optionsframework-sv_SE.po | 146 ++ .../lang/optionsframework-zh_CN.mo | Bin 0 -> 2273 bytes .../lang/optionsframework-zh_CN.po | 145 ++ .../options-check/footer.php | 24 + .../options-check/functions.php | 108 ++ .../options-check/header.php | 19 + .../options-check/images/1col.png | Bin 0 -> 184 bytes .../options-check/images/2cl.png | Bin 0 -> 226 bytes .../options-check/images/2cr.png | Bin 0 -> 221 bytes inc/options-framework/options-check/index.php | 202 +++ .../options-check/options.php | 286 ++++ .../options-check/screenshot.png | Bin 0 -> 19360 bytes inc/options-framework/options-check/style.css | 44 + inc/options-framework/options-framework.php | 573 +++++++ inc/options-framework/options-interface.php | 409 +++++ .../options-media-uploader.php | 113 ++ inc/options-framework/options-sanitize.php | 380 +++++ .../options-theme-customizer/footer.php | 24 + .../options-theme-customizer/functions.php | 27 + .../options-theme-customizer/header.php | 19 + .../options-theme-customizer/index.php | 60 + .../options-theme-customizer/options.php | 182 ++ .../options-theme-customizer/screenshot.png | Bin 0 -> 25807 bytes .../options-theme-customizer/style.css | 53 + inc/options-framework/readme.md | 183 ++ inc/options-framework/readme.txt | 198 +++ inc/options-framework/screenshot-1.png | Bin 0 -> 19283 bytes inc/plugins/nav-menu-images/inc/admin.php | 275 +++ inc/plugins/nav-menu-images/inc/media-view.js | 104 ++ inc/plugins/nav-menu-images/inc/nmi.js | 54 + inc/plugins/nav-menu-images/inc/walker.php | 198 +++ .../nav-menu-images/languages/nmi-sr_RS.mo | Bin 0 -> 2243 bytes .../nav-menu-images/languages/nmi-sr_RS.po | 77 + inc/plugins/nav-menu-images/languages/nmi.pot | 71 + .../nav-menu-images/nav-menu-images.php | 336 ++++ inc/plugins/nav-menu-images/readme.txt | 55 + inc/template-tags.php | 174 ++ inc/tweaks.php | 52 + index.php | 52 + js/.DS_Store | Bin 0 -> 6148 bytes js/html5.js | 6 + js/keyboard-image-navigation.js | 14 + js/prettify/lang-apollo.js | 51 + js/prettify/lang-clj.js | 64 + js/prettify/lang-css.js | 78 + js/prettify/lang-go.js | 58 + js/prettify/lang-hs.js | 101 ++ js/prettify/lang-lisp.js | 93 ++ js/prettify/lang-lua.js | 59 + js/prettify/lang-ml.js | 56 + js/prettify/lang-n.js | 62 + js/prettify/lang-proto.js | 35 + js/prettify/lang-scala.js | 54 + js/prettify/lang-sql.js | 57 + js/prettify/lang-tex.js | 46 + js/prettify/lang-vb.js | 61 + js/prettify/lang-vhdl.js | 34 + js/prettify/lang-wiki.js | 53 + js/prettify/lang-xq.js | 67 + js/prettify/lang-yaml.js | 27 + js/prettify/prettify.css | 52 + js/prettify/prettify.js | 1477 +++++++++++++++++ js/site.js | 31 + js/snap.min.js | 11 + license.txt | 281 ++++ no-results.php | 37 + page-instagram.php | 51 + page-lastfm.php | 55 + page.php | 28 + rtl.css | 17 + screenshot.png | Bin 0 -> 18123 bytes search.php | 41 + searchform.php | 13 + sidebar.php | 38 + single.php | 30 + style.css | 637 +++++++ style.styl | 371 +++++ translations/readme.txt | 6 + 238 files changed, 12076 insertions(+) create mode 100755 404.php create mode 100755 README.md create mode 100755 archive.php create mode 100755 comments.php create mode 100755 content.php create mode 100755 footer.php create mode 100755 functions.php create mode 100755 header.php create mode 100755 image.php create mode 100755 images/.DS_Store create mode 100755 images/Untitled-2.png create mode 100755 images/anchor.svg create mode 100755 images/favicon.ico create mode 100755 images/icon-about.png create mode 100755 images/icon-email.png create mode 100755 images/icon-github.png create mode 100755 images/icon-instagram.png create mode 100755 images/icon-music.png create mode 100755 images/icon-page.png create mode 100755 images/icon-rss.png create mode 100755 images/icon-twitter.png create mode 100755 images/icons/acting_large.png create mode 100755 images/icons/atom_large.png create mode 100755 images/icons/automobile_large.png create mode 100755 images/icons/bear_large.png create mode 100755 images/icons/beer_large.png create mode 100755 images/icons/bolt_large.png create mode 100755 images/icons/bullhorn_large.png create mode 100755 images/icons/business_man_large.png create mode 100755 images/icons/cassette_large.png create mode 100755 images/icons/cell_phone_large.png create mode 100755 images/icons/chain_link_large.png create mode 100755 images/icons/cloudrain_large.png create mode 100755 images/icons/coffee_large.png create mode 100755 images/icons/cog_head_large.png create mode 100755 images/icons/crab_large.png create mode 100755 images/icons/day_night_large.png create mode 100755 images/icons/disapprove_large.png create mode 100755 images/icons/dog_large.png create mode 100755 images/icons/eye_large.png create mode 100755 images/icons/film_large.png create mode 100755 images/icons/flask_large.png create mode 100755 images/icons/ghost_large.png create mode 100755 images/icons/glasses_large.png create mode 100755 images/icons/glider_large.png create mode 100755 images/icons/guitar_large.png create mode 100755 images/icons/hand_large.png create mode 100755 images/icons/hat_large.png create mode 100755 images/icons/heart_large.png create mode 100755 images/icons/infection_large.png create mode 100755 images/icons/infinity_large.png create mode 100755 images/icons/iphone_large.png create mode 100755 images/icons/lemon_large.png create mode 100755 images/icons/like_large.png create mode 100755 images/icons/lotus_large.png create mode 100755 images/icons/man_stairs_large.png create mode 100755 images/icons/mine_cross_large.png create mode 100755 images/icons/money_large.png create mode 100755 images/icons/motorcycle_large.png create mode 100755 images/icons/mustache_large.png create mode 100755 images/icons/no_smoking_large.png create mode 100755 images/icons/pan_ui_large.png create mode 100755 images/icons/paperplane_large.png create mode 100755 images/icons/quotes_large.png create mode 100755 images/icons/radio_large.png create mode 100755 images/icons/rain_large.png create mode 100755 images/icons/robot_square_large.png create mode 100755 images/icons/scenic_viewpoint_large.png create mode 100755 images/icons/soccer_shoe_large.png create mode 100755 images/icons/star_large.png create mode 100755 images/icons/stress_large.png create mode 100755 images/icons/sunrise_large.png create mode 100755 images/icons/thumbs/acting.png create mode 100755 images/icons/thumbs/atom.png create mode 100755 images/icons/thumbs/automobile.png create mode 100755 images/icons/thumbs/bear.png create mode 100755 images/icons/thumbs/beer.png create mode 100755 images/icons/thumbs/bolt.png create mode 100755 images/icons/thumbs/bullhorn.png create mode 100755 images/icons/thumbs/business_man.png create mode 100755 images/icons/thumbs/cassette.png create mode 100755 images/icons/thumbs/cell_phone.png create mode 100755 images/icons/thumbs/chain_link.png create mode 100755 images/icons/thumbs/cloudrain.png create mode 100755 images/icons/thumbs/coffee.png create mode 100755 images/icons/thumbs/cog_head.png create mode 100755 images/icons/thumbs/crab.png create mode 100755 images/icons/thumbs/day_night.png create mode 100755 images/icons/thumbs/disapprove.png create mode 100755 images/icons/thumbs/dog.png create mode 100755 images/icons/thumbs/eye.png create mode 100755 images/icons/thumbs/film.png create mode 100755 images/icons/thumbs/flask.png create mode 100755 images/icons/thumbs/ghost.png create mode 100755 images/icons/thumbs/glasses.png create mode 100755 images/icons/thumbs/glider.png create mode 100755 images/icons/thumbs/guitar.png create mode 100755 images/icons/thumbs/hand.png create mode 100755 images/icons/thumbs/hat.png create mode 100755 images/icons/thumbs/heart.png create mode 100755 images/icons/thumbs/infection.png create mode 100755 images/icons/thumbs/infinity.png create mode 100755 images/icons/thumbs/iphone.png create mode 100755 images/icons/thumbs/lemon.png create mode 100755 images/icons/thumbs/like.png create mode 100755 images/icons/thumbs/lotus.png create mode 100755 images/icons/thumbs/man_stairs.png create mode 100755 images/icons/thumbs/mine_cross.png create mode 100755 images/icons/thumbs/money.png create mode 100755 images/icons/thumbs/motorcycle.png create mode 100755 images/icons/thumbs/mustache.png create mode 100755 images/icons/thumbs/no_smoking.png create mode 100755 images/icons/thumbs/pan_ui.png create mode 100755 images/icons/thumbs/paperplane.png create mode 100755 images/icons/thumbs/quotes.png create mode 100755 images/icons/thumbs/radio.png create mode 100755 images/icons/thumbs/rain.png create mode 100755 images/icons/thumbs/robot_square.png create mode 100755 images/icons/thumbs/scenic_viewpoint.png create mode 100755 images/icons/thumbs/soccer_shoe.png create mode 100755 images/icons/thumbs/star.png create mode 100755 images/icons/thumbs/stress.png create mode 100755 images/icons/thumbs/sunrise.png create mode 100755 images/icons/thumbs/whale.png create mode 100755 images/icons/thumbs/wrench.png create mode 100755 images/icons/whale_large.png create mode 100755 images/icons/wrench_large.png create mode 100755 images/logo.png create mode 100755 images/open.png create mode 100755 inc/Theme-Updater/.gitignore create mode 100755 inc/Theme-Updater/admin-style.css create mode 100755 inc/Theme-Updater/assets.php create mode 100755 inc/Theme-Updater/readme.markdown create mode 100755 inc/Theme-Updater/screenshot-1.png create mode 100755 inc/Theme-Updater/screenshot-2.png create mode 100755 inc/Theme-Updater/screenshot-3.png create mode 100755 inc/Theme-Updater/updater.php create mode 100644 inc/licence.php create mode 100755 inc/options-framework/css/color-picker.min.css create mode 100755 inc/options-framework/css/optionsframework.css create mode 100755 inc/options-framework/images/ico-delete.png create mode 100755 inc/options-framework/js/color-picker.min.js create mode 100755 inc/options-framework/js/iris.min.js create mode 100755 inc/options-framework/js/media-uploader.js create mode 100755 inc/options-framework/js/options-custom.js create mode 100755 inc/options-framework/lang/options-framework-hu_HU.po create mode 100755 inc/options-framework/lang/options-framework.pot create mode 100755 inc/options-framework/lang/optionsframework-es_ES.mo create mode 100755 inc/options-framework/lang/optionsframework-es_ES.po create mode 100755 inc/options-framework/lang/optionsframework-fa_IR.mo create mode 100755 inc/options-framework/lang/optionsframework-fa_IR.po create mode 100755 inc/options-framework/lang/optionsframework-fr_FR.mo create mode 100755 inc/options-framework/lang/optionsframework-fr_FR.po create mode 100755 inc/options-framework/lang/optionsframework-it_IT.mo create mode 100755 inc/options-framework/lang/optionsframework-it_IT.po create mode 100755 inc/options-framework/lang/optionsframework-pt_BR.mo create mode 100755 inc/options-framework/lang/optionsframework-pt_BR.po create mode 100755 inc/options-framework/lang/optionsframework-ru_RU.mo create mode 100755 inc/options-framework/lang/optionsframework-ru_RU.po create mode 100755 inc/options-framework/lang/optionsframework-sv_SE.mo create mode 100755 inc/options-framework/lang/optionsframework-sv_SE.po create mode 100755 inc/options-framework/lang/optionsframework-zh_CN.mo create mode 100755 inc/options-framework/lang/optionsframework-zh_CN.po create mode 100755 inc/options-framework/options-check/footer.php create mode 100755 inc/options-framework/options-check/functions.php create mode 100755 inc/options-framework/options-check/header.php create mode 100755 inc/options-framework/options-check/images/1col.png create mode 100755 inc/options-framework/options-check/images/2cl.png create mode 100755 inc/options-framework/options-check/images/2cr.png create mode 100755 inc/options-framework/options-check/index.php create mode 100755 inc/options-framework/options-check/options.php create mode 100755 inc/options-framework/options-check/screenshot.png create mode 100755 inc/options-framework/options-check/style.css create mode 100755 inc/options-framework/options-framework.php create mode 100755 inc/options-framework/options-interface.php create mode 100755 inc/options-framework/options-media-uploader.php create mode 100755 inc/options-framework/options-sanitize.php create mode 100755 inc/options-framework/options-theme-customizer/footer.php create mode 100755 inc/options-framework/options-theme-customizer/functions.php create mode 100755 inc/options-framework/options-theme-customizer/header.php create mode 100755 inc/options-framework/options-theme-customizer/index.php create mode 100755 inc/options-framework/options-theme-customizer/options.php create mode 100755 inc/options-framework/options-theme-customizer/screenshot.png create mode 100755 inc/options-framework/options-theme-customizer/style.css create mode 100755 inc/options-framework/readme.md create mode 100755 inc/options-framework/readme.txt create mode 100755 inc/options-framework/screenshot-1.png create mode 100755 inc/plugins/nav-menu-images/inc/admin.php create mode 100755 inc/plugins/nav-menu-images/inc/media-view.js create mode 100755 inc/plugins/nav-menu-images/inc/nmi.js create mode 100755 inc/plugins/nav-menu-images/inc/walker.php create mode 100755 inc/plugins/nav-menu-images/languages/nmi-sr_RS.mo create mode 100755 inc/plugins/nav-menu-images/languages/nmi-sr_RS.po create mode 100755 inc/plugins/nav-menu-images/languages/nmi.pot create mode 100755 inc/plugins/nav-menu-images/nav-menu-images.php create mode 100755 inc/plugins/nav-menu-images/readme.txt create mode 100755 inc/template-tags.php create mode 100755 inc/tweaks.php create mode 100755 index.php create mode 100644 js/.DS_Store create mode 100755 js/html5.js create mode 100755 js/keyboard-image-navigation.js create mode 100755 js/prettify/lang-apollo.js create mode 100755 js/prettify/lang-clj.js create mode 100755 js/prettify/lang-css.js create mode 100755 js/prettify/lang-go.js create mode 100755 js/prettify/lang-hs.js create mode 100755 js/prettify/lang-lisp.js create mode 100755 js/prettify/lang-lua.js create mode 100755 js/prettify/lang-ml.js create mode 100755 js/prettify/lang-n.js create mode 100755 js/prettify/lang-proto.js create mode 100755 js/prettify/lang-scala.js create mode 100755 js/prettify/lang-sql.js create mode 100755 js/prettify/lang-tex.js create mode 100755 js/prettify/lang-vb.js create mode 100755 js/prettify/lang-vhdl.js create mode 100755 js/prettify/lang-wiki.js create mode 100755 js/prettify/lang-xq.js create mode 100755 js/prettify/lang-yaml.js create mode 100755 js/prettify/prettify.css create mode 100755 js/prettify/prettify.js create mode 100755 js/site.js create mode 100755 js/snap.min.js create mode 100755 license.txt create mode 100755 no-results.php create mode 100755 page-instagram.php create mode 100755 page-lastfm.php create mode 100755 page.php create mode 100755 rtl.css create mode 100755 screenshot.png create mode 100755 search.php create mode 100755 searchform.php create mode 100755 sidebar.php create mode 100755 single.php create mode 100755 style.css create mode 100755 style.styl create mode 100755 translations/readme.txt diff --git a/404.php b/404.php new file mode 100755 index 0000000..318a7f8 --- /dev/null +++ b/404.php @@ -0,0 +1,47 @@ + + +
+
+ +
+
+

+
+ +
+

+ + + + + +
+

+
    + 'count', 'order' => 'DESC', 'show_count' => 1, 'title_li' => '', 'number' => 10 ) ); ?> +
+
+ + ' . sprintf( __( 'Try looking in the monthly archives. %1$s', 'symbol' ), convert_smilies( ':)' ) ) . '

'; + the_widget( 'WP_Widget_Archives', 'dropdown=1', "after_title=$archive_content" ); + ?> + + + +
+
+ +
+
+ + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100755 index 0000000..54e2dbd --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +Symbol Theme +=========== +[![image](https://i.cloudup.com/owMC2owNcs.png)](https://cloudup.com/cfgcHouElDv) + +Installation +------------ +1. Move the folder wp-content/themes/ or upload from your admin area (Plugins > Upload) +2. Enable the theme from the admin panel + +Licence +--------------- +[![Creative Commons License](http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png)](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.en_US) + +This work is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.en_US). \ No newline at end of file diff --git a/archive.php b/archive.php new file mode 100755 index 0000000..6679b91 --- /dev/null +++ b/archive.php @@ -0,0 +1,96 @@ + + +
+
+ + + +
' ); + + } elseif ( is_tag() ) { + // show an optional tag description + $tag_description = tag_description(); + if ( ! empty( $tag_description ) ) + echo apply_filters( 'tag_archive_meta', '
' . $tag_description . '
' ); + } + ?> + + + + + + + + + + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/comments.php b/comments.php new file mode 100755 index 0000000..22fb5ad --- /dev/null +++ b/comments.php @@ -0,0 +1,73 @@ + + + + +
+ + + + +

+ +

+ + 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> + + + +
    + 'symbol_comment' ) ); + ?> +
+ + 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> + + + + + + +

+ + + + +
diff --git a/content.php b/content.php new file mode 100755 index 0000000..f18223d --- /dev/null +++ b/content.php @@ -0,0 +1,28 @@ + + +
> +
+
+ +

+ +
+ + +
+ +
+ +
+ →', 'symbol' ) ); ?> + '' ) ); ?> +
+ +
+ +
diff --git a/footer.php b/footer.php new file mode 100755 index 0000000..cd5f619 --- /dev/null +++ b/footer.php @@ -0,0 +1,27 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/functions.php b/functions.php new file mode 100755 index 0000000..a6439f2 --- /dev/null +++ b/functions.php @@ -0,0 +1,132 @@ + __( 'Primary Menu', 'symbol' ), + ) ); +} +endif; // symbol_setup +add_action( 'after_setup_theme', 'symbol_setup' ); + +/** + * Register widgetized area and update sidebar with default widgets + * + * @since Symbol 1.0 + */ +function symbol_widgets_init() { + register_sidebar( array( + 'name' => __( 'Sidebar', 'symbol' ), + 'id' => 'sidebar-1', + 'before_widget' => '', + 'before_title' => '

', + 'after_title' => '

', + ) ); +} +add_action( 'widgets_init', 'symbol_widgets_init' ); + +/** + * Enqueue scripts and styles + */ +function symbol_scripts() { + + wp_enqueue_style( 'normalize', '//normalize-css.googlecode.com/svn/trunk/normalize.css'); + wp_enqueue_style( 'prettify', '//google-code-prettify.googlecode.com/svn/trunk/src/prettify.css'); + wp_enqueue_style( 'style', get_stylesheet_uri() ); + + wp_deregister_script( 'jquery' ); + wp_register_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'); + wp_enqueue_script( 'jquery' ); + wp_enqueue_script( 'snap-js', get_template_directory_uri() . '/js/snap.min.js', array('jquery'), '20130115', true ); + wp_enqueue_script( 'prettify', '//google-code-prettify.googlecode.com/svn/trunk/src/prettify.js', array( ), '20120206', true ); + wp_enqueue_script( 'site-js', get_template_directory_uri() . '/js/site.js', array( 'jquery', 'prettify', 'snap-js'), '20120206', true ); + + + + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { + wp_enqueue_script( 'comment-reply' ); + } + + if ( is_singular() && wp_attachment_is_image() ) { + wp_enqueue_script( 'keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20120202' ); + } +} +add_action( 'wp_enqueue_scripts', 'symbol_scripts' ); + + +add_action('admin_head', 'load_theme_scripts'); + + + +require( get_template_directory() . '/inc/plugins/nav-menu-images/nav-menu-images.php' ); + +if (get_option('licence_symbol')) { + + // Re-define the options-framework URL + define( 'OPTIONS_FRAMEWORK_URL', get_template_directory_uri() . '/inc/options-framework/' ); + + // Load the Options Framework Plugin + if ( !function_exists( 'optionsframework_init' ) ) { + define( 'OPTIONS_FRAMEWORK_DIRECTORY', get_template_directory() . '/inc/options-framework/' ); + require_once OPTIONS_FRAMEWORK_DIRECTORY . 'options-framework.php'; + } + + require get_template_directory() . '/inc/Theme-Updater/updater.php'; + +}else{ + require_once 'inc/licence.php'; +} + + diff --git a/header.php b/header.php new file mode 100755 index 0000000..73b8592 --- /dev/null +++ b/header.php @@ -0,0 +1,88 @@ + section and everything up till
+ * + * @package Symbol + * @since Symbol 1.0 + */ +?> +> + + + +<?php wp_title( 'by', true, 'right' ); bloginfo( 'name' ); ?> + + + + + + + + + + + + + +> + + + + +
+ + + + + + + + + diff --git a/image.php b/image.php new file mode 100755 index 0000000..ee8063e --- /dev/null +++ b/image.php @@ -0,0 +1,111 @@ + + +
+
+ + + +
> +
+

+ + + + +
+ +
+ +
+
+ $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) ); + foreach ( $attachments as $k => $attachment ) { + if ( $attachment->ID == $post->ID ) + break; + } + $k++; + // If there is more than 1 attachment in a gallery + if ( count( $attachments ) > 1 ) { + if ( isset( $attachments[ $k ] ) ) + // get the URL of the next image attachment + $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID ); + else + // or get the URL of the first image attachment + $next_attachment_url = get_attachment_link( $attachments[ 0 ]->ID ); + } else { + // or, if there's only 1 image, get the URL of the image + $next_attachment_url = wp_get_attachment_url(); + } + ?> + + ID, $attachment_size ); + ?> +
+ + post_excerpt ) ) : ?> +
+ +
+ +
+ + + '' ) ); ?> + +
+ +
+ + Post a comment or leave a trackback: Trackback URL.', 'symbol' ), get_trackback_url() ); ?> + + Trackback URL.', 'symbol' ), get_trackback_url() ); ?> + + post a comment.', 'symbol' ); ?> + + + + ', '' ); ?> +
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0IQ+eo=O@f^)Fhi#?lqfa*j* z>YR&G6H7Al^Atidb5j`%_09ARjdxW0UIfbLdb&7WJGvgL`N_anh__B(fpkEgyj+??34Z;HTwjt|F# z$~Z$?!WiW${VfZV*G+VLd0)%vtN->A%axO(_O1`??5LYOD}wRWY3aaQ^F#Q77BhId L`njxgN@xNAT9;mj literal 0 HcmV?d00001 diff --git a/images/anchor.svg b/images/anchor.svg new file mode 100755 index 0000000..bc9d1b5 --- /dev/null +++ b/images/anchor.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/images/favicon.ico b/images/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..c5310f6414915bfb6a3cbb7cd536ad61f70a76c6 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`7M?DSAr`&K2@>BP*o!=7>0vPu z4ms_zsM~{$Wv_$b0t=o3$%fN6C0=cmbU1Ndqe`QXwQH{d4+DdgHYeM6_7A&(W-xfV L`njxgN@xNAOmHA_ literal 0 HcmV?d00001 diff --git a/images/icon-about.png b/images/icon-about.png new file mode 100755 index 0000000000000000000000000000000000000000..34d053952b3900aee6b627bfa47e82849ca0c41d GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9Q!3HFy+4N(86icy_X9x!n)NrJ90QsB+9+AZi z4BSA4+(L|(?$-SQ3W}DvMwB=gr6!hS=I1GdWag$aSn3-Y>KhvEoX7kTs6Ym!AUHp* zq&%@GmBBG3KPgqgEwd=KJijQrSiw2i?8Tl! V`*${e-+>Nh@O1TaS?83{1OP^UbTt3~ literal 0 HcmV?d00001 diff --git a/images/icon-email.png b/images/icon-email.png new file mode 100755 index 0000000000000000000000000000000000000000..9df362aa72cd9490ed6867d3999cef9acaba6bf4 GIT binary patch literal 415 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 literal 0 HcmV?d00001 diff --git a/images/icon-music.png b/images/icon-music.png new file mode 100755 index 0000000000000000000000000000000000000000..d4e5917c6f33acdbab7caeaef1253a7fe09b45c1 GIT binary patch literal 559 zcmV+~0?_@5P)dbVG7wVRUJ4ZXi@?ZDjy4FfTYS zF*2Qr;b8y(0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#R6^!!Qs)pBe7B1XBU-0GE&sNC(gX&;cEU4uA?!Dj=x?yATn2ilSga>Mk0f5s?budSQV^i<`M0~M&x)CBXkabz&o(+J}2aE`yHUV*aAoGyW1s% zlooqKz>5?@FPyHx*`yG9O|Ztm(nam$BIM#CwRN=bY7R^9O_5#xtq zJUZAYfj0ujkDOOX5iz*ss-Y($r^sAFtJuU`LfMA=l6H{q*?F$JB~0qHuBFQwrrp%X z5qFoZExEQ>4-PXzp^Mqrc;;_L4u((@DC4?$Jpul_ZJZg<7I;)ydYg~D9Ub4 zvlh1^GMTweA@AFDfRL5Be+RSeL!T0SyUrU^=qoTk$&-L1;Fyx1l&avCS(I9yUzA;};2doBV$Y@?pgIwd zI_IL)#FEVXJcW?V+*AfbeKUPS;~mw$7lHD2o-U3d8WWQf92gkc*xI;xczFJI9*8h~ z!2G}PrbB?Rnfk-4M>?DZmF;|WTr>_b_$<+oyK1tE)B3>FgpW)NCm%_d$FKSR6KE2H Mr>mdKI;Vst08PO{@&Et; literal 0 HcmV?d00001 diff --git a/images/icon-rss.png b/images/icon-rss.png new file mode 100755 index 0000000000000000000000000000000000000000..6c2e8a366d6f534aae56c87ad023a9fbbef4b5ac GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@;M7UB8wRq zxPc0}g%~g0t@{HM6fJR$C~+=IO)SaG&r=A=%uQvm)HgEJH#FKgkNG1|fec7NaDG}z zd16s2gJVj5QmTSmW>IQ+eo=O@f^)Fhi#?lqfa*Sbx;Tbd^!84E%iCli&?Y}~fwBRU z^a+kU1?3kkn;LTzq+hU2;Y?w^>0q|PKI8GzOHTKnOggmn{N3CA%nu?=nYceN=@?8_ ze14~X4hOf1iWxw(wwc5qHsc)gg}PcT9D zWnNcf$x+sfsjXZU!Z$b137&21aHu4GD+{k((gxRqS-FPWZn9Z0&zFr@{>k^%6`l`0 zH%yfDb#Lu`T(1$a`(mi1)|WNm4t{2*o+%Yg-PX>&M9W-D{r$`>*B7g`h3h~4!lZw* yL05@8{i|(P;YtU`<4ilc=GztoF6iX>%kUxhQu@j}*@{5#GkCiCxvXw#^4|Sc;uILpXq-h9ji|$mcBZh%9Dc z;0DTZ3o%~0TlWVjC|cqgQQ};bnpl#VpQjL#nVZUBsc&ScZ)mi09`i?_0vV8k;QX|b z^2DN42FH~Aq*MjB%%art{G#k)1?OP17kf7K0M(uHba4!^=$$($QLxEDz-_*o0+XQL zA=3#QW)s*h9WZQkxxjLZLE3{kW5d6jr8AmYpUmEwxFcCUznt&da)u~}hVA>9T@=_) zG!yYy|T1z&y?d=o~1fhAH8s5Q}RE(rIn1|S2llG9>`*_*u=6R zj?pISpv;OmZcoS7Z@2Xr?5_2(8%-8|EPao`{DDD{zeD_=radu!fs28jVqoxe^>bP0 Hl+XkK|2Bj< literal 0 HcmV?d00001 diff --git a/images/icons/acting_large.png b/images/icons/acting_large.png new file mode 100755 index 0000000000000000000000000000000000000000..de826cfa284738aebba55facec19bc3c99031a49 GIT binary patch literal 3060 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 literal 0 HcmV?d00001 diff --git a/images/icons/atom_large.png b/images/icons/atom_large.png new file mode 100755 index 0000000000000000000000000000000000000000..abbf774b566ba1ce997a559505261b795b879335 GIT binary patch literal 3302 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 RVav*&hZotGR7c#N^&dsqUd#Xh literal 0 HcmV?d00001 diff --git a/images/icons/automobile_large.png b/images/icons/automobile_large.png new file mode 100755 index 0000000000000000000000000000000000000000..2756682633fd9fb082b5e5b4eb8b48b949fbed2e GIT binary patch literal 2232 zcmaJ@2~<;88jccWr%+s2R9=IQf{^e61QHU~uyqLgcBI$|$qR`gc_9fTEM;+F(YH?Wf2R=rhwv%D2o`GvQ|2P5I4dqlPF+&PMLS!yUTyS@B9CI?|=UDvi*HM zwKa@15D0{}w--53(bJWm+Ezu&8#x!O=nRGK;ld!8Arw*h5Wh|^`)4RP)wnaN5Ei2A`x0-jfVNr7!Z%gD>blKO9jGGkiZpE#g<%w>6!u= z643Z8o{$A|0i_}}3XT(!P>M)DZh^yFm*ompk4bT07%`QH0nt{ZOqaMsZR zVIcG=-ai!<1SjwyOduqHt}L z6e^9yRT|7bFens)H&-B}a%qq^nS@ekpjj+B0q^1pVsW55nd}0BpgZVF263+THukpm z);2cwSgSQI8K%W?Ag*wYOaH|6*pRDC1`bc*nGEq+@etjE4|9MInT<5y;UxK z<5#? z`PNje-DSe?oU4}9erMDL^ef4ItV~iv`X==yGJiBd+A!`oK2SHm+>&3JbTKJKP8=7^ zkj9s$i_gd4BAg|jt^He&u6kC& zN%!1vlH4m#^J!4)%qUr^aIX`H3SFnuP!z1U}``~Fe1 zPTJg|OkwlR9v|{_>G*K0*|g8?ess%)2{>WNOS+=>bbq}1Sfa~HQr2?8nQG%cb4=;8 z4*t3CypGXHueKzsaqdW}!_Yq(%CO>!$~%>jBhi8~KZ#r0abjcru{odKzkX>qv_)?r zMk6^ntstec0dEwm`U5+G+Eco4r+2GgIdg_r>p1BA8eh`s@LNJ{Z?1t6W~RN2>iu}4_KApkRyL>TQdGeXTC!> z$!MT(RAb?gqg~H@SNDa-Dt>l_sp)+J#0`;_1-`)eAEY8DHpU-IwB@l1oxUe=$Gu z&TpUgSm@B$*{U{M_o*Vr_4nd-XWt{^2P+Ev>&xzi8_r!jm>pL8Jmgt=^YoYH)&UQ5 z4A=}Am?jPj_=;~|aIvcfBH0k4PDxhu1<{{twrZC@{NXR`#ZF6x0l!{L7N)X@^tx&a zG#+`reFtb>{qkgKOx3^MwrxII7XAc)M<1lPE|&CTe?07Wcy=llIhMq!>p*2#Ff%Wi zEcDdWPg}OfKToZEN)Fu5Y?_hY@a^<(WX0wt`ke2tnm>fdsFK6mII+efQJdmJBP|1j z5x<_vdva?>+@09Rr|VUk&!J|#jZmR%|95$L^qo>uhMA*Z2p=T3l-rKIt>}Hx{!nM( zl6gyy=xk+5+&eeC;nZ-kN^%7)!`mg#|L}>MpOqI4l<*^uX?g*>E7TmdL}i$Lzv@*x z1)av;hqH&P&7Jl&7EOg*EsV@d=Pi$ApM5FW+FInhUT6MTZImTteQB)({lTaew`|&k ZP-|Adf}maQQ~pbMyZe%Fxc=?v{{VJ#l%D_q literal 0 HcmV?d00001 diff --git a/images/icons/bear_large.png b/images/icons/bear_large.png new file mode 100755 index 0000000000000000000000000000000000000000..aa730784d07053b8a8a80f0ff3d05205f8f74f62 GIT binary patch literal 1869 zcmbVNc~BEq98QBo3|>$zM_XNkA{0onIX1}(m5@yYC5QnF({N--7RW#jk_Ccr%))9BEk^`F-DV*3ypZMcYFL3F?iw9cs$0Ciszyxj3U+;QZOJwho)f) z4AtaiHDkdPic_jKHXe_cN5X1@j){^sOpDG)pedB#`4%Ip&cJXW1xwTFLl_T_pJD)7 zO$Z~7FK5e*5-eRCzRZNhEQ^X&FUwGiG>rM51Hl%UAkbkr3RrZRdNXVZVZ7#riEnb5 z#Q&i7Ade40U?9L@gB%u{xS=4B2lFAABLGG( z2I0-5Nre@NY}6Mq3t^<=xDjTta&vQ;xm>2fl*R%@A`!{K;RF#DLFPO?j#`5BW}h(z z1T(8mS|hGC=mC-uO)+HSAq*nYH!0|ha`{_gy?L}yM9Ekd)W`yvY?e+(=Jndzj4QBz z!g!~(IX2ITu@soukZn>E=aK3&1}19ven+Gs5e>Z9q$Lgo%|s09Y#pY@BajdVvBT78 zH87hiB&sOju>~A9Bm_aB4C07+d=5Vh*Mw zwn!+F2zUrIhK-xglcla0cWg;;oM%dEPyv0N&GLeLfNCg6jjQtH( z^M7i_B7$L&;`oLlAmv-PfXr652hzN#zeG6p~_lFbX-9MB966m4wNa^$d`DY z8%CQZp5yIFpkFFd-V&G3F5c7NS3I|3&(wwfjZRaL8IM+spT_W3lzB^-a^_XP++*$a znx@*w+YtBSw%f0=KhK68<%c(9U+&82d(~cTz6_64o)~^udBSmYDCsc5xCL@H%!m!O zO$)b8JHI=WzBiPvi3Xe%fHTK$Bh`N+)r;H-w|(<~dB`P@I_Fs)rJiyx6m-s+G0#5h zk!K)nsmj-r-gM)-ILX69C{4~UD$;frq`2}HOpF{qU4@UonMlKat92ftR;b+5I~;A4 zrouc`@BB8<fvS2$ijl>g6?ZuRmq*i)S`# z(1xOy@aD^{gEel|cF0KQ$(HOszrEtcHO=6z?>mbd9O?r1oSE@1eTBuUABPf|jmANx z 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 literal 0 HcmV?d00001 diff --git a/images/icons/bolt_large.png b/images/icons/bolt_large.png new file mode 100755 index 0000000000000000000000000000000000000000..6f73725253b617f83a472a00b30b16978683f893 GIT binary patch literal 2503 zcmbVOc~}$I77qe3U~okYSapob(<;eK_T;f<0U{t6K%j1fWRL+#;t<)afG7b0l@i4T zD=tArrGl~u%BD7eS}lH7qoNcmQf-vas6maCH>mjDAAbGg&39++xp&U*cg{V_e6uxV ziJybLi#-m9a}fIrCD<$LB^Gny*vT;R31i<2&<()YT{Z&5--(*{E?T3$s^lT zGVoDFo!~+K2X}Be&Db&(bH$~E% zQ3fHLBtsFE8c`~M5k_f@a=qGvjCuO$2#KnopfALVq|brELPkxMs;CeJq$Vbgoa>`@ zl3D`)*Nv}gCxxY{V5$U8Qm#j3SUzIsjDoS){j;GFMa&ysFp6MFk**agW$P1Rg<351 zAY*SRazxGp=^QMIYzD}tfh-OLaeP@c9|n`g46inDAE7XsN_7KcWIJ_ZTo(0xGx$5-GhVu3UP`7>7j{{)zd zIYS+(r2na`(Jic8N5n6Ef-Syu8mz$D3&r{f@3GyC!`WUD3w^>;?-_s0%$pkS*nT7a zMO|!NY}oYQoGPLu`{wWTNrX!@F-M~u?O^ArQR1!%HU-6pb;b6THaQvNT;lh@^M{sZ zOLM|bk{W#Xg)}USE4`Q8+&#teeS@;UX)k;5TKB6Qsi!@Pd1p%(sG2VfAVdXwUC0>|&v^sMQl@0vO)NY(+`Nr(^+uv0)lbZtK z$6IX8Nl0rIVZpkUh8qEDV@z46BKVKZJI*8wd%clUi~I57Ej7o?K~)59;Cf?~gFI(;O618YO6l{mQnj8|+Kx@EBB%;`Z%&v?fUe{+2D@Z^C^srSvL^bNKa z1Lfhc?)XvI`^52=#zBMMZo`vr&3<^@`^K$J=Su7D>^Am#PM|pg9k-i>6unifL7LLopTAKA_ z0o_2=1{7TGx?>z?n1R=!9+xxrH3paYO?oeScr*R*y-m2*73NEJyXt@RC~}mqKVSUh zmYpK#&#*>%8?7JF9OClRJ1<%EHdjB0T#77A>n_slHl(e}5)o@g*u^ zWtxf3S@LWgxjMMb?ToU`Je0qEoO7?8ae!}yj%m1XOO>;Fg?zJL#B_}-aIARxZEoc3 z!U0>oIYbdCD(GDQbf$gz40NF-Jin~EQnO0l6MW!o zD>5c6t2>{-w3l9!dd-vs4B462<^U?w;12;OLkQmSkL3eP3D!643Wru6etPhP!{hJK z2jz2XOE#L=lHW5sdPv*P)<>7sWm`CPh$~yg6Zb~`I^#ogol@+SPK5dgOg2{q_hSz4 z48ZH$w?!)ht1k3(l)quec}Smo7tzZ0heSn^t&conCwNMK@y1uxhtLX64Yf8GuXs{I z^oRM@CbP|zcgv!UI->u=BHwq*?)KCjPgSNzxEZ-r(|Kd6_rHCZ7afW-L4_Q z2UpK5X#XH`*6Im+Cr#0pK0fL!AFt69Dztybol*@)bd)2se?Jv1-_kwVS|4gWf0ig% zzU6gMa(fnS@RFUozhY0^lXANbIkI>65rOGil#u&_D-cI7oG;rDh%`5h$-~dh{&iL4 za=qE2bFI~&u5R8cX}hr7X=q-DA;Xuu6A$cJRkz?#U1V*4yg6cLD1tLlM9Yh7!w<(T z?2ByPbTGeQQs0ALLXk-%FUj@3^HR>jF~sic6bCEK0HMv^(_ecFYsFAhD>q93lk@Ds zWNYh|Wgu%V$#ag)$;AT)e>&UvcIhtU=G$?Lo5{Mc{EdfdS~qX*UC58`ySq-edS0q# zhyc6GN|^wu`CWQf0w>R})2(b$%}spv^2coT+s8}fYr86HvH~lt+Zffb?eMIk+`;>r zixY}&RJ_WquR3wjvEt!AcN`LXTHEqc(DFxl?;4Yh&A4Uc&;n63s880e%*gcC*kzS< zIQ+G?I$&TLLBDvLBdId^?$DSv$-`l{`kMQchD>13mK}X`v!U;{mF{0@`}368_wsVq k9%7yq^;pieP0z)-v z-(1H0X|#S@v{A8StU`{c37myGWLRe0Kxxxx{()u#s@7p7un=3M)dw)1ovB~|T1@~$ z#aDm|gBV+^4Ye4tNQ*K`ZPBTP8b;s@z~78e25^i-0W+SgHzDQ#Mz>vrT07Wm2GA`+ z>H-)&LB%R&17gC60elwMR}DfC0K+VZ$A@8P8o&V|4jZHf>x&BM3yBmmfI&sta|PU>P<$|~H}wKVLB=+t1~$Y3**NaFSGTl@jKDsI@mXn8 zRGI-}M_?u*#i*w8k>uT{OkwwBM-D+M8YJAPrILasO9*uej_FC6B!EGkuryi?0&@K* z6a_p`zyV=D2=bG{91)Mt;Ri!Jp@<{tv++4yiC-`m4iSh2ey|XNLLiY;#1~0no)F@| z++dL3rz_K&NK~)J`uu7szhVIo=0K8=FX|#K(d1j$HOYBf*T?rIr`t!kU(5PxQ$~T5 z^*~hZ>G99~?8%bcGWtIIRvvS^+-K8PyB%z?=ER2z-zRq7OfLHQRaVmO6ZOK*uA{4p z&ek8lzU1A@_jRSLPWhx=*G63#@4mouuxkk553kX2(xh&`o7aIY4{liZVt4x%fAG-8@X)eH&Eodu zs>D#>O>`j;bNc;4=Qpb8_8I2Lh~~T?XWxuhmAag#s+$8f%!WN-9X z{q@}E{mlFK=~irXWviP;=8nDGI>rq9-$qC4Gp@gWox#%;+BR1fPMg2XwsPFMANh~v z&r3Yo`&TbLb3Zf{-bRN$Hs#B}x=yn&)JC;QRlSrzGH z*5;Q8JK6E3xbWsSVQaF|yX$P-6mwbI&Utw*;oPdd4?~^T*C*iM=+i~{9<^^K#3QX$ zU*9^GQj`~DIqqJLHP>uAVK1MiJR6;OOC9I4HRPbwoar|FaGC02)w7pZ5>8Lw^SH>Z zPPw%5{ELRP*J)0Vyu6f4#~l$=u{`6CoesiWZ2c-~q&oU?FLHUMXvM*%H3rqmt|cep z1gaLh4#M1p58MYm@|M|>ZMy~%>C}FMgq;Q7yq+PB&=~jDAHEV2j=MFL@V}J3J0u$fu-rjHJKV7!OF@I+X zfk{PG9hrv<>B{}+5zF8jBDd*Dam=YR!>rHiN&@R{MGY|T{{DH%jr_dYo#~zsTFSIm zSHD{(*+~|kZyMh|+2fKfq9|d~?Szg!QR$)T#?8#BVa48Ei89Ny>E7X)H7l4gz@*7% zuSG{@%LOae3jQiybu`Hy!cQ3*gUe4&TytW{7UM4ia(>I&$4M%0Q{-At4T`%nf85^} zj|Y0m4jm}Izyscg}6&`KZ=*S+;p?WDIuxn0?m_22}$N`U$hAFes)yqHes?09q^U VW}rtwd8gw+m4zrJM}ilu{uf??@+trT literal 0 HcmV?d00001 diff --git a/images/icons/business_man_large.png b/images/icons/business_man_large.png new file mode 100755 index 0000000000000000000000000000000000000000..ef13a7aa8b538cf8cb59f9c76e01770caeae50c5 GIT binary patch literal 2798 zcmbVOc~leU77q|8OIQU(7M(^=XoX}#5=bP_kOT-4K|o{))({4XkcDJ`u!taVdy`Xjw$G7C}TI1;JK8Ac8DD^#zr__s;3*A8*b#^L_Kp{r&F!e)ryU zCf9e1hpx7nHUfdrWqQ*6lyk(=t*N1WiiU~;l+$XM5d`}SBjE&&7(!4Zgy9gt=PX9h2mWpkVGOaao})vN((zlq5$Sd z?F5o_%M5f#!WHvGFi$7|mKZtV!Z?_MRz~{i2z(KX^(V1F@>wXQWEd$&gaPfb7(RdL zTpz6^upjiFF#gh75|Ai@Fn*9k7$@c`^AWjj8LZUq?;R}}Dx)F$hGw01@wZqqO$>2hp*TP&j9IP# z-zXt0ltc+d0L`BW*nkf9*pG?FI$#O*e0w}d_*@4L7%YK|1Ibvda@YcZ4U5C&36`+7 zOS$|c4IL8m;-Lt4v5*gZOa__v7r~N1cOn&!qdO3A_>UrCogCb;G$(hOJA;VD(a@i< z5&w_C7-cY+rAqp*%39u1mg~~;&puJU{Ml)cK-pemWgmGrmp?!tG^Uw!YJl{~cv$E` zV}|iXh|?R^Wc@=L5WH_s?(`vN#+t8l#ye{EdOa|GH|()O%T>V{$~J#za3>0-oojSR zQE)rwvB5l@G|hY7I@_H@!yZB%{<;rOl=uNwyv59W*_N?lvOr7S-ojeXBo3p6V?RgTF`49)m_lJq@jp zvB|4(ha)hE^8IT!FBvlXh!svkyPcd*T@?^(%^%qYeE%)thgr>bgo+v=-Ca z-F2R6-YqjD|Dl_zLnOxx*C_(gb4-2PPLr_b*A7`TSFCHN+-~(6fr=k%RA_CTQWR>2 zXYF1i=ewuc_Hl6YG$V|YE>kbFY4!;Hly!fwvx~J+V}OF{Ft<{~xSiyp+G-tqux`e{ zat3zQ+9C8EMa-MdANHc|=9&33?>2=t#Yb}UcU)ebqLz{u_7rBb_1jW!8edTRx-YB} z{$=pjB(T+A8zDHB6Zmn=B zdSU+jq2KA2Z${KtXG$}eedvDiKWX!RVQn@GdKT4|XYyQB-=k91QZ)t04__^m0#vUy zL%GqEXQk+Zy!NvEw}RJ46p4G9{nfjZjo5m`VntbD^>4eUVyEDrE#ToS3B^u67~IvT z8aPe*&a`K*9$Q1NJ_yM}HsF5wL2KiS#mdYLb=P=G1 z@q4o_<$EUQ%0T(49Dc#MWS}eAxT=_7&aS$CQG+O2mF=t9Qa9T1+*Yw~SOP$m6=}FcR12S!87$M3|jQ*OYRbZ3=%-8r7Y?b)3*$w8cc6ZXBwadj2cf=yflt6mGMey1U^ zKF8ys`j_{2`=K(%+qtzvM&->{60ca=L=!B2|9x9cHeq}1gSq^DEbY8wc_|uYi0>|) z**Wy^N~p;*#erUOi^)&qi{l4X?^-6$JSf(bXezcP9M7th?7_o>iK4^Tiu0-ItZJ=2?|pCo6J@Jl}8c)nKec z2b;%7Cwt85XJ^(o)E9vEWogwFYie7t+ax)GSM0)Z=CcRVL-r8H6)Q8` z*i*GuGX^Dg$IDw&PF*j)F@KcLxpKWE8I|Z9-M!zW#paT2h@@|)Z~Q*RdyMRGLu2LW z%SO#t0{epYPz@Kgu7g27+mJt+kbc0?kHtH62 zv8?d$jKN~FKdP%Lum2S;g|AYtRl%Z!>UJD%ufJZH(Mdq9zj6Nk&GHgD^@)ORtY8>C z*=(D`8(zFK>pw6ydpK+H8&674tknUaD2ww_l78};H{@zQz`$r}P<3Kai$!h)$Fg)~ zb}l6%3Dgp^&CI>=qL$Gec2Tf6AuQdZs6;dJ{O=XdJ|ImIDcuR1O_H={mi|DQj4kvU Ix1AaP2D##Yg8%>k literal 0 HcmV?d00001 diff --git a/images/icons/cassette_large.png b/images/icons/cassette_large.png new file mode 100755 index 0000000000000000000000000000000000000000..b41d5ce74b65e115ca5c1e4c65bf058ce4c028b6 GIT binary patch literal 1946 zcmbVNYfuwc6wats8bPT-sgBi6uqFy5yLo3NXr6#2pdnSXR1C=mA|xA=MFJFC6p zC_*V19H}}~85LAeqT(ouyb83I3OM743itp-1*K^127~2?4rSBXF7VA2RI9MxipDicBwYS3r|2-d4&5Cx*r zByFlg{0W4~IXYzo79kIT)u^7Pa@f!;dLxb|5d4=}j4E{;f&tM;jLsk+57?{8fKDSI zuVKqUxlxS7>VlF@NO*FnQk@*9=4;5y0swytj62XHmFCKa3EiR0YVHqh@Tukhy}AbFoO#?4>BIj zq|w3(iOd-be-n^nG0X_l>4}Mnv_vKiHO0^&KA-RK!C?5|7JlX=1E#Y08O+|}9wdla zZPFPr9clm^9#zq30wy5inZDhE-YA#9b8Ij>iNYzPTU16mL<8x1y<=Zv)@DqB{Flai zt2&HVMkjsID5F~~8Ob&-9hGZfs zi^-I5_~Y1MgBep9)W~>T9Uj+-<$n+hi%p0MLrqE)jUQLQ%2*Ub&9SHv5QlRBD#WCL zV}%EqAe*MAu^_fn2TVH1h8YkHg7~=@0H|`6T4!)z7dvYCmKq6S(rrdGG83u?#)<*! z-jghoA;syDN%(9hNn(g421ODsUn=79KpEMI)%+iV>3A}9hms~JYkUcpt7H1EPw_S_$7sXhsNhzy_beLG)K%lh8rQ)YC+_R>?sw?rDI^z?ix3|o7m@qr^~;?zk^44$q&WtVHqmT^ zdx}g$D|7|e8jjAhI=_`D`I8YvR-t#c?PVxN49{+u+r{d?0`@+^bbEy-Pj$JMAzZIh` zTz&uO6KdeY`(5IYnepBw4MWT{9!Jrv1(JmR9@6Nacs`$Y3{_uvTuomx+dTPxq-SLx zaH6fv-e$e9p{g{U8m2j5Sd~}YD35NrctlOqKRStIT0dXh<~417j=cVtj@`$xwep;K zujw^IE|1Q6uT%JPqXy^os0SqLL~Une5zX7P6ZFyUq%A*)+S~#onwzr|zWe>O_i9l^ zTIsQ@lSLh@yBUhKm;8Z|@Jn^jY$3(FwC7|`bN}Ibsn_PTFDG9~DTa)jq9}%)O~WJK zpDje%Q)*_7zO>z>%%Dxb<;y}F_+ZulBDCp-^gm#m#x2*FG}4l z$+}4ksPbJ{Zx4OQJTF#DJgf&Vm9H)fQKnP2-f!CabhkSJJhV^@q4ubnP~nnnZrIDr*2 z&4XbxwEfAOuK#_atAq=!>EBqCp)K>j$JP=pK>do5IJep{ZBJA-PU^Vioy!wDBf7A9 bk}KiGvdz3Bt@Ca<{+7YgP|0!8hHd`>Ix^{i literal 0 HcmV?d00001 diff --git a/images/icons/cell_phone_large.png b/images/icons/cell_phone_large.png new file mode 100755 index 0000000000000000000000000000000000000000..76b928ccd6a5782596482714a0acd2afb5709309 GIT binary patch literal 2100 zcmbVNdsGu=77s$LP!K#?39*Gqq*WA>naMkcfJr7XK@&)fq3v{0d^h)^l`K!qYgjaa+B5XDEkaOeSTQLJ`?#O>MR=^s1ioB6)^=Kg;7 ze!qL~nVoTp)qXxC9|D2kCzB#7eAc_}d2{inpL`(K=7M7AtKx7^dCorOz7RWPZnrys0K4pfN zhp%1RGzu_df@Sb2&x1;k#{nX<6$O}7dV~&yAb`c9LJTI01%(4J2*ETEAFK$7!DF&` zFdLY?D7ZJPK9#3JB(uKoH$EjD!z?@+EjKrpnoFmet!Xrf%jLQ_U^oJ|h_L0GFl}Ch z$+pzZfS@*=)nLI4W)t9I)NV3oV|)r8>GLBPEpqt_Vv}uFC|ojHp4LKxs36T~be(I) z+J>pn|Az5WYnwXXg3?r|&75u3;rU2i>IUQ5{k0>PAs!7c)@s0$qRm9ix@;qA!ej`a zf`6gv4SF6(=in-`86X=5SsV!BNLa9d!GxJYh`|-Wh@0bOSXjtla3n&Q&4%a@B!)OJ z!r_WpFhd~Vvc!nMjg^^fnAW62-F^+Y-&rj5msp<2ifS>lRc$tBx+@?q-He%S>1GQc zTE_yGLv$)QlX#F0GO0!?17gnB0i6aic`(ESL41S(z;d}(XE3?2VXj<0mj*$th8$Ec zv6_v*Ofqo zTwTi-eS*Kd=rq)Xx0e;~qwn{H^b!bOY#Aa@=Uo}CNtUVw#O`kA+QXwUdZDCT;BRp3 z?2sa2?AMwT91<$d9mV+mfJi`4oX&avr_ zxTB+-)dSS_wC=HI+oRj*X*u_*C!_E6v72rEcad79$2IMo91mX)(5sX{oFgLmZX**) zPXrMDw9@pn)g5?Xf3WMpKaSkEQ+fWoiH*L26$dLmX!$nUvEC8S5uK_#32qMyHJ*8E zC4J=4NNnjW$JZaG#CK(>UN=M-q6~^XL(PNBjtBg1zd2a0C|_|gWniIGt9q51`1B2O z%ilDmaW!459iAM~=qP1F@2ZY(J&#s2p0pF2rQ@=TA3pJS*c_J~Hx{M%#YmH-59@0t zrW7mUo2p9uvR0MfmzwN8PW8}yr(L=6bjgv^P>+d( zLm_Q?58^HOo83(z1Da8%6BYJ*{xJOLc=VC6;myK{mOCOxt0SuN?q*SM4WIaC)zysJ zF1WRI)t$|Zk(*D3nO-YnU?Y2@0CcPq!U&P{xi8`B5;)Ocv^k}LMp z!_(rae;o)q@SeJ}J1aYAa^K|M!M9Z`y!pPcs5B(JM}Jju=Y!>Gd5yF zCim};OA0^nr7Itvl@~}of8Nq*nWCobAF#6>D)MTSUs+%1-+A3wf3(^!xt3%r+u{gI z3ZjN=Bk#1;3>rtW8w#)61+{%!RCSBd4PRAf9|l9SNb3X z^kaWYZw$59r`_*lIv&7|4#n-S$wShQrMnoH8Vdc3+R#HstHJr6kwn?| zyRz+V@RjMrspyakBTEfU^M19EOlzq1rA6VLC+x&AZ=yB1$K&)TkpUCRSiuh-%6*^3 zh}Q^6>x1{dC%@^-4ZW52>5n&|=1NB(7&>=jQcl|Err@(fW%SVC;B9w;C@tj6(+NEx zEsqzVXSzi9|Fh$Xz`)t@xNY}jeScAWPI1H5`=>g__`;`46jiZJyr8-2foHqn+lMli x92|T0)%M-w_sO8wi2&jpS3SB{?v{P(4H9}3rbNMSukl^~ahX_wGzvAve*kQ@EN}n- literal 0 HcmV?d00001 diff --git a/images/icons/chain_link_large.png b/images/icons/chain_link_large.png new file mode 100755 index 0000000000000000000000000000000000000000..fdf8ec6ba2850ea77678cd3c221987bac03cce49 GIT binary patch literal 2128 zcmbVNYg7|w8jjpbAwrRe!UB#_7b=isLM|i{Az>0g2yzdXisUjt3dzJ|kOWr+EUi$G zo4D12qEJOjkwSYwz!p#utrcp!RY8Gj5D+PDwy>Tp>Q1=0{o(14oij7v_kQy}&wD>p z5FQq|+RDiahr_K74uT@FHQe}ET43)Zc7`vo#S!Jlp;1T*nk81lIIawlz(BAE`P9=jZ7R$&%rFvl+UK*Ve6>GhenoTPV z5Ui1^*Op=Z1`mm^bX5YB^REaR!7)GZnBB4Td;G>bNCDTP<;$}zi3SgzntvFrdfEJhJ^G=gNTbU=6-f+CtULo0&2>O8d{pys0#{&J$uFDxIix1s>^Q1(Z^?5lq)qbB9wlT8 ziwbwNHoE3L4NJaQIrQ;~)5EXE+%mrVoA+pkcV}zsM7Qm|<4E6w(OXQ--bKZ=6TD?WNnk%f7(O}|M&jX5pnts1L^mWLYx^L6}e z!die@cD*VyhQO{;Kb&rnHU!vHa1CI&oPMI=u{&L`kreNv?;bxJ3Q?q5X+4J#( zZ$)w$$07})rqZB56^82QEe{U+1?)b+Rz4@m~MI_|dotHnZ7n$<_E_%+{cDsiI3 zwajS8j%Bow2mk$;pu2AId)$_L^Zc6GfnV3z?O>4(9Vnms8VKCjRy*?``S5_j4;VQ= z(T!Ina9ykab)@jO4-CCiPSVcqZN=kzB>MtSnhtCY9nKikw>H^(4&EL0xc<$B3auLd>JIm#c19`Q-mSM8AJk$ZCCr?Dwt_FV@?uQ{~xwo2P5@&x@b^N0W)QSGh=W)_0qAsEJph zVQ&szMZ9a^RR*~gs2A{*NPX(}XKo&_?=r9GaVeEFUkH0E(|KD|piiv|I_`4phIK4axVmO~V`)~z(aS@P3vRL2 zbyErFqsk4;4nkl1)h~v3q(D?I%?g9Ec`|-2chP`-RLj1Y zj?cB5Pxu`T8qiGnRix@1M~=*O-y1vqcI8BKdFta!&+MDMZtIWlx^>37H#T_7Rrkr4 zOuzg3_#dLrYe|#`M3~J&f=lvI29#m%l literal 0 HcmV?d00001 diff --git a/images/icons/cloudrain_large.png b/images/icons/cloudrain_large.png new file mode 100755 index 0000000000000000000000000000000000000000..7ad92a65bbcacd6036a1273965e9411794527ab0 GIT binary patch literal 2389 zcmaJ@dpy&7A77GO5;02Q{EReWM2W7aT;h}>icUO; zJj#)B%X#9I>Qt{Tl=38wC70xK&Q|F>f7J7P{eIu?_w#*y-tW)t{m1VB&DTR)bG;@6 z0@3!|My4xvw(?U~Q>=m)c?`v7B&Gz5{rQpNM5YjgxU%^XAmGVmMuBvY$xe#D1v)|? z%PlyJU~w?jhsfe{kxZozQpy!5&=82DvsA!j#e!lW0*vDDNU-s%tuTPYCc%R6R5VrK z4n}jfB@03SWM2j=IhN(XhB-R{j#8q6fD4M5fRr1@6A`5(*e711;;g(z!GKRL;#d;w zb5g-n8sN?sf&d&D^qA^$$TJaKWFt$WIfrzyOzC18RG$A{Z zNGEUo5=&u`V9{c+fQUjRCMF^iaY()}3WafSa8Pn!u{H`18&MKZ%#_;jMCMBjWKhHs zas*-yp9d%znGyU1F$t!~^m7SZ!B<+I=u4Xv4MRzp0u%;`R+hBnNTvRNS1$Lfw@6F} z|H=28#3DwL07TJ25kEo5QVcHATp3D0bQgk5F<;2w^W&DfNQ>r+`J!mP0C4vw0B|ak z#o;M0tUe*ARH7$OBxdqhpeLCGQ*auPmOP z`m1;TM_g1d*lT;R6nFNe!jk}q3!M9;sv4h_2R)U8Kg8X z=y@6-!Oc6#He&nN%GoNIE!qE;*LI&q-tbl@k3&rNqbR&d&2+|<_c~iLF&BpKLM-l4 zt1kr_rv62MI^WPY9*%~jLg!j;4+rLpfNWymUCKoM|`+XKwg&gJxzS`k3R;xJDF0m z!!4T(Ty(tw($GHTb=iLPT(#KC zs_qqjn^Yg&GkF$jmWEl~F>JKYEM~g0Ct2&XDSPLbJ?7F=54XLyDs~Q($qUo;E@g$Q z-;~!?k@Q;Kh#IWI{F@sfrEM138b>#E@6I%=in(SPknecrftQ;3P%>X zPe{#$B)?PZD`p!m)b(Ds!_82pbQ}q9HnUOh!|0DM`RN12g)=`9cWD7{19CIgSC;6l z%rJcu4sR};D}7w}fx7E7v8~Z=#cT)m_^p8=q3fdSkAZ2@+T*@jbewGhvJbYj$Q~{bf4;M zdSghl$vNnM5!ZB{0h?eG@zsD%D#S`x2rl^<(@;kf!9q7sy_wHPQ;-=xQdxB z!uOEpg6;^zs4CoGD60S5_ymvnTRYHby(ZXb=!a>iGZDkq9lU_r^Ob>l?Y|C8zJ8e; za`~6?v=q$;;|rS4dCb3d4w$c~{jnB$)nKsmueX)bD5>Q|WP5tOqYGS*WAO+aMX}aJrky@ na#lT4VSZlCbbFc?*Y1XxzI$qUjS~=~{L%5G_>!yLc4zzz#**9% literal 0 HcmV?d00001 diff --git a/images/icons/coffee_large.png b/images/icons/coffee_large.png new file mode 100755 index 0000000000000000000000000000000000000000..cb928388f4aa53c4262e6932e326e6e015dc0d6e GIT binary patch literal 2297 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 NhProj%Cwwt{{@Fbbw&UH literal 0 HcmV?d00001 diff --git a/images/icons/day_night_large.png b/images/icons/day_night_large.png new file mode 100755 index 0000000000000000000000000000000000000000..68c7505274ee543775d19147181774001ece4507 GIT binary patch literal 10402 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 L^wn!sZ6p5|^(h@g literal 0 HcmV?d00001 diff --git a/images/icons/disapprove_large.png b/images/icons/disapprove_large.png new file mode 100755 index 0000000000000000000000000000000000000000..6f09a4b306f08e9dcb7364455970ed933a92a3a4 GIT binary patch literal 1939 zcmbVNc~BE)6yJzq5U~j2!Hl>BXtheRyGb_5DpxKOFc={sTCv?Ei$q8^Bnt_Mibw?; zbx*HP=wS>cOQhn-WXgtH2p~#NY6(zj#OD)n1g_6Y zKSfLd0Jn7pO(K=3nuh5}BO7%>{yL1J5?vrvm(O5DRzujU?eCUv>Ve*R?Hs8>eY+UbJsS91@?+i zsbQ=)P9>_;poFv#AfL?*)j==}q9_~Y@lh0>1R@ZOa3H#&p)e2QqZlFp`yLi;&7x1n z;-vCETl6Z7l|oTwjKi_nY-}5sOMRB` zWgtzUOCzo&GpH~Y?dh8<7|klxTg4`8U!draaqPI61G6EH(dfEYue6nlBi_03UTLc) z%S>?M2rHRk(b4%x4(bQfvHP$gmmuv8Hr-;NlY*y7NnM7KFi}cr7>hn(>kWDg;tJ^~ z3V4tJflwg~3*{&h#p5Gj^vLo%p1>2 znK9y0#g4gte#Rle7T>BB%)HEmO?d%D(F74XDOjqEUKLQS9{wWy7E_!4a4w!)$L;Pe zh}e1VOxL;YP2AgEnVO%%|kES7cG7<`|pHnV?Qkt%U4*A zGLC%Frj7FTxrg8UctOWuVzSNPR#6dZ!o$w`E}xAdI;}KZ%7;5v{;JIk=;ni-^ zg0)+Hk|#%2esth#sEuKXs$CAX0XtOf@%g_DD{9Vf9a&^*NcC(oxVlB@L4nnmPh-;y zA9P8?=glF&h00CYJArwH55HRS{Q9_OGrkmN7vC5agK%PeI}-feI%n3ly_{V7SekQ8 z=4+TKJNFt4-*_h|fs&YIu|bDsE*N`JcL(dLXw!|AUyL;Q*TkysFZLGS zW1X6sP_^V1`*e^0LMNX+r$K$;Y&&CAh-fI0vnpfzF-1-OO2e+6VtcZCYqzqtQI?1161V@on*L+4xuC&%>_%mVdgZAYw5RiYDb-gUYsK2Num*b+7ic6KT2o zDC4AB5h*^U7+2aT>e_ys>7h9M_)(4GNsXsE5V&wzRYh#Eo@@;Rl#y-D$IVl2mw0Ld z0a4to&hEzVC4;m_*H_KC7I&hvBxDbVb!S(8aBK7GiAfQ4uzvKFrISXHj;wu|uh7FO zbw4qJ$J~u^@0i9A^aMQH*1UAzl|W4M$SHHk9DAItV}jV99GD|spgX1>+w42EIkKbn znrxj{NzysJpF(w}{YN(iR^s=^H}c%FU2!`rOPYT5D0*_~Gwth`4e_%FJ*sGYm6=;s zUJ&xs1_UP={xqhpdAS)-&cbrcm5Q6~gNxFlSH#9HdeKrBkgK1yA!Xj>kk8lL1GMog x6B2(I65_R6+vu3U_z(YS_P^u5dhhdz$AGNx^1`yUj*nfxNu?}SS|R=-?;mND*ggON literal 0 HcmV?d00001 diff --git a/images/icons/dog_large.png b/images/icons/dog_large.png new file mode 100755 index 0000000000000000000000000000000000000000..761266d70c9631c881e4a602c6cf7e178a296da4 GIT binary patch literal 2171 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 literal 0 HcmV?d00001 diff --git a/images/icons/glasses_large.png b/images/icons/glasses_large.png new file mode 100755 index 0000000000000000000000000000000000000000..f8fbd4c8635163c70650df52c08a20d3445c5bd4 GIT binary patch literal 2173 zcmbVOdsq`!7SDe5SQJYI(b{N!7(=X-6NP3BQ7>1aYz!t~n_eXpryyEDgd|B7O#IK6 zuHXTwgo)ox<%4_`8%dT1WvG#;jBtTCBSq{d!Ef6N1n3#40Xd=-0(!Yjp<(Em_yxNR z^xLc^;eiE+Hid~_3@Vx*0kD;71fUYh1ThFf0F6e3C{!8^`VfFY2quB(pb;PngGyt- zzQEFhN4=>fiHt}NZ^;)bG4aV-t%^Y+rKP12)5t`nI*A1N`T3b`z%T(t5H#rutx!); zXuOs!a1f1HEmdiyN(ErHC=@AmS|%Qibnyss6`%jcutKwxC^Tgxy--Dhh#*NWH=k<( zt+pxfCwwOQnM_g|^HMR%oS8Q()O(JIZZ{3?!`$80FgH<2fChLk`poy?3$z%N0xsej%_j2fv8@ ztK4}nw&_}SpHGR7d}CwT`UkJ`e{Q@Hp7(d`4;}1-&i|)(q`OY@@vBxXUbuVgoF{M=e*brKexSUHf{3?dg|Kb zV8)ZE!gYz29jsTzVXO-GQ+3~SmoQ5{?s&FMN!5#2{(V;a=BqtZ)+Apn^n@|vM*S<7 z)iCG3Is1YK&iHQ}Ay+x}IX3(E&G`O#W&FMi*9jNzwr9<>$4=I6I_;U>=+#`kvqgs+ zg&v-@D=Hgwh&CE?OAcL1s25c}8w|ad#Kny^uJ250I%5>Q4jjbNz3)tB#|C+fpR8bV z8Y+`j?(~wW^yWOqhEubvWhavUP3oNKD9c=Pbar=j+joQKrIp1%R92F={=VE~Z$Di# zvTI%$(JwdQCXMGW*CiP0vy2{>0ZT>U53R1xH?Grc#o z)AhvfQg2-Af5fqM-y_Mf!QFZIV?v4OK$(RPzE{?5^HEn&gpv_j$KnZ`BD3hpp=9rZ z{t%`WjoxaVZISQtgf~z5u#pTG3|R5c}d*@7+mDXCE)WXRqS087?ASd+f@M zFZ)Isc%#FEk9h%=>xRW`9lwV@ohuinyWBe;Eh{iYop(I88u9S$Nh|GqxyOIKeZgEt zj(F>Xu?r&ML`K)sMtaRxF>d#BoY!`{4zwj`jxvD<6aLU_*=EN&4z2(tc7( z(_x!KW1d^;gRnGh*u^SC4AX@n zt^F|~a*wtv^GU8?M=!hd)G3dSEv2CrvZ}8QuUYZO?;UZQ*@SDqd_B%_>ncL-zntc; z7qZ-J&pPF?ymQYw*$TaLQE_p8Tlr>dS((Q=SGjG49j5F1{H%PvT4w$s2RAbg F{s-=XQ;q-t literal 0 HcmV?d00001 diff --git a/images/icons/glider_large.png b/images/icons/glider_large.png new file mode 100755 index 0000000000000000000000000000000000000000..da3aa65d88532e6a502f8550baac2812dcfbae6a GIT binary patch literal 5800 zcmbtY2UL^WvIazoh!h1;4iNEz1xSH}5(vGBR4FlHP#}hC2oPdu0YQoih?S}!NDTpk z0uqiCsVX4Sk02l@1QV$mKtg%Zqxao=)>-$x_1?e!e`o)*=lf>%%h+3X7b>QLQRsH@532-H$0fFundKFA9M(b3WQ&Y`ZZ z#???Gg!%`&hp71z4*y~>#S$<dl_!%f} z$Uq_P0U!tv48q~Q@9T#)A=m-?-){V^Ho+-001I-!67a+z3^yO1hkt>&vHQ=4zAJLQ zf!hW7aFgPG(G-s%;;{a~mZk_r?h5dN&jmPGLz^2#Ehtz^9jvJhfoPj+svALJ>M&yn zRL4l&^cTn9VIf?QiLs8l4%A2s0x^Rao4`zs%(b;NOtnlQ>M-aptffC8*xet4{bkpO zYxgG>@*lBqlOU{nFh0l$kH7e<0_?rOvCpPPi}sJZV^e?(quZ zo+A>l_&5)bWT~a8kyFUX=P?nQt8=K}qEt5TZkgSHtAJY+RIef+4`pg-DBxXIy~hQ& zv&=eS$X7v|SXd?3+go{~YWAUYfpZ44%3@`-Q4zCFRc8qTWTAeBlQI&wzy)Pg+}&d!WH+dzDnpOo}=CzhYTS228- zXSW{#ai$?MpWibCI{abU3rSj>=;-XB9^+hXnaYXbrt}?S`(eb_q4_rf!-PDY}RG;Q*DOZ>-hl7KhF0GZzrQGF3mrunhI{@ z(jyDw1`PtkSN}i{>ux_hOk%7Tp*hLMsN}OEekYT1>Xe7^a0U0nok8S!bh4^!^?rl$ z9Tuyvi6$d!89M3ErL{M=(c7-ZOva-P&-T!KPT;gjCgVP~*>v@VS%H$&hf-upr>yL% z1wsD~%k}kn<)#Np5A(`TV%AlsY6X#By*8l-9<{Aqi>kFcYs^fzvsid!a*}a}Kpy(m zEpydtyWt+C{Dw%-n1+v_nuFAC8%2`08GHy1dZtPHRb7m>Vf&GFHdTi!YV{NR{Zll_XLlP*PtJqrk z6UgVe;f>bLUf;fzgw?J=5=`CL#_!Z4b5pW)YU$Gs3!Im)`pH_?R17A#toGD>a$=Hp zhze4gi6U)%ZjXYl#?`^}#xs1!w>USsB7v7E)saoR&VqAQ#n}NT_=muo0@%l96a9}< zt?ILWlZ=K@<(De$^1WeXU0nL{wf%dpH67gPNB+E5X$Bk>MQOJz3)JQxDh?g!&_Ctz z*){22SYNITIm_mK___BO1(l_XrU=j!#e9!V8Bw!&pC`)a7s018giHM0{48T+s06%kN`tP9lTm=B6-mki zIoee0S=B;W4dO~WNX>d4uaf$)-1Zhy0G|@c~bKA*UK`k2d?O3Meb7u z@LG?PC-fZVrFW_NwmzWVai~7tQ{*rhs8=H2#qQ6XyAtBR zFqMh3&~e= z>cq#WyX}PIS+(~QA*U2nC!c8#hdaWyK9%_Jxr;|jb!^qu;J#En=9gx_wiz6wly>;}D;5dMm{`@>+{RCb00J3tHF~Cn6?pjh{ zlS>XR4ESb2)3LNEltn@mXE8p#e$u7rnmrU;K_7Vy%HR!m(LISsfAf#$5>C~ZHy-t>|~esEo;|SZTREdCWxD-RRlI7 zK_zbs6|6)O_q2&$4zXR@ByZ@RzIXHb^+WsXGl|vndnT886&6Ao=bmV_0)}Qg>V`iR z$F&u1+EA1qvI=tUcD^w=d9xMU`>o`uqv?WXtQu8jJb>ICx*b-O+mxr#o3U9FzYXco zuQ=u|qjI*fI6|&p&|s`+6_%71J87I22NeEfi@xzpW6Hvis{@b?Jen4H#ffCO z)(KqMui?=uv_3q&Ugp#dT@Mj{zHk??ZYjvQh8fTw>pC^Pf2H5nEZWR#YR}MqE5A}l zm6L{TuJtMogV*#`GcUStMpFC*RI_J#Ff~ajMU)gKxg@NR0I#%XB5-NcK&>xLnVn{6 zN%bp@ud2iLPJDT^oT4=|8D?8fN|PR}I}{GG(M#RCS2eO=U}{f;!FrxYU8bYgS~k06 z%YU-h)*!m=GqsqGzP44YR8n`RmP9F}eKYhC-Tg($+SRSwQ=Xm9WmZ3f_g212vOq$5E)1d&+yHgXc07AK^tym6b>Z@YS~YfER0X?A*GgA4(XEEIB^Jc5EX z(!xQhyjkVM{f_^53bK_TX{CIX*rlq>;X;0otq;jwm^rZ3l^@9`k`_y7_(zhNT~@@$ z*&67V-4x=7%BhUjP<`|0whQMZ%?(Z!^^d)~$2{$uT^cpsnlphSyp*YkGEjKb1_c-h%&}_0F-ERl3Az zwtzwb7Yu`?aX!)YbvuR^orFtObT_uF95)x^;OaN}xmzr3fwMHP6o%#@PeZ+7e|oIuc{;ho zQ$L+ja`Wl^nFVrf)r%>IU1R^Sv z+$w(6uE2M!y_)X-lAY>=@Yri$P%YHvh@I$#Uw4kF%TR{LYi*c}*2tv5D)^6>wDU(o zC!a|I%Oa667q?Vb*W*)z4ZkFZ*b)1? zWm2YZ-;~%#Hm|UhU4OVT_XR}P*1_z2u>Cnus3WhYtY6n4gK`Wne`%MHYW(nP9IsSo zqUid!I@A~(896^4Qv?ZbQ5mh-^e_MNK(eLHwfSX@m2hE6Sm411!ONJkX4I#3XS)AF z??m7!8#g%>S`|%ZLup(>jkmf-sD5SC%DasDyaB_TBs)?w_Q21sD5)uLdrv3PrM#uT z-6}BoHmh@b@{#Dm@M65gByck1>`ltx-Nt(q3tLTvrB#AGr9A?+sqYbDGB#$M@<~W_ z{T~9jcJIZ#9iPc^Ihu%xLG+Ie@?LwMmc|HsF4Nc%Vz_=-bRHD1MfK$s+O4OCi*wQOb-2(ykS2)xx)>ttq z+Dyzekx7A`c{=sfa!{tMUUuaCm@j<2GXB%kyZY2h@ed^)(QjOjeBIQ7nfujEiUvkR zeTMco=Y=n=b=?-;Q|jb`>g^k;>D+8xjPLZT$zr*RBnq@Xc7jBD-!fT>@|d}5U`xn} zz>|fGK-IVu3>9SM)*F|8<@ijp%dGuZbl14J+(yoc`tWRtXjsi2+d;#QK=kDFEhiiD z##|po=i=3Kqjh~T9I>K@+>d%fK68Z=0|_;NXloRb&fKQR3NDE+4_w!gcyYSOSH9d` zg7C^haND6MugSx+cjW5p={fT?MC+B#;X+>_^QydtG*;z-hNx9Z@889G!>Jr!w5q1~>3WOO#RCP^aZPzP8=5ITF^rTZKi4}H z{bCg>6<;5dZQ6%i#`eh;jSr^i^72c*yHqu|5)O)l`@`}p@I>Ll(vv6DSni!4?mCsZ zYVXc{R`2*^+xnK?yYageh*8Tvq*$u-z->u;t?6~=oUM5~#>ipkI}&^PwC-oRpf>7I zX$unx@6%pw`m}(rc$kLeGDKDTwhc`MoV zoIELF=j9y~+bZpzS40QqLf(NT>XfY2<-@e2+d@6_7}VIPqG=H0`r)G{Y)?>a4ECU6>^ZeN(Zm9ah zIK2XpkZRqY(vW~vgy(m=XnzuvOQSk?pcrLUuvn#M9tV@7jIyv6C zOEN6Ngp+s%kz!K_Gji*trIQdd@&<*un{Bay7L4_BlSHm_l@zOYblu0fn~0k%Hoalt zO-z%o164|fK-Q{uSfWTGwREZgw9I`P=yT~5=Zq|x`Y`MEOSYjKOm(Oz@!n-If3C-q zzX;A38UzJweNtvIvwPKQ4JfP($Vt43`Ife%l-UiR`JGVa7l2~mx-LBox~YxQ0; zaHTY56(MT04s6(mK4kNS!Fsj2L8rxx_azL{(*;%FeNnp3S59J5<4RAeT#Rek!6(wB zbm-q2AAi@o_#Zkjf9-yxn(+MS(EMAQ<}XVBiyqHq`ETcW1$e4UhirB%$AG{0jxEh> KP0NklV*U$2rhK6Q literal 0 HcmV?d00001 diff --git a/images/icons/guitar_large.png b/images/icons/guitar_large.png new file mode 100755 index 0000000000000000000000000000000000000000..2403813c1fe3e569719c0e6703c7337341376733 GIT binary patch literal 2335 zcmaJ@d0Z3M77hduK@e12g6I&b5Fsl`AgNKZ5Q!3q5R^?Y%K!nhn1q*rB9cg45L}@8 z6aooiQLso+P(-CwTLht6MW_h4Afi0CS~t*2Cn~=8hrapE%$;-ReBb%bxo7Tgw(`Q3 zI5{93U@({yCxjINjbh7XZwK8KcfaF9!z^`hv^r9rq}B+OAdD`S3qgP*6(oZZpg^3l zwiR3mgTcKd{AhJFH?pI0SmQMh(HRe1%Ot%My8@_X~++}ROs00nT+=X2sk_ei-S%w8c(E>$W%fA@aaH8 z(UjsOY6Oe@DHdeWkSS`lf{MjzG#ZS?A0t;LWAPLU#lk@#pdk;mDnq6gXwfp&ym1B= zs1hk93bjNo11yXJp*&qpLqbYFrXW>(rj@Bal?f^sRx40o@fe&XrEy0t_y4;}rJuc3 z>Im?^dcR1l;%6v8Yy_y1rz=I!!X?eKgi=tMN>HGdEBSKyn(->~Qsip6Dn+gUn2}__ zhbs_CWR?lk2LzW(<;YZOflLH)STrQWfsshWR0^GeCy)tb7K@I@8D0Gl05X9Po7!WXfYW{@hN$ShDP`4=c=E9Fw)L(){q z*R>G8uH_?E`~@wa@*sT`i-p8sElc}9OFcdX^^fK8bK^qB=hg>hP`@jo#=iCM9)B3j zb{B_5=WBZ&8RNFhh??CpbhPnay~|TEjX!ESK0I75Hm#a=jJR|Rl+mXK7)x|zP$bJ(Wuwl$|u{OKf=Un+{If8XP?riDZnGRWw z#+*5HjXBXAZkG9V!v+zy_UEi$H0pS5zcEGjUbBG2lbKzU&MXD+);Wfe&h0|p{3#)C zw_QDad9#DnhFi0GbgatSA&fNFKJMfU(+1Ddbug~)G>2O^6PUa0rhxtlrck>gqm9rx zs7xaq|hz3_S=cTWyN zrzRq<{4ZnKv#~+ReTr8uqgw`3SEH-*;c#=I zOk2zZ>~eg(OFfIGSuHOJX|AO_<(=D;_CSE8suypDzI;c-ur_ZemaZorD9d}Za&YY* zX{QZuI!kWBJBxzX)Cp~-OlcEZZ*>hRHHqy)e0^Hh7zK~#^g;AmcvaVW@vN%}y#EV)ChCe`*${Du29yFJ^ic~sR|9w);fU%t7NHXo|Z~qk;O*k8M$UU0c;4vJ7EPa3F zvgdu2a_r!oQ3S%+v{kSx^m@wlUcm!S*~wE(Z)BKPw*Gsj$8(2@6~|2Mv|j^$CW)4q zhZkBm9$6lkZM!AhFfzl5o&iIn>R&_@_)6EFe=wk3IsM(E%dqn)8HEMzvt7`+hB_njx1a;JBSqh?ZQb+4^HBJ9%(7Aa?G`8B?z+{dPN*j^ z-gf?ZU5HCy*9IibMAxUAJ4oUwy1CXh>!kV(x|#*By7gnRI_&RmFLk~3u3Nm2uV+@5 ztl9VCoAfSHOlm)nmp7I)>0&Xtpf1)ln_dfuf~t<#mYa^So`Hsq3*}&CLPhwlGuzyF zEq#+16HoilIjeY0G}E-UiT8-~ga z(=za4$~|FQZ`Fy+qJx5b)L+S({+xHakcs#FZrnc&rxYO*hp%iW4>m-u^l0+CZw%Y| zZJm?iLf4?CZ!hx|^Ht?f-^G&rCQHd#+q0$nt~Ebq^*a9ObdlY1lj64*&3YUd4D2XI z&+79-MLsVM&GKv67Ir3T2ou(NJ-2)6oICj|1Da#sGJq;z^zgyFvlG3%H$O>0k=r|7 z`c!x1AustT2ZmR)bN;@o?Y_M~l$|=5ILEwGJU8Ke?j3e0=g8h9*N5>t4s5G@Ra>8P zI*L&luj;CJYa8Vo-t4YJmOcK%#dTABZ;bbhY+?5A(g|0qHddL@R%31LNOM#qh7nj$r4*VPZXy5G)?F+tnZ(A)6I+e=-@A+cOuUCW*3xV p!vKiZo-PQ>)(2Ta{omd{!4Ov`FHbny#j*UdaDu~FHH_7|e*opzvAh5P literal 0 HcmV?d00001 diff --git a/images/icons/hand_large.png b/images/icons/hand_large.png new file mode 100755 index 0000000000000000000000000000000000000000..5b0ac2d311c721ee467e375fded068ac23c5d2e6 GIT binary patch literal 5817 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 literal 0 HcmV?d00001 diff --git a/images/icons/hat_large.png b/images/icons/hat_large.png new file mode 100755 index 0000000000000000000000000000000000000000..eac4dabd7882c07e9dd4c50f83fd223ad4a8c325 GIT binary patch literal 2412 zcmbVOc~nzp7LTloEGi&Nk;dQxN|N_p7Lp)hNQh*{AVS2TSQC>61ju6YB2hrW1*t{L z+KOOl6?HhWXn+x1$ygWE2CM=CDscg;6~+>l@a5}}Ael0+&P!;~o2!&t6N6bpyL zBFUx=jqoB2#yn5T7a#)OGKN?oBZy2o1g%VoqA{37fm)?VoB$)(^>D0I9)Np(`aBLR zl?32cQFs7P$%5mgA)8fj#O6@Gcyof7F2MyZ#xBw_Py;d;5n;8mM7f%w4Zyv(%Rtwr zVXFwOA!pB2tAMYqBU>uh1X?I5g4^SCA=rypM+E>T#k_%7|K#k_Zw2qD*GG*L!U> z5)S_v#%HzF{7p)j7!Ioy8kHE$M~v4580GG-9hnr-Xc)^?QZy-|M7Bb#k->6=%MQSy zUkDPZgaMFfD2sk%zz+hbG!Ue5s1TD(fha*Bna+gR6E;4FrIV?Ceq=V&j|xE`7!1-$ zR4R=Ha)N@%BodoSpTKhEYD6R#!xMg`sNZoc{V%Z$mI@Xj3Kd_WNSvsEus8*xP{%2h zSXKlT>kX0!!284lB!EJY5y&8Aybef2fWm-41^}SL2aEOQiNsR53F~9Z+Y(IK%5RC?KaN}6X|3fel4Tfl{r2nX_ zi6gXJP0Npcf^I%`8Z1ZKONI7P|B|M87>uQY%VzSm9Z!psGx;k$E`J-rDnJJ3o`_^8-k7P=`MPFtuQmV zBYB_NCdyj>+nKhX-S=IrX!ilUPWqlNo5{(nKnTch%?zMyza9OHl%^$kyZDDrozWE$ zt$Tc+3zFLJ%UV(#-1^MQnNBzI;}7V{w}@I!ks87Q+T4s$y>wyGMwag^5oPxaVa-s> zsiDD0px!-XtsQpKv7>hy2+ zM;On(5`uA4Ze=@5uf1MuKXYb#jK%HNox(&$UP_+X>YV-uxdG0@*$EB%ah(FnvpK!T zv};$I@0%L)>-AF2-#n!G-nMU=-*jkZN43bK{q}-cFB%FAM=vJN7hdT;(`vM9cL?>> z{Sw-HntAZ?)8p<}T`TX+8_)=M1|G#5Ee8;H+jfIO3I6eONUGYh@`6t1)fl#ZLukOE z{&2YcF_EULI0i3_Sp53;xrS9P-)6*T)^_?5XZyW$(%O#Bxw{ z;9}j=n%dI_Z{1yg+uZG;=R4K2zHyZ;U6Blu&K(51vMaK79?aJ?EtlBD#<-Z@h>Ye}_K(6KgB_JEvAojnVzLc^h~9{m4z-A5e;yTb@DQZoe}bhT$$#EYy2PKW?Y%}r`#$Z ba};9MZY`;dtS>oW`v2huhq5b!gxmfNi|^H} literal 0 HcmV?d00001 diff --git a/images/icons/heart_large.png b/images/icons/heart_large.png new file mode 100755 index 0000000000000000000000000000000000000000..998f27d4158b01aef0ace6242bb3e55363615bf8 GIT binary patch literal 1744 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 D48;Ch literal 0 HcmV?d00001 diff --git a/images/icons/infinity_large.png b/images/icons/infinity_large.png new file mode 100755 index 0000000000000000000000000000000000000000..41c3b606655cbeba04229373c071cae75cac9b07 GIT binary patch literal 1972 zcmbVNX;2eq7!Hku!-7Il1QpiUQao~Oj)knG5^|Ivkr=2VqOv3lSs>YvEF?H;jo6A< zEQ*2$RiuE3h>ljPqg0|IRX`LFM=BUwwY8&Giw7!bHwd`|fwV_wmfGQ_lU= z!`fF91>`y;6;+{#CMWYe z8b+Z|Q?R&rB3=;Uqp@hx07!Y+jN&v}dDyA3G|2T1q4qzG~eF0y= zRv5&n7K>bFL}QoDjZ-g6R|_=s*`EMm7ML`kLkR@1=rZ&s*dnA4*@ely8HV6U`!~}VK2m)sU95%>dvB?)=fIOHF!JH6a_@R^DjG7c! zC6NvLB2PlPmLLo;i)A*OnPx5%H>R>cfk5D}!Qn7S35F?0PaqbC-ZXW@f&?|GjhKPJ za6RC#h$Q1#gpf`~`X&XPL7{kSSZ^9G6j?Hs1u?KdCYzPf^HNocf8xnDsd?v`94inDazD{Y?h**u?f^>=bR z-Dh;PkB#D1mb>icx$TqtTq(1D8}9SzIPcceS>N@8ueunmoM+oIceEDpsIc-1 z%SocOhv$>zA4#1?5=JuK&76f!D4jujx{6xn?PI-?T5G;%c+5)F%u{$D~qdE_Kx3_e91j%rf`t@jeS&}UtVC*aag0DtcbkWi2SnF@1$x| zzs`BVm}>Wp;w>#+anqkc3+F_6)KbL7eyzDFyUgn7b1f4uAn{$By{XS~kD*IqY(WM6 z6K^MU_7}_|ltnKE35V!5&N6&@b_BUTzTv);j z^1a@5EVr5ebLyPBBG10Z=MxG(Uo&yid)e00l&|08->6+bWtXU6d95t5ZU?o%>1W@l z2ia+PryGzR;XS~|XPF7KB`3BXb{(JCyTIIhbnGM3r0hpX2Th+9>=fnEndxV**;={p zBZG&=KX2*p%KR;Nzq+cso!x!1D&Vo2mX`Cxeu_SM&BZf|8f%?P8p^HxYR?^Ao<;SB z;@0%oFMm4dg!P^5bn2b3L0EbGP6MsG2W#?p+FoP6@AAa|Dsl+SYXyw(TMeUIT8*{u9Q zozqOt=Wo`YxvrbH8I*dOcee`<+L{tm!@6ymhS0k&rUvX0W^Rjprk`0@dY{KgFR1XX z>kHQ6*0gDg;;&mv9xVmPlnYI8vK z1C#cTf!|oi?mgUi^=?vvW&`^LkS>3|j@X{@B+WPA$+qv(8Xx3FQTNAhYdLa@>$0UU zr^ndXnNzk%v}A_!-WMutR{Y`G#V_4^n-?Opwz97)d~!RCclPAp+k}4cD(0aZk=tZ< zj$HF9h;jP$wn7(9(WaP+%K3NYpG&TA+oWC}Mp2(P!qOp}Sbc^-L{klc$UpM314J0` iZ)SV=^v$nEvnjpqvbAUPS6*@aN9EGFlDdeb)qepv=mLxY literal 0 HcmV?d00001 diff --git a/images/icons/iphone_large.png b/images/icons/iphone_large.png new file mode 100755 index 0000000000000000000000000000000000000000..e809565b1e0475a79c5593334e61b777bdf59db1 GIT binary patch literal 1540 zcmbVMe^3-<7(Oxe2FD_!nGkE1r74``_Q&1s-L0&4d&j}4M+nDARHMt?9<1EmF1vei zoDMPwnHqIiIW!I+R5MOCWRzt72%AR3L2a}lCaEa8N)2NS$`JVUvc1M0*&Z5L6i5iV&kt5eu07j4cXy=2sIQ*sy3@J)>u~H~_l`2-^G!~Cg z%0Ui4TgDY|tf#v2G?%5(%zd4A6)VNgwUk@%>sZxC7xIe$tWSUu8a@R z@aWMV7~(xNyq<8PPSMJh^SNP(D-7qk+~Eqh*#oay31x*S5WvqVEEMwl0x}h%;mNoZ zn5)YO3{AQy6*N3Ws@RziSp|uM2%SFDjba!?k~+*lkR-Mo!ch!IP;ir(n1Lcl3O7Qr z3kKOFkC!U2*<-nYMZ@KaB2oxaRaK>{((44N48hE1vl;`(Gl55@Tpdu@P-Z|*k4La^ zvRmRsg%<*l8j&p(f(i`-rc+z+i%#cs;D8(x3P^^8SP{W=DB}04`%;t#;o45 zt6Joc0!|i!k{i^+n;r)P?e3jObp&jvXCxjJh4tA4chJuT6o-w5!55u}_fV+b1XMH{ zP$Q0#CJZy#N!(%}aDu@MW(#hM$CwRkM6FiLj2n$66`74$>=wdeCk*3AgfcL_4xKDKsz(W(UuVFG zSRd#Sl%Q~oLQ!xpgP;s2>*fP0c9~ksDQRq+#J|XS?2_PzCW}GwvyerJ|A=J842;c0 zqGr9`idjiGhV}d(fe}CkQ9J3b&WbOAc2%d-=L8tjCyfh$<0XM}RMfGX)@TwIIBXVI z=;Fxt$5$_1_sI6j#_q)yLviA#n&&JBwVQI=qfZ>0Gx&JJ#qiv^hK-v(yq2EkT;B1* zd#=w<w4|l#2X*oRB-m~EL$T{?*QL&ZQ|K_Xg{^Wf5^?lU!#f(;)c3*u` z0;8RiR$o4kd0LwW)h8t}+MUs&lbvN`SE~6n!;$7OZ_BfEv~p$ko;CabHg_?(D@Ng= zugBlWUqPHuq6^Y)jO2J%ciw4@Y`#EG1b2)h@V5GohsfIv{k?6yVb7CYEtO}sM6Ipe z`x)!?0iUZmd|n)za70Z%H$OBM84l;JAFKmO)9NE73%}jvd${<9yYHVbGM?Ht)O0A} z_r@ZQ3FY+HJip}{aJq|dt;%%9o?;%er+1>-wUM2LhZ^RdN?$l{;6U;>6wfbYTJ62T z=yE*y@`0m~Bdb8g-)=IV9cTp8E8kh~hYKG#=N$U8t;s>Z6Z*{i^4h_@FCG6y?Ek5T zp?-wFG|P|vvGvNWuS$B?y((Y0b!luM;8eZ3#F4!+yh^Vas-q#5niTEy(=Nh$q= XMsL5`(RjuutN&$3cAl-1*;w~4Q282= literal 0 HcmV?d00001 diff --git a/images/icons/lemon_large.png b/images/icons/lemon_large.png new file mode 100755 index 0000000000000000000000000000000000000000..3a53e799105df1997fb79c2d68ffe6904f6ac9eb GIT binary patch literal 3986 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 D&DfS0 literal 0 HcmV?d00001 diff --git a/images/icons/lotus_large.png b/images/icons/lotus_large.png new file mode 100755 index 0000000000000000000000000000000000000000..a1c7e592d6facc487ada14b16861ae13287cf02f GIT binary patch literal 8385 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 literal 0 HcmV?d00001 diff --git a/images/icons/motorcycle_large.png b/images/icons/motorcycle_large.png new file mode 100755 index 0000000000000000000000000000000000000000..80bebd4c81afe97cda368907e5735f44dafb3e99 GIT binary patch literal 7606 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 Ta1hhgzw`Dshlqt%Kb-wLZDJt` literal 0 HcmV?d00001 diff --git a/images/icons/no_smoking_large.png b/images/icons/no_smoking_large.png new file mode 100755 index 0000000000000000000000000000000000000000..cda8f506bd552ebb40f81f433eda9c6bdcda456d GIT binary patch literal 3234 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 literal 0 HcmV?d00001 diff --git a/images/icons/quotes_large.png b/images/icons/quotes_large.png new file mode 100755 index 0000000000000000000000000000000000000000..3633bacabbaed53b361060a730c25308295cd929 GIT binary patch literal 3385 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 literal 0 HcmV?d00001 diff --git a/images/icons/rain_large.png b/images/icons/rain_large.png new file mode 100755 index 0000000000000000000000000000000000000000..4c69dece61199cb0f45085fb0a69e901a1bd666c GIT binary patch literal 6510 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 Cbx5uN literal 0 HcmV?d00001 diff --git a/images/icons/soccer_shoe_large.png b/images/icons/soccer_shoe_large.png new file mode 100755 index 0000000000000000000000000000000000000000..11862a7fc19da64cbf4e5173f3538cda7b7d2155 GIT binary patch literal 6400 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 Dsq{zk literal 0 HcmV?d00001 diff --git a/images/icons/star_large.png b/images/icons/star_large.png new file mode 100755 index 0000000000000000000000000000000000000000..01f6c6a4e68d0e0c7aa6389942489e97394a37f4 GIT binary patch literal 1933 zcmbVNYgE%_819Nit_n;zs3=)IQ$c%4OVc(|unO{0Z|TZ|~C!%1K%o~$)Um=C@?&IGh-3G+jN zj4Lxn;u`JjbQ2zz9;?LCb(mPq3=acBEigr($4L~h=$9MJutmar#S2riFW^mMw#plvB5l)C@N(f3u@$mY%WKycf|Ed+e|9(f82Phwpp2G z#5oGwOr)4Fsvb#`hQUSz<82VUhD*1pZYAX+SiqzE@^C~hf)NTbD(d?ZRJgdD!V#;X5M&N!4a z97l8ft67GRs19_9Z(5()ycr(cKuwH^8jUkX-?h}lHN+rNrKO{%bgt%Isekhn&x^HR zDIZ!TcgjCb&)L54G_y~CvaG$TY@vLr-+Zq?p~T{KYJDa%I5*c`URHB@mG2mDZ?~v9 zYZ9hMY*0*NKKXLo%fK0lF1wRb>-o>_3}y#b$&T)RfhXPG)zts=n7yVt*SBt_Ukm*s zAe&L|5X9397#(WJU3p=QF_%%BEYXZ~^{d&*DjQX$D(hI)nE(_rj-KOjXN4IsYww}2 z?0unaE%Ymlju+?X%{F@7wY^f*%8tMJOURkpb9CR@11`%jAH>R+=H(UI=y`?CeLffV zsGCa|!OA7?Ws|#AiFcLjJ@Lhtn&@+rC)5NDlq}@#V$>GxkFU#ObQ~`_JaW+HI?WhV ze7~Y{0%pCpr*^ShvelO?bh`L?eo)WoQs>EO&%-pEIv?~C&L<6?v5Tz)%z)NC1A;1c zgxmc^?)@-Bu{ZO6VlwjE=FACYS1(HnaxEi89vRsQ6T9G&1-~s&(A^KY-SB&PmD9N0 z(AItH)9Om!43Cl%1710m@#Zl-waBMMUBv+^&;1)_{^WAarS<8R%|S)6#uycUnsjbp z%eujg$4;MA#jH%pJe;+{y~ioMk?V7Jn@^zg%p3k9m&X>?yg_+yW!Mp%{`;!NKNtRo9$IOZC{v1*i$sJ?ya`GJ}j&t?BLy!{6*NGOP_nqp0-RYYi^Al zVcj=wE^uBkrGm|^?7NoIALjp&)wO&rYtne!sypd%{&v}w28)tWGIheC4FcPEu~iv- z!{AY&tsZE6Q7@gGOOLB3MY1h*Uq70-_5Ecndrs8WxRUX~-=F>2zu~WK&%5|R1NlE- zZGKyQ=liI-<@R*}oKBYKYUj>w(N!CqwX40jsnJ&~6ite_%u0i<6g5snlU+=K=<{bOx(bRyVyUYufaP3kIJsz3MDG#8xKKiW^`1nQmDqKA8Q$j?t3(mbC3VyhfRg( zfyRyW2iEuPpJxp`XH=h@^RQJVXiqq`tv+}SV^LQ8>Iy&dta*F{cI^T&qyEaRIo~H@g;rC?x;S})6l66@+IFDgc0q$z+^nxF#v7v+j gYHVJ#hQH%X>%4C5JHAqfIew5aQL)JWh{Vjl0VO&2EdT%j literal 0 HcmV?d00001 diff --git a/images/icons/stress_large.png b/images/icons/stress_large.png new file mode 100755 index 0000000000000000000000000000000000000000..577be72fa67fd14bcfc1c1ad24626bace2fa4b26 GIT binary patch literal 2314 zcmbVOX;c$g7LF1yq6jpi#086>vWz5E30a4TBq4%BfDSOSj7mrq5+JEeQb?p(L{JfI zgk~DVl?JhCL9k_OH^61oMn^;t1VKW(gEoi*E{!r31ZO#({xNl4y{+zd?|t9B_nq49 z@4ME_bdf26Krr+65=rq9HoPPgyjTD7Z6H37G0$Ku0FA`rWg3Lw0izKJ;H{KxMx=-g z-ul;{5jO(CC{Ga>j0H=4cyd%pl^JBHI;9#%69{hZI<-t5gJ3`evRR?xQ-;nqQUC?a zr>tj6K#5w2L@B%yG)O>#Z=gIOM$UyP?yCVe9S>KaL@*hkQ^u;aJRP4hsh5Y(4cjyd zFe!q?@F^di3YPc-LR5nQOe(`g4nh#XVo@PiCW{5F0_Y$_r-685xj?QwCW}XB15*zL zx2Az3c~X&h$`-!jQ=%|T&7;xc?Ze;4HFTK{g#^aUh5zX3;%dnRKQAa^-r^MbkPyhZTz=9$aabUi!4N`17G(+x|33uNaA#po>bjpFipdBHvf0_`8nQqZnjPrtUnF(z-ti5!+n9dF zNBU)`RQe&Kc=?{?B`K7R7q=Jv0ZaS!Xc4k7v+QI=%^c*>)A2GFw>!K2;)oV`)M11c(AlQmQ{u0L)J{ zEI;-iH$4Y#k*ZExtJ1Ds5bFE%E&BTYLrCN4V;T8s&jqN9;^n{1(&bHFK zlkK_`(QCTw`>)@HOFIc~Fr8^)Y4U-XII*64v!8P`eyMritUi+Y3GSF}B6~dTL+=;5 z%J25%z>-$;ukxQ<><*|1cn&a9hQp|cp5>$#2gIfvtH$LIDO z9GTeL<`_y=`+B>txA1BSu)VIoG_b1knB}N8?TMMwJv7zpRrM0vjx}9*`U(9#{rR~3 zUX#ACE5>0aw~6jcbI#cQR2ScWwr2LalE(f){Snf`aPR0px)ddjKGZ)LzB63q)Z9BW zCAh;g%$QM2+*fU@7@qzn0g-`)~M}bv{1nko3Sg zE9g;e+m)3IXAL%~MB#iiIzOl!8t$y5zmS$E4WF*02ept|GjvQNo8l*K-WRQGZHm8d z-YIht=>Nbv|V zXIc7=l`%8N;d!IkJ2tf*8@@oa84634*$G0K<>bQ;xNtb9D=*~zp!2;{R_F}rXJNnj+?&$*_u-$5P?tn3oPTQ0%j3=#^_TXRt~x8cx}-6TD23BW z>1_J8*2)Jv2g-7~de#QyABnLR=UP(aGYXaGDJN~8(Qb~w;(sjS=2ux-(`YY(v6!kAeEjggx}S^|7w;Lv=_moM5k730uD(Ya$cN6^rshXeDrSH2vPG>WT4z=@a@coTS2O_XRn*J18}4X zIFC?h9lR@XFu8Rly1Bw~gzwgUceL3CPRML1>zk1q(jyU9oeub|&J03AO6Jy^u6?Qp zkJrQ(y=-_ja(7!Sa~`}eGPRWu^2D@(T{YwD?AaNyn&iuzoPda#l+ZFcseBQ6u|-#% zQ~Zxqw&`VfWpMjH&$@LB>b5ioSeqyY3hUurzZjptLGa12_991jIF9yiT@m0YjEFwf zoL{jQTfU^=>s}Y4w1W38)ctl}YR&6fpDarOu*X8|wJbBo=CGqfJ$Kn7ZpRN-#~?wh zX!l%yKR6F5Uq>fYt%5-*Zu>7c;I&gUzunx(6+Xe+MYnOH>?dlh|Sdxza*UAU}i##o}z^YcV%dHeE~DGVu35{W|9*|CXk-l)b2JXxFtQ%1C=g$MH^>yxz8} zW{0Kp9P84;OUo3mR@7gq4cTrPmfjxu=M4+`f-BbC$ZWhV{;xY`^5QXEKY_w-S`(pA WZhkSh*dx{OcjE2oE21))H(A{qjGWWrcT z013s(yKX~nDAb~CNni*Z!t-N@6f&&PsDstYln5Gya`V(Gg`#)}2BM)@iQFAMTHAmI zBw}}TFolQbDOpgQ#5+X=1*G@~ic;c5bTQh~18~za5CRzl3jwVxL9S+K-O;nW3`90A zuoa?286<~&*zRcL z3sx)uAB#JaLo<_t|T?hmhFDelvQ-~BMflLR9>;;aGVL{N#i^HUGXly){K;RJQ zG?2pqnM@X*#^i8Flm)DhTn!85B51*`1hG4hW&a_T!BRm&SfL73C=wPbfFGxT73w&J z5?}>T0Y?G}i=RzAo`k1hWmqzSGG7NI9G=1;5*TyCC6RNG@JPDw9N`fHaVfp2v#+p8(?!XK=BmbeiW^R!-~@^Nxd^lU}l_ zl_nevA^2+9ii^=4+&2O;VB%XU=AEeTjLbsbgtdhtj9Y{ z65t&+QbY}X@}JawHL)?8l%ymLHQ83XbokkDs%y)MT^KPxWWxX$?H@>;vN%yS3&(xiI?=BE?<&q z$dWVw8s!?EV?M&r=hTz=X2ZaZHv(squ*wzP`-VAFzCcZ+G>Fo2I*P>8rHB^~=JuTM z+ODn7D<}_|cHcDgZ+2tH^{@Ye#(+Z0-&?fq9>=bhEuJ;pWhZ{%e|D1-?0T0@tnCtMb_qn_&%T1KK!U zpmrqX#at^-Jl^i#Xz})7>MHe$fSa=WP5Jx(Db(+_b#3kU{SIfpH~tKcm10&}!tKd8 zB~88EGsz8sfvS9BpMg$uxP%`Q_PsW|0>BmR99b}wt`zn)5ys_rS8HHud=HqGMoqh`L z_SgrW75_Nmm}lr6`qpC5^-8JjBl0@KCZlE}mf4EvFOH13eVMTNdsU|EryZRRlG@H?m)6mR z-Q37ptHYNb_GCZkSEf$VM=H-#U7k2YRaHN5n=rw5I$jTl{nXU$__Q_l{;Msa9>r3+&*vcQ3`|Xx>0aws8yWqQ*8#1@)R}i1q)LjJ)O%2UIICqTvXr9%q zEA!i=zpw#ETYuzd7py4gi#yajyG1%sOgvNP^QP!eWhC!p)C0^=6l*(oreO5c;q^tM zoO-`ZtIu~|*>pPa=~-M_{MsVfl`#`t$w}9wJ49Jap3LP~hs#iQU)epD$7Y9UhB(hq z`J9`P{+#Y`*MIk+(#~B=DoYR6W2d~^;HrUBhO7xEJu}~0+HD@zevvK3iVG(~FGx}! zOMfX?e%P7W4~6gi8b)ijFrXg!o1$W8rM1OG0!CVh+21$#^rf9x{;!$xTChY^TnMH> zju+NqQw$^rf8S%f?rx(T1&(FW>&GjOjt=l?U7xRdHuL2}QT_~%pWLb#H|q`Rzx}hO z**g7=r`@a2c4}iJd^5WpY`LYIwj4YQ%7LQ69B6*zdP7>2V+i1f4xmi4C!9% zDawC$C_FOhz>dx)=d+EzcP<~Ux1n1FdXDVHmtNQ3n>bXO)PA>Bel()q-05hBO+W1c z#(B|n#rkwort1dP17MHAZ^pEO%a!Y{cGhOrQra4r@9vd0b97G4@I>iAePLImyG>hO zUeu#nTc7IoaXGJkP@c|eH1@SIxBRhn$o#)uZR70P2Tkz9cF4ysG{(6mXr#)?nOSU! YLY3VN3L0*hF#bmQaQxZlnNex~1ypGID*ylh literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/acting.png b/images/icons/thumbs/acting.png new file mode 100755 index 0000000000000000000000000000000000000000..cc430f543d5ccddac02965cc5f68fc73409d90f0 GIT binary patch literal 2005 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 literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/automobile.png b/images/icons/thumbs/automobile.png new file mode 100755 index 0000000000000000000000000000000000000000..c89d62ce29ac7e629a9976e3485caa3607f8db5d GIT binary patch literal 1616 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ-L~|RWd^&N+NuHtdjF{^%6m9^eS=-fVzQ(*;f=KCTFLXC?ut( zXXe=|z2CiGNg*@ERw>-n*TA>HIW;5GqpB!1xXLdixhgx^GDXSWPQj+a3TQxXYDuC( zMQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}1aVY^Z-9bxeo?A|sh+WJvVozYf|;3~p^2%P znW2t?k%6I+z5x)K=^C0?nVMM{nJYkn6417ylr*a#7dNO~K%T8qMoCG5mA-y?dAVM> zv0i>ry1t>Mr6tG=BO_g)3fZ zE`@j@w*YQzUNJP7fB~jokyxN_sAmB35=^15FMg%Dxp39RB|)hO_hL1;IHa;5RX-@T zIKQ+g85nVC${?!>telHd6HD@oLh|!-V4)b0kzbNuoRMFk;2dnGpy8XCoS6p_&;;x7 z^|kWMD=taQOHTE4u~h<^p_iGNVrA**WN2h&WaQ%FXlQ8YYUt!*Xy#;LVqt1wY+_ryA&s6|>+A0&bTMTfT2i2Q` z+bxDT_38s1qYsK&q^O1o0n-nN2~W5{4m|0n<^j`t5intw*9k;0FfbkRba4!+xb=?g*dEYDfl)IO?niN*8klw|=_W9517vat4 zvoaX_rW=+b!VLe-|8HwlE%>>FH|oAb z>wM?^3(xXIytORY^KiGycKyaOhw7l~wg)BhWV9zmTRUBvRIi)e@R~oCeiS^d1pve*I*-~4F7b~mMK(#BnvH$Hg(s8BUE zr0(SX*iWY<_TS~%b?NSV2lu_}+izBdx^u7nI;F2l_PwO<<_eAfsa&(4>bXq`onc;k z!}*1~&(FQf-eela`n1=4{AJeTZ!LUrm+)6lzu;?!TlO6lTd~Qss%Vy>T;se|Cr^a# sy?XhJug&f0W(mw#(ZB28+#47f4jye;{r$LbC8&(|boFyt=akR{0Jy?P)75x!}K_M8ma1#Xs6{SKgOhsC>3Hq~N zvDyTYi;#jOjM``#A%a?3T9&?--hs=<$9SWe?|jO6;bCAFm-EiK_ndprL?SAcN~Kb% zR4SE9rBbQFsyUzl%p(UuF_<+|4Icwt;4)|c!=MhN%`~GXgPGtdnDB5NES=8gGPzB+ zg7u&ToCHt6cOS!JpcQPMZblb^D)0t;AwB#Y^D*k>1K2Kko)>^@u!>pQ1rC7Y-~>1W zE`qDzJ{WK?H5Egk7Hj}Zf-oNi8$kun)@$$;{7HhDe_r%Ci^FXKI)-~B|1Y6jL zQ-1k4FJyECG=u!0+fJ*1*+EbV7D@Ekn*v4YD3~pEv8WH&u(?U)N?rwP12%jcWJnsW z3DE3sUPYslhOZ>)T#h>yt1{`=O@rf|_8T)4&y)$i13X}B>vUM>6DX86+~g2wH{Z1; z*iB$9SP7Pa#jLmw9oBgV=1UvC;d77mZqN68=O)rU2g7&6@L+GY0{RIafj&>5ZygGa z%T9@f!SFLHpnkBE?_WF6mk#Tk^{L3-`}vVD7;duy`pD_VX-}Xn4(sf(44Thdpxv|1 zp)eTkumXC;0+h=t9RI$ZKSUy};Z!7UIL2q5ZTJpYA#J$J3dl@3ihTOB8NQvHV$@=0 zPtPsGkHKoz1-nMnb516vYG&pa4e#Lh%Q+Mn=BVXDjsZ=VJN~QWQ ZO#(!hRfh@~JhuP<002ovPDHLkV1lbpP%{7k literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/beer.png b/images/icons/thumbs/beer.png new file mode 100755 index 0000000000000000000000000000000000000000..18315865bd8b9f669785c7386271d2b4e8126d38 GIT binary patch literal 608 zcmV-m0-ybfP)6vpwZB}PQMTx5ld5HkwPASy)^UAS;63Te?IFcU%DL=YN9+rUMBfS_bVNTeAN z1VKbn5Jia?ir^?HsC^q)MAFy)#Ul(YM&2RBb3G6Ikl~Jt=ic|;Irj|$i^XEGSS%Kc z#bU8omMv?sK8{o*g`wyc+`=^8$MFvRh+vJ@vYYV)H&Kd%apdDHMp34z$2W;Hf@D}<0rv$WRKyF9CyVF5RLi%7|tOb59Nfc(^U8>sxXI-IE?O? z!g(@Qy3ey{#IXF1XX82chqbU<;(KISM`b4OMR}MD=g9D}IE1(%=JZN_h5R3dcVGs& zxP~*UrSLv09MZzsQh2Wvt_*wO650CMD%(US!}^qVdtArSgHB|i4@F@u>}KiL^8Z=5 zB3C#~Q{h&bnifaP6Ea)7<3lLKc+8|#At#|(UL+1_dwKYPDg2TXFo`d6{JTt4^D&=a zVgirl;gzJRurK#E)gccpb??LO0W{(vs(r_!4F^0#Y)?y3VYd3>t|5 literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/bolt.png b/images/icons/thumbs/bolt.png new file mode 100755 index 0000000000000000000000000000000000000000..d4d8c8ed7c5314f420f87a9e96ffdc0005922eea GIT binary patch literal 658 zcmV;D0&V??P)F|9LL}8uqA3FQ4)e^(7}=pSqDil5a|*uE>agk(6mD!c<^9#@?zJ(i*+*alybFVD9rzBmK|XicINipQaqhAm;3vtRfGVz{G4KK$ zWK?&Ib7fy=h^BeSRkjZtTV$8PMULH*+;aX{WRJiDj+K3%;zrX@*o4jewUK2ydbrTNgpelq?3@qWYS03VOj(Ok?UZ_!#?Yko*-4Vj8;=W zMCBjY6}0WAnJ(%%cxD*J6Y8pD8(ABR#qNo-*CSq6ZF#2EplSnB41Rc!m96Ddm0Qa< z9%N-#_E`17VacWJE{B1?l};|4WY@rb)n$uZ4i2lJlEc8Ca3TBEG|h-$l9Yq&1SsVq zn{a3-rf9ojlP@`hKM7_j2fuA(2S6bwS%Yp@tLPz3JbB!zTV+$(w}NTX3OI{*Lx literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/bullhorn.png b/images/icons/thumbs/bullhorn.png new file mode 100755 index 0000000000000000000000000000000000000000..a0671014c53ebf80b82c6eb3c58a2f5a649b81e9 GIT binary patch literal 478 zcmV<40U`d0P)T<4Xo2Wv>I-~ zZ}6lMd<_+W^m%P%VRp;68l&CsvE#Mi_y|X(B@(Tn2~JytYLTw%`Z+ z%D_A2-dZ>SXJ8zj!q*%^Jr8b%yKo-fW;rQ`6Zo7*nD4=RGC(57;CByVJq?aCn86GV zb#ScIg4>~8O2KXpvY3!9_te7{*ayepg8Xm=ug%?2x?o2U(QQ7_U6nZezG@~hAbzg%kWeez@z@&VLyxg@}#XJCrDZx8F9T?2Y zfkBhs!Cgx5gHZxJDbd}!2OlZHE4l}7D!~cegFE0Oyo9T=;v$3)LI@#*5JG~=9~ran Usi{~yGynhq07*qoM6N<$f(LojEdT%j literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/business_man.png b/images/icons/thumbs/business_man.png new file mode 100755 index 0000000000000000000000000000000000000000..c6e7b2c79b974f90e460cb360b409aad4213b37b GIT binary patch literal 939 zcmV;c162HpP){gsAy|(DcaiVx$p;uFmq?-&eGg)4}3H;bMCqGcjhkVB!Pf3 zWy+K(Q>ILrGG)q?DO0A*4=W-z6V*hVh~}cmd?G=-A^v61L$nZ8@RQzV6Ky&|^{698 z$t-pp(PdF=n!7R!zGYJ^<1evCMzJMCuYlk*lVua!=s+xEy-Z?95Pc2>Uyw=gREJ_2 z4`dQN%>}`YG6^2zg5aw%2_8hebtrhNY_s%Ahk{FF6U?6Sb3w7!h&&lLA7#XMn_^$c zoWK#8262EWR&|javmh}RGr9B@A?6Y> zq8yV}1;#O(eYX>zF?KtNZD<#RA8S(z|E#Wl3<(B<2~0pnm5c)7OUC(|SaW~twCSao z=jre8Y!kbQXg67MSTSHNUggI)mm(%0_vN+yMC`~0p<&{%jmidly5lu#a}i$upBCD( z{Q49zY#;^i64*9Q!8m50D=~KMv`-9_*yRS}j>j*|%x7?1i_M1JBHzY=5d2i&>9(V7 zJ&xOO+-Wn;D=cmPSSS=)ESLp7(JAn;8Th_HtV%zhZi}Gc2DES0oMYvn(*m(R_?1Ey z2E>#4TEx(P8?k`cA{cMFAA(~J1n-MRqmhhr708=K;w|$-@Nox%SLuk`iEX4vyo;XC zR~B|uJmz4dqCHnbOcIR8X7|Bf3SPwN{2Or_duAh_uudVM88>ZIjK4yBE}e+(YyJbt>0i@@>1j1>Y?Bc3>#*TEKHt;_8&!6t>*o5=Pm#M N002ovPDHLkV1n{rv(^9r literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/cassette.png b/images/icons/thumbs/cassette.png new file mode 100755 index 0000000000000000000000000000000000000000..d22651eb873fcf8e1e5c5844bf7b28abc78df17e GIT binary patch literal 496 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 SU(ad<)i<85elF{r5}E*O>8N%9 literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/coffee.png b/images/icons/thumbs/coffee.png new file mode 100755 index 0000000000000000000000000000000000000000..d42dc1934ab16d576665cdd1f23378e2e8d4e5df GIT binary patch literal 636 zcmV-?0)zdDP)g6p7(d>$NAQ0^SyWOz2AG!{2s?JSS%Kc#bU8oELJEf8b}9B$*%z( zfNmg+_~AeX5UFe6O5g?Pk^B<$1?9vqL~l~pz|H|ZFdmadEV`NSV0ej4$sbqqX%55FS$<0P1y_#X7GfCSybR*+Ej#4iFK z(O)3GsDK;v`*r-f)A;Zg(lj$cUPLMJdxMm}Hu8&ycQ_malD~(ccBB{KMgKt8DQOl1 z_$2=v{Z7g6NBGUSl?fDBj1!0;gxMK*i7XmaaSaUor@(Iik&|vYxV^g}HAc^}fEEbE!VzF2(7K_FDpY)o2>Qg}(Y$(yqqKAquRCaM|PyfO1z}IlrJ-TO|ah*T>*t4@Uhwp#po68xsEF&W$ zBO@atBO@atBO{}J*Juz1lfbxaH8}&+gAc%#=mb$vkPSV#3&cR&#i-05&<1vbu>;NQ z5(?h#Bd zkVC)Mg1_K7SS6+W5Ac+(=YR-ZKLM}7WiV1Fvs1utaEz5zgAr1_1z;#$Ph_+98me2v z#_dut43tovT3yVF8TAbX)sUpl7@D=Y*3--^+Fk77{zs_JS1?Nl!<8&Ge}O`mUj0Jm z=Ckq`wP^=udbq#n{cDs#jXD@^VTR)_V=c;l-^0oe&;u$;vaCgc4KJ$9fwhUaL@m=Zcxx?YGShG)q^B@FfN`@b+G<;JEMy#`IJ+^IT?S$zY zl(OaY7A5Z0!PaMoE*c6-)FcJ-9nAIEwwg@IJFO-utzUxM^iZ6#kSfD>rC^Wtvi;Q* z+swCYY*(=IQdNepO96J!yKgb|ib(nKto|cPWl?7zo8gmjN!s8z<#nnI*SiEM()u&| zUQBfhrFY*{W(D8Ca(V&T&&tJ`oU6icRf>Q`Z!QW3gDdfQ%BNRGhm9%>=TeW#!PL=` zQ$iaLVRnVo^XYO=Ra!?~f?4fSFOSZz{4y*a^aK@#OQk^KG^73}+qQFDCb@KJP;#mR z&axnuv6p^X3w<^$9`0mSreiFSZ7y{}v`eymrbyLTjxa-IQZEl@>#!dt_kt~yF-j!@ z_(|tgVwZFh%%;iefycGi3;8;oZ%wB|IcKB)DFbP&m0`>0_0|{$QwNjbgv$wNRvT`y zG*qSxchZs1pfD_URl6-sl?lUDmc~lQ@H4CXZ%j3GCcW6|{uc==TMai`15n1WF>DMQ g!^W^NYz%wTKd4|N5`2VnLjV8(07*qoM6N<$f~~u$H2?qr literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/crab.png b/images/icons/thumbs/crab.png new file mode 100755 index 0000000000000000000000000000000000000000..9ca6ed014ee6098d6d7e8c4cf1e1630ef0cbf259 GIT binary patch literal 1199 zcmV;g1W@~lP)QZs z5izMu>0yf|VpKY6mZX+xzT4DYon8M2egj{_otbrA?~L&M;m0ns_ujeZJCE<2Z*y|I zyu7@;yu7@;yu7@;yu31{hGLZXNgNj|#N(p=tz<;5XfEy%`Dv~#5|hLPu|ymZ|A;A~ zS+*ORCwhqKVw2b`W{A!y?x_o=+r*pVj3^iL#O>K?s2TMkVR>16B-)EMVz_8s&1bb0 z+eDT4PplS?W|Oh4#HZp4FL_bS5wD6>;&btdXc}hW4X95$^DJQ$KsIKCB9*iN<^9SOk=m`kZFToB;VW@tAr|yy}KF_ zGL!I)-)~V8OL(rafhfp`?i7Cpyi}YY2+!)sD*4Nf(aA8cznuwVBVulnmx_^dofASo z&na+u&i3V2;m5>IQIW#vt!#Ip$|~+30WV{P>pRgGW8#g)8)6KFY@8S?ip2;#=I+&< zsLbU_4Bjichi$Os<<9}0T}Cy{B?^Y{S(I?COt}66(Xdzybe?}NpH&7JTq^F*L`ZLQ zUcx$~kxtIq&qWlpSem>vu8Py7NxoCTC$cCpXI~!cq(rDHU%nnH zXjqz26g!HZbX*k}{8px_^yq-%62seNH83{LNwHMyV9{cZhfjzn!)!9F`1BEVC`NNq z6qlM(nXs3;i}^nN_8qjWH&q=lb`j%TU2=6?K=V=Cm}lP+4aCD@4N*`OhNoLH#vQ=J zeVA}&P;{b6s_XT5_yR@jtoTj5#sFb;Vy);$;j9y8ct0l=iqELnHVUp6zucg~RdAq#^mo1 zQtOG@_H?0`B@Pl^D_QB?G!0gj&k=$rsIsThw1=sBWt*q}<(X&L_Kxt~$C<1SF_D?~ zUt;dAH8q9$v~*M1XUCIER?K=cIayOMjSwthfVf%>L$8nuUx+WsQyUv6(|&d#jqJOg zrqjxGnxIG+dEAO7U^54BQ70U&-#sk$;gxg-n+Ja+igsbR=*xG4}EnDZbyfprN8kn1}57X)5DW0rT=DPAKCl4mi?@G8aeE7<^ZzM#NOP z{s7hXB*!uXa{mAClX@)77WVJ0q(fF2;^pP#<>lq&<>lq&<>hs&>l$lt^A{Xr^^*Vq N002ovPDHLkV1i$!QDOi9 literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/day_night.png b/images/icons/thumbs/day_night.png new file mode 100755 index 0000000000000000000000000000000000000000..e646695a9f461f2a06d94d9dccd91fe8aa10e263 GIT binary patch literal 1564 zcmV+%2IKjOP)3-2_Sw?utES=lgPQM?14m~`)XXicJdtNtrfAHnNdwHJc`#it< zdmJZ}P(leMlu$xB)g?j07GlJrwMl?^bNYH5zJcPbp}=Eg0|9`0BxL z5`2QX_Xt`AmkCy(QGt@($wE~1UKNz#o&EOq=VIqQ;19tOv?&ldi<9l;bk_;SW_Zps zFcs6Q2SRuhHhYZS4uWjLW*Pt&bF@_!9FAL-^b49^%GM!2%Z;AGOnKuimX## zPx+YdGFBaPYUG&cmpa!`;>A!|Q`C9=X?RYx^BV;@DaO4)@S9+zV4UD8!2?uJT18#S zhBZ(-&rLE;g^_Pp`{gy881P3+4J(Y3Pn_<(9&Jfad9mP3K{I)AuTgEOEwACUufYV8 z<=gGNx7M%NyNLleTKAf**!WqR9yZ%>hHec3)vBjcgui^uBM$LFi>lj44A^L${P)%Z zmw6mB7nRr0b~Hs7L<@yV-Wic(td%_bs~?0X;F)bgQ}D><;x11ymU`NG*ySv2JyqN1 z2tBcD1rPFDVw`$5HXmp61}#N64IS`q~7wl zY7o}MV~Jt=zMSwb23%@&I`&$NyUwGtsvtAE!UJJ#^(-V@mGXYX@&n8KJmIKe!>g@( zA6kohVE`S@T`om|iH;O$qwh962Jh_VrK@SJCKk8fB~JGj-!+5NKJ?c{NHRm*cf{Yq ze&YJ+hL_&%cO2g1a_>!Rp{=uD=lsgFYB|Xm z3pGV6l@F}g`3ea|f6{kbix9e6VbU&wS%0kAUXW99sgr3nZbJrMc+=+e>)&;(6v|{s;^t$Gg-nCL) zwNY%8yJ(GD_OyV7FHYj%Y{|iHmGBlntEC7*|83MeFNFydqS9m2?26=Lk0lxbE^SECk;p`=_%&=-PxsbLPiPa?FA$G71OHN(uB`Zyl50oVq+B*40&=+?r4XorXrk=wCiL7Kgo8>~ zCez96z%`Mgc3?9p@b5OH~A089O-!nkB7wo O00009##fie0_z?tyMG*{wAP5EpHEEbOlhGh!=&Hpmf?yNG4Gn%`Fb&*_MG*us zSX?pq1tRD~w5ZR46J#9kg|V}pz2|-4mj+}1T{gJq3c=&?csw4D$K&yMJhN+qSy+a3 z*nwTxgbi4MMTo-`3_(-1#>U_Seu|KTZAicv^gxSxU-_lnz~dkHkgR0vLXn|C8ere& z^@^+=z6}N++7{epDAwBGVV8pCAIgJE!B+-jtqjh&7Mye~c+R!pYnOsEhGVS@-f}Hi z?#{K~Oc{a?Yzgj#yn)Cs*n@efg=u((mjWl{4$d38s&QLy_}2`?rlHQ(VEMsrOBnkE z^|l}D^sC=oDS}t4u8EaT5*h`;B{Z?0&>@H}s|mgkgmS;NcvCkCVZr0^csw4D$K%o1FSn6|xBHmR&Hw-a07*qo IM6N<$g3?IX0{{R3 literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/dog.png b/images/icons/thumbs/dog.png new file mode 100755 index 0000000000000000000000000000000000000000..1bd779e161393dc2164422cb986a43d9dcf84ac2 GIT binary patch literal 583 zcmV-N0=WH&P)vC~891e%W;cz${4oCk)fr|ek8w?h~ zgo$!q5GR!tf_IQ^nrsJ&^-JYzV8Arl8t_cQ_aKwX8^EDdHv#m599?D8z#Yk2tkbb7 zlD6UjZ*&n-b(GBmHdLfFm>XalwM(P5<(j4NdwiKi4Sfmem>11R(7GgmE1|Au8y z4q~Y9Y%p)@U%X=*17V^O&)$MV(w11e^c!vT1r<=MmI83;ptu;>IU4DJ&9Q^R7O(V; z{BMK>Ni595EUdL~qRzrwVB-@u74x!5ZIPhIz|Z(gI$G0 zr>Vk2v|yL_rp`?k78z5B_!N_oF~UORR3TGns<230PSn=10*c^|Rjwgcy+6OxVS&BY9G^st(E@g^~!{Kl^91e%W;cz&9$OrdH Vt?4;NZ}tEH002ovPDHLkV1mIv1vdZy literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/eye.png b/images/icons/thumbs/eye.png new file mode 100755 index 0000000000000000000000000000000000000000..10334c47cec4d26b8e525ea369726cf3975ffb35 GIT binary patch literal 973 zcmV;;12X)HP)=Qbb`rlwm>A1u7_l0;3>`NV5xcgC3&NdZ-@kf>2}; zL>I&8B0aQ0MPg-yiP?oBE6eQSTK|E+Aj^KUJM+zMYs?>h58^m;&Nnk>&N+HKR#sM4 zR#sM4R#sM4R*_dvFcoY7M?odo1r@11{%R}?)pDFx^uu2MF)O@ zFQ6HGrZXK1fBzBe0YgB1q?{cOPJ(YC8tDV|pbV@Bi@{v50IUN?z(ep`!SUw|bgAKV zv+Ey}rVhp6Bod2(nrn)8cNX}dxTc5|55NRn zXQzNV&F5s5fs<9Pxppm>sQQKTL4)RkpFkgnx%+};pqSZIy2OsLig(#Riq8(!;XLrl zMY3?sVP0{cZ-5pazgCV-m3;VG7k0b^GlMxh)a4?AQir*>I*c!r*mK&YE%%xBI%=Ut zfbwUD!`!zV##c)0Iba|)T_kh3$Uy$P*J19f4&yIM>^W?}o&uS}TMR5v<}i1$!wzhg z*mF7D4lgmVfLD@GwE2x~W?~aaqBwYGz@DWthcjF}M_ntTejx^-3Q0X60dTMGMUWy`1IvU3YBt~HZ-v+3#tSf-0WhpyCB8EksRjP^Z9ciO#-i7tlz-$ zGghS(6xr5$%>`S6+?_bd?-E%fx4SsTlXa8$d}b^<3s-3t5P2;5bYjOHmYA+I4cyfD z;-Z|~uh@#oW&cVwxe$M|9rQO<6Q_Y=iZyX(U0fPMT^!3SuTf)XZ-eY0*F;MR>@2)d z+-=dTI>)1y>=#ISF@N8!&?D=dvyN?{SWlRh%_l>(Eh|3MS+Emq1l!o9s8>9`FTgH7 zaS?0Mi=CRMSy}mbHGCTXl@KvubR=7}fg1557k(C|M!b(t<9QR&*QACqS-IdcVd?6q zxT7UZRN_5Rs2H|(ve=&WDmK?U?`SpKKf~Fx?p8`;#&w8^NG&s=I$nbsHULUEZjk3c vQw;BY3ZJAnkCl~`m6es1m6es1RW#}^yX=xPPTe4%00000NkvXXu0mjfU>vsj literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/film.png b/images/icons/thumbs/film.png new file mode 100755 index 0000000000000000000000000000000000000000..f6220013e4babd04cdb2b8f6031450aa8df7d8c4 GIT binary patch literal 565 zcmV-50?Pe~P)N16*yIg@m6h*cXBi6{pTN?_6h49Wf|W`%h@c5xKm-dBHF!r8 zgA${g7|+02JuJiO=*rG)&JSO)J9{Sku`}734TU%y4u`|xa5x+ehvQGWfxO3PoqnJW zJOG(LQb&vsUiP3bBZZrRHVJlGC2dV63n$2pe-e#GJFxv((jI5w00|EOF$XO{77pB> z)_1~(z=?wx&tZdvyMRdv5o}LN+B!`ZHhSSP4jcftxO9|J#G8C|xrTBIECD^b36J5A z-veo&ESsAylz=th2#>44Ca{agJ3zZm!Z~~*_S`#D6du941w0c@&JD-r6;-8jXS9K9iHQJD#VPT(z#quzNs4OjC zNL@)H9KmbSFdh4*o&2`&@_FG<~=Ny7j29@bXa z!p(dEmxwA$OS{f8MR?xBIlK|#a5x+ehr{7;I9lfeI_gJJ;ml;Es%soL5om?)Ya0bO8&i2_r>da%&7wiJZGC=4FQWmwrSZp3j}zb2~L2^CMGZ0w@<(qP|D<0 z2cqOHSYndk)odU9R8923s%LsM;psx%P9Tx9Ih<~C14t_Lrh+mTyJ4t!B(&p{GUylit7|q7(;Lw-!C^oaK3U* zC_jJ+91`w=?_jTT&alMuUpX_U=q^|e?0)c7tN^^`+Ep-8IZq#Mb8WNEV#kAadRK;i zIhPKDPKNMjFqd8~<3T{J&R#x1uU!Dcm2-~uz;oJhhWE|}&B{5h4eBU%GWTRVd*%R7 zH99M2ooxVA}` zWEEkvk+s!`GYM3-?&YD7uJ>h!tSZ4r5A#QYkn_LncTY( zdfGb`{VkI8<}s}Iv83Je(-c+VnTjM^*Y{FvtSPFMA>QXEq4&@;6%}v{eDn{Y0*}o;+&lw3sM$2Q|GAI48 zkCR=)LL1x2x&+e1q!nS;=8LC`X*_{!rtoM2>Ee&L&X2V?i5Yr&f|$yrsQoizYu2n; gvu4ejHEYJ%PfiJ`li28qRsaA107*qoM6N<$g3)uomjD0& literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/ghost.png b/images/icons/thumbs/ghost.png new file mode 100755 index 0000000000000000000000000000000000000000..abc2e5a7cde8f512c93784c4a4ce4a3895ed5a53 GIT binary patch literal 506 zcmV0EczojUjSef8U%`KHeAo_U;eEQ?_nhG7_nVHlHB2HHVC7z2}F0t|v~ zP!kr>Dli8=!1o_~fi2J(RM9%H2JSsXRm6kY1H(a*9RSz=6xERim8Q#ffEOQR9o9{j zje)F>vd%|5X{zw5&$9W%Op|RZqO2fgnsB1X!Uv`auM{xpN04(FfA@HA)->S_j|uO{ z-Bv;)TMI@Ccwm7MevmsZk!tWM$Hi)Q$?;Nf7#3k6m;n{Cdz2@94(jE2GAzOlj@X4V z-X{ia+fIi?Sgho@>@~`Rg7ez4{BDPri2wiq literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/glasses.png b/images/icons/thumbs/glasses.png new file mode 100755 index 0000000000000000000000000000000000000000..0e58dd19bdfeca51952bd2dcf7dd3e3a5a791f34 GIT binary patch literal 639 zcmV-_0)YLAP);TE z)w1YOxrD!~O>9Y7!&&*H?K8`t3Qt~3q9FfC{Qrp3-0Tv;sUQwYB9p@(;3Qss@FRS?#ABE>t=(yv2uS4NJ$LujRzu=?rj0z1L=eryVcR6MU zYJS#7;Yk%b?Kq!zD4ci9o>KF-eH6Z`LN|gSXo@*&zO1~B_%3|M^1eAX6YHb>w}%Zi zf6YhXf@NdtayBo(^A?9?@z?q;oXuu?{s+rzeHVWtvm+7NIazz%vaf=V!h;^a7(9vb zuwRWsJ_>hu+KhQ_ZnfmMTArzs+To*cMjp|sv0a{?cKWYLyN7i$DMAP#gb+dqA%u{I ZV;eR{sx0Z6`Ah%+002ovPDHLkV1h+7Db@f0 literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/glider.png b/images/icons/thumbs/glider.png new file mode 100755 index 0000000000000000000000000000000000000000..4ca3c0b3944950b96bdf146bc0de1f148c222523 GIT binary patch literal 786 zcmV+t1MU2YP)#M`v+e#Y%Bpkpi9TK8CI%U4vL;-$fz^< zN`2ytDmm5Ds;4`F#cWl@g-b@B~S&2A@4W8H$%;-$j_#uNkeC+<~JqIYyryBEz)` zHBKcuF~gu#scWj=Bc}@|b#M-`jgY07+Mv68LWW(eTo#0!Jsb-EFdy@j zkyq(;o$hr1@sH^Q?ALV(yb5J(0oP0{>9`2JcLPl-vy4z zK{q=Zmck6jw7|5a@2yh<42*KsfCjol z--dCX?^h_s<_E#7OHNzi;{c3)f(}*sf?}m(p-x21Gp~Iq7anThU5ez@t5DLcyX)rd zdU!6=?H+p6&?^0Gc&Do7HR~3QdwS+IUHQ4lQ@Lz4s8)6BZVxRAC%#NtwKAHJ$+(VY zaoC<@mT1HIDzhC55P4yIY+C>abrk#5sA~Ma?fi?5sIvVtwOWlUbaIPAy(a^AsoRE9 z`Fb+ZBeQMVhofONT&k$(s@th>P!I{Rvb5ecY3$@gOeT}bWHOmdCR3>O3lwpah1Rnc Q!2kdN07*qoM6N<$g8Sopp8x;= literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/guitar.png b/images/icons/thumbs/guitar.png new file mode 100755 index 0000000000000000000000000000000000000000..712b6455b6e13ba8b28c71d09f8522e09d13f805 GIT binary patch literal 1628 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ-L~|RWd^&N+NuHtdjF{^%6m9^eS=-fVzQ(*;f=KCTFLXC?ut( zXXe=|z2CiGNg*@ERw>-n*TA>HIW;5GqpB!1xXLdixhgx^GDXSWPQj+a3TQxXYDuC( zMQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}1aVY^Z-9bxeo?A|sh+WJvVozYf|;3~p^2%P znW2t?k%6I+z5x)K=^C0?nVMM{nJYkn6417ylr*a#7dNO~K%T8qMoCG5mA-y?dAVM> zv0i>ry1t>Mr6tG=BO_g)3fZ zE`@j@w*YQzUNJP7fB~jokyxN_sAmB35=^15FMg%Dxp39RB|)hO_hL1;IHa;5RX-@T zIKQ+g85nVC${?!>telHd6HD@oLh|!-V4)b0kzbNuoRMFk;2dnGpy8XCoS6p_&;;x7 z^|kWMD=taQOHTE4u~h<^p_iGNVr5|N=H}|?Z0h3TXk=*UYUt!*Xy#;LVqt1wY+_ryA&s6|>+A0&bTa0m<2i2Q` z+bt$I_38s1qYsK&q^O1o0n-nN2~W5{4m|0n<^j`t5ins(PAf2GU|>4u>EaktaqG=& ze~%DHnd9YJ{GyI36ECQ)<#SVVVPDB7I+LAWZc$%Y%XE*{1>SMHN<>+hnH{-4PFN7Q zVz)rxMDd9SUI|UTApd`YluO68)ZhOeY~R>vY`y;bx3}+mKezHfD!%dE?##JAY0nm( zO541$cZ%;yUNQYQt$R0!e>=3ux%39x62>J5qYd2ld#`x7?fn1ihl9S^)P9qyYvex1 zsqC9jDf>`HJXToF@Wiu>LeGjrP8O%*t3Mtx+x$iSboG6f*~0eT%Eu3ipN?DSTf@Kj zqD5WIwmtv#roSq%jnKVt*m!}_$5IRbUn)N$9cCT-lc?SjIqTR+wlyJ}<9()H8%13~9V{?X2y5iNwiUbo(c(`Ro)A+NGU& zXv(<>mr4us`42yv`7po4=Zjp8`Ien=m#oA#v}e}atbA#?>h|xQclipK|HLi7%T;mi zZT|YXN0-(vl{Vd!>H9nE^!lGF@9!PqEYFtvF=v_W)#oo69?yPNHgkz#%)*`fmh9Yj zid*D%45Q@IDPJ!JZEP()eKhOr*S!xC4ph%!`o7dBs+{TF^usz~vs8N?Zf;{=vi7m* zywaB&{%4-3@?GDsN=3)U&AE$ZVeFwpi|3v{_~?Wr=X&o<)l#OKzK3zuDjdOa&5L8q zy=Pg(cj$lc-ahw%=frm(eJ2&@*;nMo^z50SG3Sx;+!fASZIweS=J0=8FzTrDSt7N4KHY^~glQ%_&ZR&cUaNdGu5Bl4p1 m?|z1gL|9Uavsm{>Fo8k&r{l?rsCUYs^4`F^Wba5(^@p6kSl58)P4N4(-@^Dj zsZ=hiH>d!Mz+5mqbi-n@9lQn|;5HcD&36WZsh|oB_04cAcn)TR`QRPclHvLi&Y?FQYkUtp0)04caoKPwv!T7<09Z=%*%-bXF&KB%u$bKgK7oti3ZKd9Pz}!l zulT|l1j=drDJTrla22Z=dq)>D@!xDc&%qcT44N4?Q;LDp;4PTkL&JA`F)UikXLzJF zHag~+cJ_+Cg)0%j0ZXjzJg6GBeOMI!@7D~nwF81lDOPpk{!u2V4>;$ zoLBPi3A{6YfRipiyXhnb*RWdZ1eZ**4J&8FV^{_jGH%ZUyIJ@rSRYpy4;AAs)iFK% z!^*0YT@ji4z_~7FYttj8rneFk(-^uM*a|vjlI`6U+;x>orBbO>DwWD7{R92U;L9Wx RJv0CS002ovPDHLkV1i>6Zw3GW literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/hat.png b/images/icons/thumbs/hat.png new file mode 100755 index 0000000000000000000000000000000000000000..f694f6fb1280fd17549f9be61a46609406e153aa GIT binary patch literal 707 zcmV;!0zCbRP)8)f$RitOL82&=g+h_t6nRAv3#*w0OAFb^qb$gq5-AHM zG9rwO6vF~}OzyeY=U?Ajr|F!zcg#I!&eZQypU&dmbN}~y&j0`WKQbA^Fbu;m48t%C z!!Qh^_hfM@uEwKy1z+P&EaDG*i5GDP&K_t1hhh^R#{;-Fm&=XfItjPnRs5~6Q9i?Q z10ifPc7_Bf;77cVEw}>faWmdUKjfaTxIfKd8_K-3?zZD$T#R$DRc|&Q_)cD-y)*`H z>1E)c-|-L*$C>z0y`odsMQICLgP-~kxa2pyhx>3DPQ$$#_o-q-6~czup(* zVhSAee3}BkPatr6TEZ?@VTn6%K?N-p-8qTCMbGoj_E*U9xD8L>2wbW~Mckp?3T;@D zL096e0U7|F!p5T}`LodY75uv;A4z5@6ij$pzc0b^{I2&_s@^P8& z_eu-?`P%(do2G8-QXQ z<0;&w3f`dOoRNXCItXiZzUAKNNzL#19`@6TQK!n;mc;ThL|=uhU#M5{N;2?`G;Ap9 zbWnFh^Q~XyknVu*w3fOxX*}<88;nLB+g{K~3o3?bl*W- pf`c=LVHk#C7=~dOhG7^{`~%|=5zM3n@j(Cp002ovPDHLkV1g3qRt^9F literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/heart.png b/images/icons/thumbs/heart.png new file mode 100755 index 0000000000000000000000000000000000000000..f2ef0848f4bd8c31bbcb6adce0551efb41ebe035 GIT binary patch literal 528 zcmV+r0`L8aP)Xhm2KV6( zoN8eFB*!1XbIxJSwad93!zkQ?S@`ph1qPXi!?v+Qa1I{Aj~e5%tTCoLtku8~EY@iD zZ{rC#K@)YpD7!`08rK;(4!;^~*xvXBZDnj+SJ(wuYO>)@SYmCZc;ShLuvJglgED4d zMq^;B_N>alVfd;s@Edzj#wPsK7}%=4r84k(o%d$9wQ6su47?0;8UyFpgEB^7Qe)sG zdr(SDW8j#Mg~tHAho-`yCTkArT5YW=ejjI8QyV_G&D~J9!xp%G^f_URXzh95yYzUQ zoIC2Y1Aqv8=x}J0b4Hwa;$bc3*I>Sbf%BZxYdDxN7Y1gVzwC?Z^>VwRQ!R!zIksoQ zRv+&b_|!t+XTEy8Mh~(CA7Q0|pcUS`*z3o)A$VISbcOeX+;Cp);Tcq_M&LB>@wn-r zJ^=4v*%tJhp9Kt;5`>owUFLPra5>ZP8s6}_FYp@<`@cvK1VIo4K@bF?zxf45q**%w SJ5nM50000UP)MAHC5|KJTF1`>ku(xg#C z1QZmoynOIftJY9aK#Q@6Ap$l~D33s)OG{h6lYE=p+|2IIPN%!wa!>M0H=UU~^UXcy z+;h*w#27PX%$PA_#*7&=X3SWWng=`%vOv50L2!Gp6#M~twPm40!9)V2dD-8qUFJ39b7jB%mdxQI51y}+t}6?$HTxoU?cbl6o4KV;$r8XU1+3GxlDP5B^lftpxqUDfltQRxrVzfX;MdiOZ)b zR%T}r1xb>60n~v)P{#ZqAyW;ebBvA3xEDEA*z93&G>BM9V9U71CeaPcc&*r@U@*nU zGs#ID?*YGpzra;+348-?D`THg#tDlhu=Mi=5G>jIWu7m|=S{kG2WI3P#6P+q{H@zbwOH*&I zl{Lykod&OSCdE2|2`o^26;nEwpLk|sapUJ$gq-CyxqK_eSkBP#D|m2 zJBT%KoN}J*bdD*rK1(YTmVRx({rT&BZ=#5#_=Q@YTS7hf=2`_9{`%#<8| z3mjxEeG?o3qq$ytZ6NM`4V(lYQ@F=1v5B0`yM9W^8WspXmmb2UMO~)e=5YyuwG`Q? zoKwnOQ!f91nd@_t4eFK9aK*B1R9C;TDDiOHr!HIn(S2hmyur^H*Lkdrn~FS}f_+q2 zEO(Cfx&=1gb_4gbdS%qe;-M!K+cg^xF17Sj@Lq_5n^+?>+nu-DyqQ!+uP`pv9nLZq z7ISTm(?FN@IuKm0EQ^k;4{vVwhW~3WTg`e|Y?}iCp;D=AO&wW&Gaujt%TckfEM~IK zPcpRQ1$9hV>i=b*p3)q_CCwDPKp9IHd>p*XZDFY6o?~b8Q#S>t*oY%vYsYGqyjmAh z7hJ@OYN-RkB`joyyD50FjT_%&1FziT*a2<4RxLQ5-Tz=WKF=F0*V-{M^OK`VaHh@9 z#x9=!q}Gc0hdZjM5j=)nhhR6Js9Ynxs?WgZV7x^Wy;TbyYojWvW=BJ{&MfcZEXIs_ z!9^jC8TEok-fx0ajbJ0#2sVP-vfwYZ>({yetT*cMDQ*Os0tw1!{;bu@6B=3zNG|P?aKTKPUDxtUjhhr z&02%tRJyDYYy=y@p<4#qHmd{hhzs|Tee3g}5jECAwO%^t(st4gD&D|BT`EXK7cYyKv7kdcR&=u7piXsAp-4rf4nY|MZ7}Af>kKi4!szW8Z}9MKX?O&!!h|UiGqF)JVTQIeCIp&^CuEf6h%=KMNt$* zQ4~c{6h--0m6&MHEDiLo3uF}BpPjdjldlMStdXW;<+1SjAZn1o|+ z7(RuE;OqeLrOZLb7-q~Q>zHJnZfw7a1t)g6JLHi!Ds!(mz?^TW6?(T6-+xC(gpW(o$Y`v@P?yfzQgBS ze>SV(Gsn!47&l=nV>hv`E=R{?;A`d@3Ylittl;CY16JoLw*vM%8jzhiBL@p^=gS7!WPe%Jz zo{gt3MC@ATmWy?Tx%(y#FB*Xc;nDzcD&Qt~H&27_@JOl%5Pu1LYsBhi?!GC9M~&S% z%`?w0tz2iBJPpq9nU(@us znFbF@&t)!V`HygYm|Z%?O~6d(8@$T1ae-s{*7N9j;TYA2+(lzF!SC$Re#sd1jtxla z+zxw~i&^$GoDudcj&ohuBQ?QweUFv*ayNd@qsKm5&+uYkUIEMaT?e1BkFO8#F=O|z zu0hsqcjl#_YuANL;d8ve`?>Z>#|*&(1&)d+Z&B|YQ@oIp(|Hfe%r|r3UfzPHJTz1; z5f|Vp9~b+T?ATEc4VN75!+p%HWYoaTu#;~#DWj3{`t|^}g?KN{y$823)}+z+6zl9{ z4mE${kANr-`gjTJh_jAZL{St)Q4~c{6h%=KMN$4UegO&~X;_o_3&Q{a002ovPDHLk FV1gcqhTi}H literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/iphone.png b/images/icons/thumbs/iphone.png new file mode 100755 index 0000000000000000000000000000000000000000..d3272e001be902525759c6b7ebbf9a81296973c6 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8?>$`{Ln>~)y=l+QSSWM+<9%B$ z?q>CeiV?g%Zkvsybkxo_b{bW(vE4kHWw;ErlX9vI2};PLbW-*1T>STDD4*)y&0A?gfw zHuLleJ&0%J5BYp}+q45m_3xx}Nf;y?XkcV!<3VGzvxJBII-J($uWNSDIW*vFJ%fHt z`tCyZ{+e{}LWcZ%418MuEvAR8W+*t!v_tgK_R9LL-x<@VX+7;(v!+b&|4jdR&%c)X gS^!zopr029e}>;M1& literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/lemon.png b/images/icons/thumbs/lemon.png new file mode 100755 index 0000000000000000000000000000000000000000..450f919df5e44fbd97e9b6688a050c2ecc59edeb GIT binary patch literal 567 zcmV-70?7S|P)dva*l`!bUcB%1*2-WkHfhY$QclQImu* z9t~zb|5HcJ!e(ZC_ujA0uYS$)oBuuEckj6;E=~{xK@bE%5ClOG1VM+>gniSRrd*B)T{-?0v(xDngEcyAANK}2PpNQcK7;EE^t)ttbhaM`fGA(eY&dWms zuehpLdD?{QVH-TLxzg0t&6zR?p!TkgJD;FUm8GFynrUMmx}4AQKrRqt#cAPQ;4y45 zeUL{Z*Lirr%|RqVKY4mdL%<;?jc%zSsNx-U60Y;i%gYmz5O-^j@Ct6jWu8=0MRS}y zqjvG@o(l_L2`uH`BACxdoZHlqtRM)2AP9mW2!bFuogcTNf#nFzBk=$L002ovPDHLk FV1l{C|2hBw literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/like.png b/images/icons/thumbs/like.png new file mode 100755 index 0000000000000000000000000000000000000000..7f3e6e44a21267c238fe79b5853bc965e1003880 GIT binary patch literal 643 zcmV-}0(||6P)}+PC>?A7|3JXf1EIg9zh&)On zd4)*hG0v@X>vRoc2AO-EZ+%kta>l27<~R4=vDr8r4u`|xa5x-}&WQoife7PG?RI-R z{CEa@z&TKAvTrZoMOn$6!{MkkQPxc)Z-8|oFIGIuG~s3<+=^qPWUSpZ;Yk#G0bDqi zPF8u&B-u3J5ydu@xfL8gHA%Riv~H&|H%8va#$<~K7btTJIDTo0Yzy#;QcL2an9L;s z4<@~bGsw!`1JTNSH<|AUM}bVB{u63|Wb*sNL}(~Ls~3f%@S(Cx@`r5AE;6uJ|URjNEUDi@pY3geBsiZvwJ|kgq1~oT{5J zFvuqp=hr{7;I2;a# d!{PjV-T+}ClqiiQpNRkf002ovPDHLkV1j`#BQXE~ literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/lotus.png b/images/icons/thumbs/lotus.png new file mode 100755 index 0000000000000000000000000000000000000000..dd5ef0f10d8c5e10e5d3e138503605e2e53cc92d GIT binary patch literal 1097 zcmV-P1h)H$P)84dMW7!86_1x^iU8% z*h4||65X}H3N5;6QJUFmYyW}Yf#Go0-PT>*a{lmR*E8RIGvCg4zL|5($Z&FUa&mHV za&mHVa&mI&F%^nwy(QSe;=HI7xxFFaV)0FU7jt_i#oK^@&9yNBx5;`@i%-w?RyqWHJ|Kujv5j=} zG)H_6u>DM%r~YDd6x*xm5b)lBiFtu+@)fMF0d`+$^Rz*HjNx=RC}FOx!^XQF!ABK7w=%|h#a_|3F(IwvBQ6{z4X{TsdMt6AQD~z9hBY@L+GJ zph?LKVm61ALt+`2@B3)GfUSLte8*=EW4vd~M&^*yUE5POPcY-eDE8tJq+|haGEA|# z&4D3I#U0BbqY$=mtqPlV`jl~?DZr=ae-vZRU=H1)5cl2$&dcT=d?4yrjeDY8tmc7X z3R}x-0vq6?inhbp=2M|hi2I_R)7K+$No;5A!GG}_p0I|Bwc@g9h*3QwR9UlEE@ZFV zDe^3Td0Z>T<|sc}EWZr|Z}#tDsan-y28p*|*%iB%U>SRz zcjHX)2;0s|(k&F_$IQd#c8m&br|@0o(k+LNOtz77-YC}bGOnI#dy^B?_yl~9r|(UC z)#JO4vC0`cv!~v8cq^38Q%hD7eP`h_pD{uiPEJlvPEJlvPEJlvPASkIy2DHqJ<%QO P00000NkvXXu0mjfvBL{E literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/man_stairs.png b/images/icons/thumbs/man_stairs.png new file mode 100755 index 0000000000000000000000000000000000000000..5ad8e79123e9a36b340df9976573cd6cc5e96685 GIT binary patch literal 836 zcmV-K1H1f*P)Damc4W*R}#8rG2|djS6&6H|%Q|(vTdYdATg)S!_)>1YQcJ z)`O7<4{Ho?Aj0$Vnu}bNtOM_D(#3!mVpMK+tAVzaR53TaWAgxLw^NeG*{el^_f$Y;UX+Gt@Fy9IrhgCBI9OwA=d zyF9on;hsV`Scs%QvHT?1Y_ga`^}Sm00|XOPXT< O00007n literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/mine_cross.png b/images/icons/thumbs/mine_cross.png new file mode 100755 index 0000000000000000000000000000000000000000..de20dc9e405ed98fefc41cf47cbbd94140e47e61 GIT binary patch literal 934 zcmV;X16lluP)pzluCD3su`DAa zBO@atBO@cD&}#{B42ZjIUkhxAg3;+fJCGqdUBp-n3;^GOjX*4{X6FHej9DZN)M=W{ zWU(o1Mw37{Fv=M$G6F16h_ed#$Z3x=y@PqKI4GkUkAAc#|~8ONbMpJuy&G0g#X2x4t_Y4~)$()f_3SxnVtNzCz7&Hre``~pnN zhv5dzS?J4TGOBB>Q!}>j)q93wfkOTQEt(q-oaw_FhOv;X_tS8<;y_*kWiIa4~r{{|-dv0WV0Twgzd&6@qhsPgJo>*HP@ z{EK6{RSI zUA(G*2TTXeIi7D7yibn;w*@m>qdBHHwK)Q${CFSZzkd-psrdXJ$#P)%0W2$&`>nPd zW^w(^DYQ$y69ThiQMs(s(JbJxWQK8x*o9(tw&EVVkKVVD)*?DNsqTq;fRd=1trVP{ zv10F{H0GJU5k=Eg0yAmm-EGq@jrZJppfoCGR{|ddM)q?K`#q9_eKPE3mrBmf2L)|P zD2;h-9?@Amlv*w+MyGPLodmp-+@8z~o7t^&ZR*CXqf$y^UW_L|MHr0YNeMrHd=m_` z%hLNClB6`|#d;2u2W_}fl*X}G>?U2?xVb+YmQ?w`W_mB@eC%+A4(o1(Yxb!iHr{d7 z=G$yF=NiZ18eQA`uPP{wd40Udx8X9*Wt}sSxQG3e3k>%Lk<#nv(C!T4j^)pX>bXEa z)6XSK{+-!Zt)&Wm*YfaQn4>z%p57qM8W|ZG85tQF85uG92N_3cOdd}sEdT%j07*qo IM6N<$f+^#+-v9sr literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/money.png b/images/icons/thumbs/money.png new file mode 100755 index 0000000000000000000000000000000000000000..079eba79367e6973f3e623ad86569039ea2291bb GIT binary patch literal 1679 zcmaJ?2~ZPP7!E36v{b#G57AgaFB|n?(Y65v}#8 z)K&&9R8go$hZ^vRg_f&2mO(*0Fa~Tj>C{>!O4_k%MWh=9Y-gl9yZhez=l{O{`gV4g zB5_f`xas3)G+Kacu~bQ|k=|#lAN7V`brRIVAmdczGE7V6AOuQ_(O_vPATuC3REZ** z-1RLeg%~|YpR6KP@+GhuGq4b^56f)8DKteEZN?FGCQ1Tns7`MbgFW9jf`DEl22=QQ zwj7T|)Aft<2y|IqVzN3fQ!Ubf(NRF88KwvfD2V`OLzdA5o5kP&FHG&dW(WiZT*yo@ z_$DcpTmi&l1Pbt3Jf@n>;Q#^wixbWl2sjG>E}O%J*wigxa>8N00Om#jgBM6eBQ#oA zDUBbDMV-W8I!WR%1m)!9uyS}TjL<y2JR*Z@K< zhh;_+i5S(WOezK`4whc8f#bRH-0+B)2&puN>U$hVBIO7q!f+v9$O{h_a@j*zDW=Xg zphj{Ct9gqRj)?V&!GKedr6{4_fNJ6i%m54&4eLkFg+C(SAXYPSE`kxU5S0w%9qqqH zJ!GQvvG$z^H#T z^J<(=Po*}_2<1LWDDL(^xYBl@U{C74$0<&Z@aX2|u$QRPgDR41%V~vML*135S2gLU z+>LvAtb9SJE%TAt-!bNR(`I~9Rz<2TBYI|Ih5nFB=bTv6Lx13NYwgAM+s>(Q5k2uu2FtOj!z?(P6{oJxEgT7gM{mgIn zf~ag`D zI6X4OwtRblD7%hXx$4Tc)n#e-rWNPKaxN+DUuA3v>Eni}v{j|9SD&}&!mjLh_*Iv- z+txdB@-K*ZmeJaKi6|dMB)6#YpXEK*0)Mu1!y34qEc|8==@W;tI z=iJ>T^F4``DL?P)XvL#KA@|0fi=@C(qz-vq~l9XwtDN|fMxV4y#VjRar7Bz_JAvp|j#Eiru=j0d4jS!`Qy z2o!@3>U<3Ntpq!;F~-B2Y6+SKeu4+;yp*8pF2p*Ji8ugSH8sJqq8W78WOY8Vmetir zeLhI{Z!+a)yNb`Tpaqx+KC1IoEK9CLOD5mSd--hX31|7)t7>gElhiyVR?cODV?1ZC zMYJTgsl2z(*c7_o5pW)4apm-b{{V$N{>IfG1j0BG-)j*p6OjUfd`WOJW3JjwTvmc} zV6am{lBVNv9oPK=ufR(uq+z)QVjEkqYz7J_+Fr+lzXroWJ7#dP&fo<2>t?d*BDt|L zy2MpSy7We{54>~pa8i%cz(O#BVNmXcSm7?qUr0lWjb?+8Mz^{K&VV;6DY+{~6W3YEBvk1%Xf+YHPEg`KC5iDZefE=je7~H@Gt4TnfqYY8;{Y=2 zAJ|;vIt`xAc+K@f@M<3xonl8Ikuh2SFIbT?bQ3oc4S43mb9DWN06SNI7dH>7oaq9_*D9{IH-e9{BrXSeDum)$doy`X!l$=YWof>0o6Su9 zz39eKjHNM5Ffs{m*+xpd?^hw=31xgm6vR!(6uNQH$$Vhbo6gVq*~DWNih8M)HM`!Csp zk89|ilKddnpN&N_cS~_}%Z7Ll6~K@h#gzt01V$s%5Cp)g8%>k07*qoM6N<$f`ZWl;{X5v literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/mustache.png b/images/icons/thumbs/mustache.png new file mode 100755 index 0000000000000000000000000000000000000000..6c4768c40e7e360324bd4fc1ef23699707a5762d GIT binary patch literal 580 zcmV-K0=xZ*P)6Q-oqYT zm)0gGP={!TMKo5!09E>`v&&fwxQ z&xhaf9bUz{Ed5vFX~pr+Y{ct$U)!`Ax9G>~@jSlC5b$#Tz$N^&q z3U}j>;;T+#z-zHvv%P?i@Qz;RR}t{vF35b^MjTHS!vh_g*dc?sA*plRgwOH}uozC_ z5gn66D94N1j-@u(SlwaVlytVxG;!O&78B})46p~8&HEP6;teCXpPjEV}QdXb_YDuO=Pe29X23@nor z`hudekB6eNFCmnKS~B_|snm+BO-k(?I}5|*%-xyw&a4afzz^}x+;iveoO|y%cQg!b z+O%oYrcIkRZOLsTfOWtb;1%!-=mk1~hd>pu2=FJfNEA>DyafIN{WkapJOT~_>B%JY zx=n#Hz5@q=tf4A&6mVOCP>z*DP3&Tz)y9M4oP7XX0?q# z6BWiC77vAQG$84_6KJQonMrT=9nKVVBwhegCjGIaemgs+@*KhYT z%{BZ>-**t+A=CA1ruJuajkB@L>ixt`!L`gjYuW`I7tXhBrRw2A~OeZK9pZ#Z$mM zpi5ZvM4yvX3$76c=rSb;R^~LkMO#YuE~LFXm)c7ie+8-qhlK$i*zD(Y^%m_1ML;Xf zU$nW5uM*XQe+mO!bkJ88-c1(CNz^c`w+Mn~GJeWb3+@#Ls54!|`7<>JSRUS$h|U0} z2z@fB(3nNlRdjpGV|=VoEm*91&B=nD;ve}$i2`@6o5`fAE#7cG)4x=;;6`D97jX!V zif*>J_7-?x7+>)w`SO z;8lLVe?R;zq%opqZspRCg@M`>q;#_6q>0(5 zE13J%x+R!P>9#8Hn-U|u(}eQTe7(cX@-Usg2#AS$t|HN~!h17Qz|^~a;=vuY)F?V? zk%f1dDGPC@nB%tKEQ<#UDe^B1Z;_*39n-F6LMuY2i+-2G+dN*jmuJ&f4}_mO$0!Q# zJCZ7^*z3c1pCm61(}CMyY%?=w2Y_T`mysaLV$QkDA$I|o@4#P>_Sq)G`Xl;YBf(!0 z@mo-XWUlp5-h7Z!Q7qo4QHhsNg+MuFZJmbvOU7n|`$Z+Rlct0IJ6dFU!@WU4V zyTen3LUErx>Gf(H&z7>07PLqlBKzpTuHK8JLbYMZcFg$yb-<3;7CN6!dh=5)TR^9a uWpoBrN+%WhZq&2dv}x0(O`A4t3AKM0W%{OKO$Ouu0000(#XQaDD@a7^Q0#s3p0M= zX_&D|5`{vcP$(1%;g}&$0(0O8u*7TeZ`O!CAdTouve*h(TdXA7yRmWYpeTD&8@mLH zvA4^{E{@vX6W|i~MEDBa5rKOgqxakcr(+g9CAglbkXB8a*SXj_BLj5VhV&$;3Jb@6XOA6vKJ?`Hs%&wW9&KSo29jJ z48aFnL&jxeTK}5T@Dh0L!7E@+<`y{SGuOm;wqgghx2wh5KZH@Dy_iCj-F83o?~ueCkY4FDCaf>rQ8CbW~; zh&Kyg;CH&ADGljS%MQorJ$?4b28XuVyX!Db#0g?oYbow;09R|t(&7!x-c=&}Kaa-V t;(uzf?Jd&Af4%7}Q79A&g+if_j9+TbVmr2;uiO9t002ovPDHLkV1j2M=pz6C literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/paperplane.png b/images/icons/thumbs/paperplane.png new file mode 100755 index 0000000000000000000000000000000000000000..93d78cb486d078d296c717e88401bb8a3c29d54b GIT binary patch literal 1989 zcmaJ?Yg7|w8V(>Rp}1TGv2vCnU>m_CB#=NxQ%OiLxP)@+5_GpEmw^OGW=zHqKn1xJ z!OKyB0>MMABI|NZ38YG`7`1f;4iH2t=vD-mQlNsiN5!DK6DxLqEIVgrzVCa_^E~f$ z&XmT+>~O}vi^t(`&QW}BJhpDLK5HDXH@Gya!j=svPlzVKsc4o+1>x9ISPTJC3Q-yq z4~eANdu~D)!_HrxC`5&VXix$x$RaC-tW_Ww8xz~EMMRPe2nEDYnq0{u%zxcY0OV2@ zA&D*s5+D(fOwP|yK?ylAiISWQ2~$eg{sFK}3t|Ea2o(WZMW#{>YFUKWx*)crBSF%Cex}xqmeKKNu8}kMOuSgR#vHgQzoon6s-uMP{~2ol$L=4!T*OU6mQXL zG#>gr-v24APRvFiN<5^7_o^gV<5K;st`IOn1&L5tl?cO`%TYj!3YqMzyOE> zkwmVv8aBUX2n1l1QjLm~5-5txB48S1xm*f{(zsM=L{J!)%cfDOJSvAvWpKhm!suba zAt7P3pk*!>mh4qPN_3ek{hiBPk!u|W1%i3zLMpiil18dv1@Jm)P`+|3j1~3XaHT89 z61pOnf(1jdw)VeTy==nf$GUwxxY*(C=tD|u-c{IOH-0|4gu|^0jpDKswPSO&a=u60 zx*PYK?gc1#0lkM9L_)p&mMt{eA-A&nqkzm8AN|6`BhiO26X626#SL;glE3hfp5P2M z$So616@AU8zxCXd(DQ12fAQTQc&fj4>-H~ebhHrj(_QSfgWPK9@QxedchWd;1w%p|_1s{9~$p;)C4Mvju*c*8s-qyXJBCp92@a z??Sz+?OF?P)z0bRlvv-}o90|1H#%wxz$wOKm&`K*yU#7{y*S>V;!5=7s(RRr=i&ED zI?_yM!&`yKUV%Qpi)J~nYwVNtjxo5vaJkC~?~$>?>=r$|E7z^Bq2im}IMgxjuXo*M^gU^)Ek33*3+o9LSE4G% zHw^1Y_#&DnpUv)~rhO!|zvd7xOlso$m;5vM<23=lKIcmc4F$zlUKU&(S;{E0VVMHU ze|cJ>a}v7NZrb2o)U&J1XzTW4LvaK`s9tNlm2Ym0oufVJj-0p`zjd_k$e?%6PBB_1 znwpL(1U~t66EKo8V{RXoo3f@$-evoi`m}C1m+UJFxMTOn{QD>SDXZefYaTAbo6T8? zNcM4`JX_7dQn0ezCWU@M>=N1EK6sRwt#R_wtU7#Y^VMapEari}gH@gL=wPDPsrzBoO4 zwR4MZwvnTct}&WZd1p)06PrWSRq6kr5ErXDC-Fcl(6oyj{d+@YXK3%tK82czF_uD)pQg-@{oWIQUPxB1YwrBv^iaL-!CC2b z{sQCnpLmV-H-W zc2FcAe@yq6YkqBa9n@{Xfz$Y17s6#V1Dx-q!&mn`0F&RJ!OO%*QYR8}``AV3mhsq` zrW8i;^>(4<#MB+?LT?MDvm>^-H}eB#@6WoMoj-MuhVKp3JZfI3Ts@+z{X2s+mh9%z zH#KC8zLP{eGSRyK)5*=x2Mx0h1AAC4Pb@_*G!5min$jQ4S3I8`Wfso9FgMzNNERM^ zd9r*ywrG-6CoZ=kRvLNhbVl%%ILT|I1olE_!5r_2^S@4J{Nb--eKCWdky7$pWew*% zJoQUB_>|`Q{7a{N>xb(2bX9Hv%TzaxjQZF(;6A=gA{b7pTC6|TC|(S=m6KBNACns^ Ac>n+a literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/quotes.png b/images/icons/thumbs/quotes.png new file mode 100755 index 0000000000000000000000000000000000000000..0eb7fd40fb098c75c47a15f3b387fe42e941ed1c GIT binary patch literal 416 zcmV;R0bl-!P)$&>Apn}G$Z*v}+Ii(HT|1p}K! zIFX}){D?gD6n>VADeiKs-1Y48r(A1rwCC(;C@Os>$5SlbZ=buOq3;_E-7dF03ucb{ zs_aOy^o;#VaR+{s>vlmx^vdI0_Cp@YX?u#2!|cL}d~+_X`G|{WLf$%scVwSzPWi>& zpgge0JNDUYvp-I*<i+Xewj5#d)VIo00000000005ab7c{H?_0T4*T%0000< KMNUMnLSTZG5xJEB literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/radio.png b/images/icons/thumbs/radio.png new file mode 100755 index 0000000000000000000000000000000000000000..8a51b6234adf59044db8733479dd5a18e1c5669b GIT binary patch literal 1167 zcmV;A1aSL_P)4CG_sdLpcoiL zW@Sat4>3g|3%ghu6{$&OS(d5SX6P&(rn9qGZ13HrIq-q*clOMDd(WOZGwX0DQ>ILr zGG)q?DO09QnKEU{lu2yx{~~k{LpDPh!)PCjKb+wp!vb#&n845nxa|YMWoZ1VW)C)o z;WZ5QjbWh=1TSa!33Dhnd$2?3>82ArPw`BK5&vksIEEp_^&B*hWHSXng+bg5K?3K` z&;)#`L7YT}NCThU5UYaVf|20+W{C|&sgy%^GF&7*gIA|%2nC7ld);B%GWLm0Y&k2gbb1q6RZaFdaMost;$ z2*DW=|1`-fwXvhIoey zB~3>!_#BqJM!cX!ncaANB6dr>?d$>mI&p6*Ay#`pfrNiO@|i;Xx>`E7c&oKsMet$J z5Kv3V4IRN8dkOz(3{?y<2F2`(nSyy&^bS?VN&VQ;eUJ#Qk~AOG2Brq?&6%a=;tgGrpD$--^9*#dB-dopnXIS}&>AWDS6V}vlLhxFg^^td4PiZV6C-{-5~^=h7AXWi-do=UBre zf-u1!j^7{7deKtD|30a6K;TCA^$^v%tsiGzUa_mf1gqhCCAxM@azB1=OW@jPA?6M% z32qT4w-2uKL$+d6e5miZys&*lYqnOPZVEB)T1D(OVPYM^0bdYIz86H}0u&2kd*H#~ zB})8K!D~REuf_TkoBXpnzU4yIjYa<#>lDH^9NX!19`&{0D59dq>iF_s=MqY9Dvd?U has2(YaqK`Q{0pg@7HRH+$7lcm002ovPDHLkV1j2UA z($dn>($eyY5Vpp_FLZ~3=k{u!7x5)GHrjA`U4s0IaK6vw22mEaus ztc-mOvX!-;3G%@VFh#lEH<|`sD+ca>c_0{Jd@|Sy-YM5y0INYAxDA@YBZj?9&;~Hx zFNTjZgbjvnUKH2JTiegDm+N{#2g5yNS@Q#+lM~_jnor>xHMmjjV^~I`9B|)aaDY2{ z2kGYD%>Taxi@Y=}H*Z%SX0d~7CFDPR_>bdE3DIqE0IsG3Zqz!Cl9=EI9WOBap zUXl??;$e0sQ%<;oqJ?S5iBcUbgABge5I46|HklwMnhLIie%|yuc*1q}fIk{QCvTdc}r zssh%)*7dr=qa$aXQk-054Ik4RoK*5;8#j$>V1fsR3%M~Gtk5cBeS>tKUBzq z9+;KA;k>e8y+R&l*j_3pEr?^KFc>94xJD?&U&*Sp;llbU%gH;Vy}%yx4x*~ogpbp@H=rFK08YFKo*Ne$O&1=nyI zCtph|&XrKK-3})eQj#CdP6pefEJ~zNzbnemT?WehVlv21;(As-4a1DhVB@ZnlQY}| zO6mBK?Hig6ZlXmc$WCV@LV1l&D?BfxGXTV2OY_9 zkjKAv%h+N+7(N;p+FmtVF5%Q1rkE&=P`ft<{_aZ``N43l<-z1|Q5|7yi^V`6H!iCt zDW@}Ytn{dJ{a|=bVDO8ueuj0EO#@H5jqhnh3|x*-HAzVC;338QhOxoTzLnFQyD%{L zO~Y=k=|~z4R)GUFZ`X%P=GaP(&GuXVO>l57O>}9jmX?;5mX?;5mX?-F`U976aq@>O R=|=zn002ovPDHLkV1jD+*`5FZ literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/robot_square.png b/images/icons/thumbs/robot_square.png new file mode 100755 index 0000000000000000000000000000000000000000..d845f54a78c1f542a80fa0173a64add9771a8efd GIT binary patch literal 534 zcmV+x0_pvUP)x=A8M}XXe~{&qLD~hG7_nVHk!^E<+(dRm0 zFvFR$p#40lm;l*e2|Okk+O8bZ-LicF6oQ}};?r7muUZW0XVC10A)NvCls>T~ zUIj3~k3P)!InZrga*;lLO}&=VuBC_AE-i1UkpU*11*q<@dZL60hJU;kpvsX1dK{h zgBPe=0tmz#A;drkQX+}9k*h6~ix!H77JF=~J=K4uKXGSw&zwW*iF>BAlJBMGOf&zi zz1RBpn&UWOgb_vYY5Imqb^f^)&IpcR}0FM_^77F-7YR_Flx!K5Gx z&jOb`HO^-5|ID%uH}?A25>b%s1KH z!)&Tz{{pKh$SwMVIiL!>4I+LJTnK(KWOpmLD?tl;A6()0Z-S|QFdFMXToYTxWon8D zAJR`OXzF!GZC~0Wz$L9n$-XUeS)TWR#o#xWirxYifIDmzyiB{{Ht?n)OHrDSZHBCx zs`^7ViXEb5S2zf=weQ^x7J`!=Le)Zd2#mK;@Di;uHySb{6}*Bit22SvYEZ&!qPB^Z zy?933dqv9U>0k<|Nw9pISg4A@oi-P%*`S#>E+?b4?5Pp98|l9{T!czRzX*1KSzPkg zhwQP<6#FfBkbf@#`#{V^Y(3l9(_o4%@<@3=L z@C=v-UIA;sC*VtP44efQI6dILw8n4TPm$?HTVF04i1A;?AvkzlVScoI~)V;K-()Ol-XTkH}CDxY0RQBS@PS;FXp8j=E%l0wN z`S(pigiE`H4@0u_8Bb5?ejLGOu*XVK8s>Bj)FWDUcWNsk&ZSuCXW@FJac}1GL2Th( z(~DFG&%D#=$D@7}`v6$MbM1Bt79lc_|AC_#lRG=iagTWMK7JBBS7}?#w1;UFF_B{( zw?6&{eYX_2364*O?>Wq_dft6p`8<<_EauVL+Sz_SWyY-+{+1@-H2b$c89B;qdl?XU zFdu_Q_^_-LpT`r7dgB!w5~wkPGp~juoRk#3j~t8NHooh0e{-{rNS`ikp30L@%yiCvPY2v$=3Z=%gAA zJ@*aA`-dzAd@wPkYM1z>MIA6?OZM{%39glFF5^UG7kjz&Az6NzhC<(yby|ORv#3*? z?l0l2ALrJ&oSVO(^$c9Bb=+TauL#PCNjD-*E}~`R`fw1lyxy>+YkAlRiWalIAND6wf`kYPqXmNYg4Q2JK@@EmMMV8*k*vU|Y$240 z!WM#xHY?LMgBIKOni+HK{ouWD8NBJ8xu#>^3lGda%$&LJIp zDwRs5vY{{#`@fiN1g3-IU=e8E&<&3Q#lQ=`f&-vqLp2)%PJ&7wu7SazaYHlQg}Yi= z1#iJ(&>NjM+*Xi1AOHV-I(}PIr9($OLV9E!|Wa*bg28 zmkndI~CwPxD57zfpuYc32){Jvvh9|PvbGXzF&=556A*7IA=d_6+8!r z!Bgf2-vw}S?o5VGG`qT5)n1F6$OpOLHh0F#tQ`G3kihw*13SjfY&6GuFp)_(oC6Q| z*=sr-FZnyk5vib;MdA!t`8H$HmqONHQ547qrC=&Ezc35D0$Z6UhJxJ|;UbG$#uJjw ziqX@_xW5#DS*goOyqR#CkgjYMh~)e!tkDNSYmOx{iB;4fFGxjr#D|thCk$Wk!>HWI z2Od46X<5c@EX&ki_u+08(4?pp&3kSBX9bUYz{>H%@H?=OMkUEiVq%iHTKY68MW$G8 z#spRF=ZPwF!th#~fBFk-W(F6HV3IoxI&-WWOOwRySRVNZmMvERA#}wF!)boR?FulG zr9|TE2D`9O_T9Vqy>yPr+mZ#W&HkD#H6_P@)Q-o_<40T>u_YbY29N>Puv6Oz+AwpE zV@Ia@|FuoLHCZ^f z>AINlp32y-m6vo0G$%du9LDExFboXg!X$CElR2Kku$agP1=-=9;1J)GoaN#eiRvet zkE6`!@~pj@zn#H_b+HW9deDwRs5QU#(vBN)te)Wfdb00000NkvXXu0mjfxxvG( literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/star.png b/images/icons/thumbs/star.png new file mode 100755 index 0000000000000000000000000000000000000000..66b1baa4fa8787e973de75e78dd6c290ef25c60c GIT binary patch literal 731 zcmV<10wn#3P)r*!o(OjD9eCpAhqCB5}W~#c9A8%f=^;i!OTnCkY5AjoD3cz)w_2SNCpz%6OQi&{C=Ja8dGh5u_8d-i8gC;RF= zwTlFuw9a!E^B$LscAxzNZpbWrksES$gC95Ttu$RDTus^C?P0J_*3M)fH{{HN{sekJ zvCVfIcpI|1+taePaIIdHZSfRuba9+J1O_b*AantxeBpM|*m>_ugZ>Gg@P+uFT(an> zNcqAok}$woUTpG{?5NPnJdz;2`yp^CA9F|4ci$A912BFN<(b3V-(b3V_&Og_zI;B#zTC@NF N002ovPDHLkV1jMQT)6-M literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/stress.png b/images/icons/thumbs/stress.png new file mode 100755 index 0000000000000000000000000000000000000000..367d71a51aceffe0b8c52ae930d99f2dc2f6efb2 GIT binary patch literal 601 zcmV-f0;c_mP)B`HM`8x$K>Y*2RCNy?OsJXWZ|f>Kf*8>O-E zW+O!8HU6iLy4}uPXJqQ!xR(V^O%he%KxqCjn%|^P<3DqqCw-Ume zmhH(en3JlyYz}yokYzNR)+K-~(-^DxgcH8oJxN(chG}iT6SpE?7_y8d5XblAYs*-J z(me`vf{!qT8Ixem^4q-Xm96}Rs2#bgcjOyMks0u2GtL@Sx5~0^a3CqW%-4+D%-K;{ zHU=C@%3gp()7qsF^Smkx4@t^?@Ymj)bZ};wH>R>|(+}t0Z`c8(I>djZfmyK4yR=7D z*?4d#S>0hBZYUPR*k0H-zAphgoy~zv)nt?Zc)zu>u9|RqgoU3~6OQ9oGm(_eR!zDd zyhKpAMa9O|8$n^8s@xn4}s zECE1EzaX3_q`$n*aa+07*qoM6N<$g3V+tTL1t6 literal 0 HcmV?d00001 diff --git a/images/icons/thumbs/whale.png b/images/icons/thumbs/whale.png new file mode 100755 index 0000000000000000000000000000000000000000..e8e40b55334bc5c64ea45293fdc03d5efd0f9231 GIT binary patch literal 1553 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ-L~|RWd^&N+NuHtdjF{^%6m9^eS=-fVzQ(*;f=KCTFLXC?ut( zXXe=|z2CiGNg*@ERw>-n*TA>HIW;5GqpB!1xXLdixhgx^GDXSWPQj+a3TQxXYDuC( zMQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}1aVY^Z-9bxeo?A|sh+WJvVozYf|;3~p^2%P znW2t?k%6I+z5x)K=^C0?nVMM{nJYkn6417ylr*a#7dNO~K%T8qMoCG5mA-y?dAVM> zv0i>ry1t>Mr6tG=BO_g)3fZ zE`@j@w*YQzUNJP7fB~jokyxN_sAmB35=^15FMg%Dxp39RB|)hO_hL1;IHa;5RX-@T zIKQ+g85nVC${?!>telHd6HD@oLh|!-V4)b0kzbNuoRMFk;2dnGpy8XCoS6p_&;;x7 z^|kWMD=taQOHTE4u~h<^p_iGNV&!J!W@KXSXzb$R2n=^uLnjwQGbalZ3sVbY6B7#~ z1DIZy{N&Qy)Vvay-V}sh6P$WMi6OTDXtPUdQD#|cid#{Bt^(N8R++fnVu;f`sNNLZ zZZX2CS0CsYeNfaQMKw$an0`P^c)|s8;7LC<518JIfC>9s_P2Bf2Bv0D7srr_TW@Ar zW{3nz953I)E7bd%QA=(?C%aga#6hJ63Cd<-+p-qUO-NN`)IB0%CN}9*n1CaTw6y*a zW|IgO|C~MV8{A?G&;F|Zpu6U9&b^$pdjed52 z%STcV-8A%4D_o-Ske{=6{+AQy+K*eFx^`14{ z>_Squk0tNgHm1BTd9IejeNj{*^HK!sw5pc(Y+`oPx;Ly{ChDL3SMKJ`##Gtx%N)x! zZTt?DoVSae_dQ%ZAb8E0)t7EvdGd8(+i_dDl`~m6^iO*4(Eawu>PzrI*VZ)QP$-z2@I`UjaSlD9fs z6+6hMT@te^e}nb*uRD0eCSK~@$ZaP!=bCjqy?4Lr`ST8# z?r1&i@#-I&z`ElhyD#2&bBQ@@h(0Kvjx6~s0HOBt4-1_}<;8(Znc70>{Ab2!c!e zD0nn@2!4T4U>!Ic1y@0J1hK+>KMJ1fsJAOvf1QcvjSD%?H68-pl>1GrWY)EgbGskR z0pGz(kPJGx7!FG7DR{fz1UClV!3feDi~*J47MK9iKo-Ty=Om8=GJyXF&$5{=sVM$VT4(%wj%)rTm&8GRl2h_s;_m%dz?`xB6=a~xY8zr!2)`=+M_=Xa`h8$Xon<%u7hl_nP+r1C}#g$$<|UETS;-5%*0g`E(666kmE5AD`~Bn ztX6~F3}30m^SR?H*2%NtwJkia8IH14#Odh{hYM}2FL(krFsy^j&{LVXq`7FOi&z;E zH*o?=;iP1HcObnxPABj7TI37 zD~s}LEIoM~7^>K9$yj(7w9`qj%(=3$oZ|3qDVq(Me^==wR`$=&z!7@4%F!nmaG+1r zNw72+A361$Wb62tby&iDt4?BNZ&ks~#w;tml-mK8fTzsf+E_lvKM`9mVm$PZu|Lpa2tVK85Wgn5!Kg4?p}h^SNw z7w_)mRP>eM9;1ukEQ-ptYX5Cxdsl{pGVluY(M4<=GqarCbY|unu55C6b`R;4ne*6K z6jHg* ai}(xll4^;s_>d6*0000KevmAW@QuGouMC$Sb;9 z76lKL`luC`BkSn`M^8oS1EHWBpoj{E3heS&DCmmB2ag4XPE_38wsg+S|IdHt`@Vbs z``>ftsCe6NsMe0w002-UBcK>^mYW{R5^~fG{9Zy%4n$Zy5sM}fS{OrsU^%)Q0V7p# zG7^Kp^3;8eNB{tsyDBB|M7(ILK!&OqunEJ^sWc=T00IJa8d$a$A;8^8vQjOikKMRU z2bFRmJ&r5#5otmZg)$-yLt@jmNn~kzWqdh3a5EU76OaNbgn&VvDn*S8bVB-DT><%S zGBfGmTL`gNNPibpyhsd&q8I{l8JoOiJ}ef<<1ttqE|16Z0@*$+Hq(c^dEP9JfXfrG zeZlt^o%DvulLRqP_J1i zst;(Kh(Ugi_kRlGl2i@Cj6ra8KPDp&F3H8@N+Srx5STzQ35ur7XHl#`2^3eL8Zb1L z2fB-3nNn>sY<$ZQi3E{qoPgCbBoY$RNezZlDHm{pxlkD27lNQ*GVfum5QxPK@#FY$ z{Wftper%t4E`-YVs}MCY&z1ko4O@_FDh8E?^b8@G@&FL zUpSV~1-VQz7^dlHe{t0FCbE7^uOAARTzn{fL`~K^MizGVC&z99fJJR26fDtoJw2Up zM6}Q8+g9Xhw}IW^(5!g6C%`Dr7gwEd740hUI_kD7!adcwXhln@uD}>{GUSm^+~H8D zI(+K#y+oTNr(Wq~nY!&3-pZf+9=|8;MKfliTljOM_+0ncYnLk34vB7sGtI1oq7QO6 zbEf?+h@z*{%wQ&s5(Zj?*i*8_79rq@Y}4}H_zUCwr;p6Q!ia`(e|JyIMh_h?z)4M= z%aYdJG2qD?9FJn%bcb@pHW%+dr(sr`pIxlgXYR>((tq4&IVF5;dvHl{opyVx)VAr> z&V=X*@xAowj&0uza6(s6(d^3F@dMKm%RgngA*IqcK+bSk9W~PNI*&^Gw7$82rYcad zc#>^RIj6F`P28`}Spj?HNV{jFnw*r&3h0*k9#M;+xT(@L-+1)hBmiZ9{av^uH`(@c z{R6v3s%}^9nXfh*x3`xeBiaPR?JZi)QCI(yI|t*2mW69wul3bAcU`Rr_n#=c(%dvc zDSYf|W%Iz^&S$Vw!;$+yXONby>vOk8Cp?Or?WK&pC_wE4y!FG^*BS>TY(rD+*M@(X z$NLKP>sPNq7%z(j=+fu#=Nr@A?{h6u2VDyB2D9pG^K(_84ZhZxN%N=iW$?7xclB=S1V|B^$*Gg zT<7*A!D{S&J)Gk3$XIMq_%OrKT3K;yd4J5h3ssqYzQ%7kgG1=lni{9&X^iaTzm=bU z+}_e6nY9V{OXJHImz68i@0HP}msIDS{4T`yytN^(CUvw^!r&X+6}3gLI{G7u&Ub(1 z>R;fd;rBSKz0@rWBrHc)eHDT$BZi{}Cl`hjewt&7Ihrh-bNkT9}wn806io>T(nKzjWS U-?a4ep{754WY{*SA|x^A-^xWuIsgCw literal 0 HcmV?d00001 diff --git a/images/icons/wrench_large.png b/images/icons/wrench_large.png new file mode 100755 index 0000000000000000000000000000000000000000..8afbce757056531720cf48eb731a56d3933903ee GIT binary patch literal 7755 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
~Wnte@gV%He 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[ $theme_key ] ) and + !isset( $current->up_to_date[ $theme_key ] ) + ) + return false; + + $wp_list_table = _get_list_table('WP_MS_Themes_List_Table'); + + + // custom additions + if(isset($current->up_to_date[$theme_key])){ + $rollback = $current->up_to_date[$theme_key]['rollback']; + echo '
'; + echo 'Theme is up-to-date! '; + if (current_user_can('update_themes') ){ + if(count($rollback) > 0){ + echo "Rollback to: "; + // display last three tags + for($i=0; $i<3 ; $i++){ + $tag = array_pop($rollback); + if(empty($tag)) break; + if($i>0) echo ", "; + printf('%s', + wp_nonce_url( self_admin_url('update.php?action=upgrade-github-theme&theme=') . $theme_key, 'upgrade-theme_' . $theme_key), + '&rollback=' . urlencode($tag), + $tag); + } + } else { + echo "No previous tags to rollback to."; + } + } + } else { + $r = $current->response[ $theme_key ]; + if( isset($r['error']) ){ + echo '
'; + printf('Error with Github Theme Updater. %1$s', $r['error']); + } else { + $themes_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); + $theme_name = wp_kses( $theme['Name'], $themes_allowedtags ); + $github_url = esc_url($r['url']); + $diff_url = esc_url($r['url'] . '/compare/' . $theme['Version'] . '...' . $r['new_version']); + + echo '
'; + printf('Github has as a new version of %s. ', $github_url, $theme_name); + printf('View version diff with %s. ', $diff_url, $r['new_version']); + if (current_user_can('update_themes')){ + if(empty($r['package'])){ + echo 'Automatic update is unavailable for this plugin.'; + } else { + printf('Update automatically.', wp_nonce_url( self_admin_url('update.php?action=upgrade-github-theme&theme=') . $theme_key, 'upgrade-theme_' . $theme_key)); + } + } + } + do_action( "in_theme_update_message-$theme_key", $theme, $r ); + } + echo '
'; +} + +// http://codex.wordpress.org/Function_Reference/wp_enqueue_style +add_action( 'admin_init', 'theme_upgrader_stylesheet' ); +function theme_upgrader_stylesheet() { + $style_url = WP_PLUGIN_URL . '/' . basename(dirname(__FILE__)) . '/admin-style.css'; + wp_register_style('theme_updater_style', $style_url); + wp_enqueue_style( 'theme_updater_style'); +} + + + +/******************************************************************************\ + Most of this code is pulled directly from the WP source + modifications are noted. +\******************************************************************************/ +include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; +class Github_Theme_Upgrader extends Theme_Upgrader { + function download_url( $url ) { + /* + http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/file.php?rev=17928#L467 + changes: + - wanted a timeout < 5 min + - SSL fails when trying to access github + */ + if ( ! $url ) + return new WP_Error('http_no_url', __('Invalid URL Provided.')); + + $tmpfname = wp_tempnam($url); + if ( ! $tmpfname ) + return new WP_Error('http_no_file', __('Could not create Temporary file.')); + + $handle = @fopen($tmpfname, 'wb'); + if ( ! $handle ) + return new WP_Error('http_no_file', __('Could not create Temporary file.')); + + // This! is the one line I wanted to get at + $response = wp_remote_get($url , array('sslverify' => false, 'timeout' => 30)); + + if ( is_wp_error($response) ) { + fclose($handle); + unlink($tmpfname); + return $response; + } + + if ( $response['response']['code'] != '200' ){ + fclose($handle); + unlink($tmpfname); + return new WP_Error('http_404', trim($response['response']['message'])); + } + + fwrite($handle, $response['body']); + fclose($handle); + + return $tmpfname; + } + + function download_package($package) { + /* + http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/class-wp-upgrader.php?rev=17771#L108 + changes: + - use customized download_url + */ + if ( ! preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote? + return $package; //must be a local file.. + + if ( empty($package) ) + return new WP_Error('no_package', $this->strings['no_package']); + + $this->skin->feedback('downloading_package', $package); + + // This! is the one line I wanted to get at + $download_file = $this->download_url($package); + + if ( is_wp_error($download_file) ) + return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message()); + + return $download_file; + } + + function install_package($args = array()) { + /* + This funciton can go away once my patch has been applied: + http://core.trac.wordpress.org/ticket/17680 + */ + + global $wp_filesystem; + $defaults = array( 'source' => '', 'destination' => '', //Please always pass these + 'clear_destination' => false, 'clear_working' => false, + 'hook_extra' => array()); + + $args = wp_parse_args($args, $defaults); + extract($args); + + @set_time_limit( 300 ); + + if ( empty($source) || empty($destination) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + $this->skin->feedback('installing_package'); + + $res = apply_filters('upgrader_pre_install', true, $hook_extra); + if ( is_wp_error($res) ) + return $res; + + //Retain the Original source and destinations + $remote_source = $source; + $local_destination = $destination; + + $source_files = array_keys( $wp_filesystem->dirlist($remote_source) ); + $remote_destination = $wp_filesystem->find_folder($local_destination); + + //Locate which directory to copy to the new folder, This is based on the actual folder holding the files. + if ( 1 == count($source_files) && $wp_filesystem->is_dir( trailingslashit($source) . $source_files[0] . '/') ) //Only one folder? Then we want its contents. + $source = trailingslashit($source) . trailingslashit($source_files[0]); + elseif ( count($source_files) == 0 ) + return new WP_Error('bad_package', $this->strings['bad_package']); //There are no files? + //else //Its only a single file, The upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename. + + //Hook ability to change the source file location.. + $source = apply_filters('upgrader_source_selection', $source, $remote_source, $this); + if ( is_wp_error($source) ) + return $source; + + //Has the source location changed? If so, we need a new source_files list. + if ( $source !== $remote_source ) + $source_files = array_keys( $wp_filesystem->dirlist($source) ); + + //Protection against deleting files in any important base directories. + if ( in_array( $destination, array(ABSPATH, WP_CONTENT_DIR, WP_PLUGIN_DIR, WP_CONTENT_DIR . '/themes') ) ) { + $remote_destination = trailingslashit($remote_destination) . trailingslashit(basename($source)); + $destination = trailingslashit($destination) . trailingslashit(basename($source)); + } + + $tempdir = untrailingslashit($remote_destination) . ".tmp-" . time() . "/"; + if ( $wp_filesystem->exists($remote_destination) ) { + if ( $clear_destination ) { + + //Try to rename original theme (also works as a backup) + $moved = @rename($remote_destination, $tempdir); + if ( ! $moved ) + return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); + + //We're going to clear the destination if theres something there + $this->skin->feedback('remove_old'); + $removed = $wp_filesystem->delete($remote_destination, true); + $removed = apply_filters('upgrader_clear_destination', $removed, $local_destination, $remote_destination, $hook_extra); + + if ( is_wp_error($removed) ) + return $removed; + else if ( ! $removed ) + return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); + } else { + //If we're not clearing the destination folder and something exists there allready, Bail. + //But first check to see if there are actually any files in the folder. + $_files = $wp_filesystem->dirlist($remote_destination); + if ( ! empty($_files) ) { + $wp_filesystem->delete($remote_source, true); //Clear out the source files. + return new WP_Error('folder_exists', $this->strings['folder_exists'], $remote_destination ); + } + } + } + + //Create destination if needed + if ( !$wp_filesystem->exists($remote_destination) ) + if ( !$wp_filesystem->mkdir($remote_destination, FS_CHMOD_DIR) ) + return new WP_Error('mkdir_failed', $this->strings['mkdir_failed'], $remote_destination); + + // Copy new version of item into place. + $result = copy_dir($source, $remote_destination); + if ( is_wp_error($result) ) { + if ( $clear_working ) + $wp_filesystem->delete($remote_source, true); + return $result; + } + + //Clear the Working folder? + if ( $clear_working ) + $wp_filesystem->delete($remote_source, true); + + $destination_name = basename( str_replace($local_destination, '', $destination) ); + if ( '.' == $destination_name ) + $destination_name = ''; + + $this->result = compact('local_source', 'source', 'source_name', 'source_files', 'destination', 'destination_name', 'local_destination', 'remote_destination', 'clear_destination', 'delete_source_dir'); + + $res = apply_filters('upgrader_post_install', true, $hook_extra, $this->result); + if ( is_wp_error($res) ) { + $this->result = $res; + return $res; + } + + // Remove temporary backup + $removed = $wp_filesystem->delete($tempdir, true); + if( !$removed ) $this->skin->feedback("Could not remove the temporary theme directory."); + + //Bombard the calling function will all the info which we've just used. + return $this->result; + } + +} + +add_action('update-custom_upgrade-github-theme', 'github_theme_updater', 10, 2); +function github_theme_updater(){ + /* + http://core.trac.wordpress.org/browser/trunk/wp-admin/update.php?rev=17632#L145 + changes: + - use customized theme upgrader + */ + if ( ! current_user_can('update_themes') ) + wp_die(__('You do not have sufficient permissions to update themes for this site.')); + + $theme = isset($_REQUEST['theme']) ? urldecode($_REQUEST['theme']) : ''; + check_admin_referer('upgrade-theme_' . $theme); + + add_thickbox(); + wp_enqueue_script('theme-preview'); + $title = __('Update Theme'); + $parent_file = 'themes.php'; + $submenu_file = 'themes.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $nonce = 'upgrade-theme_' . $theme; + $url = 'update.php?action=upgrade-theme&theme=' . $theme; + + $upgrader = new Github_Theme_Upgrader( new Theme_Upgrader_Skin( compact('title', 'nonce', 'url', 'theme') ) ); + $upgrader->upgrade($theme); + + include(ABSPATH . 'wp-admin/admin-footer.php'); +} \ No newline at end of file diff --git a/inc/Theme-Updater/readme.markdown b/inc/Theme-Updater/readme.markdown new file mode 100755 index 0000000..e4efc03 --- /dev/null +++ b/inc/Theme-Updater/readme.markdown @@ -0,0 +1,132 @@ +# Wordpress plugin: a theme updater for GitHub-hosted Wordpress themes + +Do you wish that you could somehow get update notifications within WordPress for _custom_ themes that you use for your site? Perhaps a custom theme that you had developed specifically for your site? Or a theme you developed for a client site? And do you wish you could do "automatic updates" to those custom themes just like you can for _public_ themes available from WordPress.org? + +This WordPress plugin lets you host a custom theme in a Github _public_ repository (private repos are not supported) and then notify sites when a new version of the theme is available. Those sites can then perform an auto-update just as with publicly available themes. The plugin also allows you to roll back to a previous version of the theme. + +This plugin works with WordPress in both a standalone and MultiSite mode and has been tested up to WordPress 3.3.x. It can be found in the WordPress plugin directory at: + +* http://wordpress.org/extend/plugins/theme-updater/ + +Bugs, feature requests or other suggestions should be filed as [issues at the plugin's Github repository](https://github.com/UCF/Theme-Updater/issues) + +## Screenshots + +![Screenshot One](https://github.com/UCF/Theme-Updater/raw/master/screenshot-1.png) + +--- + +![Screenshot Two](https://github.com/UCF/Theme-Updater/raw/master/screenshot-2.png) + +--- + +![Screenshot Three](https://github.com/UCF/Theme-Updater/raw/master/screenshot-3.png) + +--- + +## Installation + +[Here](https://github.com/UCF/Theme-Updater-Demo) is a sample theme. [Download (.zip)](https://github.com/UCF/Theme-Updater-Demo/zipball/v1.1.0) + +### 1 - Publish your theme to a public GitHub Repository + +### 2 - Update Your theme's `style.css` + +Add `Github Theme URI` to your `style.css` header, this will be where the plugin looks for updates. I also recommend using [semantic versioning](http://semver.org/) for the version number. (Note that the version number does _not_ need to start with "v" as shown in the examples below. You can simply use a number such as "1.2.0". You just need to be consistent with how you create version numbers.) + +Example header: + + Theme Name: Example + Theme URI: http://example.com/ + Github Theme URI: https://github.com/username/repo + Description: My Example Theme + Author: person + Version: v1.0.0 + +Push these changes back to the project. + +### 3 - Create a new tag and push the change back to the repo + + $ git tag v1.0.0 + $ git push origin v1.0.0 + +Note, your tag numbers and theme version numbers should match. If you want to increment the version number, be sure to update and commit your `style.css` prior to creating the new git tag. + +### 4 - Upload your modified theme to your WordPress site + +Before the plugin can work, your theme with the `Github Theme URI` addition needs to be uploaded to our WordPress site. + +* Create a ZIP file of your theme on your local computer. +* Inside your WordPress admin menu (standalone) or network admin menu (MultiSite) go to the Install Themes panel and click on "Upload". +* Choose your ZIP file and press "Install Now". + +Your theme will now be installed inside of WordPress and can be activated for your site. From this point forward all updates will be installed automatically once the plugin is activated. + +### 5 - Download and install the plugin + +Inside your WordPress admin menu (standalone) or network admin menu (MultiSite) choose "Add New" under the Plugins menu. Search for "Theme Updater" and this will bring you to [the plugin's WordPress page](http://wordpress.org/extend/plugins/theme-updater/) where you can install the plugin directly into your WordPress installation. (Alternatively you can visit that page, download the plugin as a zip file and upload it to your WordPress install, but why go through all that work?) + +With the plugin installed and activated (it must be network activated on multisite installs) on your site and the theme uploaded, the next time you push a new tag to your Github repository, it will be recognized by the plugin and an update notice will appear in your admin menu. + +This is no configuration or settings panel for this plugin. + +--- + +## Updating The Theme + +The process of updating your theme and generating auto-update notifications is now simply this: + +### 1 - Make your changes to the theme and commit those changes to your local git repository. + +### 2 - **IMPORTANT** - Update your `style.css` file with a new version number and commit that change to your local repository. + +### 3 - Push your changes to the Github repository + + $ git push origin master + +### 4 - Create a new tag and push the change back to the repo + + $ git tag v1.1.0 + $ git push origin v1.1.0 + +Note, you should use the **identical** number for the tag that you did for a version number in `style.css` in step #2. + +That's it. Now any sites with your theme installed will receive an update notification the next time their WordPress installation checks for updates. + +--- + +## Code Comments + +The flow of the plugin is: + +### 1 - Get the Theme's Update URI + +Code is a mashup of Wordpress source. I'm looking at: + +* [`get_themes()`](http://core.trac.wordpress.org/browser/trunk/wp-includes/theme.php?rev=17978#L249) +* [`get_theme_data()`](http://core.trac.wordpress.org/browser/trunk/wp-includes/theme.php?rev=17978#L163) + + +### 2 - Get the github tags + +Pull the tags trough the [Repository Refs API](http://develop.github.com/p/repo.html). + +### 3 - Notify Worpress of the Update + +Publish the update details to the `response` array in the `update_themes` transient, similar to how [Wordpress updates themes](http://core.trac.wordpress.org/browser/trunk/wp-includes/update.php?rev=17978#L188). + +## Changelog + +*** v1.3.7 - July 23, 2012 +* URLencode repo and user names +* Handle Github API errors appropriately + +*** v1.3.6 - July 23, 2012 +* Fixed [Incorrect Github Project URL Error](https://github.com/UCF/Theme-Updater/issues/22) + +### v1.3.5 - July 23, 2012 +* [Compabitilty with new Github API](https://github.com/UCF/Theme-Updater/issues/18) +* Updated README to address the following issues: [Installation for MultiSite should mention "Network Activate"](https://github.com/UCF/Theme-Updater/issues/13) and [Docs should mention that there is no configuration or settings panel](https://github.com/UCF/Theme-Updater/issues/15) + +### v1.3.4 - February 8, 2012 +* Fix to [SSL issue](https://github.com/UCF/Theme-Updater/issues/3). Code by Github user bainternet. Added by Github user danyork. diff --git a/inc/Theme-Updater/screenshot-1.png b/inc/Theme-Updater/screenshot-1.png new file mode 100755 index 0000000000000000000000000000000000000000..8ed560c1e8ffeb7f00ed88515fdb7841a6b622e8 GIT binary patch literal 69174 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
  • e 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 literal 0 HcmV?d00001 diff --git a/inc/Theme-Updater/screenshot-3.png b/inc/Theme-Updater/screenshot-3.png new file mode 100755 index 0000000000000000000000000000000000000000..95b578271809d9f966c28cfda01cdfa0a216ae9b GIT binary patch literal 65014 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 I#Xbl8A18X5bN~PV literal 0 HcmV?d00001 diff --git a/inc/Theme-Updater/updater.php b/inc/Theme-Updater/updater.php new file mode 100755 index 0000000..c4f6eb8 --- /dev/null +++ b/inc/Theme-Updater/updater.php @@ -0,0 +1,167 @@ +plugin documentation. +Author: Douglas Beck +Author: UCF Web Communications +Version: 1.3.7 +*/ + +require_once('assets.php'); + +// register the custom stylesheet header +add_action( 'extra_theme_headers', 'github_extra_theme_headers' ); +function github_extra_theme_headers( $headers ) { + $headers['Github Theme URI'] = 'Github Theme URI'; + return $headers; +} + +add_filter('site_transient_update_themes', 'transient_update_themes_filter'); +function transient_update_themes_filter($data){ + global $wp_version; + + $wp_34 = version_compare($wp_version, '3.4', '>='); + + $installed_themes = $wp_34 ? wp_get_themes() : get_themes(); + foreach ( (array) $installed_themes as $theme_title => $_theme ) { + // the WP_Theme object is very different now... + // This whole function should be refactored to not directly + // rely on the $theme variable the way it does + if($wp_34) { + if(!$_theme->get('Github Theme URI')) { + continue; + } else { + $theme = array( + 'Github Theme URI' => $_theme->get('Github Theme URI'), + 'Stylesheet' => $_theme->stylesheet, + 'Version' => $_theme->version + ); + } + } else { + // get the Github URI header, skip if not set + $theme = $_theme; + if(isset($theme['Stylesheet Files'][0]) && is_readable($theme['Stylesheet Files'][0])){ + $stylesheet = $theme['Stylesheet Dir'] . '/style.css'; + + $theme_data = get_theme_data($stylesheet); + if(empty($theme_data['Github Theme URI'])){ + continue; + } else { + $theme['Github Theme URI'] = $theme_data['Github Theme URI']; + } + }; + } + + $theme_key = $theme['Stylesheet']; + + // Add Github Theme Updater to return $data and hook into admin + remove_action( "after_theme_row_" . $theme['Stylesheet'], 'wp_theme_update_row'); + add_action( "after_theme_row_" . $theme['Stylesheet'], 'github_theme_update_row', 11, 2 ); + + // Grab Github Tags + preg_match( + '/http(s)?:\/\/github.com\/(?[\w-]+)\/(?[\w-]+)$/', + $theme['Github Theme URI'], + $matches); + if(!isset($matches['username']) or !isset($matches['repo'])){ + $data->response[$theme_key]['error'] = 'Incorrect github project url. Format should be (no trailing slash): https://github.com/<username>/<repo>'; + continue; + } + $url = sprintf('https://api.github.com/repos/%s/%s/tags', urlencode($matches['username']), urlencode($matches['repo'])); + + $response = get_transient(md5($url)); // Note: WP transients fail if key is long than 45 characters + if(empty($response)){ + $raw_response = wp_remote_get($url, array('sslverify' => false, 'timeout' => 10)); + if ( is_wp_error( $raw_response ) ){ + $data->response[$theme_key]['error'] = "Error response from " . $url; + continue; + } + $response = json_decode($raw_response['body']); + + if(isset($response->message)){ + if(is_array($response->message)){ + $errors = ''; + foreach ( $response->message as $error) { + $errors .= ' ' . $error; + } + } else { + $errors = print_r($response->message, true); + } + $data->response[$theme_key]['error'] = sprintf('While fetching tags api error: %s', $url, $errors); + continue; + } + + if(count($response) == 0){ + $data->response[$theme_key]['error'] = "Github theme does not have any tags"; + continue; + } + + //set cache, just 60 seconds + set_transient(md5($url), $response, 30); + } + + // Sort and get latest tag + $tags = array_map(create_function('$t', 'return $t->name;'), $response); + usort($tags, "version_compare"); + + + // check for rollback + if(isset($_GET['rollback'])){ + $data->response[$theme_key]['package'] = + $theme['Github Theme URI'] . '/zipball/' . urlencode($_GET['rollback']); + continue; + } + + + // check and generate download link + $newest_tag = array_pop($tags); + if(version_compare($theme['Version'], $newest_tag, '>=')){ + // up-to-date! + $data->up_to_date[$theme_key]['rollback'] = $tags; + continue; + } + + + // new update available, add to $data + $download_link = $theme['Github Theme URI'] . '/zipball/' . $newest_tag; + $update = array(); + $update['new_version'] = $newest_tag; + $update['url'] = $theme['Github Theme URI']; + $update['package'] = $download_link; + $data->response[$theme_key] = $update; + + } + + return $data; +} + + +add_filter('upgrader_source_selection', 'upgrader_source_selection_filter', 10, 3); +function upgrader_source_selection_filter($source, $remote_source=NULL, $upgrader=NULL){ + /* + Github delivers zip files as --.zip + must rename this zip file to the accurate theme folder + */ + if(isset($source, $remote_source, $upgrader->skin->theme)){ + $corrected_source = $remote_source . '/' . $upgrader->skin->theme . '/'; + if(@rename($source, $corrected_source)){ + return $corrected_source; + } else { + $upgrader->skin->feedback("Unable to rename downloaded theme."); + return new WP_Error(); + } + } + return $source; +} + +/* + Function to address the issue that users in a standalone WordPress installation + were receiving SSL errors and were unable to install themes. + https://github.com/UCF/Theme-Updater/issues/3 +*/ +add_action('http_request_args', 'no_ssl_http_request_args', 10, 2); +function no_ssl_http_request_args($args, $url) { + $args['sslverify'] = false; + return $args; +} diff --git a/inc/licence.php b/inc/licence.php new file mode 100644 index 0000000..d685517 --- /dev/null +++ b/inc/licence.php @@ -0,0 +1,118 @@ + $_POST['licence-email'], + 'licence-name' => $_POST['licence-name'], + 'licence-key' => $_POST['licence-key'] + ); + + //url-ify the data for the POST + foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } + rtrim($fields_string, '&'); + + //open connection + $ch = curl_init(); + + //set the url, number of POST vars, POST data + curl_setopt($ch,CURLOPT_URL, $url); + curl_setopt($ch,CURLOPT_POST, count($fields)); + curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); + + + //execute post + + $result = json_decode(curl_exec($ch)); + + if ($result->status == 1) { + add_option('licence_' . $themename, 1); + } + + wp_redirect(admin_url('/themes.php?page=options-framework', 'http'), 301); + + + //close connection + curl_close($ch); + + } + + }else{ + $enter_licence = false; + } + + ?> + +
    + + + + + + + + + + +
    + + +

    + + + + + + + + + + + + + + +
    + +
    + +
    + +

    + +

    + +
    + + +
    + \ No newline at end of file diff --git a/inc/options-framework/css/color-picker.min.css b/inc/options-framework/css/color-picker.min.css new file mode 100755 index 0000000..337f2ed --- /dev/null +++ b/inc/options-framework/css/color-picker.min.css @@ -0,0 +1 @@ +.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f9f9f9;border:1px solid #bbb;border-radius:2px;cursor:pointer;display:inline-block;height:22px;margin:0 6px 6px 0;position:relative;top:1px;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;vertical-align:bottom;display:inline-block;padding-left:30px}.wp-color-result:after{background:#f3f3f3;background-image:-webkit-gradient(linear,left top,left bottom,from(#fefefe),to(#f4f4f4));background-image:-webkit-linear-gradient(top,#fefefe,#f4f4f4);background-image:-moz-linear-gradient(top,#fefefe,#f4f4f4);background-image:-o-linear-gradient(top,#fefefe,#f4f4f4);background-image:linear-gradient(to bottom,#fefefe,#f4f4f4);color:#333;text-shadow:0 1px 0 #fff;border-radius:0 1px 1px 0;border-left:1px solid #bbb;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;right:0;text-align:center;top:0}.wp-color-result:hover{border-color:#aaa;box-shadow:0 1px 1px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,0.1);-ms-box-shadow:0 1px 1px rgba(0,0,0,0.1);-o-box-shadow:0 1px 1px rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1)}.wp-color-result:hover:after{color:#222;border-color:#aaa;border-left:1px solid #999}.wp-color-result.wp-picker-open{top:0}.wp-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{border-color:#888;-moz-box-shadow:0 1px 2px rgba(0,0,0,0.2);-ms-box-shadow:0 1px 2px rgba(0,0,0,0.2);-o-box-shadow:0 1px 2px rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 2px rgba(0,0,0,0.2)}.wp-color-result:focus:after{border-color:#888}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-left:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{border-color:#dfdfdf;margin-top:6px}input[type="text"].iris-error{background-color:#ffebe8;border-color:#c00;color:#000} \ No newline at end of file diff --git a/inc/options-framework/css/optionsframework.css b/inc/options-framework/css/optionsframework.css new file mode 100755 index 0000000..38fa723 --- /dev/null +++ b/inc/options-framework/css/optionsframework.css @@ -0,0 +1,239 @@ +/* Options Framework Admin Styles */ + +.updated { + max-width:764px; + margin-bottom:0px !important; +} +#optionsframework { + position:relative; + z-index: 0; + max-width:780px; + background:#fff; +} +#optionsframework h3 { + cursor: default; +} +#optionsframework p { + margin-bottom:0; + padding-bottom:10px; + line-height: 1.4em; +} +#optionsframework .section { + padding:10px 10px 0; +} +#optionsframework .group { + padding-bottom:40px; +} +#optionsframework .section .heading { + padding:10px 0px; + margin:0 0 15px; + border-bottom: 1px solid #dfdfdf; +} +#optionsframework .section .controls { + float: left; + min-width:350px; + width: 54%; + padding-right:2%; +} +#optionsframework .section .explain { + max-width:38%; + float: left; + font-size: 12px; + line-height:16px; + color: #777; +} +#optionsframework .section-checkbox .controls { + width: 98%; +} +#optionsframework .section-checkbox .explain { + max-width:94%; +} +#optionsframework .of-input { + width:100%; +} +#optionsframework .controls select, #optionsframework .controls textarea { + margin-bottom:10px; + width:100%; +} +#optionsframework .section-radio label, #optionsframework .section-multicheck label { + float:left; + max-width:90%; + line-height: 16px; + margin-bottom: 5px; +} +#optionsframework input.checkbox, #optionsframework input.of-radio { + width: 30px; + margin-top:2px; + float:left; + clear:both; +} +#optionsframework .section-typography .controls { + float:none; + width:auto; +} +#optionsframework .section-typography .explain { + float:none; + width:auto; +} +#optionsframework .controls .of-typography-size { + width:80px; + float:left +} +#optionsframework .controls .of-typography-unit { + width:50px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-face { + width:100px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-style { + width:80px; + margin-left:5px; + margin-right:5px; + float:left +} +#optionsframework .of-background-properties { + clear:both; + margin-top: 18px; +} +#optionsframework .controls .of-background-repeat { + width:125px; + margin-right:5px; + float:left +} +#optionsframework .controls .of-background-position { + width:125px; + margin-right:5px; + float:left +} +#optionsframework .controls .of-background-attachment { + width:125px; + margin-right:5px; + float:left +} +#optionsframework .section-background .wp-picker-container { + margin-bottom:10px; +} +#optionsframework .controls .of-radio-img-img { + border:3px solid #f9f9f9; + margin:0 5px 10px 0; + display:none; + cursor:pointer; + float:left; +} +#optionsframework .controls .of-radio-img-selected { + border:3px solid #ccc +} +#optionsframework .controls .of-radio-img-img:hover { + opacity:.8; +} +#optionsframework .controls .of-border-width { + width:80px; + float:left +} +#optionsframework .controls .of-border-style { + width:120px; + float:left +} +#optionsframework .hide { + display:none; +} +#optionsframework .of-option-image { + max-width:340px; + margin:3px 0 18px 0; +} +#optionsframework .mini .controls select, #optionsframework .section .mini .controls { + width: 140px; +} +#optionsframework .mini .controls input, #optionsframework .mini .controls { + min-width:140px; + width: 140px; +} +#optionsframework .mini .explain { + max-width:74%; +} + +/* Editor */ + +#optionsframework .section-editor .explain { + max-width: 98%; + float:none; + margin-bottom:5px; +} + +/* Image Uploader */ + +#optionsframework .controls input.upload { + width:80%; +} +#optionsframework .controls input.upload_button { + float:right; + border-color:#BBBBBB; + cursor:pointer; +} +#optionsframework .controls input.upload_button:hover { + border-color:#666666; + color:#000; +} +#optionsframework .screenshot { + float:left; + margin-left:1px; + position:relative; + width:344px; + margin-top:3px; +} +#optionsframework .screenshot img { + background:#FAFAFA; + border-color:#ccc #eee #eee #ccc; + border-style:solid; + border-width:1px; + float:left; + max-width:334px; + padding:4px; + margin-bottom:10px; +} +#optionsframework .screenshot .remove-image { + background:url("../images/ico-delete.png") no-repeat; + border:medium none; + bottom:4px; + display:block; + float:left; + height:16px; + padding:0; + position:absolute; + left:-4px; + text-indent:-9999px; + width:16px; +} +#optionsframework .screenshot .no_image .file_link { + margin-left: 20px; +} +#optionsframework .screenshot .no_image .remove-button { + bottom: 0px; +} +#optionsframework .reset-button { + float:left; + cursor:pointer; +} + +/* Bottom Section */ + +#optionsframework-submit { + padding: 7px 10px; + border-top: 1px solid #ECECEC; + background-color: #F1F1F1; + background-image: -moz-linear-gradient(center top , #F9F9F9, #ECECEC); +} +#optionsframework .button-primary { + float:right; +} +#optionsframework .section:after { + content: ""; + display: table; +} +#optionsframework .section:after { + clear: both; +} \ No newline at end of file diff --git a/inc/options-framework/images/ico-delete.png b/inc/options-framework/images/ico-delete.png new file mode 100755 index 0000000000000000000000000000000000000000..08f249365afd29594b51210c6e21ba253897505d GIT binary patch literal 715 zcmV;+0yO=JP)C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/inc/options-framework/js/color-picker.min.js b/inc/options-framework/js/color-picker.min.js new file mode 100755 index 0000000..75b6ede --- /dev/null +++ b/inc/options-framework/js/color-picker.min.js @@ -0,0 +1 @@ +(function(f,e){var a='',c='
    ',b='
    ',g='';var d={options:{defaultColor:false,change:false,clear:false,hide:true,palettes:true},_create:function(){if(f.browser.msie&&parseInt(f.browser.version,10)<8){return}var h=this;var i=h.element;f.extend(h.options,i.data());h.initialValue=i.val();i.addClass("wp-color-picker").hide().wrap(b);h.wrap=i.parent();h.toggler=f(a).insertBefore(i).css({backgroundColor:h.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current);h.pickerContainer=f(c).insertAfter(i);h.button=f(g);if(h.options.defaultColor){h.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString)}else{h.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear)}i.wrap('').after(h.button);i.iris({target:h.pickerContainer,hide:true,width:255,mode:"hsv",palettes:h.options.palettes,change:function(j,k){h.toggler.css({backgroundColor:k.color.toString()});if(f.isFunction(h.options.change)){h.options.change.call(this,j,k)}}});i.val(h.initialValue);h._addListeners();if(!h.options.hide){h.toggler.click()}},_addListeners:function(){var h=this;h.toggler.click(function(i){i.stopPropagation();h.element.toggle().iris("toggle");h.button.toggleClass("hidden");h.toggler.toggleClass("wp-picker-open");if(h.toggler.hasClass("wp-picker-open")){f("body").on("click",{wrap:h.wrap,toggler:h.toggler},h._bodyListener)}else{f("body").off("click",h._bodyListener)}});h.element.change(function(j){var i=f(this),k=i.val();if(k===""||k==="#"){h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}});h.toggler.on("keyup",function(i){if(i.keyCode===13||i.keyCode===32){i.preventDefault();h.toggler.trigger("click").next().focus()}});h.button.click(function(j){var i=f(this);if(i.hasClass("wp-picker-clear")){h.element.val("");h.toggler.css("backgroundColor","");if(f.isFunction(h.options.clear)){h.options.clear.call(this,j)}}else{if(i.hasClass("wp-picker-default")){h.element.val(h.options.defaultColor).change()}}})},_bodyListener:function(h){if(!h.data.wrap.find(h.target).length){h.data.toggler.click()}},color:function(h){if(h===e){return this.element.iris("option","color")}this.element.iris("option","color",h)},defaultColor:function(h){if(h===e){return this.options.defaultColor}this.options.defaultColor=h}};f.widget("wp.wpColorPicker",d)}(jQuery)); \ No newline at end of file diff --git a/inc/options-framework/js/iris.min.js b/inc/options-framework/js/iris.min.js new file mode 100755 index 0000000..a8043b5 --- /dev/null +++ b/inc/options-framework/js/iris.min.js @@ -0,0 +1,4 @@ +/*! Iris - v0.9.14 - 2012-11-20 +* https://github.com/Automattic/Iris +* Copyright (c) 2012 Matt Wiebe; Licensed GPL */ +(function(e,t){function u(){if(r)i="filter";else{var t=e('
    '),n="linear-gradient(top,#fff,#000)";e.each(s,function(e,r){t.css("backgroundImage",r+n);if(t.css("backgroundImage").match("gradient"))return i=e,!1}),e.browser.webkit&&i===!1&&(t.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),t.css("backgroundImage").match("gradient")&&(i="webkit")),t.remove()}}function a(t,n){return t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1),i==="webkit"?l(t,n):s[i]+"linear-gradient("+t+", "+n.join(", ")+")"}function f(t,n){t=t==="top"?"top":"left",n=e.isArray(n)?n:Array.prototype.slice.call(arguments,1);var r=t==="top"?0:1,i=e(this),s=n.length-1,o=parseInt(e.browser.version,10)>=8?"-ms-filter":"filter";o="filter";var u=r===1?"left":"top",a=r===1?"right":"bottom",f=r===1?"height":"width",l='
    ',h="";i.css("position")==="static"&&i.css({position:"relative"}),n=c(n),e.each(n,function(e,t){if(e===s)return!1;var i=n[e+1];if(t.stop===i.stop)return;var o=100-parseFloat(i.stop)+"%";t.octoHex=(new Color(t.color)).toIEOctoHex(),i.octoHex=(new Color(i.color)).toIEOctoHex();var u="progid:DXImageTransform.Microsoft.Gradient(GradientType="+r+", StartColorStr='"+t.octoHex+"', EndColorStr='"+i.octoHex+"')";h+=l.replace("%start%",t.stop).replace("%end%",o).replace("%filter%",u)}),i.find(".iris-ie-gradient-shim").remove(),e(h).prependTo(i)}function l(t,n){var r=[];return t=t==="top"?"0% 0%,0% 100%,":"0% 100%,100% 100%,",n=c(n),e.each(n,function(e,t){r.push("color-stop("+parseFloat(t.stop)/100+", "+t.color+")")}),"-webkit-gradient(linear,"+t+r.join(",")+")"}function c(t){var n=[],r=[],i=[],s=t.length-1;return e.each(t,function(e,t){var i=t,s=!1,o=t.match(/1?[0-9]{1,2}%$/);o&&(i=t.replace(/\s?1?[0-9]{1,2}%$/,""),s=o.shift()),n.push(i),r.push(s)}),r[0]===!1&&(r[0]="0%"),r[s]===!1&&(r[s]="100%"),r=h(r),e.each(r,function(e){i[e]={color:n[e],stop:r[e]}}),i}function h(t){var n=0,r=t.length-1,i=0,s=!1,o,u,a,f;if(t.length<=2||e.inArray(!1,t)<0)return t;while(i"),n=e("
    "),r=e.isArray(this.options.palettes)?this.options.palettes:this._palettes;e.each(r,function(e,r){n.clone().data("color",r).css("backgroundColor",r).appendTo(t).height(10).width(10)}),this.picker.append(t)},_paint:function(){var e=this;e._paintDimension("top","strip"),e._paintDimension("top","vert"),e._paintDimension("left","horiz")},_paintDimension:function(e,t){var n=this,r=n.color,i=n.options.mode,s=n._getHSpaceColor(),o=n.controls[t],u=n.options.controls,a;if(t===n.active||n.active==="square"&&t!=="strip")return;switch(u[t]){case"h":if(i==="hsv"){s=r.clone();switch(t){case"horiz":s[u.vert](100);break;case"vert":s[u.horiz](100);break;case"strip":s.setHSpace("hsl")}a=s.toHsl()}else t==="strip"?a={s:s.s,l:s.l}:a={s:100,l:s.l};o.raninbowGradient(e,a);break;case"s":i==="hsv"?t==="vert"?a=[r.clone().a(0).s(0).toCSS("rgba"),r.clone().a(1).s(0).toCSS("rgba")]:t==="strip"?a=[r.clone().s(100).toCSS("hsl"),r.clone().s(0).toCSS("hsl")]:t==="horiz"&&(a=["#fff","hsl("+s.h+",100%,50%)"]):t==="vert"&&n.options.controls.horiz==="h"?a=["hsla(0, 0%, "+s.l+"%, 0)","hsla(0, 0%, "+s.l+"%, 1)"]:a=["hsl("+s.h+",0%,50%)","hsl("+s.h+",100%,50%)"],o.gradient(e,a);break;case"l":t==="strip"?a=["hsl("+s.h+",100%,100%)","hsl("+s.h+", "+s.s+"%,50%)","hsl("+s.h+",100%,0%)"]:a=["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],o.gradient(e,a);break;case"v":t==="strip"?a=[r.clone().v(100).toCSS(),r.clone().v(0).toCSS()]:a=["rgba(0,0,0,0)","#000"],o.gradient(e,a);break;default:}},_getHSpaceColor:function(){return this.options.mode==="hsv"?this.color.toHsv():this.color.toHsl()},_dimensions:function(t){var n=this,r=n.options,i=n.picker.find(".iris-picker-inner"),s=n.controls,o=s.square,u=n.picker.find(".iris-strip"),a="77.5%",f="12%",l=20,c=r.border?r.width-l:r.width,h,p=e.isArray(r.palettes)?r.palettes.length:n._palettes.length,d,v,m;t&&(o.css("width",""),u.css("width",""),n.picker.removeAttr("style")),a=c*(parseFloat(a)/100),f=c*(parseFloat(f)/100),h=r.border?a+l:a,o.width(a).height(a),u.height(a).width(f),n.picker.css({width:r.width,height:h});if(!r.palettes)return;d=a*2/100,m=a-(p-1)*d,v=m/p,n.picker.find(".iris-palette").each(function(t,n){var r=t===0?0:d;e(this).css({width:v,height:v,marginLeft:r})}),n.picker.css("paddingBottom",v+d),u.height(v+d+a)},_addInputListeners:function(e){var t=this,n=100,r=function(n){var r=new Color(e.val()),i=e.val().replace(/^#/,"");e.removeClass("iris-error"),r.error?i!==""&&e.addClass("iris-error"):r.toString()!==t.color.toString()&&(n.type!=="keyup"||!i.match(/^[0-9a-fA-F]{3}$/))&&t._setOption("color",r.toString())};e.on("change",r).on("keyup",t._debounce(r,n))},_initControls:function(){var t=this,n=t.controls,r=n.square,i=t.options.controls,s=t._scale[i.strip];n.stripSlider.slider({orientation:"vertical",max:s,slide:function(e,n){t.active="strip",i.strip==="h"&&(n.value=s-n.value),t.color[i.strip](n.value),t._change.apply(t,arguments)}}),n.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(e,n){t._squareDrag(e,n)},start:function(){r.addClass("iris-dragging"),e(this).addClass("ui-state-focus")},stop:function(){r.removeClass("iris-dragging"),e(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(n){n.preventDefault();var r="ui-state-focus";n.type==="mousedown"?(t.picker.find("."+r).removeClass(r).blur(),e(this).addClass(r).focus()):e(this).removeClass(r)}).on("keydown",function(e){var r=n.square,i=n.squareDrag,s=i.position(),o=t.options.width/100;e.altKey&&(o*=10);switch(e.keyCode){case 37:s.left-=o;break;case 38:s.top-=o;break;case 39:s.left+=o;break;case 40:s.top+=o;break;default:return!0}s.left=Math.max(0,Math.min(s.left,r.width())),s.top=Math.max(0,Math.min(s.top,r.height())),i.css(s),t._squareDrag(e,{position:s}),e.preventDefault()}),r.mousedown(function(n){if(n.which!==1)return;if(!e(n.target).is("div"))return;var r=t.controls.square.offset(),i={top:n.pageY-r.top,left:n.pageX-r.left};n.preventDefault(),t._squareDrag(n,{position:i}),n.target=t.controls.squareDrag.get(0),t.controls.squareDrag.css(i).trigger(n)}),t.options.palettes&&t.picker.find(".iris-palette-container").on("click",".iris-palette",function(n){t.color.fromCSS(e(this).data("color")),t.active="external",t._change()}).on("keydown",".iris-palette",function(t){if(t.keyCode!==13&&t.keyCode!==32)return!0;t.stopPropagation(),e(this).click()})},_squareDrag:function(e,t){var n=this,r=n.options.controls,i=n._squareDimensions(),s=Math.round((i.h-t.position.top)/i.h*n._scale[r.vert]),o=n._scale[r.horiz]-Math.round((i.w-t.position.left)/i.w*n._scale[r.horiz]);n.color[r.horiz](o)[r.vert](s),n.active="square",n._change.apply(n,arguments)},_setOption:function(e,t){var n=this.options[e];if(e==="color"){t=""+t;var r=t.replace(/^#/,""),i=(new Color(t)).setHSpace(this.options.mode);i.error||(this.color=i,this.options.color=this.options[e]=this.color.toString(),this.active="external",this._change())}},_squareDimensions:function(e){var n=this.controls.square,r,i;return e!==t&&n.data("dimensions")?n.data("dimensions"):(i=this.controls.squareDrag,r={w:n.width(),h:n.height()},n.data("dimensions",r),r)},_isNonHueControl:function(e,t){return e==="square"&&this.options.controls.strip==="h"?!0:t==="external"||t==="h"&&e==="strip"?!1:!0},_change:function(t,n){var r=this,i=r.controls,s=r._getHSpaceColor(),o=r.color.toString(),u=["square","strip"],a=r.options.controls,f=a[r.active]||"external",l=r.hue;r.active==="strip"?u=[]:r.active!=="external"&&u.pop(),e.each(u,function(e,t){var n;if(t!==r.active)switch(t){case"strip":n=a.strip==="h"?r._scale[a.strip]-s[a.strip]:s[a.strip],i.stripSlider.slider("value",n);break;case"square":var o=r._squareDimensions(),u={left:s[a.horiz]/r._scale[a.horiz]*o.w,top:o.h-s[a.vert]/r._scale[a.vert]*o.h};r.controls.squareDrag.css(u)}}),s.h!==l&&r._isNonHueControl(r.active,f)&&r.color.h(l),r.hue=r.color.h(),r.options.color=r.color.toString(),r._inited&&r._trigger("change",{type:r.active},{color:r.color}),r.element.is(":input")&&!r.color.error&&(r.element.removeClass("iris-error"),r.element.val()!==r.color.toString()&&r.element.val(r.color.toString())),r._paint(),r._inited=!0,r.active=!1},_debounce:function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()}};e.widget("a8c.iris",p),e('").appendTo("head")})(jQuery),function(e,t){var n=function(e,t){return this instanceof n?this._init(e,t):new n(e,t)};n.fn=n.prototype={_color:0,_alpha:1,error:!1,_hsl:{h:0,s:0,l:0},_hsv:{h:0,s:0,v:0},_hSpace:"hsl",_init:function(e){var n="noop";switch(typeof e){case"object":return e.a!==t&&this.a(e.a),n=e.r!==t?"fromRgb":e.l!==t?"fromHsl":e.v!==t?"fromHsv":n,this[n](e);case"string":return this.fromCSS(e);case"number":return this.fromInt(parseInt(e,10))}return this},_error:function(){return this.error=!0,this},clone:function(){var e=new n(this.toInt()),t=["_alpha","_hSpace","_hsl","_hsv","error"];for(var r=t.length-1;r>=0;r--)e[t[r]]=this[t[r]];return e},setHSpace:function(e){return this._hSpace=e==="hsv"?e:"hsl",this},noop:function(){return this},fromCSS:function(e){var t,n,r=/^(rgb|hs(l|v))a?\(/;this.error=!1,e=e.replace(/^\s+/,"").replace(/\s+$/,"").replace(/;$/,"");if(e.match(r)&&e.match(/\)$/)){n=e.replace(/(\s|%)/g,"").replace(r,"").replace(/,?\);?$/,"").split(",");if(n.length<3)return this._error();if(n.length===4){this.a(parseFloat(n.pop()));if(this.error)return this}for(var i=n.length-1;i>=0;i--){n[i]=parseInt(n[i],10);if(isNaN(n[i]))return this._error()}return e.match(/^rgb/)?this.fromRgb({r:n[0],g:n[1],b:n[2]}):e.match(/^hsv/)?this.fromHsv({h:n[0],s:n[1],v:n[2]}):this.fromHsl({h:n[0],s:n[1],l:n[2]})}return this.fromHex(e)},fromRgb:function(e,n){return typeof e!="object"||e.r===t||e.g===t||e.b===t?this._error():(this.error=!1,this.fromInt(parseInt((e.r<<16)+(e.g<<8)+e.b,10),n))},fromHex:function(e){return e=e.replace(/^#/,"").replace(/^0x/,""),e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),this.error=!/^[0-9A-F]{6}$/i.test(e),this.fromInt(parseInt(e,16))},fromHsl:function(e){var n,r,i,s,o,u,a,f;return typeof e!="object"||e.h===t||e.s===t||e.l===t?this._error():(this._hsl=e,this._hSpace="hsl",u=e.h/360,a=e.s/100,f=e.l/100,a===0?n=r=i=f:(s=f<.5?f*(1+a):f+a-f*a,o=2*f-s,n=this.hue2rgb(o,s,u+1/3),r=this.hue2rgb(o,s,u),i=this.hue2rgb(o,s,u-1/3)),this.fromRgb({r:n*255,g:r*255,b:i*255},!0))},fromHsv:function(e){var n,r,i,s,o,u,a,f,l,c,h;if(typeof e!="object"||e.h===t||e.s===t||e.v===t)return this._error();this._hsv=e,this._hSpace="hsv",n=e.h/360,r=e.s/100,i=e.v/100,a=Math.floor(n*6),f=n*6-a,l=i*(1-r),c=i*(1-f*r),h=i*(1-(1-f)*r);switch(a%6){case 0:s=i,o=h,u=l;break;case 1:s=c,o=i,u=l;break;case 2:s=l,o=i,u=h;break;case 3:s=l,o=c,u=i;break;case 4:s=h,o=l,u=i;break;case 5:s=i,o=l,u=c}return this.fromRgb({r:s*255,g:o*255,b:u*255},!0)},fromInt:function(e,n){return this._color=parseInt(e,10),isNaN(this._color)&&(this._color=0),this._color>16777215?this._color=16777215:this._color<0&&(this._color=0),n===t&&(this._hsv.h=this._hsv.s=this._hsl.h=this._hsl.s=0),this},hue2rgb:function(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},toString:function(){var e=parseInt(this._color,10).toString(16);if(this.error)return"";if(e.length<6)for(var t=6-e.length-1;t>=0;t--)e="0"+e;return"#"+e},toCSS:function(e,t){e=e||"hex",t=parseFloat(t||this._alpha);switch(e){case"rgb":case"rgba":var n=this.toRgb();return t<1?"rgba( "+n.r+", "+n.g+", "+n.b+", "+t+" )":"rgb( "+n.r+", "+n.g+", "+n.b+" )";case"hsl":case"hsla":var r=this.toHsl();return t<1?"hsla( "+r.h+", "+r.s+"%, "+r.l+"%, "+t+" )":"hsl( "+r.h+", "+r.s+"%, "+r.l+"% )";default:return this.toString()}},toRgb:function(){return{r:255&this._color>>16,g:255&this._color>>8,b:255&this._color}},toHsl:function(){var e=this.toRgb(),t=e.r/255,n=e.g/255,r=e.b/255,i=Math.max(t,n,r),s=Math.min(t,n,r),o,u,a=(i+s)/2;if(i===s)o=u=0;else{var f=i-s;u=a>.5?f/(2-i-s):f/(i+s);switch(i){case t:o=(n-r)/f+(nr?(t+.05)/(r+.05):(r+.05)/(t+.05)}throw"getDistanceLuminosityFrom requires a Color object"},getMaxContrastColor:function(){var e=this.toLuminosity(),t=e>=.5?"000000":"ffffff";return new n(t)},getGrayscaleContrastingColor:function(e){if(!e)return this.getMaxContrastColor();var t=e<5?5:e,n=this.getMaxContrastColor();e=n.getDistanceLuminosityFrom(this);if(e<=t)return n;var r=0===n.toInt()?1:-1;while(e>t)n=n.incrementLightness(r),e=n.getDistanceLuminosityFrom(this);return n},getReadableContrastingColor:function(e,r){if(!e instanceof n)return this;var i=r===t?5:r,s=e.getDistanceLuminosityFrom(this),o=e.getMaxContrastColor(),u=o.getDistanceLuminosityFrom(e);if(u<=i)return o;if(s>=i)return this;var a=0===o.toInt()?-1:1;while(sn.range[1]?n.range[1]:r),s[e]=r,this._spaceFunc("from",n.space,s))}},_spaceFunc:function(e,t,n){var r=t||this._hSpace,i=e+r.charAt(0).toUpperCase()+r.substr(1);return this[i](n)}};var r={h:{mod:360},s:{range:[0,100]},l:{space:"hsl",range:[0,100]},v:{space:"hsv",range:[0,100]},r:{space:"rgb",range:[0,255]},g:{space:"rgb",range:[0,255]},b:{space:"rgb",range:[0,255]}};for(var i in r)r.hasOwnProperty(i)&&(n.fn[i]=n.fn._partial(i));e.Color=n}(typeof exports=="object"&&exports||this); \ No newline at end of file diff --git a/inc/options-framework/js/media-uploader.js b/inc/options-framework/js/media-uploader.js new file mode 100755 index 0000000..3112d27 --- /dev/null +++ b/inc/options-framework/js/media-uploader.js @@ -0,0 +1,79 @@ +jQuery(document).ready(function($){ + + var optionsframework_upload; + var optionsframework_selector; + + function optionsframework_add_file(event, selector) { + + var upload = $(".uploaded-file"), frame; + var $el = $(this); + optionsframework_selector = selector; + + event.preventDefault(); + + // If the media frame already exists, reopen it. + if ( optionsframework_upload ) { + optionsframework_upload.open(); + } else { + // Create the media frame. + optionsframework_upload = wp.media.frames.optionsframework_upload = wp.media({ + // Set the title of the modal. + title: $el.data('choose'), + + // Customize the submit button. + button: { + // Set the text of the button. + text: $el.data('update'), + // Tell the button not to close the modal, since we're + // going to refresh the page when the image is selected. + close: false + } + }); + + // When an image is selected, run a callback. + optionsframework_upload.on( 'select', function() { + // Grab the selected attachment. + var attachment = optionsframework_upload.state().get('selection').first(); + optionsframework_upload.close(); + optionsframework_selector.find('.upload').val(attachment.attributes.url); + if ( attachment.attributes.type == 'image' ) { + optionsframework_selector.find('.screenshot').empty().hide().append('Remove').slideDown('fast'); + } + optionsframework_selector.find('.upload-button').unbind().addClass('remove-file').removeClass('upload-button').val(optionsframework_l10n.remove); + optionsframework_selector.find('.of-background-properties').slideDown(); + optionsframework_selector.find('.remove-image, .remove-file').on('click', function() { + optionsframework_remove_file( $(this).parents('.section') ); + }); + }); + + } + + // Finally, open the modal. + optionsframework_upload.open(); + } + + function optionsframework_remove_file(selector) { + selector.find('.remove-image').hide(); + selector.find('.upload').val(''); + selector.find('.of-background-properties').hide(); + selector.find('.screenshot').slideUp(); + selector.find('.remove-file').unbind().addClass('upload-button').removeClass('remove-file').val(optionsframework_l10n.upload); + // We don't display the upload button if .upload-notice is present + // This means the user doesn't have the WordPress 3.5 Media Library Support + if ( $('.section-upload .upload-notice').length > 0 ) { + $('.upload-button').remove(); + } + selector.find('.upload-button').on('click', function(event) { + optionsframework_add_file(event, $(this).parents('.section')); + }); + } + + $('.remove-image, .remove-file').on('click', function() { + optionsframework_remove_file( $(this).parents('.section') ); + }); + + $('.upload-button').click( function( event ) { + optionsframework_add_file(event, $(this).parents('.section')); + }); + +}); \ No newline at end of file diff --git a/inc/options-framework/js/options-custom.js b/inc/options-framework/js/options-custom.js new file mode 100755 index 0000000..1a8f6c7 --- /dev/null +++ b/inc/options-framework/js/options-custom.js @@ -0,0 +1,91 @@ +/** + * Prints out the inline javascript needed for the colorpicker and choosing + * the tabs in the panel. + */ + +jQuery(document).ready(function($) { + + // Fade out the save message + $('.fade').delay(1000).fadeOut(1000); + + $('.of-color').wpColorPicker(); + + // Switches option sections + $('.group').hide(); + var active_tab = ''; + if (typeof(localStorage) != 'undefined' ) { + active_tab = localStorage.getItem("active_tab"); + } + if (active_tab != '' && $(active_tab).length ) { + $(active_tab).fadeIn(); + } else { + $('.group:first').fadeIn(); + } + $('.group .collapsed').each(function(){ + $(this).find('input:checked').parent().parent().parent().nextAll().each( + function(){ + if ($(this).hasClass('last')) { + $(this).removeClass('hidden'); + return false; + } + $(this).filter('.hidden').removeClass('hidden'); + }); + }); + if (active_tab != '' && $(active_tab + '-tab').length ) { + $(active_tab + '-tab').addClass('nav-tab-active'); + } + else { + $('.nav-tab-wrapper a:first').addClass('nav-tab-active'); + } + + $('.nav-tab-wrapper a').click(function(evt) { + $('.nav-tab-wrapper a').removeClass('nav-tab-active'); + $(this).addClass('nav-tab-active').blur(); + var clicked_group = $(this).attr('href'); + if (typeof(localStorage) != 'undefined' ) { + localStorage.setItem("active_tab", $(this).attr('href')); + } + $('.group').hide(); + $(clicked_group).fadeIn(); + evt.preventDefault(); + + // Editor Height (needs improvement) + $('.wp-editor-wrap').each(function() { + var editor_iframe = $(this).find('iframe'); + if ( editor_iframe.height() < 30 ) { + editor_iframe.css({'height':'auto'}); + } + }); + + }); + + $('.group .collapsed input:checkbox').click(unhideHidden); + + function unhideHidden(){ + if ($(this).attr('checked')) { + $(this).parent().parent().parent().nextAll().removeClass('hidden'); + } + else { + $(this).parent().parent().parent().nextAll().each( + function(){ + if ($(this).filter('.last').length) { + $(this).addClass('hidden'); + return false; + } + $(this).addClass('hidden'); + }); + + } + } + + // Image Options + $('.of-radio-img-img').click(function(){ + $(this).parent().parent().find('.of-radio-img-img').removeClass('of-radio-img-selected'); + $(this).addClass('of-radio-img-selected'); + }); + + $('.of-radio-img-label').hide(); + $('.of-radio-img-img').show(); + $('.of-radio-img-radio').hide(); + +}); \ No newline at end of file diff --git a/inc/options-framework/lang/options-framework-hu_HU.po b/inc/options-framework/lang/options-framework-hu_HU.po new file mode 100755 index 0000000..0924e10 --- /dev/null +++ b/inc/options-framework/lang/options-framework-hu_HU.po @@ -0,0 +1,135 @@ +# Translation of Options Framework in Hungarian +# This file is distributed under the same license as the Options Framework package. +msgid "" +msgstr "" +"PO-Revision-Date: 2012-06-17 03:04:08+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/0.1\n" +"Project-Id-Version: Options Framework\n" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "Vízszintes ismétlődés" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "Függőleges ismétlődés" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "Mindegyik ismétlődjön" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "Bal felső" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "Középen fent" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "Jobb felső" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "Közép bal" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "Közép középen" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "Közép jobb" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "Bal alsó" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "Középen alul" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "Jobb alsó" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "Normál lapozás" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "Hely javítása" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "Normál" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "Dőlt" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "Félkövér" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "Félkövér dőlt" + +#: options-framework.php:71 +msgid "Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice" +msgstr "A jelenlegi sablon nem támogatja az Options Framework bővítményt. Bővebben | Elrejtés" + +#: options-framework.php:254 options-framework.php:456 +msgid "Theme Options" +msgstr "Sablon beállítások" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "Beállítások mentése" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "Alapértékek visszaállítása" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "Kattintsunk az OK gombra az alapértékek visszaállításához. Minden jelenlegi beállítás elvész!" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "Alapértékek visszaállítása." + +#: options-framework.php:400 +msgid "Options saved." +msgstr "Sikeres mentés." + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "Options Framework belső tároló" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "Feltőltés" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "Fájl megtekintése" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "Galéria" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "Elöző feltőltés" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "Ne ismétlődjön" \ No newline at end of file diff --git a/inc/options-framework/lang/options-framework.pot b/inc/options-framework/lang/options-framework.pot new file mode 100755 index 0000000..bd88298 --- /dev/null +++ b/inc/options-framework/lang/options-framework.pot @@ -0,0 +1,370 @@ +# Copyright (C) 2013 +# This file is distributed under the same license as the package. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/options-framework-plugin\n" +"POT-Creation-Date: 2013-06-05 21:22:45+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#: options-check/options.php:32 +msgid "One" +msgstr "" + +#: options-check/options.php:33 +msgid "Two" +msgstr "" + +#: options-check/options.php:34 +msgid "Three" +msgstr "" + +#: options-check/options.php:35 +msgid "Four" +msgstr "" + +#: options-check/options.php:36 +msgid "Five" +msgstr "" + +#: options-check/options.php:41 +msgid "French Toast" +msgstr "" + +#: options-check/options.php:42 +msgid "Pancake" +msgstr "" + +#: options-check/options.php:43 +msgid "Omelette" +msgstr "" + +#: options-check/options.php:44 +msgid "Crepe" +msgstr "" + +#: options-check/options.php:45 +msgid "Waffle" +msgstr "" + +#: options-check/options.php:105 +msgid "Basic Settings" +msgstr "" + +#: options-check/options.php:109 +msgid "Input Text Mini" +msgstr "" + +#: options-check/options.php:110 +msgid "A mini text input field." +msgstr "" + +#: options-check/options.php:117 +msgid "Input Text" +msgstr "" + +#: options-check/options.php:118 +msgid "A text input field." +msgstr "" + +#: options-check/options.php:124 +msgid "Textarea" +msgstr "" + +#: options-check/options.php:125 +msgid "Textarea description." +msgstr "" + +#: options-check/options.php:131 +msgid "Input Select Small" +msgstr "" + +#: options-check/options.php:132 +msgid "Small Select Box." +msgstr "" + +#: options-check/options.php:140 +msgid "Input Select Wide" +msgstr "" + +#: options-check/options.php:141 +msgid "A wider select box." +msgstr "" + +#: options-check/options.php:148 +msgid "Select a Category" +msgstr "" + +#: options-check/options.php:149 +msgid "Passed an array of categories with cat_ID and cat_name" +msgstr "" + +#: options-check/options.php:155 +msgid "Select a Tag" +msgstr "" + +#: options-check/options.php:156 +msgid "Passed an array of tags with term_id and term_name" +msgstr "" + +#: options-check/options.php:162 +msgid "Select a Page" +msgstr "" + +#: options-check/options.php:163 +msgid "Passed an pages with ID and post_title" +msgstr "" + +#: options-check/options.php:169 +msgid "Input Radio (one)" +msgstr "" + +#: options-check/options.php:170 +msgid "Radio select with default options \"one\"." +msgstr "" + +#: options-check/options.php:177 +msgid "Example Info" +msgstr "" + +#: options-check/options.php:178 +msgid "This is just some example information you can put in the panel." +msgstr "" + +#: options-check/options.php:182 +msgid "Input Checkbox" +msgstr "" + +#: options-check/options.php:183 +msgid "Example checkbox, defaults to true." +msgstr "" + +#: options-check/options.php:189 +msgid "Advanced Settings" +msgstr "" + +#: options-check/options.php:193 +msgid "Check to Show a Hidden Text Input" +msgstr "" + +#: options-check/options.php:194 +msgid "Click here and see what happens." +msgstr "" + +#: options-check/options.php:199 +msgid "Hidden Text Input" +msgstr "" + +#: options-check/options.php:200 +msgid "This option is hidden unless activated by a checkbox click." +msgstr "" + +#: options-check/options.php:207 +msgid "Uploader Test" +msgstr "" + +#: options-check/options.php:208 +msgid "This creates a full size uploader that previews the image." +msgstr "" + +#: options-check/options.php:225 +msgid "Example Background" +msgstr "" + +#: options-check/options.php:226 +msgid "Change the background CSS." +msgstr "" + +#: options-check/options.php:232 +msgid "Multicheck" +msgstr "" + +#: options-check/options.php:233 +msgid "Multicheck description." +msgstr "" + +#: options-check/options.php:240 +msgid "Colorpicker" +msgstr "" + +#: options-check/options.php:241 +msgid "No color selected by default." +msgstr "" + +#: options-check/options.php:246 +msgid "Typography" +msgstr "" + +#: options-check/options.php:247 +msgid "Example typography." +msgstr "" + +#: options-check/options.php:253 +msgid "Custom Typography" +msgstr "" + +#: options-check/options.php:254 +msgid "Custom typography options." +msgstr "" + +#: options-check/options.php:261 +msgid "Text Editor" +msgstr "" + +#: options-check/options.php:279 +msgid "Default Text Editor" +msgstr "" + +#: options-check/options.php:280 +msgid "You can also pass settings to the editor. Read more about wp_editor in the WordPress codex" +msgstr "" + +#: options-framework.php:70 +msgid "Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice" +msgstr "" + +#: options-framework.php:259 options-framework.php:260 +#: options-framework.php:489 +msgid "Theme Options" +msgstr "" + +#: options-framework.php:305 +msgid "Clear" +msgstr "" + +#: options-framework.php:306 +msgid "Default" +msgstr "" + +#: options-framework.php:307 +msgid "Select Color" +msgstr "" + +#: options-framework.php:352 +msgid "Save Options" +msgstr "" + +#: options-framework.php:353 +msgid "Restore Defaults" +msgstr "" + +#: options-framework.php:353 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "" + +#: options-framework.php:385 +msgid "Default options restored." +msgstr "" + +#: options-framework.php:439 +msgid "Options saved." +msgstr "" + +#: options-media-uploader.php:46 +msgid "No file chosen" +msgstr "" + +#: options-media-uploader.php:49 options-media-uploader.php:106 +msgid "Upload" +msgstr "" + +#: options-media-uploader.php:51 options-media-uploader.php:107 +msgid "Remove" +msgstr "" + +#: options-media-uploader.php:54 +msgid "Upgrade your version of WordPress for full media support." +msgstr "" + +#: options-media-uploader.php:78 +msgid "View File" +msgstr "" + +#: options-sanitize.php:236 +msgid "No Repeat" +msgstr "" + +#: options-sanitize.php:237 +msgid "Repeat Horizontally" +msgstr "" + +#: options-sanitize.php:238 +msgid "Repeat Vertically" +msgstr "" + +#: options-sanitize.php:239 +msgid "Repeat All" +msgstr "" + +#: options-sanitize.php:252 +msgid "Top Left" +msgstr "" + +#: options-sanitize.php:253 +msgid "Top Center" +msgstr "" + +#: options-sanitize.php:254 +msgid "Top Right" +msgstr "" + +#: options-sanitize.php:255 +msgid "Middle Left" +msgstr "" + +#: options-sanitize.php:256 +msgid "Middle Center" +msgstr "" + +#: options-sanitize.php:257 +msgid "Middle Right" +msgstr "" + +#: options-sanitize.php:258 +msgid "Bottom Left" +msgstr "" + +#: options-sanitize.php:259 +msgid "Bottom Center" +msgstr "" + +#: options-sanitize.php:260 +msgid "Bottom Right" +msgstr "" + +#: options-sanitize.php:273 +msgid "Scroll Normally" +msgstr "" + +#: options-sanitize.php:274 +msgid "Fixed in Place" +msgstr "" + +#: options-sanitize.php:348 +msgid "Normal" +msgstr "" + +#: options-sanitize.php:349 +msgid "Italic" +msgstr "" + +#: options-sanitize.php:350 +msgid "Bold" +msgstr "" + +#: options-sanitize.php:351 +msgid "Bold Italic" +msgstr "" + +#: options-theme-customizer/options.php:101 +msgid "Basic" +msgstr "" + +#: options-theme-customizer/options.php:158 +msgid "Extended" +msgstr "" \ No newline at end of file diff --git a/inc/options-framework/lang/optionsframework-es_ES.mo b/inc/options-framework/lang/optionsframework-es_ES.mo new file mode 100755 index 0000000000000000000000000000000000000000..d2a668a24d2865ff362b6885cb1dcd85bb2ea8df GIT binary patch literal 2555 zcmai#J!~9B6vsCZAaTN1!e@Z+ViHkAd;S6u&W?rS#EBJOY{ln@FL4_0KHp6|x3kR7 zI<`SdiD>y~D3DT6QczN-0SYJ)6i75E4F!k-I{t4zayE&?$a}w?**9Vg4cb8)9+%zS8~!a6F9b#KO#7`N|QJn}REvuhE<~9K2z3M^Ww^@>NAYwwzI7 zJ@w?&EKgJGJgr$L-)k#q5R}y9U7a+DrWExYubmz~F?Ku~Ca+wV{psP(s!_@M@bm&J zmrx5Cn;KEm^!^U{amY_!&@sa+1fdW>DD72_d^jJ6h)sr+H}7)#QgQkaVhk(8R@T*V zcqZ>=VcRxoXlbz>&N}22yTh}}bCbqL$Hv3am%{OJ8hf=lHW7|ajE+Juyo}7rDR-B9 zrIcGxnGf4eC7Dquz9zMl_jE-$n=nn4p~znAV{xNcYecp`J+z>bZmzl_s|POr4*!czk|F>{SwcrJ-- zj0@GIQ>)q!y&f)Ej<=WpSEvG8cS#R)Z8C4MVmar!r#jc^?5_g^UswU0m$n}N_W>(cz zOLEuXv$OS_jH3DNcXQ1yzAYq+XW230Fz76)a;oSNYSnPWPPz!Gt9j;8-#XEeR)(_% zEiQ(FOWCQL!qUkjkCBOCN&CoDdsY$h*o( zCxYHDVO8Z-3xVJ1RW;x3)sDs5tExG9?dtASRs+Ylmt|YBg!@ysqubYWVEOr6A!LP} zv$&e@i;8ZA=7zc|+7Q%J+rr`7vq7iYEme1`dNuPB1V=Mve1q~Z2Ybr6p?PO0)@_KC zjjP;Pe}?IX+T2G*oztsoXWpxY-65*Qc4c0?asf=E8Pu5Gu)%VUd(wxx$mb}f#FE#H vn~JW6c7eo8jo|1z!iN7OWmo&3rq)6U=mgENuf);2ceZmGE;$NJz6SpS?lGt} literal 0 HcmV?d00001 diff --git a/inc/options-framework/lang/optionsframework-es_ES.po b/inc/options-framework/lang/optionsframework-es_ES.po new file mode 100755 index 0000000..a58befe --- /dev/null +++ b/inc/options-framework/lang/optionsframework-es_ES.po @@ -0,0 +1,142 @@ +msgid "" +msgstr "" +"Project-Id-Version: Options Framework Plugin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-22 19:13-0300\n" +"PO-Revision-Date: 2012-04-22 19:17-0300\n" +"Last-Translator: Matt Varone \n" +"Language-Team: Matt Varone \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;_e;_x;__;esc_attr_e\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Language: Spanish\n" +"X-Poedit-SearchPath-0: .\n" + +#: options-framework.php:71 +#, php-format +msgid "Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice" +msgstr "Su tema actual no tiene suporte para el Options Framework Plugin. Mas informacion | Esconder" + +#: options-framework.php:254 +#: options-framework.php:456 +msgid "Theme Options" +msgstr "Opciones del Tema" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "Guardar Opciones" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "Restaurar Ajustes" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "Click OK para restablecer los ajustes iniciales. Se perderán los ajustes realizados!" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "Opciones predeterminadas restauradas." + +#: options-framework.php:400 +msgid "Options saved." +msgstr "Opciones Guardadas." + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "Contenedor Interno de Options Framework" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "Cargar" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "Ver Archivo" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "Galería" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "Cargado Previamente" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "No Repetir" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "Repetir Horizontalmente" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "Repetir Verticalmente" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "Repetir Todos" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "Arriba a la Izquierda" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "Arriba al Centro" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "Arriba a la Derecha" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "Medio a la Izquierda" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "Medio al Centro" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "Medio a la Derecha" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "Abajo a la Izquierda" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "Abajo al Centro" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "Abajo a la Derecha" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "Desplazar Normalmente" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "Fijo en el Lugar" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "Normal" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "Cursiva" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "Negrita" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "Negrita Cursiva" + diff --git a/inc/options-framework/lang/optionsframework-fa_IR.mo b/inc/options-framework/lang/optionsframework-fa_IR.mo new file mode 100755 index 0000000000000000000000000000000000000000..5bb71123b100595cdf1929e43b853f3c3f7ce2aa GIT binary patch literal 1768 zcmZvbO>7%Q6vqczz6=xyLKRX$qZA|%8hh+API9O*M9^L$dPhPWkY;14NSwFy0Baz{ul4tzfL~#M6Wl?KvnLpP4*Q=@_VV5XsfRy7 z%6HY3(3Ga^HKYy^w6qa}tiiID~}nrULw+8ABq zGb%7DWc}T|Dx1Ocl2@r3_MY^86|S=d&vkt@aPRLD_x^Lw{jv^g(q~ud#?wK>Be|;F zG+R=U(V^nAsw^A6iP%+~^S%=+R8?(gr|W|%1w1At=%JT?x$bM}vTL4N<8z*`*md0q zd8rYG=!2UildDz418sPfszi-?U5AF3bx8Mvs(db#HMOS06<+rn6)#A0J}G%MROR!d zuV!C~M!At;MVa%X#T&j1Rz|1hl?(&EfJP=Wa*BUE12!(~U|b3L3|YR|;Y#RFcLfW~EVio^!G};k+qwIi5Y2 zKbIBGnB%}vEU8tGvfbzRw#Yi%c`NUXz2S_FIjMOW8Bqvj5cv|b&+}EuCs$?FbKgmR z-E>LUrr;J-8nU89LCG3)EL>c;aI7|)c2YAMe~u)JG;$_oWw1@KRNV5eBqe zm=oj2epIupLUAD|Y1a!Xc|Lx_GpP^6qE@bF#3i+kvAfZ{7nwXSPGH8Ab--evb$y~( zoG7XZ6_tw8n6Rjh!>47W>e5v6JhL2OteG_x`TlxlRz)jD*E72J*AwNz`xU+Sdz|4a z-eak{h#bPn^K^>E2e#F1cAN1Qk8j%V><_~yhg`J8aulylFe#ChLVA zMJGu(MGkI`g6thcw-I9Z;w^g{ML);E9=G4vTivGZ#M|8N+cxgnX=ZnD_buvlEY-pp zB-$PL#0PNR|NYZuyn)N_*>L!MiT__G{wxu_ljMf_7Vo!AwUT`z`)GG8{OkB2-h^|T zLGnJFw;=~gHfVV9CL3g?lRNQdw~0omIS8gI2)3<5bWT%-XzHA5cMf;?Q7GoxYq(`Q zJl;Z&7&N}jp-=6BpQhcRao9aX;Q<3iQL05{Z2Q5VE41B;Hz4zHm*z{8rADA`3nzQ= IHifbO0P44KoB#j- literal 0 HcmV?d00001 diff --git a/inc/options-framework/lang/optionsframework-fa_IR.po b/inc/options-framework/lang/optionsframework-fa_IR.po new file mode 100755 index 0000000..c8d6f1e --- /dev/null +++ b/inc/options-framework/lang/optionsframework-fa_IR.po @@ -0,0 +1,141 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-22 15:51-0300\n" +"PO-Revision-Date: 2012-09-10 07:03+0330\n" +"Last-Translator: va \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;esc_attr_e\n" +"X-Poedit-Basepath: /Users/weslly/Desktop/options-framework-plugin\n" +"X-Poedit-SearchPath-0: .\n" + +#: options-framework.php:71 +#, php-format +msgid "Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice" +msgstr "قالب فعلی شما با پلاگین فریم ورک قالب سازگار نیست. بیشتر یاد بگیرید | مخفی کردن این نکته" + +#: options-framework.php:254 +#: options-framework.php:456 +msgid "Theme Options" +msgstr "تنظیمات قالب" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "ذخیره تنظیمات" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "بازگرداندن به پیش‌فرض" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "" + +#: options-framework.php:400 +msgid "Options saved." +msgstr "تنظیمات ذخیره شدند." + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "آپلود" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "مشاهده فایل" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "گالری" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "بالا چپ" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "بالا وسط" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "بالا راست" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "وسط چپ" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "وسط وسط" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "وسط راست" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "پایین چپ " + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "پایین وسط" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "پایین راست" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "عادی" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "" + diff --git a/inc/options-framework/lang/optionsframework-fr_FR.mo b/inc/options-framework/lang/optionsframework-fr_FR.mo new file mode 100755 index 0000000000000000000000000000000000000000..dea737dad2c23a254de0e5da58e61d2c1f6fe0cf GIT binary patch literal 2559 zcmZvd%WvF79LHT+UZFf%-mmu8D5#*~&2B=~ut_7DcWAbW(oIzmVwu>pyVKepGajc& zLE?zGZ~_T&KwLoNio{=#3-rJd2@ae%a40vBxWV^lk2gWoiv5|H{muNI^UJTtk9_Lk zA-vD=d&u+7Fz><#&-dUF@CWb#@JH}L@E14#9XyKppWrxn=&Lvse*k`t`A6VCh{ed=rT-&vg3oyg%HyP|8hKxMV31Tvi&DPwx-dBt`-l?o zycr#Z#fO%yh*W^FwK}F*nOJG6*^2DiYP_y`ee2Ca_ByRzB&*5DOxhYC`HnWW3L6Bg2}vptfa5DxtMV1kzg+Q6$Zd=S*s; zFpOknlA9GKxp8UIB~9xxmBMr`&_)_*5z5djPo)b{R1KH3Q8)RBDB7vku1I55;8qI9$T^&OmvJ~bP2T0e zXoRIS68qal%&K48I;}kAVc{kZN*_y`yemrHpam64?+u+B3UXtRFBkn#%Zw6jsn1%o zJWaK+)YXQ6udJZ`prldWQ%Q|zN>Ja(?)l*t8Y9^-Sz&t8o*(XPMk2XBJiQ`?NvMU4 zO^u3adjEj@804pyR4CyUf=~z`l=_+stiK%kh)sr+H}9Z*tc0G3M7_@yEuf@oKX%?$^ibbqMH4V$He^KtB#=~qyWwuG3 zN#u@Ct=LJlPA5BZva>ze=}gKj=m={~NA906BQlu^+iy~>HahUPNnHb(MTy%|hOAUb zjoR7T+5O#@Q652m4g38%P8jkQjmU}*DQ+$A=F)?PqPR^tToifGFNbqRD=WFJK+d3Q z4L6sRtGg?dk(4JA4I@^Wq`fccrZl=nZJk@xdW2WIyB_AK^1W|jEM<_vrAVa-b4*VS zu6imAg?qbbMz-idA~$=xGQ;K9nc_;LF8UF7A!(E>yAWI7Qb>7TIpAi_2RCzWT#}T+ zRUDh{?Q$P=9jQ#Zgj1^MM3Qi2qSI9m8r;c&shP;PWKS5FD>JXW{d>EV;^bg&Hjdl=x zZ;4~e|3i@JV(h|Hj9rkbUZxdttb)EmoUUl>a2X^K*jz@0#3P5XL@E)}=yYz8hpcD` q1dV0;`hRDs9q3PY>}T@{q3N@B9Fg6*r?o^@)MLPxiJNNK+WrMh@3epb literal 0 HcmV?d00001 diff --git a/inc/options-framework/lang/optionsframework-fr_FR.po b/inc/options-framework/lang/optionsframework-fr_FR.po new file mode 100755 index 0000000..4993cff --- /dev/null +++ b/inc/options-framework/lang/optionsframework-fr_FR.po @@ -0,0 +1,149 @@ +msgid "" +msgstr "" +"Project-Id-Version: Options Framework Plugin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-22 19:13-0300\n" +"PO-Revision-Date: 2013-03-28 13:13+0100\n" +"Last-Translator: MBA Multimedia \n" +"Language-Team: Julien LE THUAUT \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;_e;_x;__;esc_attr_e\n" +"X-Poedit-Basepath: ../\n" +"Language: fr\n" +"X-Generator: Poedit 1.5.5\n" +"X-Poedit-SearchPath-0: .\n" + +#: options-framework.php:71 +#, php-format +msgid "" +"Your current theme does not have support for the Options Framework plugin. " +"Learn More | Hide " +"Notice" +msgstr "" +"Votre thème actuel ne permet pas l'utilisation du plugin Options Framework. " +"En savoir plus | Masquer cette note" + +#: options-framework.php:254 options-framework.php:456 +msgid "Theme Options" +msgstr "Options du thème" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "Sauvegarder options" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "Restaurer les valeurs par défaut" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "" +"Cliquer sur OK pour faire une remise à zero. Toutes les options du thèmes " +"seront perdues !" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "Options par défaut restaurées." + +#: options-framework.php:400 +msgid "Options saved." +msgstr "Options sauvegardées" + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "Conteneur interne de l'Options Framework" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "Upload" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "Voir fichier" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "Galerie" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "Uploadé précédemment" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "Ne pas répéter" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "Répéter horizontalement" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "Répéter verticalement" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "Répéter" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "Haut Gauche" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "Haut Centre" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "Haut Droite" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "Milieu Gauche" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "Milieu Centre" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "Milieu Droite" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "Bas Gauche" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "Bas Centre" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "Bas Droite" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "Scroll normal" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "Position fixe" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "Normal" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "Italique" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "Gras" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "Gras italique" diff --git a/inc/options-framework/lang/optionsframework-it_IT.mo b/inc/options-framework/lang/optionsframework-it_IT.mo new file mode 100755 index 0000000000000000000000000000000000000000..bf53c0858b63d317fc785a8be03753fd179e7c6a GIT binary patch literal 2435 zcmZ{kzi%8x6vrnJejR~8_zfYvSWXq~`Oe0|oE?kUi4!aSCHoQ)3QptQxx2x0JFD3_ z{{o2ygs5mhLKJkQr9|Q%;76o1RDgs;2Sq9(L_@^)?algJgw^hT_RYR|zh>tBcH-z~ z0vF*q$?O3bNjp;3)VN$aa1Np8|gdE8y)Q{{ub=`51zH0z3t>y)p1O zI0Lf3C6MR61wITako~0~``Zoj``{OlKL&517NZXg^!|bp`}r4S`^S+K$8{29`7Fr! zPk|$#0iOjw0omUT5V!amFV5o|kmI`va(usnZ0Ao9xA+^cGvHm2^BRQ_wl@i~-cpdS zgHJ=wz!TtyAlv&KWIs1R*8djddVd%G{}klkLC*g+$o04begNJDk$w^T%OKlADT-J) zZ^H8op6Bsk>5Gf~unn%$bH&Ku#qsg=3Lf4Y94E?KTrc9yadFOE502&V#cRg<@>Cdn zDUfTy7w3vCAjF(CN%5jZFO81z?Y-^Myh^=trL?5lzWiR-ovs)2(A}cdE95OXl`CJR z^XVS>uIed*=ylr3X-6AFn~IFh{b_MQwPoLUvYFR5&3T@;P9;^bpm$Y5I;AxuVYYG$lVR3Zje>AW%J=Vj~kKASLRuN=FkoY!#}DH5ZQa4t4r zoPsB@5j%^r41&b`W>K^9Z_{RFru34KmC7O}cb*g=C}8!OWQ8IW3Mi$0N5wu`Od`}K$C5Yh;eD;}UO|l!Wwe}k zbP~<=J9*T!4XUiIHlulmHO1`cg7m6EG7_DRF*vnx( zR-K~yYmLdtv$Z<(mSpaurju!IBsO0IyEcJ+n&SxZH|_LgM@3B~dktEa-qSVdY^rD` z=Jk&K8$Aqe7h~1f_GT-~i^~^>3D&E%3U4kfN7UTQ5U*Feek?QCZPOHYrNiMkceS|? zO%3%poVIe&#Wc1F4o-unHnp$38Le5BXdhisd)U57zNB;Cpw={&g{_usrPgNCEj8WR zoo=!?z*k30xRTlX?_2)U2d)3mJ| z3X)pNuqNuXSUmhQ2|dK=%)!1+u_vlx&R8~^Dq|$Ulx9n1AJH;25-V_oaptvCif-c@)Ez0{53egXtkWRSu&xMUOcc3^kxo7Bm|8!YL~}hfagK6#Z~8 zsf^02o\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;_e;_x;__;esc_attr_e\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Language: Spanish\n" +"X-Poedit-SearchPath-0: .\n" + +#: options-framework.php:71 +#, php-format +msgid "Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice" +msgstr "SIl tema corrente non supporta Options Framework. Leggi info | Nascondi avviso" + +#: options-framework.php:254 +#: options-framework.php:456 +msgid "Theme Options" +msgstr "Opzioni tema" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "Salva Opzioni" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "Ripristina default" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "Clicca su OK. Tutte le impostazioni verranno perse!" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "Impostazioni default ripristinate." + +#: options-framework.php:400 +msgid "Options saved." +msgstr "Opzioni salvate." + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "Options Framework contenitore interno" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "Upload" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "Vedi file" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "Galleria" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "caricato in precedenza" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "Non ripetere" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "Ripeti orizzontalmente" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "Ripeti verticalmente" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "Ripeti tutto" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "Alto sinistra" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "Alto centro" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "Alto destra" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "Centro sinistra" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "Allineato al centro" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "Centro destra" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "Basso sinistra" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "Basso centro" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "Basso destra" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "Scrolla normalmente" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "Blocca nella posizione" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "Normalw" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "Italico" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "Grassetto" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "Grassetto italico" + diff --git a/inc/options-framework/lang/optionsframework-pt_BR.mo b/inc/options-framework/lang/optionsframework-pt_BR.mo new file mode 100755 index 0000000000000000000000000000000000000000..0e67a21f0c4f21c8219acddc4e3fd5a4fd1b6566 GIT binary patch literal 2459 zcmZvdO>7%Q6vwBue1!s~P`)XzQRxM(NgLH}tk^Bk1J=Ylwui2FwllLy zU5Yp&IB|eW4+vBtB#x~(am;~_0~dq@91uc6;=%Yw%w1hrInOxEJj|!K2`=-9kJD9s}?*`um+3tPtF!&M3>wE=12!0PvfWPJKzrhF4-V2fY zz=I&KHwE4g&VlT&3i7;*;9Z~s*=2akaNfV@6o z@&RxfM3*=XJ_4@h{aujty$XkuAvp*? z)6DU3?vaXYE#42pkM%r?AGSVwI1bJ!`(_sbHM!Jn}?@gZ;RqT~5T2lN4~bK%Bh$!}NxU|(<9Xg#6_&)ZzM?|X zG1Vj4R^qgbB4r06msHbX7^y;1-pVB9-$O~~46Ug|NiWVB+n148&HXG}*;kv!UZNEa zDwYu~n%GMnBf`SS$qiOgw`xP1)I|e2pF~E6Dip(2X(5V=&ojpAtGq-M4T`=C%6i?- zd$PbN57>zY7N^{kXtb?CT81JqznSH%7;T!Qh?GCGF!^H`<4}{hpw%WV>qv>0O=_u~ zT8sV4vmYAeC^nvY?A4`7Vyvf*u{>U=pm9=?DDCRFL^LO(!;Z~O$$7fA&3*><^JjFZ5EYV;86cJBRn_*vN*EwF4qINK3FH!L zf|~2uCF$OMT@0^~+(?R)YxeUW#4LiiE z?O^wO1rsv6s&qbRS{b`Y;*eG7Mdh$rbjHNSqKD=-vyM_P?|7lxmpUr7O@Dr(D&uY{ zyDDfZ*@wE?N^NNz!*r=U!RH4V51NAnQoXw3r;-QtBfoNq1%$H#W8q@!%G z6t_)?yHTOz>)KDe6x59hwGYm!0ZwS>s@nMqwPuldUbSE=HYS;EwPsstR=IXddT(25 zJiSm{p*qr=c2iu*@#vySV{Zo)I=QxRaiuyQXkbg*y}IT{t;q?Or~m#LK&<-$?h#2wv5 zbL-=+PjP5FJj;>fTMAEou0bd!cI$?r1TJ(a-67oA+&qzCHpF#=7sY5+N@Qqo{;6tk z8@ZNXF^DVTs3~oV7_#q?{;XAKZ$LF)e6Qi{1~M|NDWk$c!&+hp&Wai`x>I9~PDUFn zYboB)tZQL=Y+32>+7`s=Eb2-Y`>4ODEk*AzUQ2b(05XRH12+~zhN%&2CPH(lc{r&U zV!ch(m!gp(rQ7y%)E?zy)KlbSRDE2E{}or^VZmNb^@b4*mEsokB}tDVih0LSd2kjb oVehgE^ZzuJwv~__OHM=TbxAd;-OeRv$>9iv3OcaKUb2z+57r)-eE\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;esc_attr_e\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: BRAZIL\n" +"X-Poedit-SearchPath-0: .\n" + +#: options-framework.php:71 +#, php-format +msgid "Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice" +msgstr "Seu tema atual não suporta o plugin Options Framework. Saiba Mais | Esconder Alerta" + +#: options-framework.php:254 +#: options-framework.php:456 +msgid "Theme Options" +msgstr "Opções do Tema" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "Salvar Opções" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "Restaurar Padrões" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "Clique em OK para restaurar. As configurações feitas anteriormente serão perdidas!" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "Opções padrão restauradas." + +#: options-framework.php:400 +msgid "Options saved." +msgstr "Opções salvas." + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "Container Interno do Options Framework" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "Upload" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "Visualizar Arquivo" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "Galeria" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "Enviado Anteriormente" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "Sem Repetição" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "Repetir Horizontalmente" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "Repetir Verticalmente" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "Repetir" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "Superior Esquerda" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "Superior Centro" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "Superior Direita" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "Meio Esquerda" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "Meio Centro" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "Meio Direita" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "Inferior Esquerda" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "Inferior Centro" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "Inferior Direita" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "Rolar Normalmente" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "Fixado no Local" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "Normal" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "Itálico" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "Negrito" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "Negrito e Itálico" + diff --git a/inc/options-framework/lang/optionsframework-ru_RU.mo b/inc/options-framework/lang/optionsframework-ru_RU.mo new file mode 100755 index 0000000000000000000000000000000000000000..4e5129e27e3f1d11fd128d0c4b1902ff65efd6cc GIT binary patch literal 3215 zcmai#TWl0n7{>=e(TX>`qN0Zee2~m`TOi`LG?reZp|`YKB0jhdyQjNjr*k$lXM0f- zOG`xpkytS%HGn2+d|aSQZ?yO*KA1BvCYtD*i7&qS;G_TV?2Nn65+~jLopa`#@B4q3 zv;BShmd^}444>!ev&k^_67Rtmo*%$1;4Sb$@F(yg@YituC%6sszrlUrrp<=213Ume z4EBOs!MDKsz#)*%kAP(FJ&?|y1|I+~fVA%txEuTiBs)KXkAuH}HQ-<2{2%Z!%(p@0 zqu>i5*{cH|0h>Vb*9FqKH^KWs4w63?B!A=K`~z?f^E2QM#I*Zf!*~MoW(2Vd8~`a# z1@K957JM4~4!i(<54M4WaIzDe14-8+NV;x;9pKL(+1UvZFMtV<>>UTmp8#J4Pk}Fi zYasdmBV6B#U}BiJfG>l2um$`A+ynjw(*Dgz@^j!Gko>fOr1x!*>NE~wt1%0{2wnsO za24DHLZ*&`a*tH#Sg0NhAJY2_K1h>(C_c#3^&lV7L-Ei<_Q~gVe2`xKJd1C*(mg`; zqFPixq>b`K+UcQK=y|FPU0bw(VH_4tMt`wRX*qTpV=2W5Yvr!wUNr0CLoyoo+u58n zTCsPS^&VwXFpv9O##oCx!DNn)aE7V0-K@{XY{y|IICF$AcNuMb$SOFJiM+Ih>(ez3niZ^8&Ab=#SY!y`%IOiK#KWl24P_47Qpq|qb15z8@p zLq8p!HNwY)H_SRIDA#gWt8k@dyNEE_${mn=03`bN* zg5H2sig$Qgnw=RFx$#l*#Cq>FNG{}=-G0{2n1>5l-%N@GtLf`anyns+iDPD)C3%81 z#OoW(_J$6pd*l1DugmhKne;5zcPw;W zg7MKTN5?i%W4t!Xy_^+uxopNpH(Ri>+)Q$7B*EIt+m1PwFGknz?(XbvuY^}0i`P(V zp%`XzA`j7$kITBegI;T7>73=^Y8)C&c9;h%`$*Fe_sn)TEi$+^33l*=EoRAY)aazCB2r1Vm}a{RF6^SmW<3061gqYiar z+(+BiwQ+w~ihP|Y-x6~ux+P}0Au1N4j3iip!S`*;t-NX#1y_0#cr!RK(Am<%I@;UX z`&*Koy*-sp18AIdt`8c_c!I@h40Tzpsg+<_T~~|2q*@Kms-+DVnOY8}gUR5eT2xmJ z^_5!1U?G@h>ZV#_!H24Z!&BHWUHuZS2y5)N|l(pq~@5K zho|h&8dzj-SPV{*3n(tBsDv}CT7QXY+pAcDx$09(YFRBZa-(hp zXBmu7t9e8<#b^K-q!lTM8R~O=@HEXK?0gvIG-Oh`PGc{vf6U++@<^9nTEo0zPp^L9Lni`6+!LSy{szCCy=n9BUe{pmAs;i7xmx4Om)T-(0b(e~TOb8`VF4^P~`hkvn~j7dQTwiYzUo>CTq*Plx$kLttSq JsS+JD{spY8Hb?*f literal 0 HcmV?d00001 diff --git a/inc/options-framework/lang/optionsframework-ru_RU.po b/inc/options-framework/lang/optionsframework-ru_RU.po new file mode 100755 index 0000000..36cf3ec --- /dev/null +++ b/inc/options-framework/lang/optionsframework-ru_RU.po @@ -0,0 +1,143 @@ +msgid "" +msgstr "" +"Project-Id-Version: Options Framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-22 15:51-0300\n" +"PO-Revision-Date: 2012-12-07 21:40+0400\n" +"Last-Translator: evgeny \n" +"Language-Team: Evgeny Vlasov \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;esc_attr_e\n" +"X-Poedit-Basepath: /Users/weslly/Desktop/options-framework-plugin\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" +"X-Poedit-SearchPath-0: .\n" + +#: options-framework.php:71 +#, php-format +msgid "Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice" +msgstr "Ваша текущая тема не поддерживает плагин Options Framework. Подробности | Скрыть уведомление" + +#: options-framework.php:254 +#: options-framework.php:456 +msgid "Theme Options" +msgstr "Настройки темы" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "Сохранить настройки" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "Восстановить значения по умолчанию" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "Нажмите ОК для сброса настроек. Произведнные ранее настройки темы будут удалены." + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "Значения по умолчанию восстановлены." + +#: options-framework.php:400 +msgid "Options saved." +msgstr "Настройки сохранены." + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "Внутренний контейнер Options Framework" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "Обзор" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "Просмотреть файл" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "Галерея" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "Ранее загруженный" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "Без повтора" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "Повторить по горизонтали" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "Повторить по вертикали" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "Повторить во всех направлениях" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "Сверху слева" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "Сверху по центру" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "Сверху справа" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "По центру слева" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "Центровать по горизонтали и вертикали" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "По центру справа" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "Снизу слева" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "Снизу по центру" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "Снизу справа" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "Обычное поведение" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "Фиксировать фон" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "Нормальный" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "Курсив" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "Полужирный" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "Полужирный курсив" + diff --git a/inc/options-framework/lang/optionsframework-sv_SE.mo b/inc/options-framework/lang/optionsframework-sv_SE.mo new file mode 100755 index 0000000000000000000000000000000000000000..654e32ee96fd225450240fab185aa6f5fc88603e GIT binary patch literal 2464 zcmai!O>7%Q6vwBfe5K{9P`)Xzp*>aW*hwQ*ZW^^snl?(@M2%Y&4nz~r*xq=&vzi$v z4Iptsh;sz3M>!A_{_`mf!aZpf4-u=yt-^}~JH?!~V z!F?YKG{W;LKYN5Y&fJR^+Be`n@D8{i{2qJ){3##*4j#bx9ykW>c}R$tz;WecOtb@G14f1~Pg1r7i@Nw`4$abHDN5NYl@AEDAEchch1pbwe?}N`^d;lV!1`mV0 z-w5~=I03T1d63t=1wIC9ko_ef`@5cx-v>X%_#^N(a&h!wA>cy%0wZ4kE66(j01txy zfb91mf?NXM0FQy|AnW=J#7}&Q7fi)%kmLCpWL@8ZoQI!5*8LmEcK1NeyPGjJ@osR<3=-xDcH7XVUB_& zr@amZI-6`zXzI2m3`3kWJgvvZ(26EweK;bfbzOE$Ae)BRCZ5*?>$EC}nfSU^6eqN3 zWKD|;(irVFL@uckD`j+FQa;Kg<^7(dOO`I{RLdYPS=W|EEaZM>oNViL>smC+K_$}A zlud$+6GYfI@^X!pEIPdw+m1IIbR{)bDy>9sS2}A7HR2;#QJKMv;MzToAx8+ZWbnYdNKAiiL0?*rEucrhOR{yH129o^P<%%4pb_PBXifH-Y}Ze8@S=h&&NKLY55dRj{Wty zoLHM~Tc49&r!q9lRM-l#Onz;7>HLtG(SaYD>)_DV1XltF=ZX@ov}?&Eh^yV3iN~ij zFm*DE3-RQ`Bbv%f~dy0T+(U6r)Z>7Qi=Y?C>L^T(A=sjVQX%Ut4d3nAi5uH zC6D~Bc@RtNk#@?+%Z)@u;G!5r6&XiBg9+R^W0Vk^rrXDxjq-$K{dtzpai9cwN%h!> zX{3;n&Kg`NC;)t*(AV8mt2jhX%`PAPVqS6{P;n~R4yau1tOo2}cBZ?VW|i7nDUCX% HdbQ_Yy|tgN literal 0 HcmV?d00001 diff --git a/inc/options-framework/lang/optionsframework-sv_SE.po b/inc/options-framework/lang/optionsframework-sv_SE.po new file mode 100755 index 0000000..5e4bd4f --- /dev/null +++ b/inc/options-framework/lang/optionsframework-sv_SE.po @@ -0,0 +1,146 @@ +msgid "" +msgstr "" +"Project-Id-Version: Options Framework 1.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-22 15:51-0300\n" +"PO-Revision-Date: 2012-12-20 08:33+0100\n" +"Last-Translator: Kjeell.se \n" +"Language-Team: Kjeell.se \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-Basepath: .\n" +"Language: sv_SE\n" + +#: options-framework.php:71 +#, php-format +msgid "" +"Your current theme does not have support for the Options Framework plugin. " +"Learn More | Hide " +"Notice" +msgstr "" +"Ditt nuvarande tema stödjer inte Options Framework Plugin. Mer information | Dölj meddelande" + +#: options-framework.php:254 options-framework.php:456 +msgid "Theme Options" +msgstr "Tema inställningar" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "Spara Inställningar" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "Återställ standardinställningar" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "" +"Klicka OK för att återställa. Alla temainställningar kommer att gå förlorade!" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "Standardinställningar återställda." + +#: options-framework.php:400 +msgid "Options saved." +msgstr "Inställningar sparade." + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "Options Framework internt" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "Ladda upp" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "Visa fil" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "Galleri" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "Tidigare uppladdad" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "Upprepa inte" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "Upprepa horizontalt" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "Upprepa vertikalt" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "Upprepa alla" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "Vänster topp" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "Centrerat topp" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "Höger topp" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "Vänster Mitt" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "Centrerat Mitt" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "Höger Mitt" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "Vänster nederkant" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "Centrerad nederkant" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "Höger nederkant" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "Scrolla normalt" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "Fixerad placering" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "Normal" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "Kursiv" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "Fet" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "Fet Kursiv" diff --git a/inc/options-framework/lang/optionsframework-zh_CN.mo b/inc/options-framework/lang/optionsframework-zh_CN.mo new file mode 100755 index 0000000000000000000000000000000000000000..cf167abea1913eb27bf4ea18c90e5a5069bbb362 GIT binary patch literal 2273 zcmZvbOK=oL7{?n$#R#IPsQ7AASRSa^M@S%ULP`<{q)12#7D}zstzoyb88bV*%=8k1 zR+$8okPs@CAddujqq!s^P>>L!SF|kec<|!RZ1zBL(1S<+J=1G)V5(+*{dIr+z30zW zOTQs_DBjoQyM&N+l8@no=N`Be`~`dl{2g2Y{-NY~a5?0E!1dsg#|e2AtOB0}TfwKm zPrxU^c2M5WfYRP)pu9f_J`J7#rQSJkEqE1_c76q40Pllk-~%Q93qB8dIf8r+d=r%R z!r)4<7L@*)L3!^Za2d!z>CXbCzk^Et0vv-p1l~g});i}hUK@BA{1`;~ey!dBW$jT4zs9m36z@xTWsGRO|H%6?2icF8{hi?R zqFTQN%Gr?lpuGOG246V`2;c9QjB)WJdnV`dO||)&;%Y_NTZ{l9_1sMPAKD~z(@0`1 z1kcb0W(j7Oq-NGGO6y%lx*bdxr4OX!A$3`T!NA-y`e zY?j-CwsTvam!hBxMai1Ev|)uPt<`CV&DuAWzY|^SlvAPGX(l$6C-#}T)mdKG%yiqL zE$CQnSg)g>FVe4oe%*E>#gG+>;47e%{8N?`T2o3xZ5*^bM$1r3M5DDhX(Of8=hBWA z=h$v*jcW}ydIv3Si!NA_Bq_qXT^;)D#i$-Zh zG*%f|7paC`v+f8jZtIp~>KL*Z-JIbLs>x_=<;FY!|;b9$O- zai(VwO-obD)`gg(p-7pW7gSh_cV`irU1+8^hQKH3?#&(NI;W zYQgqy^f}ql2J2cRMnh%99llVweoDbRc{V?HoaCpE=BFnm+}q#z7`;IXeKYRhZ0nBV z;IYEo)Wf?Y-cXNsb|^nRTfB67e(EP|y4MEs)0f;UKR&$MONz7Dy;AHMDqfs%Z(sL% zad7Ofo<8D^-*KnL@^jJ*DU46M10&>r$CH8M$-wcX3&;8CWAKT~#5*%p>=`40P4D7> zckY%u&|f?};g0mrU+z~2aF+l1TX*ub@2vlbJ9I2RJ)FOLfw=t>P*%p=bA5&Jniy_19a*;~Zx zn{eljBc{UGmw^T3=biY$8|ht~mpA$~w2{H0AMuetZvM`|{P&l=@tf|IvDz?w)W2IC R`)dBwC@NPte^vh7\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;esc_attr_e\n" +"X-Poedit-Basepath: /Users/weslly/Desktop/options-framework-plugin\n" +"X-Generator: Poedit 1.5.5\n" +"X-Poedit-SearchPath-0: .\n" + +#: options-framework.php:71 +#, php-format +msgid "" +"Your current theme does not have support for the Options Framework plugin. " +"Learn More | Hide " +"Notice" +msgstr "" +"您当前的主题不支持选项框架插件。 了解更多" +" | 隐藏通知" + +#: options-framework.php:254 options-framework.php:456 +msgid "Theme Options" +msgstr "主题选项" + +#: options-framework.php:323 +msgid "Save Options" +msgstr "保存选项" + +#: options-framework.php:324 +msgid "Restore Defaults" +msgstr "重置选项" + +#: options-framework.php:324 +msgid "Click OK to reset. Any theme settings will be lost!" +msgstr "点击OK重置,所有主题设置将丢失!" + +#: options-framework.php:358 +msgid "Default options restored." +msgstr "默认选项已恢复。" + +#: options-framework.php:400 +msgid "Options saved." +msgstr "选项已保存。" + +#: options-medialibrary-uploader.php:26 +msgid "Options Framework Internal Container" +msgstr "选项框架内部包装" + +#: options-medialibrary-uploader.php:128 +msgid "Upload" +msgstr "上传" + +#: options-medialibrary-uploader.php:151 +msgid "View File" +msgstr "查看文件" + +#: options-medialibrary-uploader.php:288 +msgid "Gallery" +msgstr "相册" + +#: options-medialibrary-uploader.php:288 +msgid "Previously Uploaded" +msgstr "先前上传" + +#: options-sanitize.php:232 +msgid "No Repeat" +msgstr "不重复" + +#: options-sanitize.php:233 +msgid "Repeat Horizontally" +msgstr "垂直重复" + +#: options-sanitize.php:234 +msgid "Repeat Vertically" +msgstr "水平重复" + +#: options-sanitize.php:235 +msgid "Repeat All" +msgstr "全部重复" + +#: options-sanitize.php:248 +msgid "Top Left" +msgstr "上左" + +#: options-sanitize.php:249 +msgid "Top Center" +msgstr "上中" + +#: options-sanitize.php:250 +msgid "Top Right" +msgstr "上右" + +#: options-sanitize.php:251 +msgid "Middle Left" +msgstr "中左" + +#: options-sanitize.php:252 +msgid "Middle Center" +msgstr "中中" + +#: options-sanitize.php:253 +msgid "Middle Right" +msgstr "中右" + +#: options-sanitize.php:254 +msgid "Bottom Left" +msgstr "下左" + +#: options-sanitize.php:255 +msgid "Bottom Center" +msgstr "下中" + +#: options-sanitize.php:256 +msgid "Bottom Right" +msgstr "下右" + +#: options-sanitize.php:269 +msgid "Scroll Normally" +msgstr "普通滚动" + +#: options-sanitize.php:270 +msgid "Fixed in Place" +msgstr "固定位置" + +#: options-sanitize.php:344 +msgid "Normal" +msgstr "普通" + +#: options-sanitize.php:345 +msgid "Italic" +msgstr "斜体" + +#: options-sanitize.php:346 +msgid "Bold" +msgstr "加粗" + +#: options-sanitize.php:347 +msgid "Bold Italic" +msgstr "加粗斜体" diff --git a/inc/options-framework/options-check/footer.php b/inc/options-framework/options-check/footer.php new file mode 100755 index 0000000..2e13271 --- /dev/null +++ b/inc/options-framework/options-check/footer.php @@ -0,0 +1,24 @@ + + +
    + + + * tag of your theme, or you will break many plugins, which + * generally use this hook to reference JavaScript files. + */ + + wp_footer(); +?> + + diff --git a/inc/options-framework/options-check/functions.php b/inc/options-framework/options-check/functions.php new file mode 100755 index 0000000..0afada0 --- /dev/null +++ b/inc/options-framework/options-check/functions.php @@ -0,0 +1,108 @@ + + + + + +> + + +Options Check + + + + +> + +
    \ No newline at end of file diff --git a/inc/options-framework/options-check/images/1col.png b/inc/options-framework/options-check/images/1col.png new file mode 100755 index 0000000000000000000000000000000000000000..32bddc1a97395f1127c985f3d9946388de8c55f4 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^Q9x|N!3-oX-i|E?Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JibMl^LR??Je*OLX_s^d{fBW|B%a<>|fB*jZ^Jl}RSC@ba zEInNuLn>~)Ib+Glpuoej;nS9Xs*fAqZgX*174C6;<%HE?tFLBljarMK_E(jiuwi6l YFsNkOntkhWD9{iFPgg&ebxsLQ01q5a6aWAK literal 0 HcmV?d00001 diff --git a/inc/options-framework/options-check/images/2cl.png b/inc/options-framework/options-check/images/2cl.png new file mode 100755 index 0000000000000000000000000000000000000000..def0bcd666b844611491759ad0ca5ea27c46f4ab GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^Q9x|N!3-oX-i|E?Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JisS-(LR??Je*NXkm(QO+fB*jd!-o&=-@pI)^XKp1zrTI^ z22`TZ8nOsTag_x51^mdK II;Vst0QqEPTL1t6 literal 0 HcmV?d00001 diff --git a/inc/options-framework/options-check/images/2cr.png b/inc/options-framework/options-check/images/2cr.png new file mode 100755 index 0000000000000000000000000000000000000000..2aed4f91ea7bfa6be42c47164351ad4215cd88ae GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^Q9x|N!3-oX-i|E?Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JilhU4LR??Je*Nv+x6hwHfB5j>`}gnf-@pI)^XKp1zk%|X z&#pBCQk*40e!>5tfFanwLI^16?CIhdQgQ3enT?DG6nKs}ID7o~tA376FJ^vK>|JAB z%lymhLN8DHR(m1CM5@ + +
    + +
    +

    Options Check

    +

    Use of_get_option($id,$default) to return option values.

    +
    + +
    + +

    Basic Options

    + +
    +
    type: text (mini)
    +
    of_get_option('example_text_mini'):
    +
    + +
    +
    type: text
    +
    of_get_option('example_text'):
    +
    + +
    +
    type: textarea
    +
    of_get_option('example_textarea'):
    +
    + +
    +
    type: select (mini)
    +
    of_get_option('example_select'):
    +
    + +
    +
    type: select2 (wide)
    +
    of_get_option('example_select_wide'):
    +
    + +
    +
    type: select
    +
    of_get_option('example_select_categories'): category id =
    +
    + +
    +
    type: select
    +
    of_get_option('example_select_tags'): term id =
    +
    + +
    +
    type: select
    +
    of_get_option('example_select_pages'): page id =
    +
    + +
    +
    type: radio
    +
    of_get_option('example_radio'):
    +
    + +
    +
    type: checkbox
    +
    of_get_option('example_checkbox'):
    +
    + +
    + +

    Advanced Options

    + +
    +
    type: uploader
    +
    of_get_option('example_uploader'):
    + + + +
    + +
    +
    type: image
    +
    of_get_option('images'):
    +
    + +
    +
    type: multicheck
    +
    of_get_option('multicheck'): + + +
    +
    + +

    The array sent in the options panel was defined as:
    + "French Toast","two" => "Pancake","three" => "Omelette","four" => "Crepe","five" => "Waffle"); + print_r($test_array_jr); + ?> +

    + +

    You can get the value of all items in the checkbox array:

    +
      + $value) { + // If you need the option's name rather than the key you can get that + $name = $test_array_jr[$key]; + // Prints out each of the values + echo '
    • ' . $key . ' (' . $name . ') = ' . $value . '
    • '; + } + } + else { + echo '
    • There are no saved values yet.
    • '; + } + ?> +
    + +

    You can also get an individual checkbox value if you know what you are looking for. In this example, I'll check for the key "one", which is an item I sent in the array for checkboxes:

    + +

    The value of the multicheck box "one" of example_multicheck is: + + + +

    + +
    +
    type: background
    +
    of_get_option('background'): + '; + echo '
      '; + foreach ($background as $i=>$param){ + echo '
    • '.$i . ' = ' . $param.'
    • '; + } + echo '
    '; + } else { + echo ''; + echo '
      '; + echo '
    • '.$background['color'].'
    • '; + echo '
    '; + } + } else { + echo "no entry"; + }; ?> + +
    +
    + +
    +
    type: colorpicker
    +
    of_get_option('colorpicker'): + + + +
    +
    + +
    +
    type: typography
    +
    of_get_option('typography'): + '; + foreach ($typography as $i=>$param) { + echo '
  • '.$i . ' = ' . $param.'
  • '; + } + echo ''; + echo 'Some sample text in your style'; + } else { + echo "no entry"; + } ?> +
    +
    + +
    + +

    Editor

    + +
    +
    type: editor
    +
    of_get_option('example_editor'):
    + +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/inc/options-framework/options-check/options.php b/inc/options-framework/options-check/options.php new file mode 100755 index 0000000..e647d3d --- /dev/null +++ b/inc/options-framework/options-check/options.php @@ -0,0 +1,286 @@ + __('One', 'options_check'), + 'two' => __('Two', 'options_check'), + 'three' => __('Three', 'options_check'), + 'four' => __('Four', 'options_check'), + 'five' => __('Five', 'options_check') + ); + + // Multicheck Array + $multicheck_array = array( + 'one' => __('French Toast', 'options_check'), + 'two' => __('Pancake', 'options_check'), + 'three' => __('Omelette', 'options_check'), + 'four' => __('Crepe', 'options_check'), + 'five' => __('Waffle', 'options_check') + ); + + // Multicheck Defaults + $multicheck_defaults = array( + 'one' => '1', + 'five' => '1' + ); + + // Background Defaults + $background_defaults = array( + 'color' => '', + 'image' => '', + 'repeat' => 'repeat', + 'position' => 'top center', + 'attachment'=>'scroll' ); + + // Typography Defaults + $typography_defaults = array( + 'size' => '15px', + 'face' => 'georgia', + 'style' => 'bold', + 'color' => '#bada55' ); + + // Typography Options + $typography_options = array( + 'sizes' => array( '6','12','14','16','20' ), + 'faces' => array( 'Helvetica Neue' => 'Helvetica Neue','Arial' => 'Arial' ), + 'styles' => array( 'normal' => 'Normal','bold' => 'Bold' ), + 'color' => false + ); + + // Pull all the categories into an array + $options_categories = array(); + $options_categories_obj = get_categories(); + foreach ($options_categories_obj as $category) { + $options_categories[$category->cat_ID] = $category->cat_name; + } + + // Pull all tags into an array + $options_tags = array(); + $options_tags_obj = get_tags(); + foreach ( $options_tags_obj as $tag ) { + $options_tags[$tag->term_id] = $tag->name; + } + + // Pull all the pages into an array + $options_pages = array(); + $options_pages_obj = get_pages('sort_column=post_parent,menu_order'); + $options_pages[''] = 'Select a page:'; + foreach ($options_pages_obj as $page) { + $options_pages[$page->ID] = $page->post_title; + } + + // If using image radio buttons, define a directory path + $imagepath = get_template_directory_uri() . '/images/'; + + $options = array(); + + $options[] = array( + 'name' => __('Basic Settings', 'options_check'), + 'type' => 'heading'); + + $options[] = array( + 'name' => __('Input Text Mini', 'options_check'), + 'desc' => __('A mini text input field.', 'options_check'), + 'id' => 'example_text_mini', + 'std' => 'Default', + 'class' => 'mini', + 'type' => 'text'); + + $options[] = array( + 'name' => __('Input Text', 'options_check'), + 'desc' => __('A text input field.', 'options_check'), + 'id' => 'example_text', + 'std' => 'Default Value', + 'type' => 'text'); + + $options[] = array( + 'name' => __('Textarea', 'options_check'), + 'desc' => __('Textarea description.', 'options_check'), + 'id' => 'example_textarea', + 'std' => 'Default Text', + 'type' => 'textarea'); + + $options[] = array( + 'name' => __('Input Select Small', 'options_check'), + 'desc' => __('Small Select Box.', 'options_check'), + 'id' => 'example_select', + 'std' => 'three', + 'type' => 'select', + 'class' => 'mini', //mini, tiny, small + 'options' => $test_array); + + $options[] = array( + 'name' => __('Input Select Wide', 'options_check'), + 'desc' => __('A wider select box.', 'options_check'), + 'id' => 'example_select_wide', + 'std' => 'two', + 'type' => 'select', + 'options' => $test_array); + + $options[] = array( + 'name' => __('Select a Category', 'options_check'), + 'desc' => __('Passed an array of categories with cat_ID and cat_name', 'options_check'), + 'id' => 'example_select_categories', + 'type' => 'select', + 'options' => $options_categories); + + $options[] = array( + 'name' => __('Select a Tag', 'options_check'), + 'desc' => __('Passed an array of tags with term_id and term_name', 'options_check'), + 'id' => 'example_select_tags', + 'type' => 'select', + 'options' => $options_tags); + + $options[] = array( + 'name' => __('Select a Page', 'options_check'), + 'desc' => __('Passed an pages with ID and post_title', 'options_check'), + 'id' => 'example_select_pages', + 'type' => 'select', + 'options' => $options_pages); + + $options[] = array( + 'name' => __('Input Radio (one)', 'options_check'), + 'desc' => __('Radio select with default options "one".', 'options_check'), + 'id' => 'example_radio', + 'std' => 'one', + 'type' => 'radio', + 'options' => $test_array); + + $options[] = array( + 'name' => __('Example Info', 'options_check'), + 'desc' => __('This is just some example information you can put in the panel.', 'options_check'), + 'type' => 'info'); + + $options[] = array( + 'name' => __('Input Checkbox', 'options_check'), + 'desc' => __('Example checkbox, defaults to true.', 'options_check'), + 'id' => 'example_checkbox', + 'std' => '1', + 'type' => 'checkbox'); + + $options[] = array( + 'name' => __('Advanced Settings', 'options_check'), + 'type' => 'heading'); + + $options[] = array( + 'name' => __('Check to Show a Hidden Text Input', 'options_check'), + 'desc' => __('Click here and see what happens.', 'options_check'), + 'id' => 'example_showhidden', + 'type' => 'checkbox'); + + $options[] = array( + 'name' => __('Hidden Text Input', 'options_check'), + 'desc' => __('This option is hidden unless activated by a checkbox click.', 'options_check'), + 'id' => 'example_text_hidden', + 'std' => 'Hello', + 'class' => 'hidden', + 'type' => 'text'); + + $options[] = array( + 'name' => __('Uploader Test', 'options_check'), + 'desc' => __('This creates a full size uploader that previews the image.', 'options_check'), + 'id' => 'example_uploader', + 'type' => 'upload'); + + $options[] = array( + 'name' => "Example Image Selector", + 'desc' => "Images for layout.", + 'id' => "example_images", + 'std' => "2c-l-fixed", + 'type' => "images", + 'options' => array( + '1col-fixed' => $imagepath . '1col.png', + '2c-l-fixed' => $imagepath . '2cl.png', + '2c-r-fixed' => $imagepath . '2cr.png') + ); + + $options[] = array( + 'name' => __('Example Background', 'options_check'), + 'desc' => __('Change the background CSS.', 'options_check'), + 'id' => 'example_background', + 'std' => $background_defaults, + 'type' => 'background' ); + + $options[] = array( + 'name' => __('Multicheck', 'options_check'), + 'desc' => __('Multicheck description.', 'options_check'), + 'id' => 'example_multicheck', + 'std' => $multicheck_defaults, // These items get checked by default + 'type' => 'multicheck', + 'options' => $multicheck_array); + + $options[] = array( + 'name' => __('Colorpicker', 'options_check'), + 'desc' => __('No color selected by default.', 'options_check'), + 'id' => 'example_colorpicker', + 'std' => '', + 'type' => 'color' ); + + $options[] = array( 'name' => __('Typography', 'options_check'), + 'desc' => __('Example typography.', 'options_check'), + 'id' => "example_typography", + 'std' => $typography_defaults, + 'type' => 'typography' ); + + $options[] = array( + 'name' => __('Custom Typography', 'options_check'), + 'desc' => __('Custom typography options.', 'options_check'), + 'id' => "custom_typography", + 'std' => $typography_defaults, + 'type' => 'typography', + 'options' => $typography_options ); + + $options[] = array( + 'name' => __('Text Editor', 'options_check'), + 'type' => 'heading' ); + + /** + * For $settings options see: + * http://codex.wordpress.org/Function_Reference/wp_editor + * + * 'media_buttons' are not supported as there is no post to attach items to + * 'textarea_name' is set by the 'id' you choose + */ + + $wp_editor_settings = array( + 'wpautop' => true, // Default + 'textarea_rows' => 5, + 'tinymce' => array( 'plugins' => 'wordpress' ) + ); + + $options[] = array( + 'name' => __('Default Text Editor', 'options_check'), + 'desc' => sprintf( __( 'You can also pass settings to the editor. Read more about wp_editor in the WordPress codex', 'options_check' ), 'http://codex.wordpress.org/Function_Reference/wp_editor' ), + 'id' => 'example_editor', + 'type' => 'editor', + 'settings' => $wp_editor_settings ); + + return $options; +} \ No newline at end of file diff --git a/inc/options-framework/options-check/screenshot.png b/inc/options-framework/options-check/screenshot.png new file mode 100755 index 0000000000000000000000000000000000000000..5f12989e11e785c53f6c2e67534366941facce23 GIT binary patch literal 19360 zcmbTdby%Fw?hkI!V(v%-%rJXdio zS5*gdR}W)n;3r`-2NNKvw4Jd9Pz7jg267q!@_+gSX=$aV<*Fqw$7||f$7uWy4x^`? z;|KMpPy9ljj>e`oKvz-|poNva0N|p%8$fDhCIHankY|>66a`vZNqIQ~RlO9{OucMO zdCUMpf~5SOydMMD0bPwrJ?(7mU3fhO0RI}7_oMw!Hxq#LUns6N0)T%{N=sgeRMf#4 zNXo&;%wWpQ$wJD>&d9>f%)`z@Ps+;7!py|N%EZjYz{1SS!NtqWLi(Qv@WIX5%$!$6 zOyWPhJ|F>rrK_tWFB6l8hX54>1rrMo4-XSFD-$a#!v_X~3&`Hp*ptEDh5WxG zhyh(povj>QtsLx0{~6KP#KFx~0Pr!>e=ot#QC|Lk2DW$kkDxw8#^h=2$i%|P%w%Wx z&$|AF?c%Be{9n`f-(tI{fgFKMDnJ(pH)qq2_hC-{U*Zqh{ofh=gZMEUUPWiCkC$R> zE9PM8W(Tx)l@=2KeEh;_W@X09%*xHo!otPQ%*D#g$<4yT!_L7a!NtiX&d$cc!Yab~ z-!cAow47|LED|CjTq0atAC%%O+-&T^qU>y9Y+NEd+-%%p|D~0-cX2hgHwFHeuhj?N z|Il*&Uuk(ooq@)#4$f*04z~Z*03}NYR|gkM2S-v-RSrfLQh8%jEBk+X{&_+FUauI? z*~%SgCgJR0NBS=b^IH9HX28lO!747o!Nx4|@0D|Nu}Da8iHfj^eF%eHOa$;BTC@K@ zQe*m<4AVdA@&8hn|8{-o;6Kg(QT`9$f3^?M{$tNLe{2p%YDR}opCl)w#e~&7mrt`` zeFz7a-kaAAx|0R-3P_z2`3@z*^jU=J)*Pv2 zrA1RZ#f+ok!MWrFc=Eoa3s$1gPB9CzOS>2*tXNz6cn-KG+3MTtTPUP)Ap*GF&`J@| z;3!0(AR^ELzLBB>(4>Ol{tW=cNdE<3kU<1|`vAIBl~iRI;QBTfB)+nU^S~gN9 zS*^+w4*QZ_ zPfyE;3rC^Ov#KOnj249%w%jIhUDIS5o0=AARLIN8K@ky`5TfmGKjw|fRLt@Iz0Qr? z^3X#CpY`uK2Rx`&%>6>9Idd1)4?rNNP> zoR_!N0tkjmNJyBXjFy3q3Esx*!tAsQ#Ki;pcqqI;(b)wGP3DHX%8;>h6jkP_NG0;y z%kY>XtCJjmB15Cn4xW-lfr21kDfzW70Wsat;q1)fG<9+J2+_{~tAL9{DdDD}Vgj;3GS*bd@0 z6gQ+wB9wA6Tx0|@K?DuwJ>iLmx6iNVU&yj)>qdXej~vIJ`H3_0JyT|mktqUl3;@9j z`kI=WHZ~Rcc$bk@R#v{gzG%Z?MR0ZOxJYak6Paei4XsTbl zfu*pwa?s05{}=CBS%)s`H^-={wukp~U;1y7!|8=jL-)|BZ^uJ9`piROiyS0fczicu zK$@p=q6;qLkksrSclS1mHg!zzgOPzXjeno`@KK14ifACbBxoD6`=EcY*!Kpqjt9rM zd+(4Lpa)>6M2o-8%Y-U+E52Pb0e5N>`gGk*RM;*6S z3DSms^?P^SZco4UmXC63T1BEKx%3c13i!Gk`lv+9R5@`I3Tr5dKqlOHgGO`7+E!LN zKhsc>^%k1G2$G1S`wHj_CrB$O6pHTue%7skKyETVd+~DD(@f{96UAhR1#n4FG3c}A5c8zKN$j|_cM2zIM*9ot+{`04c=E@qSP^in@nMeU}#NA?u+EAlY6bP0LBo>xM_CtyaA9`}jW|O)oB{ zj2eXSb1-B5bvoio)ZYa6s)c^4SdE}3ULn;v1iVmVgcVYo#%taCvIN7yvx*^=IC%gBp+k%%uVN_A^eYW0 zDc(%@hFQii9wHW-S%9B(I}Hryde?YEUAZ9wpL20?wg?+oU|d$VBKL_c?X3hii=wX% zvIR04J?uApKUp+fbL>9i0TEr-@2{5`rFL#yzSd95#IPxrJ)oFqzYl(iss>|rJ#5%; zUC?xT@mN0gw57g*M~8xwDTJ^LC^}#bZUDX|`@uQ=9R$xn? zNuFl*xw02EW-OxF!Oy%%pt1ATyDtGvuO4d;)aJ1dsP0tb`kDLeD2c?_>Qn5>!RdFPq9QY^e-SC}HFKC^|@TBGVxrt8#<*(jE@4uMe+t z(&C5{ZpS$-QTW}D0!6$n*3Lz%QgB@qyHiOjOY?sH?MQYMBz-||{T*ZB zp*r_=Y#w94gg`iET83|^+s<%EQtnU>O)(rmJ6EZ9vaa8*$1fgHSIfX(QQ2v4=-o|{ z{=FsouQoKzMm$w;pM-?O{Ol|{JNs`2#>pUpVB*ci9`zy>`8r>6n)2>Or=)t+@~?*; z?LoU>mz{Q-2QkXMNgA04Bv*Sr$Ciqq3%9K?M!o!De%)pw#}+;MNg0d{J;S{r@>KdP zaoKeSg64(?r2P_Y(XUfD*av5VN_W~eS<{5*m>JyU&KYidzNFK?KpKM&&Ygz&O5e| zy6Zi5hKK+scDBdiWAqH;(w00vxdojrGJxQUbK4dDr5b-v5PHV1+qm~flf&{o7|k_R zrmE*0g7fF~)!8BaoK>H9f-m|Fh1;9if)~JA*U8kd=g}0jy}3uoI3b)0^qi*|Cax4s zJ{VYbr=o|oT7-IaJ@1s7aI)J^w|16sFv4 zMO@b(s+{+MDoup@rVIzL%`}sr%T^ud36FnEDTRAd(FLi~`CKZa*L|&iFsjLylJSbJ zgM{bpn67sFR=eTqe!FvyD$n))xR>m!yVr{gzk`QXcUy3xjLy^Lnve~{`%9UJJ50Aw z22X%s>HrUI1;Jm${XGjUSiX}7!tyLWzHa}6Y{(ypodq=RL#x|=4r%8H#dp7$5BhQ( z$|w`-o-{G&!dbd8Cn(_|AgGpGr<-GqPs&8#AKR~Y+@N_n#w}RTFw$JFWI(dG$gm!x z+TWom%ci7E=leg*kEztrhv(%9Dp_i+c)-)> zq2w5pP(eZNh7$HaB~aMp4j8*XndEKRkRzZw{XEc5+pSyi_G;rJ7}H&8+s7$+h9tB< zS#Pd^?T3y)ZR0`b1=H&I^?gp)iY%5s3=Jz+AypfZra=-nfsqY1ICJJ+{mfs&9R!dT zH4{;Z#=|Hqrbu2Oc0_H`HLZjOU8zP^ekUT};_=O9TB!bFw-$R|uCERmHO?SrJSbbo8!=K&R%!M&kW)VPnuTgWeO_)xN5idTU%8DdGx z>HYQ>nyo{ak^i^33_WNwp=4Qy3}vw!bd#az+CEFVYf~i`>8H!_wOW0(xkY@})wOCSA6~DL}V1AzFD~yzpiftrB7tx0dEZj4I zg@5n2Me#SE_K6|9I=Q*|d(W|KiJX%1GYiWud-rl~1f5LFh8eeE_+2%lC=uWd|(#v8lMI+OZ46aW> zdDEI-Iq|x%kBIA>8U!gt&i$XmyxcW7$Av7E)odYN=;%jYUv^^j@2M>b=%-mETCTZ^ z&0W1hv4C6Oz(q>f7?R$wdCEy!ur|h+3W?4y5Nn!p^Q{Aj5MQtuu8yKAX`0rn_sKar zMYBV0BB=~BRC4`in#%hUUA!^~zD6>RH`?np1J6 z^(v|zL3248%PdEwG*O0l>{v$$VQ*cB%dqAayM<=EdXGUlf}XF9D-WlAxNiH=fq!k; z=(cMqO?A9ZQ+SC{!HVcI+}9B}zdYtHA>os4A+aV(eeB;IxdeX0)EbG&?RUoUuTE=q z8jqJ`bge!#hh5akm9Tvci3!U+w6v+jsit6Li8fG-;w*_$vC*noVUoH|i=mHyXH_mG zJzS)s^4TMJg+!4~mH;vloh|%sLbJ~JD$U)dkE9JV!hEc3sz1}p$6MrxB}XFCSR|YJ z#ys!>zR7do)d*I-4vx1Y-E<0ZVm1bnG%jna0@2~9UOZ`@xQ#D?~TI2_LwJ}Ey2>e>PJ+~|3&0&9d>GO z7{3E8?xMncxG-2kg&)pk;J0>m=b={9ewHnHYc=?G?rx)TwRAI7m8?X#- zd6_d2?>+9|>wF_2^?ik7u}QNNPLzyVjoJ2cO~q|wMn?tx!DWzcRbi;Mo?Aik(dnRr zkmrr%)jFe*2Y;6{>^`H;po|HZyzS|z0=5kH!T|(173au+?dA3-Zyl7>g$G8xj)CaA zi&cGwZBZDu(rc_K!slF&^KAHD~t< zx{z9kC4#)(q-H9;Q%1zWLUo(f&^$k_)>O5o9IEVVpseTq1)7nF{656M`IWORuOx_~ zY&Y|#?>*5!Ox$$DmVJ4h`6&iibq!c3qNu-67pu~V{o48PvNO@G)(Y!23Etum>N4wE^nWn4@BFG0*D5x4_VAW@^tkaJa6Xx_<8&0|p&oUu zDnf>akrt}HW@oNtR8J+jz1hUUKaBJ6 z;4drN6Q8cijm6i2Asu#?CR?V9W5uSS;l^Z=a^<9=))5)XXbGw(zWdX~yw&_o@%&uZ z_0_t*ELhb0W}8j4=~@km!EZgt#dfg~h@8aBhDGT~LSwBK3r$tJG!X^25h2=T@*F|= zk^D~R3R~ch)3V3#z`*yDlcOVe8w`Gfk65sto}O0Zl#Fm7a4cm`P5sAs`e3xD5i4$= zC3|cnvdDOP;jDvJr*O^6unZ+wgPvU)?J#`GHiFxZ{WxMu`PbHPx>)nf$WFsjDT$jv zp2eY4d!E(&5%L!7Co#rNxV8K#tF-trOi1CBV!X({pny*(TSVB$IJ6H}A}nx(2*cpf z&UPnNYd>>B5=Z-`1_s~xR_!bE`HP#!Ae~NSfqj$jLF&u&TA>KFTJ+?^1tI5%iX+B_ zSoY0kLIA1F)IdRt?ll5Tf?*}@fldlCA!erE`UE_Ti7nq8x{>iA>Xni0^#@ZK%bnQlSGC`&Q;I|V~xDW0yFQ0Q>l!? z!&wPp4frB1j?M?I^ljyWS-FpHyqGa`sM7DewG(DbkG4j6pDOV(k?HNSUou_TE6;z9-{ijDA``c{79j3}1p9iVt*_p+<=cMw+MfuL-N7G5GX!^#lhL;!Edx~)vY&;MQc&TQdQUPy5qP8Ac z#%x}n{C#^lSWy8`l?O+Ndlp}EM50-jbafekJnhsjL6sSJWo2dL&Dqm{WQR8xAL1Gk za=dzJ|JAUc@o-@zFYunc?N8j9GE#EW<-a1ruDde;nIbvy`P3D22)sz&7Tr5~a~Bu2 z978v2s5W@`UzN)m6Ra6R)BctQ>3jqXa&ku` zc2oL|JL`ECqAGR_mdzQgp;+f3*-Na|8j@OZQ(!$PK7cY-?ENi`G}m9!GV1}67y*w5S;@x z3e1E240@7jV0S&x-~$i16N~p!;h=lxH%k8EH6n$`Ax2!@hIO1&x5s9{K}>%mMa$l> z(u&6|&L8A(=)jnw8q{teWcvON-`1A%JiMl#z8VrzCi7U{v5l85NP^l)OyK3q%3jb# zL5HaE8(*aki2-Aji{27jxp6Ox>iuT0Qv8b!E_hGfLh<#4sk_$uqI#0+ysj8$K-@Z6 z5~!WyJ+;r7jx^EhM-rCd`q=&EmAaOxo{8?^8hAM+MPIs?@HY&_4^6UqL3=t zE?o_5*XZza&O z1C4yAbpo`40tPH`CqGH=9JWz>o4;(a0mK=Sa&pnCWxslb7ouNY(vJN=_ZUd36@?xe z{)_U-YtLcO%`fMZS?-Kn^V6&6QgX6o>u+FxL7UdsYD53qRn_d@e=Gc0{ofw^v9iq0 z&yK!Y{oT37CuiVoOh;|ueGX&i6%e16$ZD&vCsIAi2axx)XKV0^74S&~W70Sl!r|#G zs~ZToY~|0tW_bB^%>KFWzTB-({95bhp}Ms9XyG7uFU|paAWH29&n9)SprpT@}r^Sc}p%J%cTCzIVBn|lXu*zpZjjeCeS9b|pJzq(LQY|ivSw!~3s}Pr?P0!%PNOss@GYzRx37S1zdsj@VhJgR<8iUF`?n zU;a3Io-OEmoDnqH=eVu^&}49$JKvmBhL$#$Yd4w$v2d+*cXb!Ej^MQHUq@{mmeMm$ zEIse9WK|aq%1*?v%@D>(_@b929!19nj;PSudF+q@Sjn4R=l?E^WN=>GgCJ>xQbM~@ zWJ01$%yfiDkX~ovgfNqY;u_{S8X8!O;i`0yiCD0!SO{Dx`YmT&r_KPDtGF5dXK_r4 z9iscCi}k5hFB?JzUtt9BgK)@2*rb&yl2t=myB<&L>tr1~Z-kh%IvI31FW7Xez=IYW zpp9`SN(fh((fSrTrt2}bPLV(GLg$b-yR0-L#j)PIz8Q%#qj9Id`i7YD&$HkluMX|*a(5zKhr6f7=i@1I*l!(3XLpA}@@ zZSqd|tTlKp)JAyj8ygj%*bx=GGC7!(bNSjq@phlrlL7cCL z?%PL90mr4z&um@1U-2=;+|T>RJI(7ONDq^5gnfZ9?nwY7W@h2%D55~fAFym(`=Ofy+MB85VH5DRV*$xB>g!QXvNBx;7@^Ui zIl+W0p#}H$3Wpj`tp18Dq>gw%MdIcdf~z-RP)v@rha{b-6x{lWGI_NrV`@^BPYorC zz~71?#`Q2%g`mbjr5c>iFWv4~jLIzM^+pG^-EbRhvAyd8H_$8=Oe&P6;IXe@822r6 zLhjyNplv4PTc*iJzV`nkdAp_j63{cklswR`cb=3{gqz;(xywSSnYh&{q4@A&zEJ?T z%hvYYR|}f2yQ4xc8#}KG7dvrpc9KD+fw!>DUB2(#g2Z{B{AMgpbiF$Y5?k%Y{X6dF zGwj=rxVQus*Jd0KHs03Hekxq0yZb&Jbaz1`<_Lf%OLA6z*^IT<`1&a=-42dTR<5lO z>tGr9J#M9EZ`QI}30#i23F$i>711%a-zIVit_awtFGIGwpF1GKuQ^S=KAhU|_}$cc z&lIPVbDH_Ug^Wz_jXGuOR1vqH8^*1wAJBMiPMpNqzCbC4SMWXV9ar%^oYG7(Qqyi+ z_6iaE&PYmF6iN78E}JTLKQb1}tJF%~Hz86Q&g_dqiu2HjRz3T>t=%cOndGm#J)C(| zudJ)E)~HP?!E$!pAJ2ESJG}e%2H@x?@6{^`y*O{IM;^x}_EmD!2!S>>42(EZvXAdL z186pyCMYFleXasl;_<%-+r1oC4I6q^Sj10`kK{^qbQ`~io#5{?{a&tn3KAYk{}Jt7 zOYLwoA(`XZ_2MWian$iN{tmjjYqrrn8?297czIsp5?s!T|9N1!_SSde;Cnqy)xqK> zkuPo+O*f+Gb#c?F`LaJz#J02Hb8lGV|4V?AqXhIWsau}e>DK;{$$UH9^Y3~9_KT@Qu*3(`W-=nfw*Y5nxs(d1k*UH1ID(8Mx zx!yVH+g777M&kM59wfR%E%5su7#gl6>Z&B?B&Ph-Eljb%9h!|E;#h3(ve^0aGenoO zdI{t>`6RK>r>$MXe|>7f*GzKc?&hvWbcjnkIy(7#T(oA1OhG9)TDpd(1^j*T1iawu z;oI7+Q^1wuaen<0$e!vO-?J3lu>Dmw6@gf{kOR214UF19km8q}ibinR%=A%;;o)7z za%fC5e*FWEx@Jp)$#~v_`_;tiJw57u-ZHY#wpB2WopLx3HEBqkgLQ^~8WAp&?LW_R zoXbuAkQtQYhtFo3U3JaS%^^e;YH}v;yS6tCuWZdAA6%J%46|)+_%c8qr|&jFzkWha z&3afT%iZXC1k`q_yL|kK-E!)52oWU^7QoPvGLV=-8vOORsrSEp97)EPg=r+zl!1p38&Bjiv zvl|3pGEZjA;IPpEpJx%*sI?jK%+ItO9~+*PS*s}TCg!Yq-d&%j8u(=-@r5*KZ?xNq zj;%r;2zvIr)tp*CZ8U8p0?f`lQcWN-}okQ()G>TPPZ zU6`Jyp($JpKQITJ}2I*>Ij0Rqx>F&IuKBDr>*FA^<+0>NiL#gX4R@TrY@4ZLm^>J)T|pL;eK^U6wF)C>Av3_ zHa7F8T^5XKWa@Wp%}E+OJ@6)tU}5j9+;0ti3j2df##Y8-o-2BI1McyXs6zET&GL)^d=~49FRcnuKDdnNF)%HP%DiNGqiJO&7N-5Gim8+(zCQ~8mA~TH`OwHpjtKy z_(Gu`{Q^x%=)q&lSYyOlfhQrUTG#{qT3NVI79^Mxt_nr=&1`J5w^}e`-E#iqE?&30 z--10ohBszq-Qq!(2EO(eW|%S(4VXu{2L3MKYwy`z1&2;L1%GUSFltUF?t#mFMKp_R z&xsjyXKdYyPq7rDsHs6t9EG%S54-g;iBWSE=;>8wr?b234+fF=PTw~}5@A-IpoF2< zCNe=<-bAr1kpcKfG!_=fth+To(W_`r;5S@12=tG#r-9~j#qe*W@o?z>vZ+qnaxT|~ zhth3p_G-Rx12mXqmm7+;WN6_I8o}JL6>78}y->%P|A&gHG-9f!B7?Z$9p~0$U?K%M z05DaB2(_JY6D%q!dUto%YZQ;X<;rVgW5aWv##8~*dEeGQ$3W!!>-3@R#V^O@H(Bt; zHkx+x$zh>FBE|LRxMBa>8mkFc&W?iLZL8T{LLEfoze69* z#TOSAQsd*}Q&Lj!0d#axq~WFl6Z^G|o#10#`7B?)1;08cN%`?Nx98*IbOK#5Lep3K z_WtoUKF-QD#uBLB&6biH`~GD+QBf3)_-^kBX#RK!oaCNoAL5i$ao*iWYf8=t3%j5o zVPZ4V+TQP`mQqVBhc~Ws7rLGH0wgk&j=~w^6Jdh9r%uajf*MOJ#?8!dy&y6vycTKqmr93xPR@ogoiX;VyLaYmNA6fvF z>ps87uT6}$Mt<&I5ZqNlLAz}Y)w^bQftUmdFqW)Pm3+TmvCaH$7Tq^Z^Mv>P07Q1n z;+bAdb*U5fU>h^4|M=>H2y#%Cjhmcj{2p}u#G>gib6{wD^-D}gCs9H6Vxy_Lzo7fE z51JNxZrREP-B{$(AmSgBo#S!IeJ1*kH2*a?@Mp-)mt=F3e20^v z#x+ioyvWwe)o2f)M-eo5S&`{F9u^Y+w!t$z6>*Evl2P6T|LZH#C|#APIsiE9*+x7; z$N5dg+Xe_UWs=74YToXH6X-mX+PaQKNe*l)clU}pp2MWlPlonjq+dw z5O6TC-&^-RUhI49Gm~?+TYUVPqUL*17xff(T5;kilV&^!{+i>{klwGRqq>|3Qoiu- z5Ut9uJOa8PjN2@nK}~A&J`nmDy~m1jssNZe9s^@VbyqSo*VFGh2XAm^)g`kX5%P3C z1r8be2$H~EYtg(CGgAJgKQZ`X6~h?;2$k*F*b!_f0nqMbs%utDMH|J=I_TC{fsR0k zQb;>Ig0wUz7DD=Dp1QR6r|w=6yIO8@TcVwuk|T*XG1b|^smZtn<)u6niUg56SmRoz zf0`!TF9X`b3v=|{X!dQEYb*H6jF!rC=x10GsVDd7TGoiOdQA$8B8l2((Ve`OTfGg% z_ul&F3zKu}%gWbKK!e)qVHFP#NM7Zrr|6bh%JM0UZJYTaW%6e+5M@m|1p=@7gw;%$ z`iVcYNe^hz4-6Wdjq|$l3Nnx&L=*6^cb3}1I_nnoHn{+Z;Y9!ny&r2fb1tb zf+m+VMn;H=(lUJKTExlj-Bk=1Q=5w6g9S@+d3>00P=FXWhnR9(FPk~iZXWIlL$rKqXB7;01b0={duvhX|m9_4eZfs_3zbTo7 znZj&(Q;mZ%u}^D$M#(9hC9M$&IZFf1OS`p(S}KrI#->Ml^@7;4vYJhco;LmaqB;gt z&B8EzerO(atVet2l-5*oAxFAt{>}_W0i3kmGy%K{(xr%rjZpg6-GU%Ad%%H!?oErr~+ zH7$xOGBgHTootj!#)-B5=UTIMpQzB9DjO_3Q)OjFPr#2za~?y5D+sqKLnRHs6Ja!s zhU8OF;dJ5G_BI$O!h%0eUMOu5<%PIWW5#T{NsbfZho-nRiz^r3O-kLCC-&2yiepO) z0~4|4QqG>g>EnT1z9biMan0W&gX*uNX0@i!uoW*E^$3oR?Cj3msEUfMtSrJH6`Rr% z-25cDr+Lhuo}NzKpMT{_vvP9ITe2&}V^2D%m7Z|7d4pa+@jb@dv;H7^>G+=4Xj?4i zK)46Z+F!E7KS1$&xay_Pw3oQjG#O%_gGJ?wnFC1^(O6^odkq_;C)e=plrebMVc zLSc3^^8oU7+Db1?LqtGG#GBrmYvZhK3Ij6h;LwL{*@AP&#_(fcN=>rwz}%~)3$%^C zmElAIV&VS;c>^HX{ts2b|5!_?e@cWu(Ei7C{tNie*>wAl(G#YC8%dcvq+zg|Yx5$=*UR~K(Ke)K>YQkWKObf1)l0Td+eK!W zr-=eeJHnXS^%ZTyO0i{cZNU)SLO5J>aNgn2e@;#uR!~#X*jhzk`uz5`n6zeZTiOmf zs224D?Ne3XJF1&nL%M&scXw}s^^`+ud9X9| zcwh7HcuzQZNLldazlVG-U%S>*STyqJ54c7UV$!gCKlJeTH2OW6e-ien;4RW9Q8hi% zPH@Xxkna0-)O~K*P|Ntfr)h{sKro|MdzH74jp`Zkr}ax_#$?Cami_dO{@t*UTT1uq zR%j4lEW4fcAn*CS+Rnp*hZ~w;!m}c59ajXql^oIxRfS! zJ3+NhzHV2T1Hsv4zVEs&_T6XmEnD#^JD#8WStQqr(?hTO5?yoZ^BsOy++$j+m>>;w zfDiuYI!fcIkZ$ua_Q8d&cAu|3Y=GQysBkl~zrhH23;KJT0)to>LT=g^Mvm^hQGK4y zOY#Txnh%5mm*py?^nmP^3^p6!$1yutc+<>Y!h-1`vy#-GbGY&q*_kL>g3wQWDlXK0?AS8P^dscJawi#J5 znUQoqc#O*DB~Z)5=3jfvDgj9Gclc`Wz`e-r3BK^>qY`RA3Kw9YDzQBO6H<>b_He;M z0i^Ff47<6;Kqcf(R_FA0-$Ke%`(kD>O@ZScLi6({sCBT`ym(v5?k&@0ALnDMt35lO zgnTg+WMld`CjldAq@ri?Wy85=@ci?sawbdW{D2!tX@?`vyO@eU{N9@_icXZX0BBUg z!H|%UAI0se=y?>5{0b`E0j8E3LQp2O(L%huDgjAYYTrv3v`iy!c>V45INBf zL#ES0zl>JF%n>{O`0vzBI!DZS zuk2CGaFJlv?70Ye0f0c#SiIF*K~3-*B(Xssi(Wwia&dBCCWY1o(J{Vj0u4>=40qeY z4#gY{2gg!)U9Fe@wLB zR~8dk3#eIi)D89bjLJF!As|H~^>XhWW5NpRZm$36q~9#v6P1QfP?!LaroHkOhInCl z^~%#m6dZbQ_|>kc(M29vg!_XYQ6vhDu#x%+=>lesf(`4JkZ{~ENcdAkdYpP?@~}T8 zkeGf7o;^kuy|-7@^YfxtSKYux$6lJAE$5mN6|Jo5T%9Nr7c^=Zu#s|qm}h7q8|9he zo86daMPrW7?q_f(@8@i~C14kc3%a{+dK5BF`^cyEq*BMxR3e**h(YvJXtz%x zzn6ViQ06&|qd`k`;szey@7kNIwAU6d7}L7>nP65L{GxPC_8EDZ0xt}jtu!CLGqmn{ zZ#fYyjf%=0#yCmaLomaqzV}lwQs8L!#tM6gsYSQvEgkKV=etf9Z}tZ5*=I;r49yW% zM6laD^I(gMr@Q*;ri$s{BGk7FC`T{sZQY^6{D}N(n!Ccu-Lk zr@KMLu}J8PODQS?io0)dTl&#EzsjEKO@~1Cz~u zQ?xpA&ds^k~7V?U6I1V z*hRsF*IFnicjy#(^FKe_TsJXY55%}6v7Unnxj)g7QF93@-JKgaJpkN8VR(MZuO(D` zr{ki6PP?Dt*taN5N4=70RPc%;!sAOWqr)2r*Q&>v!k?_;rENwhSYqOta59qpTwi9n z$yadK&ESeYeCZ!TGZtoXxCnnsCV%5AL;bal{r>*7(ELTy5E~D6I|E+QDm_#SeO1j9 zc@i;VNj$&#CP`6~#QuK#k8H2@LAD#oX=!uOm%S;htQ37#*TU;0#d#|>1bLVr1JEzR zDX37a7&}eXZ!I0Q+7$~l`U2tso2I=pf46vs74|{CSwA>`3e$3P9bUxZyIw!P(*8gw z$JQnW&_jOMkC~&`A3gTXqPcM9m`%Kyq~h~@MlQ$X`G363SH7IMT7iGoqU#X#*YZox zOj)^lf~jRGBH$Iml9bA>NIfp2n*LDz`Y6+QYkclIu90u z!;Z99CY4~dUOrT&_Lz&2*!hjCf`^P8GcVQD^?AsarBwP*Xw+pf(0mtN`S1uHs>iwRkFf$S8PaF6c!^Ej=Q9#Xp1^!EoyV_ z+}fiXYD)bzS}mnu$Mh@cQKHM6EbOP@9U1U~<9faSH<`wsV%#ufz+v#@$#)Z{%l1b3 zGhtyBQIFX#Qe%v{kU`^FkkOm~CcdKP&f5A7ah9jRzRL9!@=kXLJrxNVpIs}mzS>$r zC~T#?P1J-dvc7ezK)$>Feq0zxab-02KsZGWL=*%lJjGqeILce^&P;=CILh&IyNjzL zO7Z*Kd+`$|*@mL-g65j2a~C)ecnR6f?N$FwAZWdX+f>&^w81Sqg&$dryP7_4Xgb&? zd?b1_S`0G~*=hS85;kPD2UcPGa0;?WEFzj+JR@dNNy&67suQJVVXH_!!8!(iK(6do zB1pMJ9g!au#7e8LR_No9aPTz}pjZS))j|+(u0mQIMmxZ@Dm6u$4kal!s<@^ERY^LF z6a!0>4Fp{l(^e%AR8~~Daf4UQ=*HYzR~aQt69Yx7f^5xYR?7&}lm%nlSEV2WxX0l; zdA@Gks-A1nj-^pR1@a%NZolZSb>aqqI!qJ{IBDwMNNc98dNC35#eD6!ASmhjYEd1@ z(KZAV+Coo78U4+o=W@aOl|&!c0=Wls36S6h@Bkw0pMw77Pxyq1ha04Q`1@31|MK|< z%CN~0B+=n^;r|^v3+Pk+my7YQQ-M!=+Uav}X)#*3Dovl$77r)xt|RzPN~J(qQNLJ) z6s-`CBO*?_%tXq>t1dM#fRqW2TiAM5uH`IVgekhrc--?DF5VzplZb;ooJ~IXIun2; zubMaV3(6odd8w8;aeybKA1<+&T6tF#^E%l42!5O&o<=kW&|{UZwm-fNGKk-mk3>ku zYw-NIiX_)3p2#jun^d}!r#NLqKNf06F8gDTTZA#}rSGfRL{y?q)jp2`+E)ln9))a9 zMZW~zWR}V=EP7ujWof#L=_lXiFs4#AvBsw;%%Y47WyAyM^N@l&&}lH8@E_nsa}Ih$ zTqZ`wNI%6M2;*avqKHwACYg_T^(TXmlaD+@7kd0izeG}q2S9p<&GHMq)J{)P=p~{( z>4cxoI3gt%`3Q<>{6r$5ZKCLz;D@!w5?4SQP)eXq2kh~5OIZ>y$8#NGjY2<*G(k*` zhQWl4fqwto%!9v?lF4=sPenw{4+?}Ih4O|%=tJLtdu*^+{wQ`G7VU!2ECf9BEa1q*4)xw1c=@W39}J=GtR&VIo(Ia8B>EF?lN&sbaeDbb&;bXRV~z} z+7H|5!EZiXKPP-eQpZAQQT}}&wjbcin^n5~FTF-&Z26>42;oF4{`mHMku!ktvI#5n zE%oz1(IQLmXGQPa4TY0MmV_M`F^0xv`Pfyis0c2#x zmGXK{gV>{e&HG20!^GaF$x%vH%enfZfK1Mr2$;R*P0?t&D&}EqGDqiOPr=8{AUcsA zh_;4shgK@2PSL2a{=AQ1?lQbBhKnc-P4|f7?GS;3*aE@T*%4---{|NlrMv4!2UTX8 zDt0{?nqd@GW^@6cJ%ka2qUYn~*7JEgD$e!w^?A!q?A^(NC@PfS4-QR3-@DTG7qk#s zB9Wq+I`4<`%dUc_V23X7eyOSOu*8TSh#tp_TL_MY7B3lA1{zW3 z$AX^A_@e4}_IMswjl8ksjEr{v;AzWDvpB>^sCLmZqc25jzn)tn$o6EJIN*zH^X7;QLoTuChE_D5i=szw_n{~aQR{)1Sj(jdV4^%Gd=LtsV{t#6hnTAoviBySS zJm%LIEtka#>V1@@KsvZD1hE`=ig3f~diE`9js}sy{w*WWEU34Z^sDD`f*mrJ^KR|t zp)s@wk7PE@OJ5hc09Xx?xf()}Ga)=8zF5S|i}$6eu~GQf!|jY>oct#`k1$-1lmDlb za}Q^NedD;Z&0*HeDaX-RPH(0d5seXPEOY3UGo_c1-8_Bw^cyMBNDuIv5d_s8#_=g<3juIqlD?{i)EeSbe38r1{!9@qVPwc>Ql z7zSHq`sf~m!KkdXf4e%Buta%dv(5=-J9{g)@};Z4G*xw*Og%P7TKoY~JWUXP_7 zJl*wuMfp?~%7FKJA*7Hxm+%o+&z8qVkr3Hc*Xh zal{n3Yg@I~plSr$d$JTVw+9_sz@Zdh;eFDQzS-Y}WF*oX!QZMVlWWA=eM2X6Tx8(n zsYRACp!Wm8`4~7C-4jj;ce0S?97JXkg5d9pV})s^m?MPCF8*Zs8eabovW{$Mge@z2 zfsKnb^XOjeZQyb8fpD3_uVD@IkT#EF7>-;6rGcV-H$Pz9pK z>r7s`HI3*^M|VL*Mz+c`HEzyu3+Dd(A_lYxF}=T2<(rZp)tb83b>e_PK<^e`S&}cY z--8V>$$om%4-}|#p<_~BGwAYVH;1EdG%>@nR(VLyh1wv^R=gfyV}z*M%rCF<6$-6% z1cuX1^egW_h>L-uzSU+9o(Itra}!v6QZ+7^$4*1;Ls{qBmaq}bXw4{m8Xtz8PmNl5 zQdXe4+Dr@HA1BW6s+Nx+&YafmBAR!KbQ{lXcC@$CI*>CmW8;2 zinkJs@QN0>EPF5r$vTS_z3GzU0B9eXE<~JTzOB(phQGMoVnXTkXB7wXpSjZ~*1k$F4&_O*B>idId-xi3%SPs4ut+&I%fk+AvN0Zn!8> z^}Sp2QWPIZRfR^qZ43=4b8aal*0JY~QZt1$jbTO3q!wyUD$P zkt39heurwvg1mIWUH IG$J$15HUNGg}JI=Z04*pL47{L#kjRl!`}WW$z%ySSwW z6&8{(QEn58hD1Nq=D#PDgCYM2I*aspw)Mb}iPhPc0O-b_3 z=Cwkx5OEdkHcSd^#SsfTN1O6|;Ab5hrePTHvaW6pgtt9nK6Pnss1qtF&8t%9r496b zqYg78xQ4o>(M;MOFTW9t-JZ#}iGO#?!d(=xj9(cwcU;4{Rtm8TYuL-@TPHKl+_O%y zLT#So_k?dI9&rVDgGg`I$!_=XS_epgI?u!G4t+V>jJlA@OdNW2&hie?|Lbj`ur)fY zr|`!YYwy7G=Z%Udub^I?TRLLQZ7t37DfD+229HCz<|C|M3=19?A)sCih?-9C1MeaN zVcBV5gc?TcKg+*M*}a7sJi3?Vbz|#OZN$2|mV|Gq{xKLquXwP(^;@!L6 zr+T@cVzyc%6~^Ko?K!J8FUZazk5c*C+DdnKdT3W&PIiuZo8Kv|(KCY=o{O(921Z8{ zn)gC39ogZuMyk7?HWW{%${ZBk)sAEd7XV45>f&NPEFkXVqQT zpALwF%c@~4EXzH|Ei7DO&D6p}W(gvvn4nC78PK{kQN$oHe8bS;PKatPGo@4O)CLV! zgEOEjiv88$N1|h$Qr8G+Q_bOyjH6n*1Nf@57rM5it(_W;jOr(vqv3|qc6My!b~>e} zV=04PXL>f)@YG+$`D0-XV*2_4*0nOb(t7C!sSw4jsCK7en@1Y4TSian1<#LVHpJy~%_!LJ_^xF74m9z1%bidD__#O8Jr67z&dkr(iKkKI; z^It)o+z-3U$KiL|S<2Dr$>1M7HrmkTp0vg}1Wn9&mhg<49*tUnI>}ZBb#72z$H_6%FUv6O&ri%*hwj{? zM%n8DDl`k^iR4c{Zq91a+ipE%|gy+YcAqqGS@>>Gnl7Oqcse`;n`1%E!t zZx}5q3SOciGBbh<;ABq;MHidh%^~`)tDUwVE0>C*YvX$@0G-ea_=9F<-Qi`-mPVu- zZlq7nKv-i@B=TV>S>nlu;wGZbvAye*ki_ts1Aa{woye-iX*qbRGDNZIV@VCFm46$8 z@L9b2TW@)uJ*KA|mZ*RR5$2t##O@ZQu|WTq}r%g`k!8=-nR`9HJ^@XTfuIa58IWlE^C3O$pF`y6ID; + if ( ! get_user_meta($user_id, 'optionsframework_ignore_notice') ) { + echo '

    '; + printf( __('Your current theme does not have support for the Options Framework plugin. Learn More | Hide Notice', 'optionsframework'), 'http://wptheming.com/options-framework-plugin', '?optionsframework_nag_ignore=0'); + echo "

    "; + } + } +} + +function optionsframework_nag_ignore() { + global $current_user; + $user_id = $current_user->ID; + if ( isset( $_GET['optionsframework_nag_ignore'] ) && '0' == $_GET['optionsframework_nag_ignore'] ) { + add_user_meta( $user_id, 'optionsframework_ignore_notice', 'true', true ); + } +} + +/* Register plugin activation hooks */ + +register_activation_hook( __FILE__,'optionsframework_activation_hook' ); + +function optionsframework_activation_hook() { + register_uninstall_hook( __FILE__, 'optionsframework_delete_options' ); +} + +/* When uninstalled, deletes options */ + +register_uninstall_hook( __FILE__, 'optionsframework_delete_options' ); + +function optionsframework_delete_options() { + + $optionsframework_settings = get_option( 'optionsframework' ); + + // Each theme saves its data in a seperate option, which all gets deleted + $knownoptions = $optionsframework_settings['knownoptions']; + if ( $knownoptions ) { + foreach ( $knownoptions as $key ) { + delete_option( $key ); + } + } + delete_option( 'optionsframework' ); + delete_user_meta( $user_id, 'optionsframework_ignore_notice', 'true' ); +} + +/* Loads the file for option sanitization */ + +add_action( 'init', 'optionsframework_load_sanitization' ); + +function optionsframework_load_sanitization() { + require_once dirname( __FILE__ ) . '/options-sanitize.php'; +} + +/* + * The optionsframework_init loads all the required files and registers the settings. + * + * Read more about the Settings API in the WordPress codex: + * http://codex.wordpress.org/Settings_API + * + * The theme options are saved using a unique option id in the database. Developers + * traditionally set the option id via in theme using the function + * optionsframework_option_name, but it can also be set using a hook of the same name. + * + * If a theme developer doesn't explictly set the unique option id using one of those + * functions it will be set by default to: optionsframework_[the theme name] + * + */ + +function optionsframework_init() { + + // Include the required files + require_once dirname( __FILE__ ) . '/options-interface.php'; + require_once dirname( __FILE__ ) . '/options-media-uploader.php'; + + // Optionally Loads the options file from the theme + $location = apply_filters( 'options_framework_location', array( 'options.php' ) ); + $optionsfile = locate_template( $location ); + + // Load settings + $optionsframework_settings = get_option( 'optionsframework' ); + + // Updates the unique option id in the database if it has changed + if ( function_exists( 'optionsframework_option_name' ) ) { + optionsframework_option_name(); + } + elseif ( has_action( 'optionsframework_option_name' ) ) { + do_action( 'optionsframework_option_name' ); + } + // If the developer hasn't explicitly set an option id, we'll use a default + else { + $default_themename = get_option( 'stylesheet' ); + $default_themename = preg_replace("/\W/", "_", strtolower($default_themename) ); + $default_themename = 'optionsframework_' . $default_themename; + if ( isset( $optionsframework_settings['id'] ) ) { + if ( $optionsframework_settings['id'] == $default_themename ) { + // All good, using default theme id + } else { + $optionsframework_settings['id'] = $default_themename; + update_option( 'optionsframework', $optionsframework_settings ); + } + } + else { + $optionsframework_settings['id'] = $default_themename; + update_option( 'optionsframework', $optionsframework_settings ); + } + } + + // If the option has no saved data, load the defaults + if ( ! get_option( $optionsframework_settings['id'] ) ) { + optionsframework_setdefaults(); + } + + // Registers the settings fields and callback + register_setting( 'optionsframework', $optionsframework_settings['id'], 'optionsframework_validate' ); + // Change the capability required to save the 'optionsframework' options group. + add_filter( 'option_page_capability_optionsframework', 'optionsframework_page_capability' ); +} + +/** + * Ensures that a user with the 'edit_theme_options' capability can actually set the options + * See: http://core.trac.wordpress.org/ticket/14365 + * + * @param string $capability The capability used for the page, which is manage_options by default. + * @return string The capability to actually use. + */ + +function optionsframework_page_capability( $capability ) { + return 'edit_theme_options'; +} + +/* + * Adds default options to the database if they aren't already present. + * May update this later to load only on plugin activation, or theme + * activation since most people won't be editing the options.php + * on a regular basis. + * + * http://codex.wordpress.org/Function_Reference/add_option + * + */ + +function optionsframework_setdefaults() { + + $optionsframework_settings = get_option( 'optionsframework' ); + + // Gets the unique option id + $option_name = $optionsframework_settings['id']; + + /* + * Each theme will hopefully have a unique id, and all of its options saved + * as a separate option set. We need to track all of these option sets so + * it can be easily deleted if someone wishes to remove the plugin and + * its associated data. No need to clutter the database. + * + */ + + if ( isset( $optionsframework_settings['knownoptions'] ) ) { + $knownoptions = $optionsframework_settings['knownoptions']; + if ( !in_array( $option_name, $knownoptions ) ) { + array_push( $knownoptions, $option_name ); + $optionsframework_settings['knownoptions'] = $knownoptions; + update_option( 'optionsframework', $optionsframework_settings); + } + } else { + $newoptionname = array($option_name); + $optionsframework_settings['knownoptions'] = $newoptionname; + update_option('optionsframework', $optionsframework_settings); + } + + // Gets the default options data from the array in options.php + $options =& _optionsframework_options(); + + // If the options haven't been added to the database yet, they are added now + $values = of_get_default_values(); + + if ( isset($values) ) { + add_option( $option_name, $values ); // Add option with default settings + } +} + +/* Define menu options (still limited to appearance section) + * + * Examples usage: + * + * add_filter( 'optionsframework_menu', function($menu) { + * $menu['page_title'] = 'Hello Options'; + * $menu['menu_title'] = 'Hello Options'; + * return $menu; + * }); +*/ + +function optionsframework_menu_settings() { + + $menu = array( + 'page_title' => __( 'Theme Options', 'optionsframework'), + 'menu_title' => __('Theme Options', 'optionsframework'), + 'capability' => 'edit_theme_options', + 'menu_slug' => 'options-framework', + 'callback' => 'optionsframework_page' + ); + + return apply_filters( 'optionsframework_menu', $menu ); +} + +/* Add a subpage called "Theme Options" to the appearance menu. */ + +function optionsframework_add_page() { + + $menu = optionsframework_menu_settings(); + $of_page = add_theme_page( $menu['page_title'], $menu['menu_title'], $menu['capability'], $menu['menu_slug'], $menu['callback'] ); + + // Load the required CSS and javscript + add_action( 'admin_enqueue_scripts', 'optionsframework_load_scripts' ); + add_action( 'admin_print_styles-' . $of_page, 'optionsframework_load_styles' ); +} + +/* Loads the CSS */ + +function optionsframework_load_styles() { + wp_enqueue_style( 'optionsframework', OPTIONS_FRAMEWORK_URL.'css/optionsframework.css' ); + if ( !wp_style_is( 'wp-color-picker','registered' ) ) { + wp_register_style('wp-color-picker', OPTIONS_FRAMEWORK_URL.'css/color-picker.min.css'); + } + wp_enqueue_style( 'wp-color-picker' ); +} + +/* Loads the javascript */ + +function optionsframework_load_scripts( $hook ) { + + $menu = optionsframework_menu_settings(); + + if ( 'appearance_page_' . $menu['menu_slug'] != $hook ) + return; + + // Enqueue colorpicker scripts for versions below 3.5 for compatibility + if ( !wp_script_is( 'wp-color-picker', 'registered' ) ) { + wp_register_script( 'iris', OPTIONS_FRAMEWORK_URL . 'js/iris.min.js', array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), false, 1 ); + wp_register_script( 'wp-color-picker', OPTIONS_FRAMEWORK_URL . 'js/color-picker.min.js', array( 'jquery', 'iris' ) ); + $colorpicker_l10n = array( + 'clear' => __( 'Clear' ), + 'defaultString' => __( 'Default' ), + 'pick' => __( 'Select Color' ) + ); + wp_localize_script( 'wp-color-picker', 'wpColorPickerL10n', $colorpicker_l10n ); + } + + // Enqueue custom option panel JS + wp_enqueue_script( 'options-custom', OPTIONS_FRAMEWORK_URL . 'js/options-custom.js', array( 'jquery','wp-color-picker' ) ); + + // Inline scripts from options-interface.php + add_action( 'admin_head', 'of_admin_head' ); +} + +function of_admin_head() { + // Hook to add custom scripts + do_action( 'optionsframework_custom_scripts' ); +} + +/* + * Builds out the options panel. + * + * If we were using the Settings API as it was likely intended we would use + * do_settings_sections here. But as we don't want the settings wrapped in a table, + * we'll call our own custom optionsframework_fields. See options-interface.php + * for specifics on how each individual field is generated. + * + * Nonces are provided using the settings_fields() + * + */ + +if ( !function_exists( 'optionsframework_page' ) ) : +function optionsframework_page() { ?> + +
    + + + + + +
    +
    +
    + + +
    + + +
    +
    +
    +
    +
    + +
    + + $value ) { + $input[$id][$key] = false; + } + } + + // For a value to be submitted to database it must pass through a sanitization filter + if ( has_filter( 'of_sanitize_' . $option['type'] ) ) { + $clean[$id] = apply_filters( 'of_sanitize_' . $option['type'], $input[$id], $option ); + } + } + + // Hook to run after validation + do_action( 'optionsframework_after_validate', $clean ); + + return $clean; +} + +/** + * Display message when options have been saved + */ + +function optionsframework_save_options_notice() { + add_settings_error( 'options-framework', 'save_options', __( 'Options saved.', 'optionsframework' ), 'updated fade' ); +} + +add_action( 'optionsframework_after_validate', 'optionsframework_save_options_notice' ); + +/** + * Format Configuration Array. + * + * Get an array of all default values as set in + * options.php. The 'id','std' and 'type' keys need + * to be defined in the configuration array. In the + * event that these keys are not present the option + * will not be included in this function's output. + * + * @return array Rey-keyed options configuration array. + * + * @access private + */ + +function of_get_default_values() { + $output = array(); + $config =& _optionsframework_options(); + foreach ( (array) $config as $option ) { + if ( ! isset( $option['id'] ) ) { + continue; + } + if ( ! isset( $option['std'] ) ) { + continue; + } + if ( ! isset( $option['type'] ) ) { + continue; + } + if ( has_filter( 'of_sanitize_' . $option['type'] ) ) { + $output[$option['id']] = apply_filters( 'of_sanitize_' . $option['type'], $option['std'], $option ); + } + } + return $output; +} + +/** + * Add Theme Options menu item to Admin Bar. + */ + +function optionsframework_adminbar() { + + global $wp_admin_bar; + + $wp_admin_bar->add_menu( array( + 'parent' => 'appearance', + 'id' => 'of_theme_options', + 'title' => __( 'Theme Options', 'optionsframework' ), + 'href' => admin_url( 'themes.php?page=options-framework' ) + )); +} + +/** + * Get Option. + * + * Helper function to return the theme option value. + * If no value has been saved, it returns $default. + * Needed because options are saved as serialized strings. + */ + +if ( ! function_exists( 'of_get_option' ) ) : + + function of_get_option( $name, $default = false ) { + $config = get_option( 'optionsframework' ); + + if ( ! isset( $config['id'] ) ) { + return $default; + } + + $options = get_option( $config['id'] ); + + if ( isset( $options[$name] ) ) { + return $options[$name]; + } + + return $default; + } + +endif; + +/** + * Wrapper for optionsframework_options() + * + * Allows for manipulating or setting options via 'of_options' filter + * For example: + * + * + * add_filter('of_options', function($options) { + * $options[] = array( + * 'name' => 'Input Text Mini', + * 'desc' => 'A mini text input field.', + * 'id' => 'example_text_mini', + * 'std' => 'Default', + * 'class' => 'mini', + * 'type' => 'text' + * ); + * + * return $options; + * }); + * + * + * Also allows for setting options via a return statement in the + * options.php file. For example (in options.php): + * + * + * return array(...); + * + * + * @return array (by reference) + */ +function &_optionsframework_options() { + static $options = null; + + if ( !$options ) { + // Load options from options.php file (if it exists) + $location = apply_filters( 'options_framework_location', array('options.php') ); + if ( $optionsfile = locate_template( $location ) ) { + $maybe_options = require_once $optionsfile; + if (is_array($maybe_options)) { + $options = $maybe_options; + } else if ( function_exists( 'optionsframework_options' ) ) { + $options = optionsframework_options(); + } + } + + // Allow setting/manipulating options via filters + $options = apply_filters('of_options', $options); + } + + return $options; +} \ No newline at end of file diff --git a/inc/options-framework/options-interface.php b/inc/options-framework/options-interface.php new file mode 100755 index 0000000..1212e61 --- /dev/null +++ b/inc/options-framework/options-interface.php @@ -0,0 +1,409 @@ +' . esc_html( $value['name'] ) . ''; + } + } + + return $menu; +} + +/** + * Generates the options fields that are used in the form. + */ + +function optionsframework_fields() { + + global $allowedtags; + $optionsframework_settings = get_option( 'optionsframework' ); + + // Gets the unique option id + if ( isset( $optionsframework_settings['id'] ) ) { + $option_name = $optionsframework_settings['id']; + } + else { + $option_name = 'optionsframework'; + }; + + $settings = get_option($option_name); + $options =& _optionsframework_options(); + + $counter = 0; + $menu = ''; + + foreach ( $options as $value ) { + + $val = ''; + $select_value = ''; + $output = ''; + + // Wrap all options + if ( ( $value['type'] != "heading" ) && ( $value['type'] != "info" ) ) { + + // Keep all ids lowercase with no spaces + $value['id'] = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($value['id']) ); + + $id = 'section-' . $value['id']; + + $class = 'section'; + if ( isset( $value['type'] ) ) { + $class .= ' section-' . $value['type']; + } + if ( isset( $value['class'] ) ) { + $class .= ' ' . $value['class']; + } + + $output .= '
    '."\n"; + if ( isset( $value['name'] ) ) { + $output .= '

    ' . esc_html( $value['name'] ) . '

    ' . "\n"; + } + if ( $value['type'] != 'editor' ) { + $output .= '
    ' . "\n" . '
    ' . "\n"; + } + else { + $output .= '
    ' . "\n" . '
    ' . "\n"; + } + } + + // Set default value to $val + if ( isset( $value['std'] ) ) { + $val = $value['std']; + } + + // If the option is already saved, ovveride $val + if ( ( $value['type'] != 'heading' ) && ( $value['type'] != 'info') ) { + if ( isset( $settings[($value['id'])]) ) { + $val = $settings[($value['id'])]; + // Striping slashes of non-array options + if ( !is_array($val) ) { + $val = stripslashes( $val ); + } + } + } + + // If there is a description save it for labels + $explain_value = ''; + if ( isset( $value['desc'] ) ) { + $explain_value = $value['desc']; + } + + if ( has_filter( 'optionsframework_' . $value['type'] ) ) { + $output .= apply_filters( 'optionsframework_' . $value['type'], $option_name, $value, $val ); + } + + + switch ( $value['type'] ) { + + // Basic text input + case 'text': + $output .= ''; + break; + + // Password input + case 'password': + $output .= ''; + break; + + // Textarea + case 'textarea': + $rows = '8'; + + if ( isset( $value['settings']['rows'] ) ) { + $custom_rows = $value['settings']['rows']; + if ( is_numeric( $custom_rows ) ) { + $rows = $custom_rows; + } + } + + $val = stripslashes( $val ); + $output .= ''; + break; + + // Select Box + case 'select': + $output .= ''; + break; + + + // Radio Box + case "radio": + $name = $option_name .'['. $value['id'] .']'; + foreach ($value['options'] as $key => $option) { + $id = $option_name . '-' . $value['id'] .'-'. $key; + $output .= ''; + } + break; + + // Image Selectors + case "images": + $name = $option_name .'['. $value['id'] .']'; + foreach ( $value['options'] as $key => $option ) { + $selected = ''; + if ( $val != '' && ($val == $key) ) { + $selected = ' of-radio-img-selected'; + } + $output .= ''; + $output .= '
    ' . esc_html( $key ) . '
    '; + $output .= '' . $option .''; + } + break; + + // Checkbox + case "checkbox": + $output .= ''; + $output .= ''; + break; + + // Multicheck + case "multicheck": + foreach ($value['options'] as $key => $option) { + $checked = ''; + $label = $option; + $option = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($key)); + + $id = $option_name . '-' . $value['id'] . '-'. $option; + $name = $option_name . '[' . $value['id'] . '][' . $option .']'; + + if ( isset($val[$option]) ) { + $checked = checked($val[$option], 1, false); + } + + $output .= ''; + } + break; + + // Color picker + case "color": + $default_color = ''; + if ( isset($value['std']) ) { + if ( $val != $value['std'] ) + $default_color = ' data-default-color="' .$value['std'] . '" '; + } + $output .= ''; + + break; + + // Uploader + case "upload": + $output .= optionsframework_uploader( $value['id'], $val, null ); + + break; + + // Typography + case 'typography': + + unset( $font_size, $font_style, $font_face, $font_color ); + + $typography_defaults = array( + 'size' => '', + 'face' => '', + 'style' => '', + 'color' => '' + ); + + $typography_stored = wp_parse_args( $val, $typography_defaults ); + + $typography_options = array( + 'sizes' => of_recognized_font_sizes(), + 'faces' => of_recognized_font_faces(), + 'styles' => of_recognized_font_styles(), + 'color' => true + ); + + if ( isset( $value['options'] ) ) { + $typography_options = wp_parse_args( $value['options'], $typography_options ); + } + + // Font Size + if ( $typography_options['sizes'] ) { + $font_size = ''; + } + + // Font Face + if ( $typography_options['faces'] ) { + $font_face = ''; + } + + // Font Styles + if ( $typography_options['styles'] ) { + $font_style = ''; + } + + // Font Color + if ( $typography_options['color'] ) { + $default_color = ''; + if ( isset($value['std']['color']) ) { + if ( $val != $value['std']['color'] ) + $default_color = ' data-default-color="' .$value['std']['color'] . '" '; + } + $font_color = ''; + } + + // Allow modification/injection of typography fields + $typography_fields = compact( 'font_size', 'font_face', 'font_style', 'font_color' ); + $typography_fields = apply_filters( 'of_typography_fields', $typography_fields, $typography_stored, $option_name, $value ); + $output .= implode( '', $typography_fields ); + + break; + + // Background + case 'background': + + $background = $val; + + // Background Color + $default_color = ''; + if ( isset( $value['std']['color'] ) ) { + if ( $val != $value['std']['color'] ) + $default_color = ' data-default-color="' .$value['std']['color'] . '" '; + } + $output .= ''; + + // Background Image + if ( !isset($background['image']) ) { + $background['image'] = ''; + } + + $output .= optionsframework_uploader( $value['id'], $background['image'], null, esc_attr( $option_name . '[' . $value['id'] . '][image]' ) ); + + $class = 'of-background-properties'; + if ( '' == $background['image'] ) { + $class .= ' hide'; + } + $output .= '
    '; + + // Background Repeat + $output .= ''; + + // Background Position + $output .= ''; + + // Background Attachment + $output .= ''; + $output .= '
    '; + + break; + + // Editor + case 'editor': + $output .= '
    ' . wp_kses( $explain_value, $allowedtags ) . '
    '."\n"; + echo $output; + $textarea_name = esc_attr( $option_name . '[' . $value['id'] . ']' ); + $default_editor_settings = array( + 'textarea_name' => $textarea_name, + 'media_buttons' => false, + 'tinymce' => array( 'plugins' => 'wordpress' ) + ); + $editor_settings = array(); + if ( isset( $value['settings'] ) ) { + $editor_settings = $value['settings']; + } + $editor_settings = array_merge( $default_editor_settings, $editor_settings ); + wp_editor( $val, $value['id'], $editor_settings ); + $output = ''; + break; + + // Info + case "info": + $id = ''; + $class = 'section'; + if ( isset( $value['id'] ) ) { + $id = 'id="' . esc_attr( $value['id'] ) . '" '; + } + if ( isset( $value['type'] ) ) { + $class .= ' section-' . $value['type']; + } + if ( isset( $value['class'] ) ) { + $class .= ' ' . $value['class']; + } + + $output .= '
    ' . "\n"; + if ( isset($value['name']) ) { + $output .= '

    ' . esc_html( $value['name'] ) . '

    ' . "\n"; + } + if ( $value['desc'] ) { + $output .= apply_filters('of_sanitize_info', $value['desc'] ) . "\n"; + } + $output .= '
    ' . "\n"; + break; + + // Heading for Navigation + case "heading": + $counter++; + if ( $counter >= 2 ) { + $output .= '
    '."\n"; + } + $class = ''; + $class = ! empty( $value['id'] ) ? $value['id'] : $value['name']; + $class = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($class) ); + $output .= '
    '; + $output .= '

    ' . esc_html( $value['name'] ) . '

    ' . "\n"; + break; + } + + if ( ( $value['type'] != "heading" ) && ( $value['type'] != "info" ) ) { + $output .= '
    '; + if ( ( $value['type'] != "checkbox" ) && ( $value['type'] != "editor" ) ) { + $output .= '
    ' . wp_kses( $explain_value, $allowedtags) . '
    '."\n"; + } + $output .= '
    '."\n"; + } + + echo $output; + } + echo '
    '; +} \ No newline at end of file diff --git a/inc/options-framework/options-media-uploader.php b/inc/options-framework/options-media-uploader.php new file mode 100755 index 0000000..6b45846 --- /dev/null +++ b/inc/options-framework/options-media-uploader.php @@ -0,0 +1,113 @@ +' . "\n"; + if ( function_exists( 'wp_enqueue_media' ) ) { + if ( ( $value == '' ) ) { + $output .= '' . "\n"; + } else { + $output .= '' . "\n"; + } + } else { + $output .= '

    ' . __( 'Upgrade your version of WordPress for full media support.', 'optionsframework' ) . '

    '; + } + + if ( $_desc != '' ) { + $output .= '' . $_desc . '' . "\n"; + } + + $output .= '
    ' . "\n"; + + if ( $value != '' ) { + $remove = 'Remove'; + $image = preg_match( '/(^.*\.jpg|jpeg|png|gif|ico*)/i', $value ); + if ( $image ) { + $output .= '' . $remove; + } else { + $parts = explode( "/", $value ); + for( $i = 0; $i < sizeof( $parts ); ++$i ) { + $title = $parts[$i]; + } + + // No output preview if it's not an image. + $output .= ''; + + // Standard generic output if it's not an image. + $title = __( 'View File', 'optionsframework' ); + $output .= ''; + } + } + $output .= '
    ' . "\n"; + return $output; +} + +endif; + +/** + * Enqueue scripts for file uploader + */ + +if ( ! function_exists( 'optionsframework_media_scripts' ) ) : + +function optionsframework_media_scripts( $hook ) { + + $menu = optionsframework_menu_settings(); + + if ( 'appearance_page_' . $menu['menu_slug'] != $hook ) + return; + + if ( function_exists( 'wp_enqueue_media' ) ) + wp_enqueue_media(); + wp_register_script( 'of-media-uploader', OPTIONS_FRAMEWORK_URL .'js/media-uploader.js', array( 'jquery' ) ); + wp_enqueue_script( 'of-media-uploader' ); + wp_localize_script( 'of-media-uploader', 'optionsframework_l10n', array( + 'upload' => __( 'Upload', 'optionsframework' ), + 'remove' => __( 'Remove', 'optionsframework' ) + ) ); +} + +add_action( 'admin_enqueue_scripts', 'optionsframework_media_scripts' ); + +endif; diff --git a/inc/options-framework/options-sanitize.php b/inc/options-framework/options-sanitize.php new file mode 100755 index 0000000..848d716 --- /dev/null +++ b/inc/options-framework/options-sanitize.php @@ -0,0 +1,380 @@ + $value ) { + $output[$key] = false; + } + foreach( $input as $key => $value ) { + if ( array_key_exists( $key, $option['options'] ) && $value ) { + $output[$key] = "1"; + } + } + } + return $output; +} +add_filter( 'of_sanitize_multicheck', 'of_sanitize_multicheck', 10, 2 ); + +/* Color Picker */ + +add_filter( 'of_sanitize_color', 'of_sanitize_hex' ); + +/* Uploader */ + +function of_sanitize_upload( $input ) { + $output = ''; + $filetype = wp_check_filetype($input); + if ( $filetype["ext"] ) { + $output = $input; + } + return $output; +} +add_filter( 'of_sanitize_upload', 'of_sanitize_upload' ); + +/* Editor */ + +function of_sanitize_editor($input) { + if ( current_user_can( 'unfiltered_html' ) ) { + $output = $input; + } + else { + global $allowedtags; + $output = wpautop(wp_kses( $input, $allowedtags)); + } + return $output; +} +add_filter( 'of_sanitize_editor', 'of_sanitize_editor' ); + +/* Allowed Tags */ + +function of_sanitize_allowedtags($input) { + global $allowedtags; + $output = wpautop(wp_kses( $input, $allowedtags)); + return $output; +} + +/* Allowed Post Tags */ + +function of_sanitize_allowedposttags($input) { + global $allowedposttags; + $output = wpautop(wp_kses( $input, $allowedposttags)); + return $output; +} + +add_filter( 'of_sanitize_info', 'of_sanitize_allowedposttags' ); + + +/* Check that the key value sent is valid */ + +function of_sanitize_enum( $input, $option ) { + $output = ''; + if ( array_key_exists( $input, $option['options'] ) ) { + $output = $input; + } + return $output; +} + +/* Background */ + +function of_sanitize_background( $input ) { + $output = wp_parse_args( $input, array( + 'color' => '', + 'image' => '', + 'repeat' => 'repeat', + 'position' => 'top center', + 'attachment' => 'scroll' + ) ); + + $output['color'] = apply_filters( 'of_sanitize_hex', $input['color'] ); + $output['image'] = apply_filters( 'of_sanitize_upload', $input['image'] ); + $output['repeat'] = apply_filters( 'of_background_repeat', $input['repeat'] ); + $output['position'] = apply_filters( 'of_background_position', $input['position'] ); + $output['attachment'] = apply_filters( 'of_background_attachment', $input['attachment'] ); + + return $output; +} +add_filter( 'of_sanitize_background', 'of_sanitize_background' ); + +function of_sanitize_background_repeat( $value ) { + $recognized = of_recognized_background_repeat(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_repeat', current( $recognized ) ); +} +add_filter( 'of_background_repeat', 'of_sanitize_background_repeat' ); + +function of_sanitize_background_position( $value ) { + $recognized = of_recognized_background_position(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_position', current( $recognized ) ); +} +add_filter( 'of_background_position', 'of_sanitize_background_position' ); + +function of_sanitize_background_attachment( $value ) { + $recognized = of_recognized_background_attachment(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_attachment', current( $recognized ) ); +} +add_filter( 'of_background_attachment', 'of_sanitize_background_attachment' ); + + +/* Typography */ + +function of_sanitize_typography( $input, $option ) { + + $output = wp_parse_args( $input, array( + 'size' => '', + 'face' => '', + 'style' => '', + 'color' => '' + ) ); + + if ( isset( $option['options']['faces'] ) && isset( $input['face'] ) ) { + if ( !( array_key_exists( $input['face'], $option['options']['faces'] ) ) ) { + $output['face'] = ''; + } + } + else { + $output['face'] = apply_filters( 'of_font_face', $output['face'] ); + } + + $output['size'] = apply_filters( 'of_font_size', $output['size'] ); + $output['style'] = apply_filters( 'of_font_style', $output['style'] ); + $output['color'] = apply_filters( 'of_sanitize_color', $output['color'] ); + return $output; +} +add_filter( 'of_sanitize_typography', 'of_sanitize_typography', 10, 2 ); + +function of_sanitize_font_size( $value ) { + $recognized = of_recognized_font_sizes(); + $value_check = preg_replace('/px/','', $value); + if ( in_array( (int) $value_check, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_font_size', $recognized ); +} +add_filter( 'of_font_size', 'of_sanitize_font_size' ); + + +function of_sanitize_font_style( $value ) { + $recognized = of_recognized_font_styles(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_font_style', current( $recognized ) ); +} +add_filter( 'of_font_style', 'of_sanitize_font_style' ); + + +function of_sanitize_font_face( $value ) { + $recognized = of_recognized_font_faces(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_font_face', current( $recognized ) ); +} +add_filter( 'of_font_face', 'of_sanitize_font_face' ); + +/** + * Get recognized background repeat settings + * + * @return array + * + */ +function of_recognized_background_repeat() { + $default = array( + 'no-repeat' => __('No Repeat', 'optionsframework'), + 'repeat-x' => __('Repeat Horizontally', 'optionsframework'), + 'repeat-y' => __('Repeat Vertically', 'optionsframework'), + 'repeat' => __('Repeat All', 'optionsframework'), + ); + return apply_filters( 'of_recognized_background_repeat', $default ); +} + +/** + * Get recognized background positions + * + * @return array + * + */ +function of_recognized_background_position() { + $default = array( + 'top left' => __('Top Left', 'optionsframework'), + 'top center' => __('Top Center', 'optionsframework'), + 'top right' => __('Top Right', 'optionsframework'), + 'center left' => __('Middle Left', 'optionsframework'), + 'center center' => __('Middle Center', 'optionsframework'), + 'center right' => __('Middle Right', 'optionsframework'), + 'bottom left' => __('Bottom Left', 'optionsframework'), + 'bottom center' => __('Bottom Center', 'optionsframework'), + 'bottom right' => __('Bottom Right', 'optionsframework') + ); + return apply_filters( 'of_recognized_background_position', $default ); +} + +/** + * Get recognized background attachment + * + * @return array + * + */ +function of_recognized_background_attachment() { + $default = array( + 'scroll' => __('Scroll Normally', 'optionsframework'), + 'fixed' => __('Fixed in Place', 'optionsframework') + ); + return apply_filters( 'of_recognized_background_attachment', $default ); +} + +/** + * Sanitize a color represented in hexidecimal notation. + * + * @param string Color in hexidecimal notation. "#" may or may not be prepended to the string. + * @param string The value that this function should return if it cannot be recognized as a color. + * @return string + * + */ + +function of_sanitize_hex( $hex, $default = '' ) { + if ( of_validate_hex( $hex ) ) { + return $hex; + } + return $default; +} + +/** + * Get recognized font sizes. + * + * Returns an indexed array of all recognized font sizes. + * Values are integers and represent a range of sizes from + * smallest to largest. + * + * @return array + */ + +function of_recognized_font_sizes() { + $sizes = range( 9, 71 ); + $sizes = apply_filters( 'of_recognized_font_sizes', $sizes ); + $sizes = array_map( 'absint', $sizes ); + return $sizes; +} + +/** + * Get recognized font faces. + * + * Returns an array of all recognized font faces. + * Keys are intended to be stored in the database + * while values are ready for display in in html. + * + * @return array + * + */ +function of_recognized_font_faces() { + $default = array( + 'arial' => 'Arial', + 'verdana' => 'Verdana, Geneva', + 'trebuchet' => 'Trebuchet', + 'georgia' => 'Georgia', + 'times' => 'Times New Roman', + 'tahoma' => 'Tahoma, Geneva', + 'palatino' => 'Palatino', + 'helvetica' => 'Helvetica*' + ); + return apply_filters( 'of_recognized_font_faces', $default ); +} + +/** + * Get recognized font styles. + * + * Returns an array of all recognized font styles. + * Keys are intended to be stored in the database + * while values are ready for display in in html. + * + * @return array + * + */ +function of_recognized_font_styles() { + $default = array( + 'normal' => __( 'Normal', 'optionsframework' ), + 'italic' => __( 'Italic', 'optionsframework' ), + 'bold' => __( 'Bold', 'optionsframework' ), + 'bold italic' => __( 'Bold Italic', 'optionsframework' ) + ); + return apply_filters( 'of_recognized_font_styles', $default ); +} + +/** + * Is a given string a color formatted in hexidecimal notation? + * + * @param string Color in hexidecimal notation. "#" may or may not be prepended to the string. + * @return bool + * + */ + +function of_validate_hex( $hex ) { + $hex = trim( $hex ); + /* Strip recognized prefixes. */ + if ( 0 === strpos( $hex, '#' ) ) { + $hex = substr( $hex, 1 ); + } + elseif ( 0 === strpos( $hex, '%23' ) ) { + $hex = substr( $hex, 3 ); + } + /* Regex match. */ + if ( 0 === preg_match( '/^[0-9a-fA-F]{6}$/', $hex ) ) { + return false; + } + else { + return true; + } +} \ No newline at end of file diff --git a/inc/options-framework/options-theme-customizer/footer.php b/inc/options-framework/options-theme-customizer/footer.php new file mode 100755 index 0000000..fe1a6f7 --- /dev/null +++ b/inc/options-framework/options-theme-customizer/footer.php @@ -0,0 +1,24 @@ + + +
    + + + * tag of your theme, or you will break many plugins, which + * generally use this hook to reference JavaScript files. + */ + + wp_footer(); +?> + + diff --git a/inc/options-framework/options-theme-customizer/functions.php b/inc/options-framework/options-theme-customizer/functions.php new file mode 100755 index 0000000..0bbec28 --- /dev/null +++ b/inc/options-framework/options-theme-customizer/functions.php @@ -0,0 +1,27 @@ + +> + + +Options Check + + + + +> + +
    \ No newline at end of file diff --git a/inc/options-framework/options-theme-customizer/index.php b/inc/options-framework/options-theme-customizer/index.php new file mode 100755 index 0000000..f26b97c --- /dev/null +++ b/inc/options-framework/options-theme-customizer/index.php @@ -0,0 +1,60 @@ + + +
    + +
    +

    Options Theme Customizer

    +
    + +
    + +
    +
    type: text
    +
    +
    + +
    +
    type: select
    +
    +
    + +
    +
    type: radio
    +
    +
    + +
    +
    type: checkbox (work in progress, little bug here)
    +
    +
    + +
    +
    type: uploader
    +
    + + + +
    + +
    +
    type: colorpicker
    +
    +
    +

    +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/inc/options-framework/options-theme-customizer/options.php b/inc/options-framework/options-theme-customizer/options.php new file mode 100755 index 0000000..1aae761 --- /dev/null +++ b/inc/options-framework/options-theme-customizer/options.php @@ -0,0 +1,182 @@ + "First Option", + "Second" => "Second Option", + "Third" => "Third Option" ); + + $options = array(); + + $options[] = array( "name" => "Example Settings", + "type" => "heading" ); + + $options['example_text'] = array( + "name" => "Text", + "id" => "example_text", + "std" => "Default Value", + "type" => "text" ); + + $options['example_select'] = array( + "name" => "Select Box", + "id" => "example_select", + "std" => "First", + "type" => "select", + "options" => $test_array ); + + $options['example_radio'] = array( + "name" => "Radio Buttons", + "id" => "example_radio", + "std" => "Third", + "type" => "radio", + "options" => $test_array ); + + $options['example_checkbox'] = array( + "name" => "Input Checkbox", + "desc" => "This is a work in progress. There is are some issues with how the front end customizer saves checkbox options, and how the Options Framework does. Bear with me a bit while I work on a solution.", + "id" => "example_checkbox", + "std" => "1", + "type" => "checkbox" ); + + $options['example_uploader'] = array( + "name" => "Uploader Test", + "desc" => "This creates a full size uploader that previews the image.", + "id" => "example_uploader", + "type" => "upload" ); + + $options['example_colorpicker'] = array( + "name" => "Colorpicker", + "id" => "example_colorpicker", + "std" => "#666666", + "type" => "color" ); + + return $options; +} + +/** + * Front End Customizer + * + * WordPress 3.4 Required + */ + +add_action( 'customize_register', 'options_theme_customizer_register' ); + +function options_theme_customizer_register($wp_customize) { + + /** + * This is optional, but if you want to reuse some of the defaults + * or values you already have built in the options panel, you + * can load them into $options for easy reference + */ + + $options = optionsframework_options(); + + /* Basic */ + + $wp_customize->add_section( 'options_theme_customizer_basic', array( + 'title' => __( 'Basic', 'options_theme_customizer' ), + 'priority' => 100 + ) ); + + $wp_customize->add_setting( 'options_theme_customizer[example_text]', array( + 'default' => $options['example_text']['std'], + 'type' => 'option' + ) ); + + $wp_customize->add_control( 'options_theme_customizer_example_text', array( + 'label' => $options['example_text']['name'], + 'section' => 'options_theme_customizer_basic', + 'settings' => 'options_theme_customizer[example_text]', + 'type' => $options['example_text']['type'] + ) ); + + $wp_customize->add_setting( 'options_theme_customizer[example_select]', array( + 'default' => $options['example_select']['std'], + 'type' => 'option' + ) ); + + $wp_customize->add_control( 'options_theme_customizer_example_select', array( + 'label' => $options['example_select']['name'], + 'section' => 'options_theme_customizer_basic', + 'settings' => 'options_theme_customizer[example_select]', + 'type' => $options['example_select']['type'], + 'choices' => $options['example_select']['options'] + ) ); + + $wp_customize->add_setting( 'options_theme_customizer[example_radio]', array( + 'default' => $options['example_radio']['std'], + 'type' => 'option' + ) ); + + $wp_customize->add_control( 'options_theme_customizer_example_radio', array( + 'label' => $options['example_radio']['name'], + 'section' => 'options_theme_customizer_basic', + 'settings' => 'options_theme_customizer[example_radio]', + 'type' => $options['example_radio']['type'], + 'choices' => $options['example_radio']['options'] + ) ); + + $wp_customize->add_setting( 'options_theme_customizer[example_checkbox]', array( + 'default' => $options['example_checkbox']['std'], + 'type' => 'option' + ) ); + + $wp_customize->add_control( 'options_theme_customizer_example_checkbox', array( + 'label' => $options['example_checkbox']['name'], + 'section' => 'options_theme_customizer_basic', + 'settings' => 'options_theme_customizer[example_checkbox]', + 'type' => $options['example_checkbox']['type'] + ) ); + + /* Extended */ + + $wp_customize->add_section( 'options_theme_customizer_extended', array( + 'title' => __( 'Extended', 'options_theme_customizer' ), + 'priority' => 110 + ) ); + + $wp_customize->add_setting( 'options_theme_customizer[example_uploader]', array( + 'type' => 'option' + ) ); + + $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'example_uploader', array( + 'label' => $options['example_uploader']['name'], + 'section' => 'options_theme_customizer_extended', + 'settings' => 'options_theme_customizer[example_uploader]' + ) ) ); + + $wp_customize->add_setting( 'options_theme_customizer[example_colorpicker]', array( + 'default' => $options['example_colorpicker']['std'], + 'type' => 'option' + ) ); + + $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array( + 'label' => $options['example_colorpicker']['name'], + 'section' => 'options_theme_customizer_extended', + 'settings' => 'options_theme_customizer[example_colorpicker]' + ) ) ); +} \ No newline at end of file diff --git a/inc/options-framework/options-theme-customizer/screenshot.png b/inc/options-framework/options-theme-customizer/screenshot.png new file mode 100755 index 0000000000000000000000000000000000000000..e6099ead5ca30f49a7e5705aeedc6229903988b6 GIT binary patch literal 25807 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 literal 0 HcmV?d00001 diff --git a/inc/options-framework/options-theme-customizer/style.css b/inc/options-framework/options-theme-customizer/style.css new file mode 100755 index 0000000..e21165d --- /dev/null +++ b/inc/options-framework/options-theme-customizer/style.css @@ -0,0 +1,53 @@ +/* +Theme Name: Options Theme Customizer +Theme URI: http://wptheming.com +Description: A demo theme that shows how the front-end theme customizer works. +Author: Devin Price +Author URI: http://wptheming.com +Version: 1.6 +*/ + +body { + background:#eee; +} + +body, input, textarea { + color: #222; + font: 15px "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; + line-height: 1.625; +} + +p { + margin:0 0 10px 0; +} + +h1, h2, h3 { + margin:0 0 10px 0; +} + +#page { + background:#fff; + min-width:440px; + max-width:740px; + margin:20px auto; +} + +header { + background:#dedede; + padding:30px 40px; +} + +.entry-content { + padding:20px 40px; +} + +dt { + color:#666; + margin-bottom:5px; +} +dd { + clear:both; + margin:0; + font-size:1.2em; +} \ No newline at end of file diff --git a/inc/options-framework/readme.md b/inc/options-framework/readme.md new file mode 100755 index 0000000..a74a146 --- /dev/null +++ b/inc/options-framework/readme.md @@ -0,0 +1,183 @@ +## Options Framework ## + +**Tags:** options, theme options +**Requires at least:** 3.4 +**Tested up to:** 3.6 +**Stable tag:** 1.6 +**License:** GPLv2 +**Donate link:** http://bit.ly/options-donate-2 + +## Screenshot ## + +![An example of the "Advanced Options" tag in the "Options Check" theme using this plugin.](https://github.com/devinsays/options-framework-plugin/raw/master/screenshot-1.png) + +## Description ## + +The Options Framework Plugin makes it easy to include an options panel in any WordPress theme. It was built so developers can concentrate on making the actual theme rather than spending time creating an options panel from scratch. It's free to use in both commercial and personal projects, just like WordPress itself. + +### Options Include: ### + +* text input +* textarea +* checkbox +* select +* radio button +* upload (image uploader) +* images (use images instead of radio buttons) +* background (a set of options to define a background) +* multicheck +* color (a jquery color picker) +* typography (a set of options to define typography) +* editor + +### Learn More ### + +Please visit [http://wptheming.com/options-framework-plugin](http://wptheming.com/options-framework-plugin) for a full description of how to define and use the theme options. + +### Installation ### + +If your theme already has options enabled, they will show up under the appearance menu. + +If your theme doesn't have options, you can define them to options.php of your theme and they will instantly show up. For more on how to do this, visit [http://wptheming.com/options-framework-plugin](http://wptheming.com/options-framework-plugin). + +## Frequently Asked Questions ## + +### How do I build options for my own theme? ### + +Download the development version from GitHub [https://github.com/devinsays/options-framework-plugin](https://github.com/devinsays/options-framework-plugin) and copy the "options-check" folder into your themes directory. + +The "Options Check" theme is a blueprint for how to work with options. It includes an example of every option available in the panel and sample output in the theme. + +You can also watch the video screencast I have at [http://wptheming.com/options-framework-plugin](http://wptheming.com/options-framework-plugin). + +## Change log ## + +#### 1.6.1 #### + +* Fix for update notice location +* Use selected and checked functions more consistently +* Reuse media modal for uploads + +#### 1.6 #### + +* Allow media buttons in the editor option +* JS/CSS should only load on options page +* Menu tabs should be filterable +* Menu settings filter +* Fix js bindings for upload modal (props @themeblvd) + +#### 1.5.2 #### + +* Removed update routine to remove "optionsframework" post type + +#### 1.5.1 #### + +* Temporarily removed update routine + +#### 1.5 #### + +* Updated width of text input +* New media uploader +* Dropped custom post types for file attachments +* Update routine to remove unused 'optionsframework' post types +* Updated IDs for .tabs and .groups +* Italian translations (andreabersi.com) +* Russian translations (verha.net) +* Swedish translations (kjeell.se) + +#### 1.4 #### + +* Add missing sanitization to typography color (@weplantmedia) +* New colorpicker (props @mattweibe for getting this in WordPress core) +* Farsi translations (@vahidd.com) +* Added password option type (props @neojp) +* Allow ids to passed to tabs (props @themeblvd) +* Added optionsframework_after_validate hook (h/t @vanpop and @pryley) + +#### 1.3 #### + +* Allow options to save when set by theme customizer +* Save checkbox options to boolean false rather than "0" +* Added optionsframework_after hook +* Hungarian translations by kardiweb.org + +#### 1.2 #### + +* Fix for font_size santization +* Added internationalization support (@weslly) +* Portuguese translations (@weslly) +* Spanish translations (@sksmatt) +* Make uploader post type non-public (@samargulies) +* ID can now be passed on info option for styling purposes + +#### 1.1 #### + +* Added support for wp_editor +* Updated textarea settings to allow rows parameter +* Updated cursor:default for h3 metabox, props @yurifedorov +* Filtering of typography options (@mattwiebe) +* Updated methods for typography options + +#### 1.0 #### + +* Added filters for entire options array (props @inxilpro) +* Added a filter for options.php location (props @mattwiebe) +* Option header (h4) will not display in panel if name !isset (props @alepee) + +#### 0.9 #### + +* Load thickbox using site_url() to allow for https (props @samargulies) +* Change santization to use $allowedposttags for textarea and info +* Display notice if theme doesn't support the Options Framework +* Single checkboxes now use labels +* CSS updates for formatting long labels +* Allows dashes in the options id (props @mantone) +* Uses add_theme_page over add_submenu_page (props @enile8) + +#### 0.8 #### + +* Saves tab states using local storage +* Style updates WordPress 3.2 release +* Added sanitization filter for info (of_sanitize_allowedtags) + +#### 0.7 #### + +* Added filtering for recognized arrays (like Font Face) +* Using isset rather than !empty to return of_get_option +* Significant updates for setting and restoring defaults +* Background option outputs no-repeat rather than none + +#### 0.6 #### + +* Introduces validation filters (props @_mfields) +* Better data sanitization and escaping (props @_mfields) +* Updates labels in options-interface.php +* Changes how checkboxes saved in database ("0" or "1") +* Stores typography, backgrounds and multichecks directly as arrays +* For full description, see: http://wptheming.com/2011/05/options-framework-0-6/ + +#### 0.5 #### + +* Fixed errors when more than one multicheck options is used +* Updated optionsframework_setdefaults so defaults actually save on first run +* Require that all options have lowercase alphanumeric ids +* Added link to options from the WordPress admin bar + +#### 0.4 #### + +* Updated multicheck option to save keys rather than values +* Unset default array options after each output in optionsframework_setdefaults + +#### 0.3 #### + +* White listed options for increased security +* Fixed errors with checkbox and select boxes +* Improved the multicheck option and changed format + +#### 0.2 #### + +* Uploaded to the WordPress repository + +#### 0.1 #### + +* Initial release \ No newline at end of file diff --git a/inc/options-framework/readme.txt b/inc/options-framework/readme.txt new file mode 100755 index 0000000..e757ac9 --- /dev/null +++ b/inc/options-framework/readme.txt @@ -0,0 +1,198 @@ +=== Options Framework === + +Contributors: @downstairsdev +Tags: options, theme options +Donate link: http://bit.ly/options-donate-2 +Requires at least: 3.4 +Tested up to: 3.6 +Stable tag: 1.6 +License: GPLv2 + +== Description == + +The Options Framework Plugin makes it easy to include an options panel in any WordPress theme. It was built so developers can concentrate on making the actual theme rather than spending time creating an options panel from scratch. It's free to use in both commercial and personal projects, just like WordPress itself. + += Options Include = + +* text input +* textarea +* checkbox +* select +* radio button +* upload (image uploader) +* images (use images instead of radio buttons) +* background (a set of options to define a background) +* multicheck +* color (a jquery color picker) +* typography (a set of options to define typography) +* editor + += Learn More = + +Please visit [http://wptheming.com/options-framework-plugin](http://wptheming.com/options-framework-plugin) for a full description of how to define and use the theme options. + +== Installation == + +If your theme already has options enabled, they will show up under the appearance menu. + +If your theme doesn't have options, you can define them to options.php of your theme and they will instantly show up. For more on how to do this, visit [http://wptheming.com/options-framework-plugin](http://wptheming.com/options-framework-plugin). + +== Frequently Asked Questions == + += How do I build options for my own theme? = + +Download the development version from GitHub [https://github.com/devinsays/options-framework-plugin](https://github.com/devinsays/options-framework-plugin) and copy the "options-check" folder into your themes directory. + +The "Options Check" theme is a blueprint for how to work with options. It includes an example of every option available in the panel and sample output in the theme. + +You can also watch the video screencast I have at [http://wptheming.com/options-framework-plugin](http://wptheming.com/options-framework-plugin). + += What options are available to use? = + +* text input +* textarea +* checkbox +* select +* radio button +* upload (image uploader) +* images (use images instead of radio buttons) +* background (a set of options to define a background) +* multicheck +* color (a jquery color picker) +* typography (a set of options to define typography) + +== Screenshots == + +1. An example of the "Advanced Options" tag in the "Options Check" theme using this plugin. + +== Changelog == + += 1.6.1 = + +* Fix for update notice location +* Use selected and checked functions more consistently +* Reuse media modal for uploads + += 1.6 = + +* Allow media buttons in the editor option +* JS/CSS should only load on options page +* Menu tabs should be filterable +* Menu settings filter +* Fix js bindings for upload modal (props @themeblvd) + += 1.5.2 = + +* Removed update routine to remove "optionsframework" post type + += 1.5.1 = + +* Temporarily removed update routine + += 1.5 = + +* Updated width of text input +* New media uploader +* Dropped custom post types for file attachments +* Update routine to remove unused 'optionsframework' post types +* Updated IDs for .tabs and .groups +* Italian translations (andreabersi.com) +* Russian translations (verha.net) +* Swedish translations (kjeell.se) + += 1.4 = + +* Add missing sanitization to typography color (@weplantmedia) +* New colorpicker (props @mattweibe for getting this in WordPress core) +* Farsi translations (@vahidd.com) +* Added password option type (props @neojp) +* Allow ids to passed to tabs (props @themeblvd) +* Added optionsframework_after_validate hook (h/t @vanpop and @pryley) + += 1.3 = + +* Allow options to save when set by theme customizer +* Save checkbox options to boolean false rather than "0" +* Added optionsframework_after hook +* Hungarian translations by kardiweb.org + += 1.2 = + +* Fix for font_size santization +* Added internationalization support (@weslly) +* Portuguese translations (@weslly) +* Spanish translations (@sksmatt) +* Make uploader post type non-public (@samargulies) +* ID can now be passed on info option for styling purposes + += 1.1 = + +* Added support for wp_editor +* Updated textarea settings to allow rows parameter +* Updated cursor:default for h3 metabox, props @yurifedorov +* Filtering of typography options (@mattwiebe) +* Updated methods for typography options + += 1.0 = + +* Added filters for entire options array (props @inxilpro) +* Added a filter for options.php location (props @mattwiebe) +* Option header (h4) will not display in panel if name !isset (props @alepee) + += 0.9 = + +* Load thickbox using site_url() to allow for https (props @samargulies) +* Change santization to use $allowedposttags for textarea and info +* Display notice if theme doesn't support the Options Framework +* Single checkboxes now use labels +* CSS updates for formatting long labels +* Allows dashes in the options id (props @mantone) +* Uses add_theme_page over add_submenu_page (props @enile8) + += 0.8 = + +* Saves tab states using local storage +* Style updates WordPress 3.2 release +* Added sanitization filter for info (of_sanitize_allowedtags) + += 0.7 = + +* Added filtering for recognized arrays (like Font Face) +* Using isset rather than !empty to return of_get_option +* Significant updates for setting and restoring defaults +* Background option outputs no-repeat rather than none + += 0.6 = + +* Introduces validation filters (props @_mfields) +* Better data sanitization and escaping (props @_mfields) +* Updates labels in options-interface.php +* Changes how checkboxes saved in database ("0" or "1") +* Stores typography, backgrounds and multichecks directly as arrays +* For full description, see: http://wptheming.com/2011/05/options-framework-0-6/ + += 0.5 = + +* Fixed errors when more than one multicheck options is used +* Updated optionsframework_setdefaults so defaults actually save on first run +* Require that all options have lowercase alphanumeric ids +* Added link to options from the WordPress admin bar + += 0.4 = + +* Updated multicheck option to save keys rather than values +* Unset default array options after each output in optionsframework_setdefaults + += 0.3 = + +* White listed options for increased security +* Fixed errors with checkbox and select boxes +* Improved the multicheck option and changed format + += 0.2 = + +* Uploaded to the WordPress repository + += 0.1 = + +* Initial release \ No newline at end of file diff --git a/inc/options-framework/screenshot-1.png b/inc/options-framework/screenshot-1.png new file mode 100755 index 0000000000000000000000000000000000000000..6d2a188d20e846566f9b09f2d6d9581b963aa3c5 GIT binary patch literal 19283 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 literal 0 HcmV?d00001 diff --git a/inc/plugins/nav-menu-images/inc/admin.php b/inc/plugins/nav-menu-images/inc/admin.php new file mode 100755 index 0000000..affc1e4 --- /dev/null +++ b/inc/plugins/nav-menu-images/inc/admin.php @@ -0,0 +1,275 @@ +load_textdomain(); + + // Enqueue old script + wp_enqueue_script( 'nmi-scripts', plugins_url( 'nmi.js', __FILE__ ), array( 'media-upload', 'thickbox' ), '1', true ); + wp_localize_script( 'nmi-scripts', 'nmi_vars', array( + 'alert' => __( 'You need to set an image as a featured image to be able to use it as an menu item image', 'nmi' ) + ) + ); + add_thickbox(); + + // For WP 3.5+, enqueue new script & dependicies + if ( version_compare( $wp_version, '3.5', '>=' ) ) { + wp_enqueue_media(); + wp_enqueue_script( 'nmi-media-view', plugins_url( 'media-view.js', __FILE__ ), array( 'jquery', 'media-editor', 'media-views', 'post' ), '1.0', true ); + } + + do_action( 'nmi_enqueue_scripts' ); + } + + /** + * Use custom walker for nav menu edit. + * + * @since 1.0 + * @access public + * + * @uses Nav_Menu_Images::load_textdomain() To load translations. + * + * @param string $walker Name of used walker class. + */ + public function filter_walker( $walker ) { + // Load translations + $this->load_textdomain(); + + require_once dirname( __FILE__ ) . '/walker.php'; + return 'NMI_Walker_Nav_Menu_Edit'; + } + + /** + * Output HTML for the post thumbnail meta-box. + * + * @since 2.0 + * @access public + * + * @uses get_post() To get post's object. + * @uses Nav_Menu_Images::load_textdomain() To load translations. + * @uses admin_url() To get URL of uploader. + * @uses esc_url() To escape URL. + * @uses add_query_arg() To append variables to URL. + * @uses has_post_thumbnail() To check if item has thumb. + * @uses get_the_post_thumbnail() To get item's thumb. + * @uses wp_create_nonce() To create item's nonce. + * @uses esc_html__() To translate & escape string. + * @uses apply_filters() Calls 'nmi_admin_post_thumbnail_html' to + * overwrite returned output. + * + * @param string $content Original HTML output of the thubnail. + * @param int $post_id The post ID associated with the thumbnail. + * @return string New HTML output. + */ + public function _wp_post_thumbnail_html( $content, $post_id ) { + // Check if request from this plugin + if ( ! isset( $_REQUEST['nmi_request'] ) ) + return $content; + + // Get post object + $post = get_post( $post_id ); + + // Check if post exists and is nav menu item + if ( ! $post || 'nav_menu_item' != $post->post_type ) + return $content; + + // Load translations + $this->load_textdomain(); + + // Form upload link + $upload_url = admin_url( 'media-upload.php' ); + $query_args = array( + 'post_id' => $post->ID, + 'tab' => 'gallery', + 'TB_iframe' => '1', + 'width' => '640', + 'height' => '425' + ); + $upload_url = esc_url( add_query_arg( $query_args, $upload_url ) ); + + // Item's featured image or plain link + if ( has_post_thumbnail( $post->ID ) ) + $link = get_the_post_thumbnail( $post->ID, 'thumb' ); + else + $link = __( 'Upload menu item image', 'nmi' ); + + // Full link + $content = '' . $link . ''; + + // If item didn't have image, prepend actions links + if ( isset( $_REQUEST['thumb_was'] ) && -1 == $_REQUEST['thumb_was'] ) { + $link_text = __( 'Change menu item image', 'nmi' ); + $ajax_nonce = wp_create_nonce( 'set_post_thumbnail-' . $post->ID ); + $remove_link = ' | ' . esc_html__( 'Remove menu item image', 'nmi' ) . ''; + + $actions = '' . $link_text . '' . $remove_link; + + $content = $actions . $content; + } + + // Filter returned HTML output + return apply_filters( 'nmi_admin_post_thumbnail_html', $content, $post->ID ); + } + + /** + * Display hover & active image checkboxes. + * + * @since 3.0 + * @access public + * + * @uses Nav_Menu_Images::load_textdomain() To load translations. + * @uses get_post_meta() To get item's hover & active images IDs. + * @uses checked() To set proper checkbox status. + * @uses apply_filters() Calls 'nmi_attachment_fields_to_edit' to + * overwrite returned form fields. + * + * @param array $form_fields Original attachment form fields. + * @param object $post The post object data of attachment. + * @return string New attachment form fields. + */ + function attachment_fields_to_edit( $form_fields, $post ) { + // Display only for images + if ( ! wp_attachment_is_image( $post->ID ) ) + return $form_fields; + + // Display only for nav menu items + if ( 'nav_menu_item' != get_post_type( $post->post_parent ) ) + return $form_fields; + + // Load translations + $this->load_textdomain(); + + // Add "hover" checkbox + $parent_hover_id = get_post_meta( $post->post_parent, '_nmi_hover', true ); + $is_hover = ( $parent_hover_id == $post->ID ) ? true : false; + $is_hover_checked = checked( $is_hover, true, false ); + + $form_fields['nmihover'] = array( + 'label' => __( 'Used on hover?', 'nmi' ), + 'input' => 'html', + 'html' => "", + 'value' => $is_hover, + 'helps' => __( 'Should this image be used on hover', 'nmi' ), + 'show_in_edit' => false + ); + + // Add "active" checkbox + $parent_active_id = get_post_meta( $post->post_parent, '_nmi_active', true ); + $is_active = ( $parent_active_id == $post->ID ) ? true : false; + $is_active_checked = checked( $is_active, true, false ); + + $form_fields['nmiactive'] = array( + 'label' => __( 'Used when active?', 'nmi' ), + 'input' => 'html', + 'html' => "", + 'value' => $is_active, + 'helps' => __( 'Should this image be used when menu item is active', 'nmi' ), + 'show_in_edit' => false + ); + + // Filter returned HTML output + return apply_filters( 'nmi_attachment_fields_to_edit', $form_fields, $post ); + } + + /** + * Save hover & active image checkboxes submissions. + * + * @since 3.0 + * @access public + * + * @uses update_post_meta() To save new item's hover or active images IDs. + * @uses delete_post_meta() To delete old item's hover or active images IDs. + * + * @param object $post The post object data of attachment. + * @param array $attachment Submitted data of attachment. + * @return object $post The post object data of attachment. + */ + function attachment_fields_to_save( $post, $attachment ) { + // Save "hover" checkbox + if ( 'on' == $attachment['nmihover'] ) + update_post_meta( $post['post_parent'], '_nmi_hover', $post['ID'] ); + else + delete_post_meta( $post['post_parent'], '_nmi_hover', $post['ID'] ); + + // Save "active" checkbox + if ( 'on' == $attachment['nmiactive'] ) + update_post_meta( $post['post_parent'], '_nmi_active', $post['ID'] ); + else + delete_post_meta( $post['post_parent'], '_nmi_active', $post['ID'] ); + + return $post; + } +} diff --git a/inc/plugins/nav-menu-images/inc/media-view.js b/inc/plugins/nav-menu-images/inc/media-view.js new file mode 100755 index 0000000..34a9ce2 --- /dev/null +++ b/inc/plugins/nav-menu-images/inc/media-view.js @@ -0,0 +1,104 @@ +/** + * Nav Menu Images Media View. + * + * @since 2.0 + * + * @package Nav Menu Images + * @subpackage Media View + */ +jQuery(document).ready(function($){ + // Prepare the variable that holds our custom media manager. + // Based on wp.media.featuredImage + wp.media.nmi = { + get: function() { + return wp.media.view.settings.post.featuredImageId; + }, + + set: function( id ) { + var settings = wp.media.view.settings; + + settings.post.featuredImageId = id; + + wp.media.post( 'set-post-thumbnail', { + json: true, + post_id: settings.post.id, + thumbnail_id: settings.post.featuredImageId, + _wpnonce: settings.post.nonce, + thumb_was: settings.post.featuredExisted, + nmi_request: true + }).done( function( html ) { + if ( 1 == settings.post.featuredExisted ) + $( '.nmi-upload-link', "li#menu-item-"+settings.post.id ).show(); + else + $( '.nmi-upload-link', "li#menu-item-"+settings.post.id ).hide(); + $( '.nmi-current-image', "li#menu-item-"+settings.post.id ).html( html ); + }); + }, + + frame: function() { + if ( this._frame ) + return this._frame; + + this._frame = wp.media({ + state: 'featured-image', + states: [ new wp.media.controller.FeaturedImage() ] + }); + + this._frame.on( 'toolbar:create:featured-image', function( toolbar ) { + this.createSelectToolbar( toolbar, { + text: wp.media.view.l10n.setFeaturedImage + }); + }, this._frame ); + + this._frame.state('featured-image').on( 'select', this.select ); + return this._frame; + }, + + select: function() { + var settings = wp.media.view.settings, + selection = this.get('selection').single(); + + if ( ! settings.post.featuredImageId ) + return; + + wp.media.nmi.set( selection ? selection.id : -1 ); + }, + + init: function() { + // Open the content media manager to the 'featured image' tab when + // the post thumbnail is clicked. + $('.nmi-div').on( 'click', '.add_media', function( event ) { + event.preventDefault(); + // Stop propagation to prevent thickbox from activating. + event.stopPropagation(); + + var nmi_clicked_item_id = $(this).data('id'); + wp.media.view.settings = nmi_settings[nmi_clicked_item_id]; + + wp.media.nmi.frame().open(); + // Update the featured image id when the 'remove' link is clicked. + }).on( 'click', '.nmi_remove', function() { + var nmi_clicked_item_id = $(this).data('id'); + nmi_settings[nmi_clicked_item_id].post.featuredImageId = -1; + }); + } + }; + + $( wp.media.nmi.init ); + + // Based on WPRemoveThumbnail + NMIRemoveThumbnail = function(nonce,post_id){ + $.post(ajaxurl, { + action:"set-post-thumbnail", post_id: post_id, thumbnail_id: -1, _ajax_nonce: nonce, cookie: encodeURIComponent(document.cookie), nmi_request: true + }, function(str){ + if ( str == '0' ) { + alert( setPostThumbnailL10n.error ); + } else { + $( '.nmi-upload-link', "li#menu-item-"+post_id ).hide(); + $( '.nmi-current-image', "li#menu-item-"+post_id ).html( str ); + } + } + ); + }; + +}); \ No newline at end of file diff --git a/inc/plugins/nav-menu-images/inc/nmi.js b/inc/plugins/nav-menu-images/inc/nmi.js new file mode 100755 index 0000000..e90f448 --- /dev/null +++ b/inc/plugins/nav-menu-images/inc/nmi.js @@ -0,0 +1,54 @@ +/** + * Display thumb when set as featured. + * + * Overwritess built in function. + */ +function WPSetThumbnailID( id ) { + tb_remove(); + jQuery.post( ajaxurl, { + action: "nmi_added_thumbnail", + thumbnail_id: id, + post_id: window.clicked_item_id + }, function( response ) { + jQuery("li#menu-item-"+window.clicked_item_id+" .nmi-current-image").html( response ); + tb_remove(); + } + ); +}; + +function WPSetThumbnailHTML( html ) { +}; + +jQuery( document ).ready( function( $ ) { + // Get all menu items + var items = $("ul#menu-to-edit li.menu-item"); + + // Go through all items and display link & thumb + for ( var i = 0; i < items.length; i++ ) { + var id = $(items[i]).children("#nmi_item_id").val(); + + var sibling = $("#edit-menu-item-attr-title-"+id).parent().parent(); + var image_div = $("li#menu-item-"+id+" .nmi-current-image"); + var link_div = $("li#menu-item-"+id+" .nmi-upload-link"); + + if ( image_div ) { + sibling.after( image_div ); + image_div.show(); + } + if ( link_div ) { + sibling.after( link_div ); + link_div.show(); + } + } + + // Save item ID on click on a link + $(".nmi-upload-link").click( function() { + window.clicked_item_id = $(this).parent().parent().children("#nmi_item_id").val(); + } ); + + // Display alert when not added as featured + window.send_to_editor = function( html ) { + alert(nmi_vars.alert); + tb_remove(); + }; +} ); \ No newline at end of file diff --git a/inc/plugins/nav-menu-images/inc/walker.php b/inc/plugins/nav-menu-images/inc/walker.php new file mode 100755 index 0000000..c948eda --- /dev/null +++ b/inc/plugins/nav-menu-images/inc/walker.php @@ -0,0 +1,198 @@ +ID; + + // Form upload link + $upload_url = admin_url( 'media-upload.php' ); + $query_args = array( + 'post_id' => $item_id, + 'tab' => 'gallery', + 'TB_iframe' => '1', + 'width' => '640', + 'height' => '425' + ); + $upload_url = esc_url( add_query_arg( $query_args, $upload_url ) ); + + // Hidden field with item's ID + $output .= ''; + + // Generate menu item image & link's text string + if ( has_post_thumbnail( $item_id ) ) { + $post_thumbnail = get_the_post_thumbnail( $item_id, 'thumb' ); + $output .= ''; + $link_text = __( 'Change menu item image', 'nmi' ); + + // For WP 3.5+, add 'remove' action link + if ( version_compare( $wp_version, '3.5', '>=' ) ) { + $ajax_nonce = wp_create_nonce( 'set_post_thumbnail-' . $item_id ); + $remove_link = ' | ' . esc_html__( 'Remove menu item image', 'nmi' ) . ''; + } + } else { + $output .= ''; + $link_text = __( 'Upload menu item image', 'nmi' ); + } + + // Append menu item upload link + $output .= ''; + + // Filter output + do_action_ref_array( 'nmi_menu_item_walker_output', array( &$output, $item, $depth, $args ) ); + + // Add JSONed meta data + $output .= $this->get_settings( $item_id ); + + do_action_ref_array( 'nmi_menu_item_walker_end', array( &$output, $item, $depth, $args ) ); + } + + /** + * Get JSONed item's data. + * + * Heavily based on wp_enqueue_media() and + * WP_Scripts::localize() + * + * @see wp_enqueue_media() + * @see WP_Scripts::localize() + * + * @since 2.0 + * @access public + * + * @uses version_compare() To compare WordPress versions. + * @uses wp_create_nonce() To create item's nonce. + * @uses get_post() To get post's object. + * @uses get_post_meta() To get post's meta data. + * @uses apply_filters() Calls 'media_view_settings' with the settings + * and post object to overwrite item's settings. + * @uses did_action() To check if action was done. + * @uses do_action() Calls 'nmi_setup_settings_var' with the item ID. + * + * @param int $post_id The item's post ID. + * @return string New HTML output. + */ + public function get_settings( $post_id ) { + global $wp_version; + + // Only works for WP 3.5+ + if ( ! version_compare( $wp_version, '3.5', '>=' ) ) + return; + + // Prepare general settings + $settings = array( + 'nonce' => array( + 'sendToEditor' => wp_create_nonce( 'media-send-to-editor' ), + ), + 'post' => array( + 'id' => 0, + ), + 'defaultProps' => array( + 'link' => get_option( 'image_default_link_type' ), // db default is 'file' + 'align' => get_option( 'image_default_align' ), // empty default + 'size' => get_option( 'image_default_size' ), // empty default + ) + ); + + // Prepare post specific settings + $post = null; + if ( isset( $post_id ) ) { + $post = get_post( $post_id ); + $settings['post'] = array( + 'id' => $post->ID, + 'nonce' => wp_create_nonce( 'update-post_' . $post->ID ), + ); + + $featured_image_id = get_post_meta( $post->ID, '_thumbnail_id', true ); + $settings['post']['featuredImageId'] = $featured_image_id ? $featured_image_id : -1; + $settings['post']['featuredExisted'] = $featured_image_id ? 1 : -1; + } + + // Filter item's settins + $settings = apply_filters( 'media_view_settings', $settings, $post ); + + // Prepare Javascript varible name + $object_name = 'nmi_settings[' . $post->ID . ']'; + + // Loop through each setting and prepare it for JSON + foreach ( (array) $settings as $key => $value ) { + if ( ! is_scalar( $value ) ) + continue; + + $settings[$key] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); + } + + // Encode settings to JSON + $script = "$object_name = " . json_encode( $settings ) . ';'; + + // If this is first item, register variable + if ( ! did_action( 'nmi_setup_settings_var' ) ) { + $script = "var nmi_settings = [];\n" . $script; + do_action( 'nmi_setup_settings_var', $post->ID ); + } + + // Wrap everythig + $output = "\n"; + + return $output; + } +} \ No newline at end of file diff --git a/inc/plugins/nav-menu-images/languages/nmi-sr_RS.mo b/inc/plugins/nav-menu-images/languages/nmi-sr_RS.mo new file mode 100755 index 0000000000000000000000000000000000000000..eb4acc57f685f276483fba963058e82e777df0ce GIT binary patch literal 2243 zcmb_cO>Y}T7#^T}nE(O_kZ2DB5*1Z7_O8>W?IvyzNrNI`h=K# zU_6g`0CN@d70j_m@PknUz6=b26nGx^1n?Sg4EPh!_;!HC?swqpz(0U_;QhgQ{!v1n z!+sw40`N5OBj7S{Kk!#z0eBDiCwvY(M#u^5@9!g|1U&J0>i;$HCG5Wk=72YV$AEtU zmx231?h^1zpz$Ajl8_1D9MA=R4(tJc2EGbhek#p-35c`=VF;FXJTt%{82)CM`az3; zDgjNB!F(Fi41~4AXkx~*m_{cuQ{&PXv@T?m28pQCpw4|kW`np9^0VoV@|g0}q@rXZ zWRfMbO7cXIVi0mkX9F4h_7!=Lw`kD>nl~|GvMB1RwLA6)HPsBOG^qvgAbwfUW-O{y zNm_$PL>_FiQWJ8NEtpl3pe4vsBUHRPdSwe)8jU+m?AFFe-KNRMs!63l@CBoyUX z3DTm^2%a<}+@@!+0asoQg)s+bXl4z!ak7bPNz(9gxpJudY~83-g-DfbMb&fUU+z{^ zRBc2ej&qH$=?5~-N#0`Sd6=aT=g2~&mPI9D^Huhth~hv=kM58@vnU!WN?0-WgDQKw z>Bp?3JUYm`nIo$rKbLTSXO7Im`z1CLp>_mkvv_Ea<{fvOIpZupLEQ<@alQP+VaM?t z2gYnsv;srqA8e0#&XL283%hrDoUl^FWgPNEMIIe(9y(=3dMl0^@h3sH9DH^X4$^O; zlUPacx<@m``QoXqlHIJ6nMvD`mCiOmF%h38kc|g&l2&Rw!gCguN^|V^mYvCdMnvqC ztSCH)@6qGsAjvF*&4`C=PDStHHZuV&QXol#k z{quT5-_aetuDi7Vgw`gW0>KnoqF1(zNNdc?TmUG z6TM+h+WIEEZs~Ua@?J5sM6ZGjGQb1&M1O~5YY4GUanrRo-x7T-C22BV+(peC_2Azz z^!rx~(;vZREe$-%anA}@b(@-06s6;517fr{1DNFnlLwb=6Q1gu={4l)S*f}<13d4- z&J<$gg4pRn2M28kWW{`Fsf_NH$7TBUqRt4J`!s99u4P{?99cFz@#riI;hE4mRhJ^gE)z?uZy2|v5 nb;bKySERoKlN;%)Z|b=HJt5M7rfu;5`iB{Q6IWIq@@M*QT=={{ literal 0 HcmV?d00001 diff --git a/inc/plugins/nav-menu-images/languages/nmi-sr_RS.po b/inc/plugins/nav-menu-images/languages/nmi-sr_RS.po new file mode 100755 index 0000000..a297b02 --- /dev/null +++ b/inc/plugins/nav-menu-images/languages/nmi-sr_RS.po @@ -0,0 +1,77 @@ +# Translation of Nav Menu Images in Serbian +# This file is distributed under the same license as the Nav Menu Images package. +msgid "" +msgstr "" +"Project-Id-Version: Nav Menu Images\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/nav-menu-images\n" +"POT-Creation-Date: 2013-03-26 16:01:26+00:00\n" +"PO-Revision-Date: 2013-03-26 17:04+0100\n" +"Last-Translator: Milan Dinić \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.5.5\n" + +#: inc/admin.php:83 +msgid "" +"You need to set an image as a featured image to be able to use it as an menu " +"item image" +msgstr "" +"Потребно је да поставите слику као одабрану да бисте могли да је користите " +"као слику ставке изборника" + +#: inc/admin.php:167 inc/walker.php:84 +msgid "Upload menu item image" +msgstr "Отпреми слику ставке изборника" + +#: inc/admin.php:174 inc/walker.php:75 +msgid "Change menu item image" +msgstr "Промени слику ставке изборника" + +#: inc/admin.php:176 inc/walker.php:80 +msgid "Remove menu item image" +msgstr "Уклони слику ставке изборника" + +#: inc/admin.php:221 +msgid "Used on hover?" +msgstr "Користи се приликом преласка?" + +#: inc/admin.php:225 +msgid "Should this image be used on hover" +msgstr "Да ли би ова слика требало да се користи приликом преласка" + +#: inc/admin.php:235 +msgid "Used when active?" +msgstr "Користи је када је активна?" + +#: inc/admin.php:239 +msgid "Should this image be used when menu item is active" +msgstr "" +"Да ли би ова слика требало да се користи када је ставка изборника активна" + +#: nav-menu-images.php:320 +msgid "Donate" +msgstr "Донирај" + +#. Plugin Name of the plugin/theme +msgid "Nav Menu Images" +msgstr "Слике у изборнику кретања" + +#. Plugin URI of the plugin/theme +msgid "http://blog.milandinic.com/wordpress/plugins/nav-menu-images/" +msgstr "http://blog.milandinic.com/wordpress/plugins/nav-menu-images/" + +#. Description of the plugin/theme +msgid "Display image as a menu content." +msgstr "Прикажите слику као садржај ставке изборника." + +#. Author of the plugin/theme +msgid "Milan Dinić" +msgstr "Милан Динић" + +#. Author URI of the plugin/theme +msgid "http://blog.milandinic.com/" +msgstr "http://www.milandinic.com/" diff --git a/inc/plugins/nav-menu-images/languages/nmi.pot b/inc/plugins/nav-menu-images/languages/nmi.pot new file mode 100755 index 0000000..f77fe3f --- /dev/null +++ b/inc/plugins/nav-menu-images/languages/nmi.pot @@ -0,0 +1,71 @@ +# Copyright (C) 2013 Nav Menu Images +# This file is distributed under the same license as the Nav Menu Images package. +msgid "" +msgstr "" +"Project-Id-Version: Nav Menu Images 3.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/nav-menu-images\n" +"POT-Creation-Date: 2013-03-26 16:01:26+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#: inc/admin.php:83 +msgid "" +"You need to set an image as a featured image to be able to use it as an menu " +"item image" +msgstr "" + +#: inc/admin.php:167 inc/walker.php:84 +msgid "Upload menu item image" +msgstr "" + +#: inc/admin.php:174 inc/walker.php:75 +msgid "Change menu item image" +msgstr "" + +#: inc/admin.php:176 inc/walker.php:80 +msgid "Remove menu item image" +msgstr "" + +#: inc/admin.php:221 +msgid "Used on hover?" +msgstr "" + +#: inc/admin.php:225 +msgid "Should this image be used on hover" +msgstr "" + +#: inc/admin.php:235 +msgid "Used when active?" +msgstr "" + +#: inc/admin.php:239 +msgid "Should this image be used when menu item is active" +msgstr "" + +#: nav-menu-images.php:320 +msgid "Donate" +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "Nav Menu Images" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://blog.milandinic.com/wordpress/plugins/nav-menu-images/" +msgstr "" + +#. Description of the plugin/theme +msgid "Display image as a menu content." +msgstr "" + +#. Author of the plugin/theme +msgid "Milan Dinić" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://blog.milandinic.com/" +msgstr "" diff --git a/inc/plugins/nav-menu-images/nav-menu-images.php b/inc/plugins/nav-menu-images/nav-menu-images.php new file mode 100755 index 0000000..1f75cd8 --- /dev/null +++ b/inc/plugins/nav-menu-images/nav-menu-images.php @@ -0,0 +1,336 @@ +plugin_basename = plugin_basename( __FILE__ ); + } + + /** + * Register actions & filters on init. + * + * @since 1.0 + * @access public + * + * @uses add_post_type_support() To enable thumbs for nav menu. + * @uses is_admin() To see if it's admin area. + * @uses Nav_Menu_Images_Admin() To call admin functions. + * @uses add_action() To hook function. + * @uses apply_filters() Calls 'nmi_filter_menu_item_content' to + * overwrite menu item filter. + * @uses add_filter() To hook filters. + * @uses do_action() Calls 'nmi_init'. + */ + public function init() { + // Add thumbnail support to menus + add_post_type_support( 'nav_menu_item', 'thumbnail' ); + + // Load admin file + if ( is_admin() ) { + require_once dirname( __FILE__ ) . '/inc/admin.php'; + new Nav_Menu_Images_Admin(); + } + + // Register AJAX handler + add_action( 'wp_ajax_nmi_added_thumbnail', array( &$this, 'ajax_added_thumbnail' ) ); + + // Register menu item content filter if needed + if ( apply_filters( 'nmi_filter_menu_item_content', true ) ) { + add_filter( 'nav_menu_css_class', array( &$this, 'register_menu_item_filter' ), 15, 3 ); + add_filter( 'walker_nav_menu_start_el', array( &$this, 'deregister_menu_item_filter' ), 15, 2 ); + } + + // Register plugins action links filter + add_filter( 'plugin_action_links_' . $this->plugin_basename, array( $this, 'action_links' ) ); + add_filter( 'network_admin_plugin_action_links_' . $this->plugin_basename, array( $this, 'action_links' ) ); + + do_action( 'nmi_init' ); + } + + /** + * Load textdomain for internationalization. + * + * @since 1.0 + * @access public + * + * @uses is_textdomain_loaded() To check if translation is loaded. + * @uses load_plugin_textdomain() To load translation file. + * @uses plugin_basename() To get plugin's file name. + */ + public function load_textdomain() { + /* If translation isn't loaded, load it */ + if ( ! is_textdomain_loaded( 'nmi' ) ) + load_plugin_textdomain( 'nmi', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); + } + + /** + * Return thumbnail's HTML after addition. + * + * @since 1.0 + * @access public + * + * @uses absint() To get positive integer. + * @uses has_post_thumbnail() To check if item has thumb. + * @uses admin_url() To get URL of uploader. + * @uses esc_url() To escape URL. + * @uses add_query_arg() To append variables to URL. + * @uses get_the_post_thumbnail() To get item's thumb. + */ + public function ajax_added_thumbnail() { + // Get submitted values + $post_id = isset( $_POST[ 'post_id' ] ) ? absint( $_POST[ 'post_id' ] ) : 0; + $thumbnail_id = isset( $_POST[ 'thumbnail_id' ] ) ? absint( $_POST[ 'thumbnail_id' ] ) : 0; + + // If there aren't values, exit + if ( 0 == $post_id || 0 == $thumbnail_id ) + die( '0' ); + + // If there isn't featured image, exit + if ( ! has_post_thumbnail( $post_id ) ) + die( '1' ); + + // Form upload link + $upload_url = admin_url( 'media-upload.php' ); + $query_args = array( + 'post_id' => $post_id, + 'tab' => 'gallery', + 'TB_iframe' => '1', + 'width' => '640', + 'height' => '425' + ); + $upload_url = esc_url( add_query_arg( $query_args, $upload_url ) ); + + // Item's featured image + $post_thumbnail = get_the_post_thumbnail( $post_id, 'thumb' ); + + // Full HTML + $return_html = '' . $post_thumbnail . ''; + + die( $return_html ); + } + + /** + * Display an image as menu item content. + * + * @since 1.0 + * @access public + * + * @uses has_post_thumbnail() To check if item has thumb. + * @uses apply_filters() Calls 'nmi_menu_item_content' to + * filter outputted content. + * @uses get_the_post_thumbnail() To get item's thumb. + * + * @param string $content Item's content + * @param int $item_id Item's ID + * @return string $content Item's content + */ + public function menu_item_content( $content, $item_id ) { + if ( has_post_thumbnail( $item_id ) ) + $content = apply_filters( 'nmi_menu_item_content', get_the_post_thumbnail( $item_id, 'full', array( 'alt' => $content, 'title' => $content ) ), $item_id, $content ); + + return $content; + } + + /** + * Display a hover image for menu item image. + * + * @since 3.0 + * @access public + * + * Thanks {@link http://www.webmasterworld.com/forum21/6615.htm} + * + * @uses get_post_meta() To get item's hover & active images IDs. + * @uses wp_get_attachment_image_src() To get hover image's data. + * @uses apply_filters() Calls 'nmi_menu_item_hover' to + * filter returned attributes. + * + * @param array $attr Image's attributes. + * @param object $attachment Image's post object data. + * @return array $attr New image's attributes. + */ + public function menu_item_hover( $attr, $attachment ) { + if ( ( $hover_id = get_post_meta( $attachment->post_parent, '_nmi_hover', true ) ) && ! ( $this->is_current_item && get_post_meta( $attachment->post_parent, '_nmi_active', true ) ) ) { + $image = wp_get_attachment_image_src( $hover_id, 'full', false ); + $url = $image[0]; + $src = $attr['src']; + $attr['onmouseover'] = 'this.src=\'' . $url . '\''; + $attr['onmouseout'] = 'this.src=\'' . $src . '\''; + + $attr = apply_filters( 'nmi_menu_item_hover', $attr, $attachment ); + } + + return $attr; + } + + /** + * Display an active image for menu item. + * + * @since 3.0 + * @access public + * + * @uses get_post_meta() To get item's active image ID. + * @uses wp_get_attachment_image_src() To get active image's data. + * @uses apply_filters() Calls 'nmi_menu_item_active' to + * filter returned attributes. + * + * @param array $attr Image's attributes. + * @param object $attachment Image's post object data. + * @return array $attr New image's attributes. + */ + public function menu_item_active( $attr, $attachment ) { + if ( $this->is_current_item && ( $active_id = get_post_meta( $attachment->post_parent, '_nmi_active', true ) ) ) { + $image = wp_get_attachment_image_src( $active_id, 'full', false ); + $url = $image[0]; + $attr['src'] = $url; + + $attr = apply_filters( 'nmi_menu_item_active', $attr, $attachment ); + } + + return $attr; + } + + /** + * Register menu item content filter. + * + * Also check if menu item is of + * currently displayed page. + * + * @since 1.0 + * @access public + * + * @uses has_post_thumbnail() To check if item has thumb. + * @uses add_filter() To hook filter. + * + * @param array $item_classes Item's classes. + * @param object $item Menu item data object. + * @param object $args Item's arguments. + * @return array $item_classes Item's classes. + */ + public function register_menu_item_filter( $item_classes, $item, $args ) { + if ( has_post_thumbnail( $item->ID ) ) { + // Register filters + add_filter( 'the_title', array( &$this, 'menu_item_content' ), 15, 2 ); + add_filter( 'wp_get_attachment_image_attributes', array( &$this, 'menu_item_hover' ), 15, 2 ); + add_filter( 'wp_get_attachment_image_attributes', array( &$this, 'menu_item_active' ), 15, 2 ); + + // Mark current item status + if ( in_array( 'current-menu-item', $item_classes ) ) + $this->is_current_item = true; + else + $this->is_current_item = false; + } + + return $item_classes; + } + + /** + * Deregister menu item content filter. + * + * @since 1.0 + * @access public + * + * @uses remove_filter() To unhook filter. + * + * @param string $item_output Item's content + * @param object $item Menu item data object. + * @return string $item_output Item's content + */ + public function deregister_menu_item_filter( $item_output, $item ) { + remove_filter( 'the_title', array( &$this, 'menu_item_content' ), 15, 2 ); + remove_filter( 'wp_get_attachment_image_attributes', array( &$this, 'menu_item_hover' ), 15, 2 ); + remove_filter( 'wp_get_attachment_image_attributes', array( &$this, 'menu_item_active' ), 15, 2 ); + + return $item_output; + } + + /** + * Add action links to plugins page. + * + * @since 1.0 + * @access public + * + * @uses Nav_Menu_Images::load_textdomain() To load translations. + * + * @param array $link Plugin's action links. + * @return array $link Plugin's action links. + */ + public function action_links( $links ) { + // Load translations + $this->load_textdomain(); + + $links['donate'] = '' . __( 'Donate', 'nmi' ) . ''; + return $links; + } +} + +/** + * Initialize a plugin. + * + * Load class when all plugins are loaded + * so that other plugins can overwrite it. + * + * @since 1.0 + * + * @uses Nav_Menu_Images To initialize plugin. + */ + diff --git a/inc/plugins/nav-menu-images/readme.txt b/inc/plugins/nav-menu-images/readme.txt new file mode 100755 index 0000000..3c9b8b2 --- /dev/null +++ b/inc/plugins/nav-menu-images/readme.txt @@ -0,0 +1,55 @@ +=== Nav Menu Images === +Contributors: dimadin +Donate link: http://blog.milandinic.com/donate/ +Tags: nav menu, menu, media, image +Requires at least: 3.1 +Tested up to: 3.5.1 +Stable tag: 3.0 + +Display image as a menu item content. + +== Description == + +[Plugin homepage](http://blog.milandinic.com/wordpress/plugins/nav-menu-images/) | [Plugin author](http://blog.milandinic.com/) | [Donate](http://blog.milandinic.com/donate/) + +This plugin enables you to upload images for nav menu items on a menu edit screen. By default, those images will be displayed instead of text for respective menu items. Note that after upload, you should set an image as 'featured' to be able to display it. + +You can also set images that will be displayed only when you hover menu item, or when menu item is of currently displayed page. See screenshots to get an idea how to do this. + +Developers can use many available filters to make their own way of displaying images, or even create a child class on top of base one. See source code for more ideas. + +Although this plugin displays uploaded images out of the box, it will probably not give best possible look, so it's recommended to create custom CSS styles for affected elements. + +Nav Menu Images code is partly based on a code from now defunct plugin Custom Menu Images by [Anabelle Handdoek +](http://huellaspyp.com/)/[∞manos s.a.s](http://8manos.com/) and a code from plugin [Metronet Profile Picture](http://wordpress.org/extend/plugins/metronet-profile-picture/) by [Ronald Huereca](http://www.ronalfy.com/)/[Metronet Norge AS](http://www.metronet.no/). + +== Installation == + +Either install the plugin via the WordPress admin panel, or ... + +1. Upload `nav-menu-images` folder to the `/wp-content/plugins/` directory +2. Activate the plugin through the 'Plugins' menu in WordPress + +There are no configuration options in this plugin. + +== Screenshots == + +1. Link to upload form on nav menu item's edit screen +2. Setting featured image from media modal screen +3. Uploaded image on nav menu item's edit screen +4. Setting image used on hover from media modal screen + +== Changelog == + += 3.0 = +* Released on 26th March 2013 +* Add support for active and hover menu item images + += 2.0 = +* Released on 11th February 2013 +* Use new media views for WordPress 3.5+ +* Add more hooks for developers + += 1.0 = +* Released on 22nd October 2012 +* Initial release \ No newline at end of file diff --git a/inc/template-tags.php b/inc/template-tags.php new file mode 100755 index 0000000..c4fde65 --- /dev/null +++ b/inc/template-tags.php @@ -0,0 +1,174 @@ +post_parent ) : get_adjacent_post( false, '', true ); + $next = get_adjacent_post( false, '', false ); + + if ( ! $next && ! $previous ) + return; + } + + // Don't print empty markup in archives if there's only one page. + if ( $wp_query->max_num_pages < 2 && ( is_home() || is_archive() || is_search() ) ) + return; + + $nav_class = 'site-navigation paging-navigation'; + if ( is_single() ) + $nav_class = 'site-navigation post-navigation'; + + ?> +
    ', '%title ' . _x( '→', 'Next post link', 'symbol' ) . '' ); ?> + + max_num_pages > 1 && ( is_home() || is_archive() || is_search() ) ) : // navigation links for home, archive, and search pages ?> + + + + + + + + + + +
    + + comment_type ) : + case 'pingback' : + case 'trackback' : + ?> +
  • +

    + +
  • id="li-comment-"> +
    +
    +
    + + says:', 'symbol' ), sprintf( '%s', get_comment_author_link() ) ); ?> +
    + comment_approved == '0' ) : ?> + +
    + + + +
    + +
    + +
    + $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> +
    +
    + + ', 'symbol' ), + esc_url( get_permalink() ), + esc_attr( get_the_time() ), + esc_attr( get_the_date( 'c' ) ), + esc_html( get_the_date() ), + esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), + esc_attr( sprintf( __( 'View all posts by %s', 'symbol' ), get_the_author() ) ), + esc_html( get_the_author() ) + ); +} +endif; + +/** + * Returns true if a blog has more than 1 category + * + * @since Symbol 1.0 + */ +function symbol_categorized_blog() { + if ( false === ( $all_the_cool_cats = get_transient( 'all_the_cool_cats' ) ) ) { + // Create an array of all the categories that are attached to posts + $all_the_cool_cats = get_categories( array( + 'hide_empty' => 1, + ) ); + + // Count the number of categories that are attached to the posts + $all_the_cool_cats = count( $all_the_cool_cats ); + + set_transient( 'all_the_cool_cats', $all_the_cool_cats ); + } + + if ( '1' != $all_the_cool_cats ) { + // This blog has more than 1 category so symbol_categorized_blog should return true + return true; + } else { + // This blog has only 1 category so symbol_categorized_blog should return false + return false; + } +} + +/** + * Flush out the transients used in symbol_categorized_blog + * + * @since Symbol 1.0 + */ +function symbol_category_transient_flusher() { + // Like, beat it. Dig? + delete_transient( 'all_the_cool_cats' ); +} +add_action( 'edit_category', 'symbol_category_transient_flusher' ); +add_action( 'save_post', 'symbol_category_transient_flusher' ); \ No newline at end of file diff --git a/inc/tweaks.php b/inc/tweaks.php new file mode 100755 index 0000000..1351e2b --- /dev/null +++ b/inc/tweaks.php @@ -0,0 +1,52 @@ +post_parent ) && $image->post_parent != $id ) + $url .= '#main'; + + return $url; +} +add_filter( 'attachment_link', 'symbol_enhanced_image_navigation', 10, 2 ); \ No newline at end of file diff --git a/index.php b/index.php new file mode 100755 index 0000000..a06e910 --- /dev/null +++ b/index.php @@ -0,0 +1,52 @@ + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + +max_num_pages > 1 ) : ?> + + + + + \ No newline at end of file diff --git a/js/.DS_Store b/js/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}"; +c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a"); +var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a, +b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d + * This file could be used by goodle code to allow syntax highlight for + * Virtual AGC SVN repository or if you don't want to commonize + * the header for the agc/aea html assembly listing. + * + * @author ohommes@alumni.cmu.edu + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // A line comment that starts with ; + [PR['PR_COMMENT'], /^#[^\r\n]*/, null, '#'], + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double quoted, possibly multi-line, string. + [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] + ], + [ + [PR['PR_KEYWORD'], /^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,null], + [PR['PR_TYPE'], /^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null], + // A single quote possibly followed by a word that optionally ends with + // = ! or ?. + [PR['PR_LITERAL'], + /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/], + // Any word including labels that optionally ends with = ! or ?. + [PR['PR_PLAIN'], + /^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i], + // A printable non-space non-special character + [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0()\"\\\';]+/] + ]), + ['apollo', 'agc', 'aea']); diff --git a/js/prettify/lang-clj.js b/js/prettify/lang-clj.js new file mode 100755 index 0000000..0758335 --- /dev/null +++ b/js/prettify/lang-clj.js @@ -0,0 +1,64 @@ +/** + * @license Copyright (C) 2011 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview + * Registers a language handler for Clojure. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
    (my lisp code)
    + * The lang-cl class identifies the language as common lisp. + * This file supports the following language extensions: + * lang-clj - Clojure + * + * + * I used lang-lisp.js as the basis for this adding the clojure specific + * keywords and syntax. + * + * "Name" = 'Clojure' + * "Author" = 'Rich Hickey' + * "Version" = '1.2' + * "About" = 'Clojure is a lisp for the jvm with concurrency primitives and a richer set of types.' + * + * + * I used Clojure.org Reference as + * the basis for the reserved word list. + * + * + * @author jwall@google.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // clojure has more paren types than minimal lisp. + ['opn', /^[\(\{\[]+/, null, '([{'], + ['clo', /^[\)\}\]]+/, null, ')]}'], + // A line comment that starts with ; + [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'], + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double quoted, possibly multi-line, string. + [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] + ], + [ + // clojure has a much larger set of keywords + [PR['PR_KEYWORD'], /^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/, null], + [PR['PR_TYPE'], /^:[0-9a-zA-Z\-]+/] + ]), + ['clj']); diff --git a/js/prettify/lang-css.js b/js/prettify/lang-css.js new file mode 100755 index 0000000..034bd59 --- /dev/null +++ b/js/prettify/lang-css.js @@ -0,0 +1,78 @@ +// Copyright (C) 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for CSS. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
    
    + *
    + *
    + * http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
    + * grammar.  This scheme does not recognize keywords containing escapes.
    + *
    + * @author mikesamuel@gmail.com
    + */
    +
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer'](
    +        [
    +         // The space production 
    +         [PR['PR_PLAIN'],       /^[ \t\r\n\f]+/, null, ' \t\r\n\f']
    +        ],
    +        [
    +         // Quoted strings.   and 
    +         [PR['PR_STRING'],
    +          /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null],
    +         [PR['PR_STRING'],
    +          /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null],
    +         ['lang-css-str', /^url\(([^\)\"\']*)\)/i],
    +         [PR['PR_KEYWORD'],
    +          /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
    +          null],
    +         // A property name -- an identifier followed by a colon.
    +         ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
    +         // A C style block comment.  The  production.
    +         [PR['PR_COMMENT'], /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
    +         // Escaping text spans
    +         [PR['PR_COMMENT'], /^(?:)/],
    +         // A number possibly containing a suffix.
    +         [PR['PR_LITERAL'], /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
    +         // A hex color
    +         [PR['PR_LITERAL'], /^#(?:[0-9a-f]{3}){1,2}/i],
    +         // An identifier
    +         [PR['PR_PLAIN'],
    +          /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],
    +         // A run of punctuation
    +         [PR['PR_PUNCTUATION'], /^[^\s\w\'\"]+/]
    +        ]),
    +    ['css']);
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer']([],
    +        [
    +         [PR['PR_KEYWORD'],
    +          /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]
    +        ]),
    +    ['css-kw']);
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer']([],
    +        [
    +         [PR['PR_STRING'], /^[^\)\"\']+/]
    +        ]),
    +    ['css-str']);
    diff --git a/js/prettify/lang-go.js b/js/prettify/lang-go.js
    new file mode 100755
    index 0000000..f329e29
    --- /dev/null
    +++ b/js/prettify/lang-go.js
    @@ -0,0 +1,58 @@
    +// Copyright (C) 2010 Google Inc.
    +//
    +// Licensed under the Apache License, Version 2.0 (the "License");
    +// you may not use this file except in compliance with the License.
    +// You may obtain a copy of the License at
    +//
    +//      http://www.apache.org/licenses/LICENSE-2.0
    +//
    +// Unless required by applicable law or agreed to in writing, software
    +// distributed under the License is distributed on an "AS IS" BASIS,
    +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +// See the License for the specific language governing permissions and
    +// limitations under the License.
    +
    +
    +
    +/**
    + * @fileoverview
    + * Registers a language handler for the Go language..
    + * 

    + * Based on the lexical grammar at + * http://golang.org/doc/go_spec.html#Lexical_elements + *

    + * Go uses a minimal style for highlighting so the below does not distinguish + * strings, keywords, literals, etc. by design. + * From a discussion with the Go designers: + *

    + * On Thursday, July 22, 2010, Mike Samuel <...> wrote:
    + * > On Thu, Jul 22, 2010, Rob 'Commander' Pike <...> wrote:
    + * >> Personally, I would vote for the subdued style godoc presents at http://golang.org
    + * >>
    + * >> Not as fancy as some like, but a case can be made it's the official style.
    + * >> If people want more colors, I wouldn't fight too hard, in the interest of
    + * >> encouragement through familiarity, but even then I would ask to shy away
    + * >> from technicolor starbursts.
    + * >
    + * > Like http://golang.org/pkg/go/scanner/ where comments are blue and all
    + * > other content is black?  I can do that.
    + * 
    + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // Whitespace is made up of spaces, tabs and newline characters. + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // Not escaped as a string. See note on minimalism above. + [PR['PR_PLAIN'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])+(?:\'|$)|`[^`]*(?:`|$))/, null, '"\''] + ], + [ + // Block comments are delimited by /* and */. + // Single-line comments begin with // and extend to the end of a line. + [PR['PR_COMMENT'], /^(?:\/\/[^\r\n]*|\/\*[\s\S]*?\*\/)/], + [PR['PR_PLAIN'], /^(?:[^\/\"\'`]|\/(?![\/\*]))+/i] + ]), + ['go']); diff --git a/js/prettify/lang-hs.js b/js/prettify/lang-hs.js new file mode 100755 index 0000000..4a15cf0 --- /dev/null +++ b/js/prettify/lang-hs.js @@ -0,0 +1,101 @@ +// Copyright (C) 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for Haskell. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
    (my lisp code)
    + * The lang-cl class identifies the language as common lisp. + * This file supports the following language extensions: + * lang-cl - Common Lisp + * lang-el - Emacs Lisp + * lang-lisp - Lisp + * lang-scm - Scheme + * + * + * I used http://www.informatik.uni-freiburg.de/~thiemann/haskell/haskell98-report-html/syntax-iso.html + * as the basis, but ignore the way the ncomment production nests since this + * makes the lexical grammar irregular. It might be possible to support + * ncomments using the lookbehind filter. + * + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // Whitespace + // whitechar -> newline | vertab | space | tab | uniWhite + // newline -> return linefeed | return | linefeed | formfeed + [PR['PR_PLAIN'], /^[\t\n\x0B\x0C\r ]+/, null, '\t\n\x0B\x0C\r '], + // Single line double and single-quoted strings. + // char -> ' (graphic<' | \> | space | escape<\&>) ' + // string -> " {graphic<" | \> | space | escape | gap}" + // escape -> \ ( charesc | ascii | decimal | o octal + // | x hexadecimal ) + // charesc -> a | b | f | n | r | t | v | \ | " | ' | & + [PR['PR_STRING'], /^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/, + null, '"'], + [PR['PR_STRING'], /^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/, + null, "'"], + // decimal -> digit{digit} + // octal -> octit{octit} + // hexadecimal -> hexit{hexit} + // integer -> decimal + // | 0o octal | 0O octal + // | 0x hexadecimal | 0X hexadecimal + // float -> decimal . decimal [exponent] + // | decimal exponent + // exponent -> (e | E) [+ | -] decimal + [PR['PR_LITERAL'], + /^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i, + null, '0123456789'] + ], + [ + // Haskell does not have a regular lexical grammar due to the nested + // ncomment. + // comment -> dashes [ any {any}] newline + // ncomment -> opencom ANYseq {ncomment ANYseq}closecom + // dashes -> '--' {'-'} + // opencom -> '{-' + // closecom -> '-}' + [PR['PR_COMMENT'], /^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/], + // reservedid -> case | class | data | default | deriving | do + // | else | if | import | in | infix | infixl | infixr + // | instance | let | module | newtype | of | then + // | type | where | _ + [PR['PR_KEYWORD'], /^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, null], + // qvarid -> [ modid . ] varid + // qconid -> [ modid . ] conid + // varid -> (small {small | large | digit | ' }) + // conid -> large {small | large | digit | ' } + // modid -> conid + // small -> ascSmall | uniSmall | _ + // ascSmall -> a | b | ... | z + // uniSmall -> any Unicode lowercase letter + // large -> ascLarge | uniLarge + // ascLarge -> A | B | ... | Z + // uniLarge -> any uppercase or titlecase Unicode letter + [PR['PR_PLAIN'], /^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/], + // matches the symbol production + [PR['PR_PUNCTUATION'], /^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/] + ]), + ['hs']); diff --git a/js/prettify/lang-lisp.js b/js/prettify/lang-lisp.js new file mode 100755 index 0000000..3bf75d7 --- /dev/null +++ b/js/prettify/lang-lisp.js @@ -0,0 +1,93 @@ +// Copyright (C) 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for Common Lisp and related languages. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
    (my lisp code)
    + * The lang-cl class identifies the language as common lisp. + * This file supports the following language extensions: + * lang-cl - Common Lisp + * lang-el - Emacs Lisp + * lang-lisp - Lisp + * lang-scm - Scheme + * + * + * I used http://www.devincook.com/goldparser/doc/meta-language/grammar-LISP.htm + * as the basis, but added line comments that start with ; and changed the atom + * production to disallow unquoted semicolons. + * + * "Name" = 'LISP' + * "Author" = 'John McCarthy' + * "Version" = 'Minimal' + * "About" = 'LISP is an abstract language that organizes ALL' + * | 'data around "lists".' + * + * "Start Symbol" = [s-Expression] + * + * {Atom Char} = {Printable} - {Whitespace} - [()"\''] + * + * Atom = ( {Atom Char} | '\'{Printable} )+ + * + * [s-Expression] ::= [Quote] Atom + * | [Quote] '(' [Series] ')' + * | [Quote] '(' [s-Expression] '.' [s-Expression] ')' + * + * [Series] ::= [s-Expression] [Series] + * | + * + * [Quote] ::= '' !Quote = do not evaluate + * | + * + * + * I used Practical Common Lisp as + * the basis for the reserved word list. + * + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + ['opn', /^\(+/, null, '('], + ['clo', /^\)+/, null, ')'], + // A line comment that starts with ; + [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'], + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double quoted, possibly multi-line, string. + [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] + ], + [ + [PR['PR_KEYWORD'], /^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, null], + [PR['PR_LITERAL'], + /^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i], + // A single quote possibly followed by a word that optionally ends with + // = ! or ?. + [PR['PR_LITERAL'], + /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/], + // A word that optionally ends with = ! or ?. + [PR['PR_PLAIN'], + /^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i], + // A printable non-space non-special character + [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0()\"\\\';]+/] + ]), + ['cl', 'el', 'lisp', 'scm']); diff --git a/js/prettify/lang-lua.js b/js/prettify/lang-lua.js new file mode 100755 index 0000000..7a3f976 --- /dev/null +++ b/js/prettify/lang-lua.js @@ -0,0 +1,59 @@ +// Copyright (C) 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for Lua. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
    (my Lua code)
    + * + * + * I used http://www.lua.org/manual/5.1/manual.html#2.1 + * Because of the long-bracket concept used in strings and comments, Lua does + * not have a regular lexical grammar, but luckily it fits within the space + * of irregular grammars supported by javascript regular expressions. + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double or single quoted, possibly multi-line, string. + [PR['PR_STRING'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/, null, '"\''] + ], + [ + // A comment is either a line comment that starts with two dashes, or + // two dashes preceding a long bracketed block. + [PR['PR_COMMENT'], /^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/], + // A long bracketed block not preceded by -- is a string. + [PR['PR_STRING'], /^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/], + [PR['PR_KEYWORD'], /^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/, null], + // A number is a hex integer literal, a decimal real literal, or in + // scientific notation. + [PR['PR_LITERAL'], + /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], + // An identifier + [PR['PR_PLAIN'], /^[a-z_]\w*/i], + // A run of punctuation + [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/] + ]), + ['lua']); diff --git a/js/prettify/lang-ml.js b/js/prettify/lang-ml.js new file mode 100755 index 0000000..b5a4c17 --- /dev/null +++ b/js/prettify/lang-ml.js @@ -0,0 +1,56 @@ +// Copyright (C) 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for OCaml, SML, F# and similar languages. + * + * Based on the lexical grammar at + * http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc270597388 + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // Whitespace is made up of spaces, tabs and newline characters. + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // #if ident/#else/#endif directives delimit conditional compilation + // sections + [PR['PR_COMMENT'], + /^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i, + null, '#'], + // A double or single quoted, possibly multi-line, string. + // F# allows escaped newlines in strings. + [PR['PR_STRING'], /^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/, null, '"\''] + ], + [ + // Block comments are delimited by (* and *) and may be + // nested. Single-line comments begin with // and extend to + // the end of a line. + // TODO: (*...*) comments can be nested. This does not handle that. + [PR['PR_COMMENT'], /^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/], + [PR['PR_KEYWORD'], /^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/], + // A number is a hex integer literal, a decimal real literal, or in + // scientific notation. + [PR['PR_LITERAL'], + /^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], + [PR['PR_PLAIN'], /^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i], + // A printable non-space non-special character + [PR['PR_PUNCTUATION'], /^[^\t\n\r \xA0\"\'\w]+/] + ]), + ['fs', 'ml']); diff --git a/js/prettify/lang-n.js b/js/prettify/lang-n.js new file mode 100755 index 0000000..babe8f3 --- /dev/null +++ b/js/prettify/lang-n.js @@ -0,0 +1,62 @@ +// Copyright (C) 2011 Zimin A.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * Registers a language handler for the Nemerle language. + * http://nemerle.org + * @author Zimin A.V. + */ +(function () { + var keywords = 'abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|' + + 'fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|' + + 'null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|' + + 'syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|' + + 'assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|' + + 'otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield'; + + var shortcutStylePatterns = [ + [PR.PR_STRING, /^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, '"'], + [PR.PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, null, '#'], + [PR.PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0'] + ]; + + var fallthroughStylePatterns = [ + [PR.PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null], + [PR.PR_STRING, /^<#(?:[^#>])*(?:#>|$)/, null], + [PR.PR_STRING, /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, null], + [PR.PR_COMMENT, /^\/\/[^\r\n]*/, null], + [PR.PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null], + [PR.PR_KEYWORD, new RegExp('^(?:' + keywords + ')\\b'), null], + [PR.PR_TYPE, /^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/, null], + [PR.PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null], + [PR.PR_TYPE, /^@[A-Z]+[a-z][A-Za-z_$@0-9]*/, null], + [PR.PR_PLAIN, /^'?[A-Za-z_$][a-z_$@0-9]*/i, null], + [PR.PR_LITERAL, new RegExp( + '^(?:' + // A hex number + + '0x[a-f0-9]+' + // or an octal or decimal number, + + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)' + // possibly in scientific notation + + '(?:e[+\\-]?\\d+)?' + + ')' + // with an optional modifier like UL for unsigned long + + '[a-z]*', 'i'), null, '0123456789'], + + [PR.PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null] + ]; + PR.registerLangHandler(PR.createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns), ['n', 'nemerle']); +})(); diff --git a/js/prettify/lang-proto.js b/js/prettify/lang-proto.js new file mode 100755 index 0000000..5395491 --- /dev/null +++ b/js/prettify/lang-proto.js @@ -0,0 +1,35 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * Registers a language handler for Protocol Buffers as described at + * http://code.google.com/p/protobuf/. + * + * Based on the lexical grammar at + * http://research.microsoft.com/fsharp/manual/spec2.aspx#_Toc202383715 + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler'](PR['sourceDecorator']({ + 'keywords': ( + 'bytes,default,double,enum,extend,extensions,false,' + + 'group,import,max,message,option,' + + 'optional,package,repeated,required,returns,rpc,service,' + + 'syntax,to,true'), + 'types': /^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/, + 'cStyleComments': true + }), ['proto']); diff --git a/js/prettify/lang-scala.js b/js/prettify/lang-scala.js new file mode 100755 index 0000000..db9b484 --- /dev/null +++ b/js/prettify/lang-scala.js @@ -0,0 +1,54 @@ +// Copyright (C) 2010 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * Registers a language handler for Scala. + * + * Derived from http://lampsvn.epfl.ch/svn-repos/scala/scala-documentation/trunk/src/reference/SyntaxSummary.tex + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double or single quoted string + // or a triple double-quoted multi-line string. + [PR['PR_STRING'], + /^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/, + null, '"'], + [PR['PR_LITERAL'], /^`(?:[^\r\n\\`]|\\.)*`?/, null, '`'], + [PR['PR_PUNCTUATION'], /^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/, null, + '!#%&()*+,-:;<=>?@[\\]^{|}~'] + ], + [ + // A symbol literal is a single quote followed by an identifier with no + // single quote following + // A character literal has single quotes on either side + [PR['PR_STRING'], /^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/], + [PR['PR_LITERAL'], /^'[a-zA-Z_$][\w$]*(?!['$\w])/], + [PR['PR_KEYWORD'], /^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/], + [PR['PR_LITERAL'], /^(?:true|false|null|this)\b/], + [PR['PR_LITERAL'], /^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i], + // Treat upper camel case identifiers as types. + [PR['PR_TYPE'], /^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/], + [PR['PR_PLAIN'], /^[$a-zA-Z_][\w$]*/], + [PR['PR_COMMENT'], /^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/], + [PR['PR_PUNCTUATION'], /^(?:\.+|\/)/] + ]), + ['scala']); diff --git a/js/prettify/lang-sql.js b/js/prettify/lang-sql.js new file mode 100755 index 0000000..a4adec8 --- /dev/null +++ b/js/prettify/lang-sql.js @@ -0,0 +1,57 @@ +// Copyright (C) 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for SQL. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
    (my SQL code)
    + * + * + * http://savage.net.au/SQL/sql-99.bnf.html is the basis for the grammar, and + * http://msdn.microsoft.com/en-us/library/aa238507(SQL.80).aspx as the basis + * for the keyword list. + * + * @author mikesamuel@gmail.com + */ + +PR['registerLangHandler']( + PR['createSimpleLexer']( + [ + // Whitespace + [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // A double or single quoted, possibly multi-line, string. + [PR['PR_STRING'], /^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/, null, + '"\''] + ], + [ + // A comment is either a line comment that starts with two dashes, or + // two dashes preceding a long bracketed block. + [PR['PR_COMMENT'], /^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/], + [PR['PR_KEYWORD'], /^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|MATCH|MERGE|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|USING|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i, null], + // A number is a hex integer literal, a decimal real literal, or in + // scientific notation. + [PR['PR_LITERAL'], + /^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], + // An identifier + [PR['PR_PLAIN'], /^[a-z_][\w-]*/i], + // A run of punctuation + [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/] + ]), + ['sql']); diff --git a/js/prettify/lang-tex.js b/js/prettify/lang-tex.js new file mode 100755 index 0000000..57d0ac4 --- /dev/null +++ b/js/prettify/lang-tex.js @@ -0,0 +1,46 @@ +// Copyright (C) 2011 Martin S. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview + * Support for tex highlighting as discussed on + * meta.tex.stackexchange.com. + * + * @author Martin S. + */ + +PR.registerLangHandler( + PR.createSimpleLexer( + [ + // whitespace + [PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], + // all comments begin with '%' + [PR.PR_COMMENT, /^%[^\r\n]*/, null, '%'] + ], + [ + //[PR.PR_DECLARATION, /^\\([egx]?def|(new|renew|provide)(command|environment))\b/], + // any command starting with a \ and contains + // either only letters (a-z,A-Z), '@' (internal macros) + [PR.PR_KEYWORD, /^\\[a-zA-Z@]+/], + // or contains only one character + [PR.PR_KEYWORD, /^\\./], + // Highlight dollar for math mode and ampersam for tabular + [PR.PR_TYPE, /^[$&]/], + // numeric measurement values with attached units + [PR.PR_LITERAL, + /[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i], + // punctuation usually occurring within commands + [PR.PR_PUNCTUATION, /^[{}()\[\]=]+/] + ]), + ['latex', 'tex']); diff --git a/js/prettify/lang-vb.js b/js/prettify/lang-vb.js new file mode 100755 index 0000000..5fb4a38 --- /dev/null +++ b/js/prettify/lang-vb.js @@ -0,0 +1,61 @@ +// Copyright (C) 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for various flavors of basic. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *
    
    + *
    + *
    + * http://msdn.microsoft.com/en-us/library/aa711638(VS.71).aspx defines the
    + * visual basic grammar lexical grammar.
    + *
    + * @author mikesamuel@gmail.com
    + */
    +
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer'](
    +        [
    +         // Whitespace
    +         [PR['PR_PLAIN'],       /^[\t\n\r \xA0\u2028\u2029]+/, null, '\t\n\r \xA0\u2028\u2029'],
    +         // A double quoted string with quotes escaped by doubling them.
    +         // A single character can be suffixed with C.
    +         [PR['PR_STRING'],      /^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i, null,
    +          '"\u201C\u201D'],
    +         // A comment starts with a single quote and runs until the end of the
    +         // line.
    +         [PR['PR_COMMENT'],     /^[\'\u2018\u2019][^\r\n\u2028\u2029]*/, null, '\'\u2018\u2019']
    +        ],
    +        [
    +         [PR['PR_KEYWORD'], /^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, null],
    +         // A second comment form
    +         [PR['PR_COMMENT'], /^REM[^\r\n\u2028\u2029]*/i],
    +         // A boolean, numeric, or date literal.
    +         [PR['PR_LITERAL'],
    +          /^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],
    +         // An identifier?
    +         [PR['PR_PLAIN'], /^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],
    +         // A run of punctuation
    +         [PR['PR_PUNCTUATION'],
    +          /^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],
    +         // Square brackets
    +         [PR['PR_PUNCTUATION'], /^(?:\[|\])/]
    +        ]),
    +    ['vb', 'vbs']);
    diff --git a/js/prettify/lang-vhdl.js b/js/prettify/lang-vhdl.js
    new file mode 100755
    index 0000000..f6410bc
    --- /dev/null
    +++ b/js/prettify/lang-vhdl.js
    @@ -0,0 +1,34 @@
    +/**
    + * @fileoverview
    + * Registers a language handler for VHDL '93.
    + *
    + * Based on the lexical grammar and keywords at
    + * http://www.iis.ee.ethz.ch/~zimmi/download/vhdl93_syntax.html
    + *
    + * @author benoit@ryder.fr
    + */
    +
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer'](
    +        [
    +         // Whitespace
    +         [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0']
    +        ],
    +        [
    +         // String, character or bit string
    +         [PR['PR_STRING'], /^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],
    +         // Comment, from two dashes until end of line.
    +         [PR['PR_COMMENT'], /^--[^\r\n]*/],
    +         [PR['PR_KEYWORD'], /^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i, null],
    +         // Type, predefined or standard
    +         [PR['PR_TYPE'], /^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i, null],
    +         // Predefined attributes
    +         [PR['PR_TYPE'], /^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i, null],
    +         // Number, decimal or based literal
    +         [PR['PR_LITERAL'], /^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
    +         // Identifier, basic or extended
    +         [PR['PR_PLAIN'], /^(?:[a-z]\w*|\\[^\\]*\\)/i],
    +         // Punctuation
    +         [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]
    +        ]),
    +    ['vhdl', 'vhd']);
    diff --git a/js/prettify/lang-wiki.js b/js/prettify/lang-wiki.js
    new file mode 100755
    index 0000000..660423e
    --- /dev/null
    +++ b/js/prettify/lang-wiki.js
    @@ -0,0 +1,53 @@
    +// Copyright (C) 2009 Google Inc.
    +//
    +// Licensed under the Apache License, Version 2.0 (the "License");
    +// you may not use this file except in compliance with the License.
    +// You may obtain a copy of the License at
    +//
    +//      http://www.apache.org/licenses/LICENSE-2.0
    +//
    +// Unless required by applicable law or agreed to in writing, software
    +// distributed under the License is distributed on an "AS IS" BASIS,
    +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +// See the License for the specific language governing permissions and
    +// limitations under the License.
    +
    +
    +/**
    + * @fileoverview
    + * Registers a language handler for Wiki pages.
    + *
    + * Based on WikiSyntax at http://code.google.com/p/support/wiki/WikiSyntax
    + *
    + * @author mikesamuel@gmail.com
    + */
    +
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer'](
    +        [
    +         // Whitespace
    +         [PR['PR_PLAIN'],       /^[\t \xA0a-gi-z0-9]+/, null,
    +          '\t \xA0abcdefgijklmnopqrstuvwxyz0123456789'],
    +         // Wiki formatting
    +         [PR['PR_PUNCTUATION'], /^[=*~\^\[\]]+/, null, '=*~^[]']
    +        ],
    +        [
    +         // Meta-info like #summary, #labels, etc.
    +         ['lang-wiki.meta',  /(?:^^|\r\n?|\n)(#[a-z]+)\b/],
    +         // A WikiWord
    +         [PR['PR_LITERAL'],     /^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/
    +          ],
    +         // A preformatted block in an unknown language
    +         ['lang-',           /^\{\{\{([\s\S]+?)\}\}\}/],
    +         // A block of source code in an unknown language
    +         ['lang-',           /^`([^\r\n`]+)`/],
    +         // An inline URL.
    +         [PR['PR_STRING'],
    +          /^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],
    +         [PR['PR_PLAIN'],       /^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]
    +        ]),
    +    ['wiki']);
    +
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer']([[PR['PR_KEYWORD'], /^#[a-z]+/i, null, '#']], []),
    +    ['wiki.meta']);
    diff --git a/js/prettify/lang-xq.js b/js/prettify/lang-xq.js
    new file mode 100755
    index 0000000..38ffd72
    --- /dev/null
    +++ b/js/prettify/lang-xq.js
    @@ -0,0 +1,67 @@
    +// Copyright (C) 2011 Patrick Wied
    +//
    +// Licensed under the Apache License, Version 2.0 (the "License");
    +// you may not use this file except in compliance with the License.
    +// You may obtain a copy of the License at
    +//
    +//      http://www.apache.org/licenses/LICENSE-2.0
    +//
    +// Unless required by applicable law or agreed to in writing, software
    +// distributed under the License is distributed on an "AS IS" BASIS,
    +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +// See the License for the specific language governing permissions and
    +// limitations under the License.
    +
    +
    +
    +/**
    + * @fileoverview
    + * Registers a language handler for XQuery.
    + *
    + * To use, include prettify.js and this file in your HTML page.
    + * Then put your code in an HTML tag like
    + *      
    
    + *
    + *
    + * @author Patrick Wied ( patpa7p@live.de )
    + * @version 2010-09-28
    + */
    +
    +// Falls back to plain for stylesheets that don't style fun.
    +var PR_FUNCTION = 'fun pln';
    +// Falls back to plaiin for stylesheets that don't style var.
    +var PR_VARIABLE = 'var pln';
    +
    +PR['registerLangHandler'](
    +    PR['createSimpleLexer'](
    +        [
    +         // Matching $var-ia_bles
    +         [PR_VARIABLE, /^\$[A-Za-z0-9_\-]+/, null, "$"]
    +        ],
    +        [
    +         // Matching lt and gt operators
    +         // Not the best matching solution but you have to differentiate between the gt operator and the tag closing char
    +         [PR['PR_PLAIN'], /^[\s=][<>][\s=]/],
    +         // Matching @Attributes
    +         [PR['PR_LITERAL'], /^\@[\w-]+/],
    +         // Matching xml tags
    +         [PR['PR_TAG'], /^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
    +         // Matching single or multiline xquery comments -> (:  :)
    +         [PR['PR_COMMENT'], /^\(:[\s\S]*?:\)/],
    +         // Tokenizing /{}:=;*,[]() as plain
    +         [PR['PR_PLAIN'], /^[\/\{\};,\[\]\(\)]$/],
    +         // Matching a double or single quoted, possibly multi-line, string.
    +         // with the special condition that a { in a string changes to xquery context 
    +         [PR['PR_STRING'], /^(?:\"(?:[^\"\\\{]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\\{]|\\[\s\S])*(?:\'|$))/, null, '"\''],
    +         // Matching standard xquery keywords
    +         [PR['PR_KEYWORD'], /^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\b/],
    +         // Matching standard xquery types
    +         [PR['PR_TYPE'], /^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\b/, null],
    +         // Matching standard xquery functions
    +         [PR_FUNCTION, /^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\b/],
    +         // Matching normal words if none of the previous regular expressions matched
    +         [PR['PR_PLAIN'], /^[A-Za-z0-9_\-\:]+/],
    +         // Matching whitespaces
    +         [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/]
    +         ]),
    +    ['xq', 'xquery']);
    diff --git a/js/prettify/lang-yaml.js b/js/prettify/lang-yaml.js
    new file mode 100755
    index 0000000..c2e52b2
    --- /dev/null
    +++ b/js/prettify/lang-yaml.js
    @@ -0,0 +1,27 @@
    +// Contributed by ribrdb @ code.google.com
    +
    +/**
    + * @fileoverview
    + * Registers a language handler for YAML.
    + *
    + * @author ribrdb
    + */
    +
    +PR['registerLangHandler'](
    +  PR['createSimpleLexer'](
    +    [
    +      [PR['PR_PUNCTUATION'], /^[:|>?]+/, null, ':|>?'],
    +      [PR['PR_DECLARATION'],  /^%(?:YAML|TAG)[^#\r\n]+/, null, '%'],
    +      [PR['PR_TYPE'], /^[&]\S+/, null, '&'],
    +      [PR['PR_TYPE'], /^!\S*/, null, '!'],
    +      [PR['PR_STRING'], /^"(?:[^\\"]|\\.)*(?:"|$)/, null, '"'],
    +      [PR['PR_STRING'], /^'(?:[^']|'')*(?:'|$)/, null, "'"],
    +      [PR['PR_COMMENT'], /^#[^\r\n]*/, null, '#'],
    +      [PR['PR_PLAIN'], /^\s+/, null, ' \t\r\n']
    +    ],
    +    [
    +      [PR['PR_DECLARATION'], /^(?:---|\.\.\.)(?:[\r\n]|$)/],
    +      [PR['PR_PUNCTUATION'], /^-/],
    +      [PR['PR_KEYWORD'], /^\w+:[ \r\n]/],
    +      [PR['PR_PLAIN'], /^\w+/]
    +    ]), ['yaml', 'yml']);
    diff --git a/js/prettify/prettify.css b/js/prettify/prettify.css
    new file mode 100755
    index 0000000..400fd74
    --- /dev/null
    +++ b/js/prettify/prettify.css
    @@ -0,0 +1,52 @@
    +/* Pretty printing styles. Used with prettify.js. */
    +
    +/* SPAN elements with the classes below are added by prettyprint. */
    +.pln { color: #000 }  /* plain text */
    +
    +@media screen {
    +  .str { color: #080 }  /* string content */
    +  .kwd { color: #008 }  /* a keyword */
    +  .com { color: #800 }  /* a comment */
    +  .typ { color: #606 }  /* a type name */
    +  .lit { color: #066 }  /* a literal value */
    +  /* punctuation, lisp open bracket, lisp close bracket */
    +  .pun, .opn, .clo { color: #660 }
    +  .tag { color: #008 }  /* a markup tag name */
    +  .atn { color: #606 }  /* a markup attribute name */
    +  .atv { color: #080 }  /* a markup attribute value */
    +  .dec, .var { color: #606 }  /* a declaration; a variable name */
    +  .fun { color: red }  /* a function name */
    +}
    +
    +/* Use higher contrast and text-weight for printable form. */
    +@media print, projection {
    +  .str { color: #060 }
    +  .kwd { color: #006; font-weight: bold }
    +  .com { color: #600; font-style: italic }
    +  .typ { color: #404; font-weight: bold }
    +  .lit { color: #044 }
    +  .pun, .opn, .clo { color: #440 }
    +  .tag { color: #006; font-weight: bold }
    +  .atn { color: #404 }
    +  .atv { color: #060 }
    +}
    +
    +/* Put a border around prettyprinted code snippets. */
    +pre.prettyprint { padding: 2px; border: 1px solid #888 }
    +
    +/* Specify class=linenums on a pre to get line numbering */
    +ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
    +li.L0,
    +li.L1,
    +li.L2,
    +li.L3,
    +li.L5,
    +li.L6,
    +li.L7,
    +li.L8 { list-style-type: none }
    +/* Alternate shading for lines */
    +li.L1,
    +li.L3,
    +li.L5,
    +li.L7,
    +li.L9 { background: #eee }
    diff --git a/js/prettify/prettify.js b/js/prettify/prettify.js
    new file mode 100755
    index 0000000..037c26d
    --- /dev/null
    +++ b/js/prettify/prettify.js
    @@ -0,0 +1,1477 @@
    +// Copyright (C) 2006 Google Inc.
    +//
    +// Licensed under the Apache License, Version 2.0 (the "License");
    +// you may not use this file except in compliance with the License.
    +// You may obtain a copy of the License at
    +//
    +//      http://www.apache.org/licenses/LICENSE-2.0
    +//
    +// Unless required by applicable law or agreed to in writing, software
    +// distributed under the License is distributed on an "AS IS" BASIS,
    +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +// See the License for the specific language governing permissions and
    +// limitations under the License.
    +
    +
    +/**
    + * @fileoverview
    + * some functions for browser-side pretty printing of code contained in html.
    + *
    + * 

    + * For a fairly comprehensive set of languages see the + * README + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + *

    + * Usage:

      + *
    1. include this source file in an html page via + * {@code } + *
    2. define style rules. See the example page for examples. + *
    3. mark the {@code
      } and {@code } tags in your source with
      + *    {@code class=prettyprint.}
      + *    You can also use the (html deprecated) {@code } tag, but the pretty
      + *    printer needs to do more substantial DOM manipulations to support that, so
      + *    some css styles may not be preserved.
      + * </ol>
      + * That's it.  I wanted to keep the API as simple as possible, so there's no
      + * need to specify which language the code is in, but if you wish, you can add
      + * another class to the {@code <pre>} or {@code <code>} element to specify the
      + * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
      + * starts with "lang-" followed by a file extension, specifies the file type.
      + * See the "lang-*.js" files in this directory for code that implements
      + * per-language file handlers.
      + * <p>
      + * Change log:<br>
      + * cbeust, 2006/08/22
      + * <blockquote>
      + *   Java annotations (start with "@") are now captured as literals ("lit")
      + * </blockquote>
      + * @requires console
      + */
      +
      +// JSLint declarations
      +/*global console, document, navigator, setTimeout, window */
      +
      +/**
      + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
      + * UI events.
      + * If set to {@code false}, {@code prettyPrint()} is synchronous.
      + */
      +window['PR_SHOULD_USE_CONTINUATION'] = true;
      +
      +(function () {
      +  // Keyword lists for various languages.
      +  // We use things that coerce to strings to make them compact when minified
      +  // and to defeat aggressive optimizers that fold large string constants.
      +  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
      +  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + 
      +      "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
      +      "static,struct,switch,typedef,union,unsigned,void,volatile"];
      +  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
      +      "new,operator,private,protected,public,this,throw,true,try,typeof"];
      +  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
      +      "concept,concept_map,const_cast,constexpr,decltype," +
      +      "dynamic_cast,explicit,export,friend,inline,late_check," +
      +      "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
      +      "template,typeid,typename,using,virtual,where"];
      +  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
      +      "abstract,boolean,byte,extends,final,finally,implements,import," +
      +      "instanceof,null,native,package,strictfp,super,synchronized,throws," +
      +      "transient"];
      +  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
      +      "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
      +      "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
      +      "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
      +      "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
      +  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
      +      "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
      +      "true,try,unless,until,when,while,yes";
      +  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
      +      "debugger,eval,export,function,get,null,set,undefined,var,with," +
      +      "Infinity,NaN"];
      +  var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
      +      "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
      +      "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
      +  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
      +      "elif,except,exec,finally,from,global,import,in,is,lambda," +
      +      "nonlocal,not,or,pass,print,raise,try,with,yield," +
      +      "False,True,None"];
      +  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
      +      "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
      +      "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
      +      "BEGIN,END"];
      +  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
      +      "function,in,local,set,then,until"];
      +  var ALL_KEYWORDS = [
      +      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
      +      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
      +  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
      +
      +  // token style names.  correspond to css classes
      +  /**
      +   * token style for a string literal
      +   * @const
      +   */
      +  var PR_STRING = 'str';
      +  /**
      +   * token style for a keyword
      +   * @const
      +   */
      +  var PR_KEYWORD = 'kwd';
      +  /**
      +   * token style for a comment
      +   * @const
      +   */
      +  var PR_COMMENT = 'com';
      +  /**
      +   * token style for a type
      +   * @const
      +   */
      +  var PR_TYPE = 'typ';
      +  /**
      +   * token style for a literal value.  e.g. 1, null, true.
      +   * @const
      +   */
      +  var PR_LITERAL = 'lit';
      +  /**
      +   * token style for a punctuation string.
      +   * @const
      +   */
      +  var PR_PUNCTUATION = 'pun';
      +  /**
      +   * token style for a punctuation string.
      +   * @const
      +   */
      +  var PR_PLAIN = 'pln';
      +
      +  /**
      +   * token style for an sgml tag.
      +   * @const
      +   */
      +  var PR_TAG = 'tag';
      +  /**
      +   * token style for a markup declaration such as a DOCTYPE.
      +   * @const
      +   */
      +  var PR_DECLARATION = 'dec';
      +  /**
      +   * token style for embedded source.
      +   * @const
      +   */
      +  var PR_SOURCE = 'src';
      +  /**
      +   * token style for an sgml attribute name.
      +   * @const
      +   */
      +  var PR_ATTRIB_NAME = 'atn';
      +  /**
      +   * token style for an sgml attribute value.
      +   * @const
      +   */
      +  var PR_ATTRIB_VALUE = 'atv';
      +
      +  /**
      +   * A class that indicates a section of markup that is not code, e.g. to allow
      +   * embedding of line numbers within code listings.
      +   * @const
      +   */
      +  var PR_NOCODE = 'nocode';
      +
      +
      +
      +/**
      + * A set of tokens that can precede a regular expression literal in
      + * javascript
      + * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
      + * has the full list, but I've removed ones that might be problematic when
      + * seen in languages that don't support regular expression literals.
      + *
      + * <p>Specifically, I've removed any keywords that can't precede a regexp
      + * literal in a syntactically legal javascript program, and I've removed the
      + * "in" keyword since it's not a keyword in many languages, and might be used
      + * as a count of inches.
      + *
      + * <p>The link a above does not accurately describe EcmaScript rules since
      + * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
      + * very well in practice.
      + *
      + * @private
      + * @const
      + */
      +var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
      +
      +// CAVEAT: this does not properly handle the case where a regular
      +// expression immediately follows another since a regular expression may
      +// have flags for case-sensitivity and the like.  Having regexp tokens
      +// adjacent is not valid in any language I'm aware of, so I'm punting.
      +// TODO: maybe style special characters inside a regexp as punctuation.
      +
      +
      +  /**
      +   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
      +   * matches the union of the sets of strings matched by the input RegExp.
      +   * Since it matches globally, if the input strings have a start-of-input
      +   * anchor (/^.../), it is ignored for the purposes of unioning.
      +   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
      +   * @return {RegExp} a global regex.
      +   */
      +  function combinePrefixPatterns(regexs) {
      +    var capturedGroupIndex = 0;
      +  
      +    var needToFoldCase = false;
      +    var ignoreCase = false;
      +    for (var i = 0, n = regexs.length; i < n; ++i) {
      +      var regex = regexs[i];
      +      if (regex.ignoreCase) {
      +        ignoreCase = true;
      +      } else if (/[a-z]/i.test(regex.source.replace(
      +                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
      +        needToFoldCase = true;
      +        ignoreCase = false;
      +        break;
      +      }
      +    }
      +  
      +    var escapeCharToCodeUnit = {
      +      'b': 8,
      +      't': 9,
      +      'n': 0xa,
      +      'v': 0xb,
      +      'f': 0xc,
      +      'r': 0xd
      +    };
      +  
      +    function decodeEscape(charsetPart) {
      +      var cc0 = charsetPart.charCodeAt(0);
      +      if (cc0 !== 92 /* \\ */) {
      +        return cc0;
      +      }
      +      var c1 = charsetPart.charAt(1);
      +      cc0 = escapeCharToCodeUnit[c1];
      +      if (cc0) {
      +        return cc0;
      +      } else if ('0' <= c1 && c1 <= '7') {
      +        return parseInt(charsetPart.substring(1), 8);
      +      } else if (c1 === 'u' || c1 === 'x') {
      +        return parseInt(charsetPart.substring(2), 16);
      +      } else {
      +        return charsetPart.charCodeAt(1);
      +      }
      +    }
      +  
      +    function encodeEscape(charCode) {
      +      if (charCode < 0x20) {
      +        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
      +      }
      +      var ch = String.fromCharCode(charCode);
      +      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
      +        ch = '\\' + ch;
      +      }
      +      return ch;
      +    }
      +  
      +    function caseFoldCharset(charSet) {
      +      var charsetParts = charSet.substring(1, charSet.length - 1).match(
      +          new RegExp(
      +              '\\\\u[0-9A-Fa-f]{4}'
      +              + '|\\\\x[0-9A-Fa-f]{2}'
      +              + '|\\\\[0-3][0-7]{0,2}'
      +              + '|\\\\[0-7]{1,2}'
      +              + '|\\\\[\\s\\S]'
      +              + '|-'
      +              + '|[^-\\\\]',
      +              'g'));
      +      var groups = [];
      +      var ranges = [];
      +      var inverse = charsetParts[0] === '^';
      +      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
      +        var p = charsetParts[i];
      +        if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups.
      +          groups.push(p);
      +        } else {
      +          var start = decodeEscape(p);
      +          var end;
      +          if (i + 2 < n && '-' === charsetParts[i + 1]) {
      +            end = decodeEscape(charsetParts[i + 2]);
      +            i += 2;
      +          } else {
      +            end = start;
      +          }
      +          ranges.push([start, end]);
      +          // If the range might intersect letters, then expand it.
      +          // This case handling is too simplistic.
      +          // It does not deal with non-latin case folding.
      +          // It works for latin source code identifiers though.
      +          if (!(end < 65 || start > 122)) {
      +            if (!(end < 65 || start > 90)) {
      +              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
      +            }
      +            if (!(end < 97 || start > 122)) {
      +              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
      +            }
      +          }
      +        }
      +      }
      +  
      +      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
      +      // -> [[1, 12], [14, 14], [16, 17]]
      +      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
      +      var consolidatedRanges = [];
      +      var lastRange = [NaN, NaN];
      +      for (var i = 0; i < ranges.length; ++i) {
      +        var range = ranges[i];
      +        if (range[0] <= lastRange[1] + 1) {
      +          lastRange[1] = Math.max(lastRange[1], range[1]);
      +        } else {
      +          consolidatedRanges.push(lastRange = range);
      +        }
      +      }
      +  
      +      var out = ['['];
      +      if (inverse) { out.push('^'); }
      +      out.push.apply(out, groups);
      +      for (var i = 0; i < consolidatedRanges.length; ++i) {
      +        var range = consolidatedRanges[i];
      +        out.push(encodeEscape(range[0]));
      +        if (range[1] > range[0]) {
      +          if (range[1] + 1 > range[0]) { out.push('-'); }
      +          out.push(encodeEscape(range[1]));
      +        }
      +      }
      +      out.push(']');
      +      return out.join('');
      +    }
      +  
      +    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
      +      // Split into character sets, escape sequences, punctuation strings
      +      // like ('(', '(?:', ')', '^'), and runs of characters that do not
      +      // include any of the above.
      +      var parts = regex.source.match(
      +          new RegExp(
      +              '(?:'
      +              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
      +              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
      +              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
      +              + '|\\\\[0-9]+'  // a back-reference or octal escape
      +              + '|\\\\[^ux0-9]'  // other escape sequence
      +              + '|\\(\\?[:!=]'  // start of a non-capturing group
      +              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
      +              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
      +              + ')',
      +              'g'));
      +      var n = parts.length;
      +  
      +      // Maps captured group numbers to the number they will occupy in
      +      // the output or to -1 if that has not been determined, or to
      +      // undefined if they need not be capturing in the output.
      +      var capturedGroups = [];
      +  
      +      // Walk over and identify back references to build the capturedGroups
      +      // mapping.
      +      for (var i = 0, groupIndex = 0; i < n; ++i) {
      +        var p = parts[i];
      +        if (p === '(') {
      +          // groups are 1-indexed, so max group index is count of '('
      +          ++groupIndex;
      +        } else if ('\\' === p.charAt(0)) {
      +          var decimalValue = +p.substring(1);
      +          if (decimalValue && decimalValue <= groupIndex) {
      +            capturedGroups[decimalValue] = -1;
      +          }
      +        }
      +      }
      +  
      +      // Renumber groups and reduce capturing groups to non-capturing groups
      +      // where possible.
      +      for (var i = 1; i < capturedGroups.length; ++i) {
      +        if (-1 === capturedGroups[i]) {
      +          capturedGroups[i] = ++capturedGroupIndex;
      +        }
      +      }
      +      for (var i = 0, groupIndex = 0; i < n; ++i) {
      +        var p = parts[i];
      +        if (p === '(') {
      +          ++groupIndex;
      +          if (capturedGroups[groupIndex] === undefined) {
      +            parts[i] = '(?:';
      +          }
      +        } else if ('\\' === p.charAt(0)) {
      +          var decimalValue = +p.substring(1);
      +          if (decimalValue && decimalValue <= groupIndex) {
      +            parts[i] = '\\' + capturedGroups[groupIndex];
      +          }
      +        }
      +      }
      +  
      +      // Remove any prefix anchors so that the output will match anywhere.
      +      // ^^ really does mean an anchored match though.
      +      for (var i = 0, groupIndex = 0; i < n; ++i) {
      +        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
      +      }
      +  
      +      // Expand letters to groups to handle mixing of case-sensitive and
      +      // case-insensitive patterns if necessary.
      +      if (regex.ignoreCase && needToFoldCase) {
      +        for (var i = 0; i < n; ++i) {
      +          var p = parts[i];
      +          var ch0 = p.charAt(0);
      +          if (p.length >= 2 && ch0 === '[') {
      +            parts[i] = caseFoldCharset(p);
      +          } else if (ch0 !== '\\') {
      +            // TODO: handle letters in numeric escapes.
      +            parts[i] = p.replace(
      +                /[a-zA-Z]/g,
      +                function (ch) {
      +                  var cc = ch.charCodeAt(0);
      +                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
      +                });
      +          }
      +        }
      +      }
      +  
      +      return parts.join('');
      +    }
      +  
      +    var rewritten = [];
      +    for (var i = 0, n = regexs.length; i < n; ++i) {
      +      var regex = regexs[i];
      +      if (regex.global || regex.multiline) { throw new Error('' + regex); }
      +      rewritten.push(
      +          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
      +    }
      +  
      +    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
      +  }
      +
      +
      +  /**
      +   * Split markup into a string of source code and an array mapping ranges in
      +   * that string to the text nodes in which they appear.
      +   *
      +   * <p>
      +   * The HTML DOM structure:</p>
      +   * <pre>
      +   * (Element   "p"
      +   *   (Element "b"
      +   *     (Text  "print "))       ; #1
      +   *   (Text    "'Hello '")      ; #2
      +   *   (Element "br")            ; #3
      +   *   (Text    "  + 'World';")) ; #4
      +   * </pre>
      +   * <p>
      +   * corresponds to the HTML
      +   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>
      +   *
      +   * <p>
      +   * It will produce the output:</p>
      +   * <pre>
      +   * {
      +   *   sourceCode: "print 'Hello '\n  + 'World';",
      +   *   //                 1         2
      +   *   //       012345678901234 5678901234567
      +   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]
      +   * }
      +   * </pre>
      +   * <p>
      +   * where #1 is a reference to the {@code "print "} text node above, and so
      +   * on for the other text nodes.
      +   * </p>
      +   *
      +   * <p>
      +   * The {@code} spans array is an array of pairs.  Even elements are the start
      +   * indices of substrings, and odd elements are the text nodes (or BR elements)
      +   * that contain the text for those substrings.
      +   * Substrings continue until the next index or the end of the source.
      +   * </p>
      +   *
      +   * @param {Node} node an HTML DOM subtree containing source-code.
      +   * @return {Object} source code and the text nodes in which they occur.
      +   */
      +  function extractSourceSpans(node) {
      +    var nocode = /(?:^|\s)nocode(?:\s|$)/;
      +  
      +    var chunks = [];
      +    var length = 0;
      +    var spans = [];
      +    var k = 0;
      +  
      +    var whitespace;
      +    if (node.currentStyle) {
      +      whitespace = node.currentStyle.whiteSpace;
      +    } else if (window.getComputedStyle) {
      +      whitespace = document.defaultView.getComputedStyle(node, null)
      +          .getPropertyValue('white-space');
      +    }
      +    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
      +  
      +    function walk(node) {
      +      switch (node.nodeType) {
      +        case 1:  // Element
      +          if (nocode.test(node.className)) { return; }
      +          for (var child = node.firstChild; child; child = child.nextSibling) {
      +            walk(child);
      +          }
      +          var nodeName = node.nodeName;
      +          if ('BR' === nodeName || 'LI' === nodeName) {
      +            chunks[k] = '\n';
      +            spans[k << 1] = length++;
      +            spans[(k++ << 1) | 1] = node;
      +          }
      +          break;
      +        case 3: case 4:  // Text
      +          var text = node.nodeValue;
      +          if (text.length) {
      +            if (!isPreformatted) {
      +              text = text.replace(/[ \t\r\n]+/g, ' ');
      +            } else {
      +              text = text.replace(/\r\n?/g, '\n');  // Normalize newlines.
      +            }
      +            // TODO: handle tabs here?
      +            chunks[k] = text;
      +            spans[k << 1] = length;
      +            length += text.length;
      +            spans[(k++ << 1) | 1] = node;
      +          }
      +          break;
      +      }
      +    }
      +  
      +    walk(node);
      +  
      +    return {
      +      sourceCode: chunks.join('').replace(/\n$/, ''),
      +      spans: spans
      +    };
      +  }
      +
      +
      +  /**
      +   * Apply the given language handler to sourceCode and add the resulting
      +   * decorations to out.
      +   * @param {number} basePos the index of sourceCode within the chunk of source
      +   *    whose decorations are already present on out.
      +   */
      +  function appendDecorations(basePos, sourceCode, langHandler, out) {
      +    if (!sourceCode) { return; }
      +    var job = {
      +      sourceCode: sourceCode,
      +      basePos: basePos
      +    };
      +    langHandler(job);
      +    out.push.apply(out, job.decorations);
      +  }
      +
      +  var notWs = /\S/;
      +
      +  /**
      +   * Given an element, if it contains only one child element and any text nodes
      +   * it contains contain only space characters, return the sole child element.
      +   * Otherwise returns undefined.
      +   * <p>
      +   * This is meant to return the CODE element in {@code <pre><code ...>} when
      +   * there is a single child element that contains all the non-space textual
      +   * content, but not to return anything where there are multiple child elements
      +   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
      +   * is textual content.
      +   */
      +  function childContentWrapper(element) {
      +    var wrapper = undefined;
      +    for (var c = element.firstChild; c; c = c.nextSibling) {
      +      var type = c.nodeType;
      +      wrapper = (type === 1)  // Element Node
      +          ? (wrapper ? element : c)
      +          : (type === 3)  // Text Node
      +          ? (notWs.test(c.nodeValue) ? element : wrapper)
      +          : wrapper;
      +    }
      +    return wrapper === element ? undefined : wrapper;
      +  }
      +
      +  /** Given triples of [style, pattern, context] returns a lexing function,
      +    * The lexing function interprets the patterns to find token boundaries and
      +    * returns a decoration list of the form
      +    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
      +    * where index_n is an index into the sourceCode, and style_n is a style
      +    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
      +    * all characters in sourceCode[index_n-1:index_n].
      +    *
      +    * The stylePatterns is a list whose elements have the form
      +    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
      +    *
      +    * Style is a style constant like PR_PLAIN, or can be a string of the
      +    * form 'lang-FOO', where FOO is a language extension describing the
      +    * language of the portion of the token in $1 after pattern executes.
      +    * E.g., if style is 'lang-lisp', and group 1 contains the text
      +    * '(hello (world))', then that portion of the token will be passed to the
      +    * registered lisp handler for formatting.
      +    * The text before and after group 1 will be restyled using this decorator
      +    * so decorators should take care that this doesn't result in infinite
      +    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
      +    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
      +    * '<script>foo()<\/script>', which would cause the current decorator to
      +    * be called with '<script>' which would not match the same rule since
      +    * group 1 must not be empty, so it would be instead styled as PR_TAG by
      +    * the generic tag rule.  The handler registered for the 'js' extension would
      +    * then be called with 'foo()', and finally, the current decorator would
      +    * be called with '<\/script>' which would not match the original rule and
      +    * so the generic tag rule would identify it as a tag.
      +    *
      +    * Pattern must only match prefixes, and if it matches a prefix, then that
      +    * match is considered a token with the same style.
      +    *
      +    * Context is applied to the last non-whitespace, non-comment token
      +    * recognized.
      +    *
      +    * Shortcut is an optional string of characters, any of which, if the first
      +    * character, gurantee that this pattern and only this pattern matches.
      +    *
      +    * @param {Array} shortcutStylePatterns patterns that always start with
      +    *   a known character.  Must have a shortcut string.
      +    * @param {Array} fallthroughStylePatterns patterns that will be tried in
      +    *   order if the shortcut ones fail.  May have shortcuts.
      +    *
      +    * @return {function (Object)} a
      +    *   function that takes source code and returns a list of decorations.
      +    */
      +  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
      +    var shortcuts = {};
      +    var tokenizer;
      +    (function () {
      +      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
      +      var allRegexs = [];
      +      var regexKeys = {};
      +      for (var i = 0, n = allPatterns.length; i < n; ++i) {
      +        var patternParts = allPatterns[i];
      +        var shortcutChars = patternParts[3];
      +        if (shortcutChars) {
      +          for (var c = shortcutChars.length; --c >= 0;) {
      +            shortcuts[shortcutChars.charAt(c)] = patternParts;
      +          }
      +        }
      +        var regex = patternParts[1];
      +        var k = '' + regex;
      +        if (!regexKeys.hasOwnProperty(k)) {
      +          allRegexs.push(regex);
      +          regexKeys[k] = null;
      +        }
      +      }
      +      allRegexs.push(/[\0-\uffff]/);
      +      tokenizer = combinePrefixPatterns(allRegexs);
      +    })();
      +
      +    var nPatterns = fallthroughStylePatterns.length;
      +
      +    /**
      +     * Lexes job.sourceCode and produces an output array job.decorations of
      +     * style classes preceded by the position at which they start in
      +     * job.sourceCode in order.
      +     *
      +     * @param {Object} job an object like <pre>{
      +     *    sourceCode: {string} sourceText plain text,
      +     *    basePos: {int} position of job.sourceCode in the larger chunk of
      +     *        sourceCode.
      +     * }</pre>
      +     */
      +    var decorate = function (job) {
      +      var sourceCode = job.sourceCode, basePos = job.basePos;
      +      /** Even entries are positions in source in ascending order.  Odd enties
      +        * are style markers (e.g., PR_COMMENT) that run from that position until
      +        * the end.
      +        * @type {Array.<number|string>}
      +        */
      +      var decorations = [basePos, PR_PLAIN];
      +      var pos = 0;  // index into sourceCode
      +      var tokens = sourceCode.match(tokenizer) || [];
      +      var styleCache = {};
      +
      +      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
      +        var token = tokens[ti];
      +        var style = styleCache[token];
      +        var match = void 0;
      +
      +        var isEmbedded;
      +        if (typeof style === 'string') {
      +          isEmbedded = false;
      +        } else {
      +          var patternParts = shortcuts[token.charAt(0)];
      +          if (patternParts) {
      +            match = token.match(patternParts[1]);
      +            style = patternParts[0];
      +          } else {
      +            for (var i = 0; i < nPatterns; ++i) {
      +              patternParts = fallthroughStylePatterns[i];
      +              match = token.match(patternParts[1]);
      +              if (match) {
      +                style = patternParts[0];
      +                break;
      +              }
      +            }
      +
      +            if (!match) {  // make sure that we make progress
      +              style = PR_PLAIN;
      +            }
      +          }
      +
      +          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
      +          if (isEmbedded && !(match && typeof match[1] === 'string')) {
      +            isEmbedded = false;
      +            style = PR_SOURCE;
      +          }
      +
      +          if (!isEmbedded) { styleCache[token] = style; }
      +        }
      +
      +        var tokenStart = pos;
      +        pos += token.length;
      +
      +        if (!isEmbedded) {
      +          decorations.push(basePos + tokenStart, style);
      +        } else {  // Treat group 1 as an embedded block of source code.
      +          var embeddedSource = match[1];
      +          var embeddedSourceStart = token.indexOf(embeddedSource);
      +          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
      +          if (match[2]) {
      +            // If embeddedSource can be blank, then it would match at the
      +            // beginning which would cause us to infinitely recurse on the
      +            // entire token, so we catch the right context in match[2].
      +            embeddedSourceEnd = token.length - match[2].length;
      +            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
      +          }
      +          var lang = style.substring(5);
      +          // Decorate the left of the embedded source
      +          appendDecorations(
      +              basePos + tokenStart,
      +              token.substring(0, embeddedSourceStart),
      +              decorate, decorations);
      +          // Decorate the embedded source
      +          appendDecorations(
      +              basePos + tokenStart + embeddedSourceStart,
      +              embeddedSource,
      +              langHandlerForExtension(lang, embeddedSource),
      +              decorations);
      +          // Decorate the right of the embedded section
      +          appendDecorations(
      +              basePos + tokenStart + embeddedSourceEnd,
      +              token.substring(embeddedSourceEnd),
      +              decorate, decorations);
      +        }
      +      }
      +      job.decorations = decorations;
      +    };
      +    return decorate;
      +  }
      +
      +  /** returns a function that produces a list of decorations from source text.
      +    *
      +    * This code treats ", ', and ` as string delimiters, and \ as a string
      +    * escape.  It does not recognize perl's qq() style strings.
      +    * It has no special handling for double delimiter escapes as in basic, or
      +    * the tripled delimiters used in python, but should work on those regardless
      +    * although in those cases a single string literal may be broken up into
      +    * multiple adjacent string literals.
      +    *
      +    * It recognizes C, C++, and shell style comments.
      +    *
      +    * @param {Object} options a set of optional parameters.
      +    * @return {function (Object)} a function that examines the source code
      +    *     in the input job and builds the decoration list.
      +    */
      +  function sourceDecorator(options) {
      +    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
      +    if (options['tripleQuotedStrings']) {
      +      // '''multi-line-string''', 'single-line-string', and double-quoted
      +      shortcutStylePatterns.push(
      +          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
      +           null, '\'"']);
      +    } else if (options['multiLineStrings']) {
      +      // 'multi-line-string', "multi-line-string"
      +      shortcutStylePatterns.push(
      +          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
      +           null, '\'"`']);
      +    } else {
      +      // 'single-line-string', "single-line-string"
      +      shortcutStylePatterns.push(
      +          [PR_STRING,
      +           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
      +           null, '"\'']);
      +    }
      +    if (options['verbatimStrings']) {
      +      // verbatim-string-literal production from the C# grammar.  See issue 93.
      +      fallthroughStylePatterns.push(
      +          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
      +    }
      +    var hc = options['hashComments'];
      +    if (hc) {
      +      if (options['cStyleComments']) {
      +        if (hc > 1) {  // multiline hash comments
      +          shortcutStylePatterns.push(
      +              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
      +        } else {
      +          // Stop C preprocessor declarations at an unclosed open comment
      +          shortcutStylePatterns.push(
      +              [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
      +               null, '#']);
      +        }
      +        fallthroughStylePatterns.push(
      +            [PR_STRING,
      +             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
      +             null]);
      +      } else {
      +        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
      +      }
      +    }
      +    if (options['cStyleComments']) {
      +      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
      +      fallthroughStylePatterns.push(
      +          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
      +    }
      +    if (options['regexLiterals']) {
      +      /**
      +       * @const
      +       */
      +      var REGEX_LITERAL = (
      +          // A regular expression literal starts with a slash that is
      +          // not followed by * or / so that it is not confused with
      +          // comments.
      +          '/(?=[^/*])'
      +          // and then contains any number of raw characters,
      +          + '(?:[^/\\x5B\\x5C]'
      +          // escape sequences (\x5C),
      +          +    '|\\x5C[\\s\\S]'
      +          // or non-nesting character sets (\x5B\x5D);
      +          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
      +          // finally closed by a /.
      +          + '/');
      +      fallthroughStylePatterns.push(
      +          ['lang-regex',
      +           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
      +           ]);
      +    }
      +
      +    var types = options['types'];
      +    if (types) {
      +      fallthroughStylePatterns.push([PR_TYPE, types]);
      +    }
      +
      +    var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
      +    if (keywords.length) {
      +      fallthroughStylePatterns.push(
      +          [PR_KEYWORD,
      +           new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
      +           null]);
      +    }
      +
      +    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
      +    fallthroughStylePatterns.push(
      +        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
      +        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
      +        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
      +        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
      +        [PR_LITERAL,
      +         new RegExp(
      +             '^(?:'
      +             // A hex number
      +             + '0x[a-f0-9]+'
      +             // or an octal or decimal number,
      +             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
      +             // possibly in scientific notation
      +             + '(?:e[+\\-]?\\d+)?'
      +             + ')'
      +             // with an optional modifier like UL for unsigned long
      +             + '[a-z]*', 'i'),
      +         null, '0123456789'],
      +        // Don't treat escaped quotes in bash as starting strings.  See issue 144.
      +        [PR_PLAIN,       /^\\[\s\S]?/, null],
      +        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
      +
      +    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
      +  }
      +
      +  var decorateSource = sourceDecorator({
      +        'keywords': ALL_KEYWORDS,
      +        'hashComments': true,
      +        'cStyleComments': true,
      +        'multiLineStrings': true,
      +        'regexLiterals': true
      +      });
      +
      +  /**
      +   * Given a DOM subtree, wraps it in a list, and puts each line into its own
      +   * list item.
      +   *
      +   * @param {Node} node modified in place.  Its content is pulled into an
      +   *     HTMLOListElement, and each line is moved into a separate list item.
      +   *     This requires cloning elements, so the input might not have unique
      +   *     IDs after numbering.
      +   */
      +  function numberLines(node, opt_startLineNum) {
      +    var nocode = /(?:^|\s)nocode(?:\s|$)/;
      +    var lineBreak = /\r\n?|\n/;
      +  
      +    var document = node.ownerDocument;
      +  
      +    var whitespace;
      +    if (node.currentStyle) {
      +      whitespace = node.currentStyle.whiteSpace;
      +    } else if (window.getComputedStyle) {
      +      whitespace = document.defaultView.getComputedStyle(node, null)
      +          .getPropertyValue('white-space');
      +    }
      +    // If it's preformatted, then we need to split lines on line breaks
      +    // in addition to <BR>s.
      +    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
      +  
      +    var li = document.createElement('LI');
      +    while (node.firstChild) {
      +      li.appendChild(node.firstChild);
      +    }
      +    // An array of lines.  We split below, so this is initialized to one
      +    // un-split line.
      +    var listItems = [li];
      +  
      +    function walk(node) {
      +      switch (node.nodeType) {
      +        case 1:  // Element
      +          if (nocode.test(node.className)) { break; }
      +          if ('BR' === node.nodeName) {
      +            breakAfter(node);
      +            // Discard the <BR> since it is now flush against a </LI>.
      +            if (node.parentNode) {
      +              node.parentNode.removeChild(node);
      +            }
      +          } else {
      +            for (var child = node.firstChild; child; child = child.nextSibling) {
      +              walk(child);
      +            }
      +          }
      +          break;
      +        case 3: case 4:  // Text
      +          if (isPreformatted) {
      +            var text = node.nodeValue;
      +            var match = text.match(lineBreak);
      +            if (match) {
      +              var firstLine = text.substring(0, match.index);
      +              node.nodeValue = firstLine;
      +              var tail = text.substring(match.index + match[0].length);
      +              if (tail) {
      +                var parent = node.parentNode;
      +                parent.insertBefore(
      +                    document.createTextNode(tail), node.nextSibling);
      +              }
      +              breakAfter(node);
      +              if (!firstLine) {
      +                // Don't leave blank text nodes in the DOM.
      +                node.parentNode.removeChild(node);
      +              }
      +            }
      +          }
      +          break;
      +      }
      +    }
      +  
      +    // Split a line after the given node.
      +    function breakAfter(lineEndNode) {
      +      // If there's nothing to the right, then we can skip ending the line
      +      // here, and move root-wards since splitting just before an end-tag
      +      // would require us to create a bunch of empty copies.
      +      while (!lineEndNode.nextSibling) {
      +        lineEndNode = lineEndNode.parentNode;
      +        if (!lineEndNode) { return; }
      +      }
      +  
      +      function breakLeftOf(limit, copy) {
      +        // Clone shallowly if this node needs to be on both sides of the break.
      +        var rightSide = copy ? limit.cloneNode(false) : limit;
      +        var parent = limit.parentNode;
      +        if (parent) {
      +          // We clone the parent chain.
      +          // This helps us resurrect important styling elements that cross lines.
      +          // E.g. in <i>Foo<br>Bar</i>
      +          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
      +          var parentClone = breakLeftOf(parent, 1);
      +          // Move the clone and everything to the right of the original
      +          // onto the cloned parent.
      +          var next = limit.nextSibling;
      +          parentClone.appendChild(rightSide);
      +          for (var sibling = next; sibling; sibling = next) {
      +            next = sibling.nextSibling;
      +            parentClone.appendChild(sibling);
      +          }
      +        }
      +        return rightSide;
      +      }
      +  
      +      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
      +  
      +      // Walk the parent chain until we reach an unattached LI.
      +      for (var parent;
      +           // Check nodeType since IE invents document fragments.
      +           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
      +        copiedListItem = parent;
      +      }
      +      // Put it on the list of lines for later processing.
      +      listItems.push(copiedListItem);
      +    }
      +  
      +    // Split lines while there are lines left to split.
      +    for (var i = 0;  // Number of lines that have been split so far.
      +         i < listItems.length;  // length updated by breakAfter calls.
      +         ++i) {
      +      walk(listItems[i]);
      +    }
      +  
      +    // Make sure numeric indices show correctly.
      +    if (opt_startLineNum === (opt_startLineNum|0)) {
      +      listItems[0].setAttribute('value', opt_startLineNum);
      +    }
      +  
      +    var ol = document.createElement('OL');
      +    ol.className = 'linenums';
      +    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
      +    for (var i = 0, n = listItems.length; i < n; ++i) {
      +      li = listItems[i];
      +      // Stick a class on the LIs so that stylesheets can
      +      // color odd/even rows, or any other row pattern that
      +      // is co-prime with 10.
      +      li.className = 'L' + ((i + offset) % 10);
      +      if (!li.firstChild) {
      +        li.appendChild(document.createTextNode('\xA0'));
      +      }
      +      ol.appendChild(li);
      +    }
      +  
      +    node.appendChild(ol);
      +  }
      +
      +  /**
      +   * Breaks {@code job.sourceCode} around style boundaries in
      +   * {@code job.decorations} and modifies {@code job.sourceNode} in place.
      +   * @param {Object} job like <pre>{
      +   *    sourceCode: {string} source as plain text,
      +   *    spans: {Array.<number|Node>} alternating span start indices into source
      +   *       and the text node or element (e.g. {@code <BR>}) corresponding to that
      +   *       span.
      +   *    decorations: {Array.<number|string} an array of style classes preceded
      +   *       by the position at which they start in job.sourceCode in order
      +   * }</pre>
      +   * @private
      +   */
      +  function recombineTagsAndDecorations(job) {
      +    var isIE = /\bMSIE\b/.test(navigator.userAgent);
      +    var newlineRe = /\n/g;
      +  
      +    var source = job.sourceCode;
      +    var sourceLength = source.length;
      +    // Index into source after the last code-unit recombined.
      +    var sourceIndex = 0;
      +  
      +    var spans = job.spans;
      +    var nSpans = spans.length;
      +    // Index into spans after the last span which ends at or before sourceIndex.
      +    var spanIndex = 0;
      +  
      +    var decorations = job.decorations;
      +    var nDecorations = decorations.length;
      +    // Index into decorations after the last decoration which ends at or before
      +    // sourceIndex.
      +    var decorationIndex = 0;
      +  
      +    // Remove all zero-length decorations.
      +    decorations[nDecorations] = sourceLength;
      +    var decPos, i;
      +    for (i = decPos = 0; i < nDecorations;) {
      +      if (decorations[i] !== decorations[i + 2]) {
      +        decorations[decPos++] = decorations[i++];
      +        decorations[decPos++] = decorations[i++];
      +      } else {
      +        i += 2;
      +      }
      +    }
      +    nDecorations = decPos;
      +  
      +    // Simplify decorations.
      +    for (i = decPos = 0; i < nDecorations;) {
      +      var startPos = decorations[i];
      +      // Conflate all adjacent decorations that use the same style.
      +      var startDec = decorations[i + 1];
      +      var end = i + 2;
      +      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
      +        end += 2;
      +      }
      +      decorations[decPos++] = startPos;
      +      decorations[decPos++] = startDec;
      +      i = end;
      +    }
      +  
      +    nDecorations = decorations.length = decPos;
      +  
      +    var decoration = null;
      +    while (spanIndex < nSpans) {
      +      var spanStart = spans[spanIndex];
      +      var spanEnd = spans[spanIndex + 2] || sourceLength;
      +  
      +      var decStart = decorations[decorationIndex];
      +      var decEnd = decorations[decorationIndex + 2] || sourceLength;
      +  
      +      var end = Math.min(spanEnd, decEnd);
      +  
      +      var textNode = spans[spanIndex + 1];
      +      var styledText;
      +      if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s
      +          // Don't introduce spans around empty text nodes.
      +          && (styledText = source.substring(sourceIndex, end))) {
      +        // This may seem bizarre, and it is.  Emitting LF on IE causes the
      +        // code to display with spaces instead of line breaks.
      +        // Emitting Windows standard issue linebreaks (CRLF) causes a blank
      +        // space to appear at the beginning of every line but the first.
      +        // Emitting an old Mac OS 9 line separator makes everything spiffy.
      +        if (isIE) { styledText = styledText.replace(newlineRe, '\r'); }
      +        textNode.nodeValue = styledText;
      +        var document = textNode.ownerDocument;
      +        var span = document.createElement('SPAN');
      +        span.className = decorations[decorationIndex + 1];
      +        var parentNode = textNode.parentNode;
      +        parentNode.replaceChild(span, textNode);
      +        span.appendChild(textNode);
      +        if (sourceIndex < spanEnd) {  // Split off a text node.
      +          spans[spanIndex + 1] = textNode
      +              // TODO: Possibly optimize by using '' if there's no flicker.
      +              = document.createTextNode(source.substring(end, spanEnd));
      +          parentNode.insertBefore(textNode, span.nextSibling);
      +        }
      +      }
      +  
      +      sourceIndex = end;
      +  
      +      if (sourceIndex >= spanEnd) {
      +        spanIndex += 2;
      +      }
      +      if (sourceIndex >= decEnd) {
      +        decorationIndex += 2;
      +      }
      +    }
      +  }
      +
      +
      +  /** Maps language-specific file extensions to handlers. */
      +  var langHandlerRegistry = {};
      +  /** Register a language handler for the given file extensions.
      +    * @param {function (Object)} handler a function from source code to a list
      +    *      of decorations.  Takes a single argument job which describes the
      +    *      state of the computation.   The single parameter has the form
      +    *      {@code {
      +    *        sourceCode: {string} as plain text.
      +    *        decorations: {Array.<number|string>} an array of style classes
      +    *                     preceded by the position at which they start in
      +    *                     job.sourceCode in order.
      +    *                     The language handler should assigned this field.
      +    *        basePos: {int} the position of source in the larger source chunk.
      +    *                 All positions in the output decorations array are relative
      +    *                 to the larger source chunk.
      +    *      } }
      +    * @param {Array.<string>} fileExtensions
      +    */
      +  function registerLangHandler(handler, fileExtensions) {
      +    for (var i = fileExtensions.length; --i >= 0;) {
      +      var ext = fileExtensions[i];
      +      if (!langHandlerRegistry.hasOwnProperty(ext)) {
      +        langHandlerRegistry[ext] = handler;
      +      } else if (window['console']) {
      +        console['warn']('cannot override language handler %s', ext);
      +      }
      +    }
      +  }
      +  function langHandlerForExtension(extension, source) {
      +    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
      +      // Treat it as markup if the first non whitespace character is a < and
      +      // the last non-whitespace character is a >.
      +      extension = /^\s*</.test(source)
      +          ? 'default-markup'
      +          : 'default-code';
      +    }
      +    return langHandlerRegistry[extension];
      +  }
      +  registerLangHandler(decorateSource, ['default-code']);
      +  registerLangHandler(
      +      createSimpleLexer(
      +          [],
      +          [
      +           [PR_PLAIN,       /^[^<?]+/],
      +           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
      +           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
      +           // Unescaped content in an unknown language
      +           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
      +           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
      +           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
      +           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
      +           // Unescaped content in javascript.  (Or possibly vbscript).
      +           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
      +           // Contains unescaped stylesheet content
      +           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
      +           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
      +          ]),
      +      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
      +  registerLangHandler(
      +      createSimpleLexer(
      +          [
      +           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
      +           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
      +           ],
      +          [
      +           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
      +           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
      +           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
      +           [PR_PUNCTUATION,  /^[=<>\/]+/],
      +           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
      +           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
      +           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
      +           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
      +           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
      +           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
      +           ]),
      +      ['in.tag']);
      +  registerLangHandler(
      +      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': CPP_KEYWORDS,
      +          'hashComments': true,
      +          'cStyleComments': true,
      +          'types': C_TYPES
      +        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': 'null,true,false'
      +        }), ['json']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': CSHARP_KEYWORDS,
      +          'hashComments': true,
      +          'cStyleComments': true,
      +          'verbatimStrings': true,
      +          'types': C_TYPES
      +        }), ['cs']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': JAVA_KEYWORDS,
      +          'cStyleComments': true
      +        }), ['java']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': SH_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true
      +        }), ['bsh', 'csh', 'sh']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': PYTHON_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true,
      +          'tripleQuotedStrings': true
      +        }), ['cv', 'py']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': PERL_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true,
      +          'regexLiterals': true
      +        }), ['perl', 'pl', 'pm']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': RUBY_KEYWORDS,
      +          'hashComments': true,
      +          'multiLineStrings': true,
      +          'regexLiterals': true
      +        }), ['rb']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': JSCRIPT_KEYWORDS,
      +          'cStyleComments': true,
      +          'regexLiterals': true
      +        }), ['js']);
      +  registerLangHandler(sourceDecorator({
      +          'keywords': COFFEE_KEYWORDS,
      +          'hashComments': 3,  // ### style block comments
      +          'cStyleComments': true,
      +          'multilineStrings': true,
      +          'tripleQuotedStrings': true,
      +          'regexLiterals': true
      +        }), ['coffee']);
      +  registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
      +
      +  function applyDecorator(job) {
      +    var opt_langExtension = job.langExtension;
      +
      +    try {
      +      // Extract tags, and convert the source code to plain text.
      +      var sourceAndSpans = extractSourceSpans(job.sourceNode);
      +      /** Plain text. @type {string} */
      +      var source = sourceAndSpans.sourceCode;
      +      job.sourceCode = source;
      +      job.spans = sourceAndSpans.spans;
      +      job.basePos = 0;
      +
      +      // Apply the appropriate language handler
      +      langHandlerForExtension(opt_langExtension, source)(job);
      +
      +      // Integrate the decorations and tags back into the source code,
      +      // modifying the sourceNode in place.
      +      recombineTagsAndDecorations(job);
      +    } catch (e) {
      +      if ('console' in window) {
      +        console['log'](e && e['stack'] ? e['stack'] : e);
      +      }
      +    }
      +  }
      +
      +  /**
      +   * @param sourceCodeHtml {string} The HTML to pretty print.
      +   * @param opt_langExtension {string} The language name to use.
      +   *     Typically, a filename extension like 'cpp' or 'java'.
      +   * @param opt_numberLines {number|boolean} True to number lines,
      +   *     or the 1-indexed number of the first line in sourceCodeHtml.
      +   */
      +  function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
      +    var container = document.createElement('PRE');
      +    // This could cause images to load and onload listeners to fire.
      +    // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
      +    // We assume that the inner HTML is from a trusted source.
      +    container.innerHTML = sourceCodeHtml;
      +    if (opt_numberLines) {
      +      numberLines(container, opt_numberLines);
      +    }
      +
      +    var job = {
      +      langExtension: opt_langExtension,
      +      numberLines: opt_numberLines,
      +      sourceNode: container
      +    };
      +    applyDecorator(job);
      +    return container.innerHTML;
      +  }
      +
      +  function prettyPrint(opt_whenDone) {
      +    function byTagName(tn) { return document.getElementsByTagName(tn); }
      +    // fetch a list of nodes to rewrite
      +    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
      +    var elements = [];
      +    for (var i = 0; i < codeSegments.length; ++i) {
      +      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
      +        elements.push(codeSegments[i][j]);
      +      }
      +    }
      +    codeSegments = null;
      +
      +    var clock = Date;
      +    if (!clock['now']) {
      +      clock = { 'now': function () { return +(new Date); } };
      +    }
      +
      +    // The loop is broken into a series of continuations to make sure that we
      +    // don't make the browser unresponsive when rewriting a large page.
      +    var k = 0;
      +    var prettyPrintingJob;
      +
      +    var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
      +    var prettyPrintRe = /\bprettyprint\b/;
      +
      +    function doWork() {
      +      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
      +                     clock['now']() + 250 /* ms */ :
      +                     Infinity);
      +      for (; k < elements.length && clock['now']() < endTime; k++) {
      +        var cs = elements[k];
      +        var className = cs.className;
      +        if (className.indexOf('prettyprint') >= 0) {
      +          // If the classes includes a language extensions, use it.
      +          // Language extensions can be specified like
      +          //     <pre class="prettyprint lang-cpp">
      +          // the language extension "cpp" is used to find a language handler as
      +          // passed to PR.registerLangHandler.
      +          // HTML5 recommends that a language be specified using "language-"
      +          // as the prefix instead.  Google Code Prettify supports both.
      +          // http://dev.w3.org/html5/spec-author-view/the-code-element.html
      +          var langExtension = className.match(langExtensionRe);
      +          // Support <pre class="prettyprint"><code class="language-c">
      +          var wrapper;
      +          if (!langExtension && (wrapper = childContentWrapper(cs))
      +              && "CODE" === wrapper.tagName) {
      +            langExtension = wrapper.className.match(langExtensionRe);
      +          }
      +
      +          if (langExtension) {
      +            langExtension = langExtension[1];
      +          }
      +
      +          // make sure this is not nested in an already prettified element
      +          var nested = false;
      +          for (var p = cs.parentNode; p; p = p.parentNode) {
      +            if ((p.tagName === 'pre' || p.tagName === 'code' ||
      +                 p.tagName === 'xmp') &&
      +                p.className && p.className.indexOf('prettyprint') >= 0) {
      +              nested = true;
      +              break;
      +            }
      +          }
      +          if (!nested) {
      +            // Look for a class like linenums or linenums:<n> where <n> is the
      +            // 1-indexed number of the first line.
      +            var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
      +            lineNums = lineNums
      +                  ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
      +                  : false;
      +            if (lineNums) { numberLines(cs, lineNums); }
      +
      +            // do the pretty printing
      +            prettyPrintingJob = {
      +              langExtension: langExtension,
      +              sourceNode: cs,
      +              numberLines: lineNums
      +            };
      +            applyDecorator(prettyPrintingJob);
      +          }
      +        }
      +      }
      +      if (k < elements.length) {
      +        // finish up in a continuation
      +        setTimeout(doWork, 250);
      +      } else if (opt_whenDone) {
      +        opt_whenDone();
      +      }
      +    }
      +
      +    doWork();
      +  }
      +
      +   /**
      +    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
      +    * {@code class=prettyprint} and prettify them.
      +    *
      +    * @param {Function?} opt_whenDone if specified, called when the last entry
      +    *     has been finished.
      +    */
      +  window['prettyPrintOne'] = prettyPrintOne;
      +   /**
      +    * Pretty print a chunk of code.
      +    *
      +    * @param {string} sourceCodeHtml code as html
      +    * @return {string} code as html, but prettier
      +    */
      +  window['prettyPrint'] = prettyPrint;
      +   /**
      +    * Contains functions for creating and registering new language handlers.
      +    * @type {Object}
      +    */
      +  window['PR'] = {
      +        'createSimpleLexer': createSimpleLexer,
      +        'registerLangHandler': registerLangHandler,
      +        'sourceDecorator': sourceDecorator,
      +        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
      +        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
      +        'PR_COMMENT': PR_COMMENT,
      +        'PR_DECLARATION': PR_DECLARATION,
      +        'PR_KEYWORD': PR_KEYWORD,
      +        'PR_LITERAL': PR_LITERAL,
      +        'PR_NOCODE': PR_NOCODE,
      +        'PR_PLAIN': PR_PLAIN,
      +        'PR_PUNCTUATION': PR_PUNCTUATION,
      +        'PR_SOURCE': PR_SOURCE,
      +        'PR_STRING': PR_STRING,
      +        'PR_TAG': PR_TAG,
      +        'PR_TYPE': PR_TYPE
      +      };
      +})();
      diff --git a/js/site.js b/js/site.js
      new file mode 100755
      index 0000000..3632c5d
      --- /dev/null
      +++ b/js/site.js
      @@ -0,0 +1,31 @@
      +
      +(function($) {
      +	
      +var snapper = new Snap({
      +    element: document.getElementById('page'),
      +    disable: 'right',
      +    touchToDrag: false,
      +    hyperextensible: false
      +});
      +
      +var myToggleButton =  document.getElementById('myToggleButton');
      +
      +if ($("#myToggleButton").length>0) {
      +
      +    myToggleButton.addEventListener('click', function(){
      +
      +        if( snapper.state().state=="left" ){
      +            snapper.close();
      +        } else {
      +            snapper.open('left');
      +        }
      +
      +    });
      +
      +};
      +	
      +	$('code, pre').addClass('prettyprint');
      +
      +	prettyPrint();
      +
      +})( jQuery );
      diff --git a/js/snap.min.js b/js/snap.min.js
      new file mode 100755
      index 0000000..2a3b22f
      --- /dev/null
      +++ b/js/snap.min.js
      @@ -0,0 +1,11 @@
      +/*
      + * Snap.js
      + *
      + * Copyright 2013, Jacob Kelley - http://jakiestfu.com/
      + * Released under the MIT Licence
      + * http://opensource.org/licenses/MIT
      + *
      + * Github:  http://github.com/jakiestfu/Snap.js/
      + * Version: 1.9.2
      + */
      + (function(c,b){var a=a||function(k){var f={element:null,dragger:null,disable:"none",addBodyClasses:true,hyperextensible:true,resistance:0.5,flickThreshold:50,transitionSpeed:0.3,easing:"ease",maxPosition:266,minPosition:-266,tapToClose:true,touchToDrag:true,slideIntent:40,minDragDistance:5},e={simpleStates:{opening:null,towards:null,hyperExtending:null,halfway:null,flick:null,translation:{absolute:0,relative:0,sinceDirectionChange:0,percentage:0}}},h={},d={hasTouch:(b.ontouchstart===null),eventType:function(m){var l={down:(d.hasTouch?"touchstart":"mousedown"),move:(d.hasTouch?"touchmove":"mousemove"),up:(d.hasTouch?"touchend":"mouseup"),out:(d.hasTouch?"touchcancel":"mouseout")};return l[m]},page:function(l,m){return(d.hasTouch&&m.touches.length&&m.touches[0])?m.touches[0]["page"+l]:m["page"+l]},klass:{has:function(m,l){return(m.className).indexOf(l)!==-1},add:function(m,l){if(!d.klass.has(m,l)&&f.addBodyClasses){m.className+=" "+l}},remove:function(m,l){if(f.addBodyClasses){m.className=(m.className).replace(l,"").replace(/^\s+|\s+$/g,"")}}},dispatchEvent:function(l){if(typeof h[l]==="function"){return h[l].call()}},vendor:function(){var m=b.createElement("div"),n="webkit Moz O ms".split(" "),l;for(l in n){if(typeof m.style[n[l]+"Transition"]!=="undefined"){return n[l]}}},transitionCallback:function(){return(e.vendor==="Moz"||e.vendor==="ms")?"transitionend":e.vendor+"TransitionEnd"},canTransform:function(){return typeof f.element.style[e.vendor+"Transform"]!=="undefined"},deepExtend:function(l,n){var m;for(m in n){if(n[m]&&n[m].constructor&&n[m].constructor===Object){l[m]=l[m]||{};d.deepExtend(l[m],n[m])}else{l[m]=n[m]}}return l},angleOfDrag:function(l,o){var n,m;m=Math.atan2(-(e.startDragY-o),(e.startDragX-l));if(m<0){m+=2*Math.PI}n=Math.floor(m*(180/Math.PI)-180);if(n<0&&n>-180){n=360-Math.abs(n)}return Math.abs(n)},events:{addEvent:function g(m,l,n){if(m.addEventListener){return m.addEventListener(l,n,false)}else{if(m.attachEvent){return m.attachEvent("on"+l,n)}}},removeEvent:function g(m,l,n){if(m.addEventListener){return m.removeEventListener(l,n,false)}else{if(m.attachEvent){return m.detachEvent("on"+l,n)}}},prevent:function(l){if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}}},parentUntil:function(n,l){var m=typeof l==="string";while(n.parentNode){if(m&&n.getAttribute&&n.getAttribute(l)){return n}else{if(!m&&n===l){return n}}n=n.parentNode}return null}},i={translate:{get:{matrix:function(n){if(!d.canTransform()){return parseInt(f.element.style.left,10)}else{var m=c.getComputedStyle(f.element)[e.vendor+"Transform"].match(/\((.*)\)/),l=8;if(m){m=m[1].split(",");if(m.length===16){n+=l}return parseInt(m[n],10)}return 0}}},easeCallback:function(){f.element.style[e.vendor+"Transition"]="";e.translation=i.translate.get.matrix(4);e.easing=false;clearInterval(e.animatingInterval);if(e.easingTo===0){d.klass.remove(b.body,"snapjs-right");d.klass.remove(b.body,"snapjs-left")}d.dispatchEvent("animated");d.events.removeEvent(f.element,d.transitionCallback(),i.translate.easeCallback)},easeTo:function(l){if(!d.canTransform()){e.translation=l;i.translate.x(l)}else{e.easing=true;e.easingTo=l;f.element.style[e.vendor+"Transition"]="all "+f.transitionSpeed+"s "+f.easing;e.animatingInterval=setInterval(function(){d.dispatchEvent("animating")},1);d.events.addEvent(f.element,d.transitionCallback(),i.translate.easeCallback);i.translate.x(l)}if(l===0){f.element.style[e.vendor+"Transform"]=""}},x:function(m){if((f.disable==="left"&&m>0)||(f.disable==="right"&&m<0)){return}if(!f.hyperextensible){if(m===f.maxPosition||m>f.maxPosition){m=f.maxPosition}else{if(m===f.minPosition||m<f.minPosition){m=f.minPosition}}}m=parseInt(m,10);if(isNaN(m)){m=0}if(d.canTransform()){var l="translate3d("+m+"px, 0,0)";f.element.style[e.vendor+"Transform"]=l}else{f.element.style.width=(c.innerWidth||b.documentElement.clientWidth)+"px";f.element.style.left=m+"px";f.element.style.right=""}}},drag:{listen:function(){e.translation=0;e.easing=false;d.events.addEvent(f.element,d.eventType("down"),i.drag.startDrag);d.events.addEvent(f.element,d.eventType("move"),i.drag.dragging);d.events.addEvent(f.element,d.eventType("up"),i.drag.endDrag)},stopListening:function(){d.events.removeEvent(f.element,d.eventType("down"),i.drag.startDrag);d.events.removeEvent(f.element,d.eventType("move"),i.drag.dragging);d.events.removeEvent(f.element,d.eventType("up"),i.drag.endDrag)},startDrag:function(n){var m=n.target?n.target:n.srcElement,l=d.parentUntil(m,"data-snap-ignore");if(l){d.dispatchEvent("ignore");return}if(f.dragger){var o=d.parentUntil(m,f.dragger);if(!o&&(e.translation!==f.minPosition&&e.translation!==f.maxPosition)){return}}d.dispatchEvent("start");f.element.style[e.vendor+"Transition"]="";e.isDragging=true;e.hasIntent=null;e.intentChecked=false;e.startDragX=d.page("X",n);e.startDragY=d.page("Y",n);e.dragWatchers={current:0,last:0,hold:0,state:""};e.simpleStates={opening:null,towards:null,hyperExtending:null,halfway:null,flick:null,translation:{absolute:0,relative:0,sinceDirectionChange:0,percentage:0}}},dragging:function(s){if(e.isDragging&&f.touchToDrag){var v=d.page("X",s),u=d.page("Y",s),t=e.translation,o=i.translate.get.matrix(4),n=v-e.startDragX,p=o>0,q=n,w;if((e.intentChecked&&!e.hasIntent)){return}if(f.addBodyClasses){if((o)>0){d.klass.add(b.body,"snapjs-left");d.klass.remove(b.body,"snapjs-right")}else{if((o)<0){d.klass.add(b.body,"snapjs-right");d.klass.remove(b.body,"snapjs-left")}}}if(e.hasIntent===false||e.hasIntent===null){var m=d.angleOfDrag(v,u),l=(m>=0&&m<=f.slideIntent)||(m<=360&&m>(360-f.slideIntent)),r=(m>=180&&m<=(180+f.slideIntent))||(m<=180&&m>=(180-f.slideIntent));if(!r&&!l){e.hasIntent=false}else{e.hasIntent=true}e.intentChecked=true}if((f.minDragDistance>=Math.abs(v-e.startDragX))||(e.hasIntent===false)){return}d.events.prevent(s);d.dispatchEvent("drag");e.dragWatchers.current=v;if(e.dragWatchers.last>v){if(e.dragWatchers.state!=="left"){e.dragWatchers.state="left";e.dragWatchers.hold=v}e.dragWatchers.last=v}else{if(e.dragWatchers.last<v){if(e.dragWatchers.state!=="right"){e.dragWatchers.state="right";e.dragWatchers.hold=v}e.dragWatchers.last=v}}if(p){if(f.maxPosition<o){w=(o-f.maxPosition)*f.resistance;q=n-w}e.simpleStates={opening:"left",towards:e.dragWatchers.state,hyperExtending:f.maxPosition<o,halfway:o>(f.maxPosition/2),flick:Math.abs(e.dragWatchers.current-e.dragWatchers.hold)>f.flickThreshold,translation:{absolute:o,relative:n,sinceDirectionChange:(e.dragWatchers.current-e.dragWatchers.hold),percentage:(o/f.maxPosition)*100}}}else{if(f.minPosition>o){w=(o-f.minPosition)*f.resistance;q=n-w}e.simpleStates={opening:"right",towards:e.dragWatchers.state,hyperExtending:f.minPosition>o,halfway:o<(f.minPosition/2),flick:Math.abs(e.dragWatchers.current-e.dragWatchers.hold)>f.flickThreshold,translation:{absolute:o,relative:n,sinceDirectionChange:(e.dragWatchers.current-e.dragWatchers.hold),percentage:(o/f.minPosition)*100}}}i.translate.x(q+t)}},endDrag:function(m){if(e.isDragging){d.dispatchEvent("end");var l=i.translate.get.matrix(4);if(e.dragWatchers.current===0&&l!==0&&f.tapToClose){d.dispatchEvent("close");d.events.prevent(m);i.translate.easeTo(0);e.isDragging=false;e.startDragX=0;return}if(e.simpleStates.opening==="left"){if((e.simpleStates.halfway||e.simpleStates.hyperExtending||e.simpleStates.flick)){if(e.simpleStates.flick&&e.simpleStates.towards==="left"){i.translate.easeTo(0)}else{if((e.simpleStates.flick&&e.simpleStates.towards==="right")||(e.simpleStates.halfway||e.simpleStates.hyperExtending)){i.translate.easeTo(f.maxPosition)}}}else{i.translate.easeTo(0)}}else{if(e.simpleStates.opening==="right"){if((e.simpleStates.halfway||e.simpleStates.hyperExtending||e.simpleStates.flick)){if(e.simpleStates.flick&&e.simpleStates.towards==="right"){i.translate.easeTo(0)}else{if((e.simpleStates.flick&&e.simpleStates.towards==="left")||(e.simpleStates.halfway||e.simpleStates.hyperExtending)){i.translate.easeTo(f.minPosition)}}}else{i.translate.easeTo(0)}}}e.isDragging=false;e.startDragX=d.page("X",m)}}}},j=function(l){if(l.element){d.deepExtend(f,l);e.vendor=d.vendor();i.drag.listen()}};this.open=function(l){d.dispatchEvent("open");d.klass.remove(b.body,"snapjs-expand-left");d.klass.remove(b.body,"snapjs-expand-right");if(l==="left"){e.simpleStates.opening="left";e.simpleStates.towards="right";d.klass.add(b.body,"snapjs-left");d.klass.remove(b.body,"snapjs-right");i.translate.easeTo(f.maxPosition)}else{if(l==="right"){e.simpleStates.opening="right";e.simpleStates.towards="left";d.klass.remove(b.body,"snapjs-left");d.klass.add(b.body,"snapjs-right");i.translate.easeTo(f.minPosition)}}};this.close=function(){d.dispatchEvent("close");i.translate.easeTo(0)};this.expand=function(l){var m=c.innerWidth||b.documentElement.clientWidth;if(l==="left"){d.dispatchEvent("expandLeft");d.klass.add(b.body,"snapjs-expand-left");d.klass.remove(b.body,"snapjs-expand-right")}else{d.dispatchEvent("expandRight");d.klass.add(b.body,"snapjs-expand-right");d.klass.remove(b.body,"snapjs-expand-left");m*=-1}i.translate.easeTo(m)};this.on=function(l,m){h[l]=m;return this};this.off=function(l){if(h[l]){h[l]=false}};this.enable=function(){d.dispatchEvent("enable");i.drag.listen()};this.disable=function(){d.dispatchEvent("disable");i.drag.stopListening()};this.settings=function(l){d.deepExtend(f,l)};this.state=function(){var l,m=i.translate.get.matrix(4);if(m===f.maxPosition){l="left"}else{if(m===f.minPosition){l="right"}else{l="closed"}}return{state:l,info:e.simpleStates}};j(k)};if((typeof module!=="undefined")&&module.exports){module.exports=a}if(typeof ender==="undefined"){this.Snap=a}if((typeof define==="function")&&define.amd){define("snap",[],function(){return a})}}).call(this,window,document);
      diff --git a/license.txt b/license.txt
      new file mode 100755
      index 0000000..f4685f8
      --- /dev/null
      +++ b/license.txt
      @@ -0,0 +1,281 @@
      +		    GNU GENERAL PUBLIC LICENSE
      +		       Version 2, June 1991
      +
      + Copyright (C) 1989, 1991 Free Software Foundation, Inc.
      +							51 Franklin St, Fifth Floor, Boston, MA 02110, USA
      +
      + Everyone is permitted to copy and distribute verbatim copies
      + of this license document, but changing it is not allowed.
      +
      +			    Preamble
      +
      +	The licenses for most software are designed to take away your
      +freedom to share and change it.  By contrast, the GNU General Public
      +License is intended to guarantee your freedom to share and change free
      +software--to make sure the software is free for all its users.  This
      +General Public License applies to most of the Free Software
      +Foundation's software and to any other program whose authors commit to
      +using it.  (Some other Free Software Foundation software is covered by
      +the GNU Library General Public License instead.)  You can apply it to
      +your programs, too.
      +
      +	When we speak of free software, we are referring to freedom, not
      +price.  Our General Public Licenses are designed to make sure that you
      +have the freedom to distribute copies of free software (and charge for
      +this service if you wish), that you receive source code or can get it
      +if you want it, that you can change the software or use pieces of it
      +in new free programs; and that you know you can do these things.
      +
      +	To protect your rights, we need to make restrictions that forbid
      +anyone to deny you these rights or to ask you to surrender the rights.
      +These restrictions translate to certain responsibilities for you if you
      +distribute copies of the software, or if you modify it.
      +
      +	For example, if you distribute copies of such a program, whether
      +gratis or for a fee, you must give the recipients all the rights that
      +you have.  You must make sure that they, too, receive or can get the
      +source code.  And you must show them these terms so they know their
      +rights.
      +
      +	We protect your rights with two steps: (1) copyright the software, and
      +(2) offer you this license which gives you legal permission to copy,
      +distribute and/or modify the software.
      +
      +	Also, for each author's protection and ours, we want to make certain
      +that everyone understands that there is no warranty for this free
      +software.  If the software is modified by someone else and passed on, we
      +want its recipients to know that what they have is not the original, so
      +that any problems introduced by others will not reflect on the original
      +authors' reputations.
      +
      +	Finally, any free program is threatened constantly by software
      +patents.  We wish to avoid the danger that redistributors of a free
      +program will individually obtain patent licenses, in effect making the
      +program proprietary.  To prevent this, we have made it clear that any
      +patent must be licensed for everyone's free use or not licensed at all.
      +
      +	The precise terms and conditions for copying, distribution and
      +modification follow.
      +
      +		    GNU GENERAL PUBLIC LICENSE
      +	 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
      +
      +	0. This License applies to any program or other work which contains
      +a notice placed by the copyright holder saying it may be distributed
      +under the terms of this General Public License.  The "Program", below,
      +refers to any such program or work, and a "work based on the Program"
      +means either the Program or any derivative work under copyright law:
      +that is to say, a work containing the Program or a portion of it,
      +either verbatim or with modifications and/or translated into another
      +language.  (Hereinafter, translation is included without limitation in
      +the term "modification".)  Each licensee is addressed as "you".
      +
      +Activities other than copying, distribution and modification are not
      +covered by this License; they are outside its scope.  The act of
      +running the Program is not restricted, and the output from the Program
      +is covered only if its contents constitute a work based on the
      +Program (independent of having been made by running the Program).
      +Whether that is true depends on what the Program does.
      +
      +	1. You may copy and distribute verbatim copies of the Program's
      +source code as you receive it, in any medium, provided that you
      +conspicuously and appropriately publish on each copy an appropriate
      +copyright notice and disclaimer of warranty; keep intact all the
      +notices that refer to this License and to the absence of any warranty;
      +and give any other recipients of the Program a copy of this License
      +along with the Program.
      +
      +You may charge a fee for the physical act of transferring a copy, and
      +you may at your option offer warranty protection in exchange for a fee.
      +
      +	2. You may modify your copy or copies of the Program or any portion
      +of it, thus forming a work based on the Program, and copy and
      +distribute such modifications or work under the terms of Section 1
      +above, provided that you also meet all of these conditions:
      +
      +		a) You must cause the modified files to carry prominent notices
      +		stating that you changed the files and the date of any change.
      +
      +		b) You must cause any work that you distribute or publish, that in
      +		whole or in part contains or is derived from the Program or any
      +		part thereof, to be licensed as a whole at no charge to all third
      +		parties under the terms of this License.
      +
      +		c) If the modified program normally reads commands interactively
      +		when run, you must cause it, when started running for such
      +		interactive use in the most ordinary way, to print or display an
      +		announcement including an appropriate copyright notice and a
      +		notice that there is no warranty (or else, saying that you provide
      +		a warranty) and that users may redistribute the program under
      +		these conditions, and telling the user how to view a copy of this
      +		License.  (Exception: if the Program itself is interactive but
      +		does not normally print such an announcement, your work based on
      +		the Program is not required to print an announcement.)
      +
      +These requirements apply to the modified work as a whole.  If
      +identifiable sections of that work are not derived from the Program,
      +and can be reasonably considered independent and separate works in
      +themselves, then this License, and its terms, do not apply to those
      +sections when you distribute them as separate works.  But when you
      +distribute the same sections as part of a whole which is a work based
      +on the Program, the distribution of the whole must be on the terms of
      +this License, whose permissions for other licensees extend to the
      +entire whole, and thus to each and every part regardless of who wrote it.
      +Thus, it is not the intent of this section to claim rights or contest
      +your rights to work written entirely by you; rather, the intent is to
      +exercise the right to control the distribution of derivative or
      +collective works based on the Program.
      +
      +In addition, mere aggregation of another work not based on the Program
      +with the Program (or with a work based on the Program) on a volume of
      +a storage or distribution medium does not bring the other work under
      +the scope of this License.
      +
      +	3. You may copy and distribute the Program (or a work based on it,
      +under Section 2) in object code or executable form under the terms of
      +Sections 1 and 2 above provided that you also do one of the following:
      +
      +		a) Accompany it with the complete corresponding machine-readable
      +		source code, which must be distributed under the terms of Sections
      +		1 and 2 above on a medium customarily used for software interchange; or,
      +
      +		b) Accompany it with a written offer, valid for at least three
      +		years, to give any third party, for a charge no more than your
      +		cost of physically performing source distribution, a complete
      +		machine-readable copy of the corresponding source code, to be
      +		distributed under the terms of Sections 1 and 2 above on a medium
      +		customarily used for software interchange; or,
      +
      +		c) Accompany it with the information you received as to the offer
      +		to distribute corresponding source code.  (This alternative is
      +		allowed only for noncommercial distribution and only if you
      +		received the program in object code or executable form with such
      +		an offer, in accord with Subsection b above.)
      +
      +The source code for a work means the preferred form of the work for
      +making modifications to it.  For an executable work, complete source
      +code means all the source code for all modules it contains, plus any
      +associated interface definition files, plus the scripts used to
      +control compilation and installation of the executable.  However, as a
      +special exception, the source code distributed need not include
      +anything that is normally distributed (in either source or binary
      +form) with the major components (compiler, kernel, and so on) of the
      +operating system on which the executable runs, unless that component
      +itself accompanies the executable.
      +
      +If distribution of executable or object code is made by offering
      +access to copy from a designated place, then offering equivalent
      +access to copy the source code from the same place counts as
      +distribution of the source code, even though third parties are not
      +compelled to copy the source along with the object code.
      +
      +	4. You may not copy, modify, sublicense, or distribute the Program
      +except as expressly provided under this License.  Any attempt
      +otherwise to copy, modify, sublicense or distribute the Program is
      +void, and will automatically terminate your rights under this License.
      +However, parties who have received copies, or rights, from you under
      +this License will not have their licenses terminated so long as such
      +parties remain in full compliance.
      +
      +	5. You are not required to accept this License, since you have not
      +signed it.  However, nothing else grants you permission to modify or
      +distribute the Program or its derivative works.  These actions are
      +prohibited by law if you do not accept this License.  Therefore, by
      +modifying or distributing the Program (or any work based on the
      +Program), you indicate your acceptance of this License to do so, and
      +all its terms and conditions for copying, distributing or modifying
      +the Program or works based on it.
      +
      +	6. Each time you redistribute the Program (or any work based on the
      +Program), the recipient automatically receives a license from the
      +original licensor to copy, distribute or modify the Program subject to
      +these terms and conditions.  You may not impose any further
      +restrictions on the recipients' exercise of the rights granted herein.
      +You are not responsible for enforcing compliance by third parties to
      +this License.
      +
      +	7. If, as a consequence of a court judgment or allegation of patent
      +infringement or for any other reason (not limited to patent issues),
      +conditions are imposed on you (whether by court order, agreement or
      +otherwise) that contradict the conditions of this License, they do not
      +excuse you from the conditions of this License.  If you cannot
      +distribute so as to satisfy simultaneously your obligations under this
      +License and any other pertinent obligations, then as a consequence you
      +may not distribute the Program at all.  For example, if a patent
      +license would not permit royalty-free redistribution of the Program by
      +all those who receive copies directly or indirectly through you, then
      +the only way you could satisfy both it and this License would be to
      +refrain entirely from distribution of the Program.
      +
      +If any portion of this section is held invalid or unenforceable under
      +any particular circumstance, the balance of the section is intended to
      +apply and the section as a whole is intended to apply in other
      +circumstances.
      +
      +It is not the purpose of this section to induce you to infringe any
      +patents or other property right claims or to contest validity of any
      +such claims; this section has the sole purpose of protecting the
      +integrity of the free software distribution system, which is
      +implemented by public license practices.  Many people have made
      +generous contributions to the wide range of software distributed
      +through that system in reliance on consistent application of that
      +system; it is up to the author/donor to decide if he or she is willing
      +to distribute software through any other system and a licensee cannot
      +impose that choice.
      +
      +This section is intended to make thoroughly clear what is believed to
      +be a consequence of the rest of this License.
      +
      +	8. If the distribution and/or use of the Program is restricted in
      +certain countries either by patents or by copyrighted interfaces, the
      +original copyright holder who places the Program under this License
      +may add an explicit geographical distribution limitation excluding
      +those countries, so that distribution is permitted only in or among
      +countries not thus excluded.  In such case, this License incorporates
      +the limitation as if written in the body of this License.
      +
      +	9. The Free Software Foundation may publish revised and/or new versions
      +of the General Public License from time to time.  Such new versions will
      +be similar in spirit to the present version, but may differ in detail to
      +address new problems or concerns.
      +
      +Each version is given a distinguishing version number.  If the Program
      +specifies a version number of this License which applies to it and "any
      +later version", you have the option of following the terms and conditions
      +either of that version or of any later version published by the Free
      +Software Foundation.  If the Program does not specify a version number of
      +this License, you may choose any version ever published by the Free Software
      +Foundation.
      +
      +	10. If you wish to incorporate parts of the Program into other free
      +programs whose distribution conditions are different, write to the author
      +to ask for permission.  For software which is copyrighted by the Free
      +Software Foundation, write to the Free Software Foundation; we sometimes
      +make exceptions for this.  Our decision will be guided by the two goals
      +of preserving the free status of all derivatives of our free software and
      +of promoting the sharing and reuse of software generally.
      +
      +			    NO WARRANTY
      +
      +	11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
      +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
      +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
      +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
      +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
      +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
      +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
      +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
      +REPAIR OR CORRECTION.
      +
      +	12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
      +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
      +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
      +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
      +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
      +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
      +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
      +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
      +POSSIBILITY OF SUCH DAMAGES.
      +
      +		     END OF TERMS AND CONDITIONS
      +
      diff --git a/no-results.php b/no-results.php
      new file mode 100755
      index 0000000..808697c
      --- /dev/null
      +++ b/no-results.php
      @@ -0,0 +1,37 @@
      +<?php
      +/**
      + * The template part for displaying a message that posts cannot be found.
      + *
      + * Learn more: http://codex.wordpress.org/Template_Hierarchy
      + *
      + * @package Symbol
      + * @since Symbol 1.0
      + */
      +?>
      +
      +<article id="post-0" class="post no-results not-found">
      +	<div class=" center-content">
      +			<header class="entry-header">
      +		<h1 class="entry-title"><?php _e( 'Nothing Found', 'symbol' ); ?></h1>
      +	</header><!-- .entry-header -->
      +
      +	<div class="entry-content">
      +		<?php if ( is_home() ) : ?>
      +
      +			<p><?php printf( __( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'symbol' ), admin_url( 'post-new.php' ) ); ?></p>
      +
      +		<?php elseif ( is_search() ) : ?>
      +
      +			<p><?php _e( 'Sorry, but nothing matched your search terms. Please try again with some different keywords.', 'symbol' ); ?></p>
      +			<?php get_search_form(); ?>
      +
      +		<?php else : ?>
      +
      +			<p><?php _e( 'It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help.', 'symbol' ); ?></p>
      +			<?php get_search_form(); ?>
      +
      +		<?php endif; ?>
      +	</div><!-- .entry-content -->
      +	</div>
      +
      +</article><!-- #post-0 .post .no-results .not-found -->
      diff --git a/page-instagram.php b/page-instagram.php
      new file mode 100755
      index 0000000..d004633
      --- /dev/null
      +++ b/page-instagram.php
      @@ -0,0 +1,51 @@
      +<?php
      +/**
      + * Template Name: Instagram
      + */
      +
      +get_header(); ?>
      +
      +<div id="primary" class="content-area">
      +	<div id="content" class="site-content" role="main">
      +
      +		<?php while ( have_posts() ) : the_post(); ?>
      +
      +			<?php get_template_part( 'content', 'page' ); ?>
      +
      +		<?php endwhile; // end of the loop. ?>
      +
      +		<!-- http://instagram.com/developer/authentication/ -->
      +
      +		<div class="instagram-list center-content">
      +			<?php
      +				// Supply a user id and an access token
      +				$userid = get_option('instagram_user_id');
      +				$accessToken = get_option('instagram_access_token');
      +
      +				// Gets our data
      +				function fetchData($url){
      +				     $ch = curl_init();
      +				     curl_setopt($ch, CURLOPT_URL, $url);
      +				     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      +				     curl_setopt($ch, CURLOPT_TIMEOUT, 20);
      +				     $result = curl_exec($ch);
      +				     curl_close($ch); 
      +				     return $result;
      +				}
      +
      +				// Pulls and parses data.
      +				$result = fetchData("https://api.instagram.com/v1/users/".$userid."/media/recent/?access_token=" . $accessToken);
      +				$result = json_decode($result);
      +			?>
      +
      +
      +			<?php foreach ($result->data as $post): ?>
      +				<!-- Renders images. @Options (thumbnail,low_resoulution, high_resolution) -->
      +				<a class="insta-pic" target="_blank"  href="<?php echo $post->link ?>"><img src="<?php echo $post->images->low_resolution->url ?>" /></a>
      +			<?php endforeach ?>
      +		</div>
      +
      +	</div><!-- #content .site-content -->
      +</div><!-- #primary .content-area -->
      +
      +<?php get_footer(); ?>
      \ No newline at end of file
      diff --git a/page-lastfm.php b/page-lastfm.php
      new file mode 100755
      index 0000000..774c1b5
      --- /dev/null
      +++ b/page-lastfm.php
      @@ -0,0 +1,55 @@
      +<?php
      +/**
      + * Template Name: Last.fm
      + */
      +
      +get_header(); ?>
      +
      +<div>
      +
      +<?php while ( have_posts() ) : the_post(); ?>
      +
      +	<?php get_template_part( 'content', 'page' ); ?>
      +
      +<?php endwhile; // end of the loop. ?>
      +<?php 
      +$username = $options['lastfm_username'];
      +$scrobbler_url = "http://ws.audioscrobbler.com/2.0/user/" . $username . "/recenttracks";
      + 
      +if ($scrobbler_xml = file_get_contents($scrobbler_url)):
      +    $scrobbler_data = simplexml_load_string($scrobbler_xml); 
      +?>
      +
      +<div class="center-content">
      +    <ul class="last-fm-tracks ">
      +    	<?php foreach ($scrobbler_data->track as $track): ?>
      +        	<li>
      +        		<span class="track-date">
      +        			<?php if ($track->date): ?>
      +    	    			Played on <?php echo $track->date ?>
      +    	    		<?php else: ?>
      +    	    			<i>Playing now...</i>
      +        			<?php endif ?>
      +        		</span>
      +        		<span class="track-album">
      +        			<?php if (!empty($track->image[2])): ?>
      +        				<img class="cover" src="<?php echo $track->image[2] ?>" />
      +        			<?php else: ?>
      +        				<i class="cover">No Image</i>
      +        			<?php endif ?>
      +        		</span>
      +        		<div class="track">
      +        			<span class="track-name"><?php echo $track->name ?></span>
      +        			<span class="space">–</span>
      +    	    		<span class="track-artist"><?php echo $track->artist ?></span>
      +        		</div>
      +
      +        	</li>
      +    	<?php endforeach ?>    
      +    </ul>
      +
      +</div>
      +        
      +<?php endif; ?>
      +</div>
      +<?php get_footer() ?>
      \ No newline at end of file
      diff --git a/page.php b/page.php
      new file mode 100755
      index 0000000..23b7aa1
      --- /dev/null
      +++ b/page.php
      @@ -0,0 +1,28 @@
      +<?php
      +/**
      + * The template for displaying all pages.
      + *
      + * This is the template that displays all pages by default.
      + * Please note that this is the WordPress construct of pages
      + * and that other 'pages' on your WordPress site will use a
      + * different template.
      + *
      + * @package Symbol
      + * @since Symbol 1.0
      + */
      +
      +get_header(); ?>
      +
      +<div id="primary" class="content-area">
      +	<div id="content" class="site-content" role="main">
      +
      +		<?php while ( have_posts() ) : the_post(); ?>
      +
      +			<?php get_template_part( 'content', 'page' ); ?>
      +
      +		<?php endwhile; // end of the loop. ?>
      +
      +	</div><!-- #content .site-content -->
      +</div><!-- #primary .content-area -->
      +
      +<?php get_footer(); ?>
      \ No newline at end of file
      diff --git a/rtl.css b/rtl.css
      new file mode 100755
      index 0000000..92b0bd1
      --- /dev/null
      +++ b/rtl.css
      @@ -0,0 +1,17 @@
      +/*
      +Theme Name: Symbol
      +
      +Adding support for language written in a Right To Left (RTL) direction is easy -
      +it's just a matter of overwriting all the horizontal positioning attributes
      +of your CSS stylesheet in a separate stylesheet file named rtl.css.
      +
      +http://codex.wordpress.org/Right_to_Left_Language_Support
      +
      +*/
      +
      +/*
      +body {
      +	direction: rtl;
      +	unicode-bidi: embed;
      +}
      +*/
      \ No newline at end of file
      diff --git a/screenshot.png b/screenshot.png
      new file mode 100755
      index 0000000000000000000000000000000000000000..09a396f05014cc98cee179bbc89c37095d54a9b8
      GIT binary patch
      literal 18123
      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
      
      literal 0
      HcmV?d00001
      
      diff --git a/search.php b/search.php
      new file mode 100755
      index 0000000..81ea33b
      --- /dev/null
      +++ b/search.php
      @@ -0,0 +1,41 @@
      +<?php
      +/**
      + * The template for displaying Search Results pages.
      + *
      + * @package Symbol
      + * @since Symbol 1.0
      + */
      +
      +get_header(); ?>
      +
      +		<section id="primary" class="content-area">
      +			<div id="content" class="site-content" role="main">
      +
      +			<?php if ( have_posts() ) : ?>
      +
      +				<header class="page-header">
      +					<h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'symbol' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
      +				</header><!-- .page-header -->
      +
      +				<?php symbol_content_nav( 'nav-above' ); ?>
      +
      +				<?php /* Start the Loop */ ?>
      +				<?php while ( have_posts() ) : the_post(); ?>
      +
      +					<?php get_template_part( 'content', 'search' ); ?>
      +
      +				<?php endwhile; ?>
      +
      +				<?php symbol_content_nav( 'nav-below' ); ?>
      +
      +			<?php else : ?>
      +
      +				<?php get_template_part( 'no-results', 'search' ); ?>
      +
      +			<?php endif; ?>
      +
      +			</div><!-- #content .site-content -->
      +		</section><!-- #primary .content-area -->
      +
      +<?php get_sidebar(); ?>
      +<?php get_footer(); ?>
      \ No newline at end of file
      diff --git a/searchform.php b/searchform.php
      new file mode 100755
      index 0000000..6e6fe06
      --- /dev/null
      +++ b/searchform.php
      @@ -0,0 +1,13 @@
      +<?php
      +/**
      + * The template for displaying search forms in Symbol
      + *
      + * @package Symbol
      + * @since Symbol 1.0
      + */
      +?>
      +	<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search">
      +		<label for="s" class="assistive-text"><?php _e( 'Search', 'symbol' ); ?></label>
      +		<input type="text" class="field" name="s" value="<?php echo esc_attr( get_search_query() ); ?>" id="s" placeholder="<?php esc_attr_e( 'Search &hellip;', 'symbol' ); ?>" />
      +		<input type="submit" class="submit" name="submit" id="searchsubmit" value="<?php esc_attr_e( 'Search', 'symbol' ); ?>" />
      +	</form>
      diff --git a/sidebar.php b/sidebar.php
      new file mode 100755
      index 0000000..6929679
      --- /dev/null
      +++ b/sidebar.php
      @@ -0,0 +1,38 @@
      +<?php
      +/**
      + * The Sidebar containing the main widget areas.
      + *
      + * @package Symbol
      + */
      +?>
      +
      +<div class="snap-drawers" role="complementary">
      +	<div class="snap-drawer snap-drawer-left">
      +		<div id="secondary" class="widget-area" >
      +			<?php do_action( 'before_sidebar' ); ?>
      +			<?php if ( ! dynamic_sidebar( 'sidebar-1' ) ) : ?>
      +
      +				<aside id="search" class="widget widget_search">
      +					<?php get_search_form(); ?>
      +				</aside>
      +
      +				<aside id="archives" class="widget">
      +					<h1 class="widget-title"><?php _e( 'Archives', 'solar' ); ?></h1>
      +					<ul>
      +						<?php wp_get_archives( array( 'type' => 'monthly' ) ); ?>
      +					</ul>
      +				</aside>
      +
      +				<aside id="meta" class="widget">
      +					<h1 class="widget-title"><?php _e( 'Meta', 'solar' ); ?></h1>
      +					<ul>
      +						<?php wp_register(); ?>
      +						<li><?php wp_loginout(); ?></li>
      +						<?php wp_meta(); ?>
      +					</ul>
      +				</aside>
      +
      +			<?php endif; // end sidebar widget area ?>
      +		</div><!-- #secondary -->
      +	</div>
      +</div>
      \ No newline at end of file
      diff --git a/single.php b/single.php
      new file mode 100755
      index 0000000..f12d03f
      --- /dev/null
      +++ b/single.php
      @@ -0,0 +1,30 @@
      +<?php
      +/**
      + * The Template for displaying all single posts.
      + *
      + * @package Symbol
      + * @since Symbol 1.0
      + */
      +
      +get_header(); ?>
      +
      +<?php while ( have_posts() ) : the_post(); ?>
      +
      +	<header id="begin">
      +	    <time datetime="<?php echo date('Y-m-d'); ?>" class="center-content" id="top_time"><?php the_time('F d, Y'); ?></time>
      +	</header>
      +	
      +	<?php get_template_part( 'content', 'single' ); ?>
      +
      +
      +	<?php
      +		// If comments are open or we have at least one comment, load up the comment template
      +		if ( comments_open() || '0' != get_comments_number() )
      +			comments_template( '', true );
      +	?>
      +
      +	<?php symbol_content_nav( 'nav-below' ); ?>
      +
      +<?php endwhile; // end of the loop. ?>
      +
      +<?php get_footer(); ?>
      \ No newline at end of file
      diff --git a/style.css b/style.css
      new file mode 100755
      index 0000000..121f73d
      --- /dev/null
      +++ b/style.css
      @@ -0,0 +1,637 @@
      +/*
      +Theme Name: Symbol
      +Theme URI: http://symbol.themeskult.com/
      +Github Theme URI: https://github.com/themeskult/symbol-theme
      +Author: Themes Kult
      +Author URI: http://themeskult.com/
      +Version: 1.4
      +Description: Symbol is a tight, visually clean and well-structured theme that allows you to focus on reading.
      +*/
      +/* Snap.js
      +----------------------------------------------- */
      +.snap-content {
      +  position: absolute;
      +  background: #fff;
      +  top: 0;
      +  right: 0;
      +  bottom: 0;
      +  left: 0;
      +  width: auto;
      +  height: auto;
      +  z-index: 2;
      +  overflow: auto;
      +  -webkit-overflow-scrolling: touch;
      +  -webkit-transform: translate3d(0, 0, 0);
      +  -moz-transform: translate3d(0, 0, 0);
      +  -ms-transform: translate3d(0, 0, 0);
      +  -o-transform: translate3d(0, 0, 0);
      +  transform: translate3d(0, 0, 0);
      +}
      +.snap-drawers {
      +  position: absolute;
      +  top: 0;
      +  right: 0;
      +  bottom: 0;
      +  left: 0;
      +  width: auto;
      +  height: auto;
      +}
      +.snap-drawer {
      +  position: absolute;
      +  top: 0;
      +  right: auto;
      +  bottom: 0;
      +  left: auto;
      +  width: 265px;
      +  height: auto;
      +  overflow: auto;
      +  -webkit-overflow-scrolling: touch;
      +  -webkit-transition: width 0.3s ease;
      +  -moz-transition: width 0.3s ease;
      +  -ms-transition: width 0.3s ease;
      +  -o-transition: width 0.3s ease;
      +  transition: width 0.3s ease;
      +}
      +.snap-drawer-left {
      +  left: 0;
      +  z-index: 1;
      +}
      +.snap-drawer-right {
      +  right: 0;
      +  z-index: 1;
      +}
      +.snapjs-left .snap-drawer-right,
      +.snapjs-right .snap-drawer-left {
      +  display: none;
      +}
      +.snapjs-expand-left .snap-drawer-left,
      +.snapjs-expand-right .snap-drawer-right {
      +  width: 100%;
      +}
      +/* =jQuery Pageslide
      +-------------------------------------------------------------- */
      +#myToggleButton {
      +  background: #333 url("images/open.png") center center no-repeat;
      +  display: block;
      +  width: 44px;
      +  height: 44px;
      +  top: 20px;
      +  left: 20px;
      +  position: fixed;
      +  right: 20px;
      +  text-indent: -10000em;
      +  z-index: 10000;
      +}
      +/* =General
      +-------------------------------------------------------------- */
      +html {
      +  -webkit-font-smoothing: antialiased;
      +}
      +body {
      +  font-family: "Helvetica Neue", "Arial";
      +  overflow-x: hidden;
      +  margin: 0;
      +  color: #4d4d4d;
      +}
      +h1,
      +h2,
      +h3,
      +h4,
      +h5 {
      +  font-weight: bold;
      +  color: #000;
      +}
      +h1 a,
      +h2 a,
      +h3 a,
      +h4 a,
      +h5 a {
      +  color: #000;
      +  text-decoration: none;
      +}
      +a {
      +  text-decoration: none;
      +  color: #000;
      +  outline: none !important;
      +}
      +a:hover {
      +  color: #333;
      +}
      +blockquote {
      +  border-left: 8px solid #feb83e;
      +  padding-left: 20px;
      +  margin-left: 0;
      +}
      +img {
      +  max-width: 100%;
      +}
      +/* =Header
      +-------------------------------------------------------------- */
      +header.site-header {
      +  background: #fff;
      +  position: fixed;
      +  top: 0;
      +  z-index: 10000;
      +  right: 12%;
      +  width: 150px;
      +}
      +header.site-header h1 {
      +  margin: 0;
      +  padding: 0;
      +}
      +header.site-header h1 a {
      +  background: #feb83e url("images/logo.png") center no-repeat;
      +  border: 1px solid rgba(0,0,0,0.1);
      +  border-top: 0;
      +  background-size: 70%;
      +  height: 150px;
      +  text-indent: -10000em;
      +  display: block;
      +}
      +header.site-header nav {
      +  display: block;
      +  width: 100%;
      +  color: #000;
      +  font-family: Menlo, Monaco, 'Lucida Console', monospace;
      +}
      +header.site-header nav ul {
      +  margin: 0;
      +  padding: 0;
      +}
      +header.site-header nav a {
      +  border: 1px solid #ccc;
      +  overflow: hidden;
      +  border-top: 0;
      +  background: #f9f9f9;
      +  display: block;
      +  padding: 10px 10px;
      +  line-height: 18px;
      +  font-size: 11px;
      +  color: #333;
      +}
      +header.site-header nav a i,
      +header.site-header nav a img {
      +  background: url("images/icon-page.png") center no-repeat;
      +  display: inline-block;
      +  opacity: 0.4;
      +  float: left;
      +  width: 18px;
      +  height: 18px;
      +  margin: auto;
      +}
      +header.site-header nav a img {
      +  display: block;
      +}
      +header.site-header nav a.current_page_item {
      +  background: #fff;
      +}
      +header.site-header nav a:hover {
      +  background: #eee;
      +}
      +header.site-header nav a:hover span {
      +  color: #000;
      +}
      +header.site-header nav a:hover i,
      +header.site-header nav a:hover img {
      +  opacity: 1;
      +}
      +body.admin-bar header.site-header,
      +body {
      +  border-top: 1px solid #fff;
      +}
      +#begin,
      +.site-navigation.post-navigation {
      +  border-bottom: 1px solid #ebebeb;
      +  padding: 32px 0;
      +}
      +#begin a,
      +.site-navigation.post-navigation a {
      +  color: #999;
      +}
      +#begin time,
      +.site-navigation.post-navigation time {
      +  color: #999;
      +  font-weight: bold;
      +}
      +.site-main {
      +  position: relative;
      +}
      +/* =Article
      +-------------------------------------------------------------- */
      +.site-navigation.post-navigation div div {
      +  width: 50%;
      +  float: left;
      +}
      +.site-navigation.post-navigation div div.nav-next {
      +  text-align: right;
      +  float: right;
      +}
      +.center-content {
      +  max-width: 580px;
      +  margin: 0 100px 0 140px;
      +  display: block;
      +}
      +article.post,
      +article.page {
      +  padding: 50px 0;
      +  font-size: 18px;
      +  line-height: 30px;
      +/* Images */
      +}
      +article.post h1,
      +article.page h1 {
      +  font-size: 40px;
      +  line-height: 50px;
      +}
      +article.post p a,
      +article.page p a {
      +  color: #000;
      +  text-decoration: underline;
      +}
      +article.post p < code,
      +article.page p < code {
      +  width: 100%;
      +  display: none;
      +}
      +article.post code,
      +article.page code,
      +article.post pre,
      +article.page pre {
      +  border: none;
      +  border: 1px solid #d2d2d2;
      +  background-color: #f8f8f8;
      +  padding: 0 4px;
      +  font-size: 13px;
      +  width: auto;
      +  display: inline-block;
      +}
      +article.post code,
      +article.page code {
      +  border-radius: 4px;
      +}
      +article.post pre,
      +article.page pre {
      +  padding: 20px 30px;
      +  display: block;
      +  border-left: none;
      +  border-right: none;
      +}
      +article.page {
      +  border-bottom: 0;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks {
      +  margin: 0;
      +  padding: 0;
      +  list-style: none;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li {
      +  overflow: hidden;
      +  margin-bottom: 30px;
      +  border-bottom: 1px solid #eee;
      +  padding-bottom: 30px;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li .track {
      +  float: left;
      +  width: 60%;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.track-album {
      +  width: 50px;
      +  display: inline-block;
      +  float: left;
      +  margin-right: 20px;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.track-album img {
      +  width: 100%;
      +  background: #eee;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.track-album i.cover {
      +  padding: 40px 0;
      +  background: #eee;
      +  color: #999;
      +  display: block;
      +  text-align: center;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.track-name {
      +  font-size: 18px;
      +  margin-bottom: 4px;
      +  display: block;
      +  font-weight: bold;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.track-artist {
      +  font-size: 14px;
      +  color: #999;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.space {
      +  display: none;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.track-date {
      +  float: right;
      +  color: #999;
      +  font-size: 11px;
      +}
      +body.page-template-page-lastfm-php .last-fm-tracks li span.track-date i {
      +  font-weight: bold;
      +  color: #008000;
      +  font-size: 14px;
      +}
      +/* =Pagination
      +-------------------------------------------------------------- */
      +nav.paging-navigation,
      +#nav-below {
      +  overflow: hidden;
      +  display: block;
      +  padding: 30px 0;
      +}
      +nav.paging-navigation a,
      +#nav-below a {
      +  display: inline-block;
      +  border: 1px solid #ebebeb;
      +  padding: 20px 20px;
      +  font-weight: bold;
      +  text-transform: uppercase;
      +  font-size: 12px;
      +}
      +nav.paging-navigation a:hover,
      +#nav-below a:hover {
      +  border-color: #333;
      +}
      +nav.paging-navigation .nav-continue,
      +#nav-below .nav-continue {
      +  float: right;
      +}
      +nav.paging-navigation .nav-left,
      +#nav-below .nav-left {
      +  float: left;
      +}
      +/* =Sidebar
      +-------------------------------------------------------------- */
      +.widget-area {
      +  padding: 20px;
      +  padding-right: 30px;
      +  padding-top: 20px;
      +  color: #ccc;
      +  font-size: 12px;
      +  background: #222;
      +}
      +.widget-area h1.widget-title {
      +  color: #fff;
      +  font-size: 18px;
      +  margin-bottom: 10px;
      +}
      +.widget-area a {
      +  color: #a5afb3;
      +  font-weight: bold;
      +}
      +.widget-area a:hover {
      +  color: #fff;
      +}
      +.widget-area ul {
      +  padding: 0;
      +  padding-left: 18px;
      +  margin: 0;
      +}
      +.widget-area ul li {
      +  list-style: square;
      +  margin-bottom: 10px;
      +}
      +.widget-area .widget_search label {
      +  font-weight: bold;
      +  margin-bottom: 10px;
      +  display: none;
      +}
      +.widget-area .widget_search .submit {
      +  display: none;
      +}
      +.widget-area .widget_search #s {
      +  border: 0;
      +  width: 92%;
      +  padding: 4%;
      +  background-color: #666;
      +  color: #1a1d22;
      +  font-size: 14px;
      +}
      +.widget-area .widget_search #s:focus {
      +  outline: none;
      +  color: White;
      +  box-shadow: none;
      +}
      +/* =Comments
      +-------------------------------------------------------------- */
      +#disqus_thread {
      +  margin-top: 50px;
      +}
      +.comments-area {
      +  padding-top: 40px;
      +}
      +.comments-area h2 {
      +  margin-top: 0;
      +}
      +.comments-area ol.commentlist {
      +  list-style: none;
      +  margin: 0;
      +  padding: 0;
      +  max-width: 500px;
      +}
      +.comments-area ol.commentlist li.comment {
      +  border-bottom: 1px solid #e7e7e7;
      +  line-height: 24px;
      +  margin: 0 0 24px 0;
      +  padding: 0 0 24px 60px;
      +  position: relative;
      +}
      +.comments-area ol.commentlist li:last-child {
      +  border-bottom: none;
      +  margin-bottom: 0;
      +}
      +.comments-area ol.commentlist .avatar {
      +  position: absolute;
      +  border-radius: 100px;
      +  top: 4px;
      +  left: 0;
      +}
      +.comments-area ol.commentlist .comment-author {
      +  font-weight: bold;
      +  font-size: 13px;
      +}
      +.comments-area ol.commentlist .comment-author cite {
      +  color: #000;
      +  font-style: normal;
      +  font-weight: bold;
      +}
      +.comments-area ol.commentlist .comment-author .says {
      +  font-style: italic;
      +}
      +.comments-area ol.commentlist .comment-meta {
      +  font-size: 12px;
      +  margin: 0 0 18px 0;
      +}
      +.comments-area ol.commentlist .comment-meta a:link,
      +.comments-area ol.commentlist .comment-meta a:visited {
      +  color: #888;
      +  text-decoration: none;
      +}
      +.comments-area ol.commentlist .comment-meta a:active,
      +.comments-area ol.commentlist .comment-meta a:hover {
      +  color: #ff4b33;
      +}
      +.comments-area .reply {
      +  font-size: 12px;
      +  padding: 0 0 24px 0;
      +}
      +.comments-area .reply a,
      +.comments-area a.comment-edit-link {
      +  color: #888;
      +}
      +.comments-area .reply a:hover,
      +.comments-area a.comment-edit-link:hover {
      +  color: #ff4b33;
      +}
      +.comments-area .commentlist .children {
      +  list-style: none;
      +  margin: 0;
      +}
      +.comments-area .commentlist .children li {
      +  border: none;
      +  margin: 0;
      +}
      +.comments-area .nopassword,
      +.comments-area .nocomments {
      +  display: none;
      +}
      +.comments-area #comments .pingback {
      +  border-bottom: 1px solid #e7e7e7;
      +  margin-bottom: 18px;
      +  padding-bottom: 18px;
      +}
      +.comments-area .commentlist li.comment+li.pingback {
      +  margin-top: -6px;
      +}
      +.comments-area #comments .pingback p {
      +  color: #888;
      +  display: block;
      +  font-size: 12px;
      +  line-height: 18px;
      +  margin: 0;
      +}
      +.comments-area #comments .pingback .url {
      +  font-size: 13px;
      +  font-style: italic;
      +}
      +.comments-area input[type=submit] {
      +  color: #333;
      +}
      +.comments-area #respond {
      +  position: relative;
      +}
      +.comments-area #respond p {
      +  margin: 0;
      +}
      +.comments-area #respond .comment-notes {
      +  margin-bottom: 1em;
      +}
      +.comments-area .form-allowed-tags {
      +  line-height: 1em;
      +}
      +.comments-area .children #respond {
      +  margin: 0 48px 0 0;
      +}
      +.comments-area h3#reply-title {
      +  margin: 18px 0;
      +}
      +.comments-area #comments-list #respond {
      +  margin: 0 0 18px 0;
      +}
      +.comments-area #comments-list ul #respond {
      +  margin: 0;
      +}
      +.comments-area #cancel-comment-reply-link {
      +  font-size: 12px;
      +  font-weight: normal;
      +  line-height: 18px;
      +}
      +.comments-area article a.comment-reply-link {
      +  font-size: 13px;
      +  text-decoration: none;
      +  font-weight: bold;
      +}
      +.comments-area #respond .required {
      +  color: #ff4b33;
      +  font-weight: bold;
      +}
      +.comments-area #respond .comment-form-author label,
      +.comments-area #respond .comment-form-email label,
      +.comments-area #respond .comment-form-url label,
      +.comments-area #respond .comment-form-comment label {
      +  color: #888;
      +  font-size: 12px;
      +  width: 70px;
      +  display: inline-block;
      +}
      +.comments-area #respond .comment-form-comment label {
      +  padding: 0;
      +  text-align: left;
      +}
      +.comments-area #respond input[type="text"] {
      +  margin-bottom: 14px;
      +  padding: 4px;
      +  margin-right: 10px;
      +  border: 0;
      +  border-bottom: 1px solid #ccc;
      +}
      +.comments-area #respond input[type="text"]:focus {
      +  outline: 0;
      +  border-color: #333;
      +}
      +.comments-area .comment-form-comment label {
      +  display: block;
      +}
      +.comments-area #respond textarea {
      +  border-color: #ccc;
      +}
      +.comments-area #respond textarea:focus {
      +  outline: 0;
      +}
      +.comments-area .logged-in-as {
      +  font-size: 11px;
      +}
      +.comments-area ol.commentlist li.comment.byuser {
      +  margin-top: 30px;
      +}
      +.comments-area ol.commentlist li.comment.byuser #respond .form-submit {
      +  margin-left: 0;
      +}
      +.comments-area #respond #submit {
      +  margin: 0 0 9px;
      +  background: #000;
      +  border-radius: 5px;
      +  padding: 10px 20px;
      +  font-weight: bold;
      +  width: auto;
      +  border: 0;
      +  color: #fff;
      +  margin-bottom: 50px;
      +}
      +.comments-area #respond textarea {
      +  width: 96%;
      +  margin-bottom: 10px;
      +  padding: 2%;
      +}
      +.comments-area #respond .form-allowed-tags {
      +  color: #888;
      +  font-size: 12px;
      +  line-height: 18px;
      +}
      +.comments-area #respond .form-allowed-tags code {
      +  font-size: 11px;
      +}
      +.comments-area #respond .form-submit {
      +  margin: 12px 0 0 0;
      +}
      +.comments-area #respond .form-submit input {
      +  font-size: 14px;
      +  width: auto;
      +}
      +.comments-area .form-allowed-tags,
      +.comments-area .comment-notes {
      +  display: none;
      +}
      diff --git a/style.styl b/style.styl
      new file mode 100755
      index 0000000..605f6bf
      --- /dev/null
      +++ b/style.styl
      @@ -0,0 +1,371 @@
      +/*
      +Theme Name: Symbol
      +Theme URI: http://symbol.themeskult.com/
      +Github Theme URI: https://github.com/themeskult/symbol-theme
      +Author: Themes Kult
      +Author URI: http://themeskult.com/
      +Version: 1.4
      +Description: Symbol is a tight, visually clean and well-structured theme that allows you to focus on reading.
      +*/
      +
      +
      +/* Snap.js
      +----------------------------------------------- */
      +.snap-content {
      +  position: absolute;
      +  background: #fff;
      +  top: 0;
      +  right: 0;
      +  bottom: 0;
      +  left: 0;
      +  width: auto;
      +  height: auto;
      +  z-index: 2;
      +  overflow: auto;
      +  -webkit-overflow-scrolling: touch;
      +  -webkit-transform: translate3d(0, 0, 0);
      +     -moz-transform: translate3d(0, 0, 0);
      +      -ms-transform: translate3d(0, 0, 0);
      +       -o-transform: translate3d(0, 0, 0);
      +          transform: translate3d(0, 0, 0);
      +}
      +
      +.snap-drawers {
      +  position: absolute;
      +  top: 0;
      +  right: 0;
      +  bottom: 0;
      +  left: 0;
      +  width: auto;
      +  height: auto;
      +}
      +
      +.snap-drawer {
      +  position: absolute;
      +  top: 0;
      +  right: auto;
      +  bottom: 0;
      +  left: auto;
      +  width: 265px;
      +  height: auto;
      +  overflow: auto;
      +  -webkit-overflow-scrolling: touch;
      +  -webkit-transition: width 0.3s ease;
      +     -moz-transition: width 0.3s ease;
      +      -ms-transition: width 0.3s ease;
      +       -o-transition: width 0.3s ease;
      +          transition: width 0.3s ease;
      +}
      +
      +.snap-drawer-left {
      +  left: 0;
      +  z-index: 1;
      +}
      +
      +.snap-drawer-right {
      +  right: 0;
      +  z-index: 1;
      +}
      +
      +.snapjs-left .snap-drawer-right,
      +.snapjs-right .snap-drawer-left {
      +  display: none;
      +}
      +
      +.snapjs-expand-left .snap-drawer-left,
      +.snapjs-expand-right .snap-drawer-right {
      +  width: 100%;
      +}
      +
      +/* =jQuery Pageslide
      +-------------------------------------------------------------- */
      +#myToggleButton
      +	background: #333 url(images/open.png) center center no-repeat;
      +	display: block;
      +	width: 44px;
      +	height: 44px;
      +	top: 20px;
      +	left: 20px;
      +	position: fixed;
      +	right: 20px;
      +	text-indent: -10000em;
      +	z-index: 10000;
      +
      +
      +/* =General
      +-------------------------------------------------------------- */
      +html 
      +	-webkit-font-smoothing: antialiased;  
      +body
      +	font-family: "Helvetica Neue", "Arial"; overflow-x: hidden; margin: 0; color: #4d4d4d;
      +
      +h1,h2,h3,h4,h5
      +	font-weight: bold;
      +	color: black;
      +	a 
      +		color: black;
      +		text-decoration: none
      +a
      +	text-decoration: none; color: #000; outline: none !important;
      +	&:hover{color: #333;}
      +
      +blockquote
      +	border-left: 8px solid #feb83e; padding-left: 20px; margin-left: 0;
      +
      +img
      +	max-width: 100%;
      +
      +/* =Header
      +-------------------------------------------------------------- */
      +header.site-header
      +	background: #fff; position: fixed; top: 0; z-index: 10000; right: 12%; width: 150px; 
      +	h1 
      +		margin: 0; padding: 0;
      +		a{background: #feb83e url('images/logo.png') center no-repeat; border: 1px solid rgba(0,0,0,.1); border-top: 0; background-size:  70%; height: 150px; text-indent: -10000em; display: block;}
      +	nav
      +		display: block; 
      +		width: 100%;  
      +		color: black; 
      +		font-family:  Menlo, Monaco, 'Lucida Console', monospace;
      +		ul 
      +			margin: 0;
      +			padding: 0;
      +		a
      +			border: 1px solid #ccc; overflow: hidden; border-top: 0;  background: #f9f9f9;  display: block; padding: 10px 10px; line-height: 18px; font-size: 11px; color: #333;
      +			i, img{background: url('images/icon-page.png') center no-repeat; display: inline-block; opacity: .4; float: left; width: 18px; height: 18px;  margin: auto;}
      +			img{display: block;}
      +
      +			&.current_page_item
      +				background: white; 
      +			&:hover
      +				background: #eee; 
      +				span 
      +					color: black;
      +				i,img{opacity: 1;}
      +
      +body.admin-bar header.site-header, body
      +	border-top: 1px solid white;
      +
      +#begin, .site-navigation.post-navigation
      +	border-bottom: 1px solid #ebebeb; padding: 32px 0;
      +	a{color: #999;}
      +	time{ color: #999; font-weight: bold; }
      +
      +
      +.site-main
      +	position: relative;
      +
      +
      +/* =Article
      +-------------------------------------------------------------- */
      +.site-navigation.post-navigation div div
      +	width: 50%; float: left;
      +	&.nav-next{text-align: right; float: right;}
      +
      +.center-content
      +	max-width: 580px; margin: 0 100px 0 140px; display: block; 
      +
      +article.post, article.page
      +	padding: 50px 0;
      +	font-size: 18px;
      +	line-height: 30px;
      +	h1 
      +		font-size: 40px;
      +		line-height: 50px;
      +	p 
      +		a 
      +			color: black;
      +			text-decoration: underline
      +	p < code {width: 100%; display: none;}
      +	code,pre
      +		border: none;
      +		border: 1px solid #d2d2d2;
      +		background-color: #f8f8f8;
      +		padding: 0 4px;
      +		font-size: 13px;
      +		width: auto;
      +
      +		display: inline-block;
      +
      +	code
      +		border-radius: 4px;
      +	pre
      +		padding: 20px 30px;
      +		display: block;
      +		border-left: none;
      +		border-right: none;
      +
      +	/* Images */
      +
      +
      +article.page 
      +	border-bottom: 0;
      +
      +body.page-template-page-lastfm-php
      +	.last-fm-tracks
      +		margin: 0; padding: 0;
      +		list-style: none;
      +		li
      +			overflow: hidden
      +			margin-bottom: 30px;
      +			border-bottom: 1px solid #eee; padding-bottom: 30px;
      +
      +			.track
      +				float: left;
      +				width: 60%;
      +
      +			span.track-album
      +				width: 50px;
      +				display: inline-block;
      +				float: left;
      +				margin-right: 20px;
      +				img {width: 100%; background: #eee;}
      +				i.cover{padding: 40px 0; background: #eee; color: #999; display: block; text-align: center;}
      +			span.track-name
      +				font-size: 18px;
      +				margin-bottom: 4px;
      +				display: block;
      +				font-weight: bold;
      +			span.track-artist
      +				font-size: 14px; color: #999;
      +			span.space 
      +				display: none;
      +			span.track-date
      +				float: right;
      +				color: #999;
      +				font-size: 11px;
      +
      +				i 
      +					font-weight: bold; color: green; font-size: 14px;
      +
      +/* =Pagination
      +-------------------------------------------------------------- */
      +nav.paging-navigation, #nav-below
      +	overflow: hidden; display: block; padding: 30px 0;
      +	a
      +		display: inline-block; border: 1px solid #ebebeb; padding: 20px 20px; font-weight: bold; text-transform: uppercase; font-size: 12px;
      +		&:hover{border-color: #333;}
      +	.nav-continue{float: right;}
      +	.nav-left{float: left;}
      +
      +
      +/* =Sidebar
      +-------------------------------------------------------------- */
      +.widget-area 
      +	padding: 20px;
      +	padding-right: 30px;
      +	padding-top: 20px;
      +	color: #ccc;
      +	font-size: 12px;
      +	background: #222;
      +	h1.widget-title 
      +		color: white;
      +		font-size: 18px;
      +		margin-bottom: 10px;
      +
      +	a 
      +		color: #a5afb3;
      +		font-weight: bold;
      +		&:hover 
      +			color: white;
      +
      +	ul 
      +		padding: 0;
      +		padding-left: 18px;
      +		margin: 0;
      +		li 
      +			list-style:  square;
      +			margin-bottom: 10px;
      +
      +
      +	.widget_search
      +		label
      +			font-weight: bold;
      +			margin-bottom: 10px;
      +			display: none;
      +		.submit 
      +			display: none;
      +		#s 
      +			border: 0;
      +			width: 92%;
      +			padding: 4%;
      +			background-color: #666;
      +			color: #1a1d22;
      +			font-size: 14px;
      +			&:focus 
      +				outline: none;
      +				color: White;
      +				box-shadow: none;
      +
      +
      +/* =Comments
      +-------------------------------------------------------------- */
      +
      +#disqus_thread{margin-top: 50px;}
      +.comments-area
      +	padding-top: 40px;
      +	h2{margin-top: 0;}
      +	ol.commentlist
      +		list-style:none; margin:0; padding: 0; max-width: 500px; 
      +		li.comment{border-bottom:1px solid #e7e7e7; line-height:24px;  margin:0 0 24px 0; padding:0 0 24px 60px; position:relative}
      +		li:last-child{border-bottom:none; margin-bottom:0}
      +		.avatar{position:absolute; border-radius: 100px; top:4px; left:0}
      +		.comment-author{font-weight: bold; font-size: 13px}
      +		.comment-author cite{color:#000; font-style:normal; font-weight:bold}
      +		.comment-author .says{font-style:italic}
      +		.comment-meta{font-size:12px; margin:0 0 18px 0}
      +		.comment-meta a:link, 
      +		.comment-meta a:visited{color:#888; text-decoration:none}
      +		.comment-meta a:active, 
      +		.comment-meta a:hover{color:#ff4b33}
      +	.reply{font-size:12px; padding:0 0 24px 0}
      +	.reply a, 
      +	a.comment-edit-link{color:#888}
      +	.reply a:hover, 
      +	a.comment-edit-link:hover{color:#ff4b33}
      +	.commentlist .children{list-style:none; margin:0}
      +	.commentlist .children li{border:none; margin:0}
      +	.nopassword, .nocomments{display:none}
      +	#comments .pingback{border-bottom:1px solid #e7e7e7; margin-bottom:18px; padding-bottom:18px}
      +	.commentlist li.comment+li.pingback{margin-top:-6px}
      +	#comments .pingback p{color:#888; display:block; font-size:12px; line-height:18px; margin:0}
      +	#comments .pingback .url{font-size:13px; font-style:italic}
      +
      +	input[type=submit]{color:#333}
      +	#respond{position:relative; }
      +	#respond p{margin:0}
      +	#respond .comment-notes{margin-bottom:1em}
      +	.form-allowed-tags{line-height:1em}
      +	.children #respond{margin:0 48px 0 0}
      +	h3#reply-title{margin:18px 0}
      +	#comments-list #respond{margin:0 0 18px 0}
      +	#comments-list ul #respond{margin:0}
      +	#cancel-comment-reply-link{font-size:12px; font-weight:normal; line-height:18px}
      +	article a.comment-reply-link{font-size: 13px; text-decoration: none; font-weight: bold;}
      +	#respond .required{color:#ff4b33; font-weight:bold}
      +	#respond .comment-form-author label, #respond .comment-form-email label, #respond .comment-form-url label, #respond .comment-form-comment label{color:#888;  font-size:12px; width: 70px; display: inline-block;  }
      +	#respond .comment-form-comment label {padding: 0; text-align: left; }
      +	#respond input[type="text"]{margin-bottom:14px; padding:4px; margin-right:10px; border:0; border-bottom:1px solid #ccc}
      +	#respond input[type="text"]:focus{outline:0; border-color:#333}
      +
      +	.comment-form-comment label{display: block;}
      +	#respond textarea{border-color:#ccc}
      +	#respond textarea:focus{outline:0}
      +	.logged-in-as{font-size: 11px}
      +
      +	ol.commentlist li.comment.byuser{margin-top: 30px}
      +	ol.commentlist li.comment.byuser #respond .form-submit{margin-left: 0}
      +	#respond #submit{margin:0 0 9px; background:black; border-radius:5px; padding:10px 20px; font-weight:bold; width:auto; border:0; color:white; margin-bottom:50px}
      +	#respond textarea{width: 96%; margin-bottom:10px; padding: 2%}
      +	#respond .form-allowed-tags{color:#888; font-size:12px; line-height:18px}
      +	#respond .form-allowed-tags code{font-size:11px}
      +	#respond .form-submit{margin:12px 0 0 0}
      +	#respond .form-submit input{font-size:14px; width:auto}
      +	.form-allowed-tags, .comment-notes{display: none;}
      +
      +
      +
      +
      +
      +
      +
      diff --git a/translations/readme.txt b/translations/readme.txt
      new file mode 100755
      index 0000000..2f675c2
      --- /dev/null
      +++ b/translations/readme.txt
      @@ -0,0 +1,6 @@
      +Place your theme language files in this directory.
      +
      +Please visit the following links to learn more about translating WordPress themes:
      +
      +http://codex.wordpress.org/Translating_WordPress
      +http://codex.wordpress.org/Function_Reference/load_theme_textdomain