├── .gitignore ├── .htaccess ├── Dockerfile ├── Gruntfile.js ├── application ├── .htaccess ├── cache │ ├── .htaccess │ └── index.html ├── config │ ├── all │ │ ├── app.php │ │ ├── index.html │ │ └── language.php │ ├── autoload.php │ ├── config.php │ ├── constants.php │ ├── database-sample.php │ ├── doctypes.php │ ├── foreign_chars.php │ ├── hooks.php │ ├── index.html │ ├── migration.php │ ├── mimes.php │ ├── profiler.php │ ├── routes.php │ ├── smileys.php │ └── user_agents.php ├── controllers │ ├── Cron.php │ ├── Export.php │ ├── Help.php │ ├── Import.php │ ├── Install.php │ ├── Json.php │ ├── Labels.php │ ├── Login.php │ ├── Logout.php │ ├── Marks.php │ ├── Migrations.php │ ├── Register.php │ ├── Singletons.php │ ├── Tags.php │ ├── Tools.php │ ├── User.php │ ├── Welcome.php │ └── index.html ├── core │ ├── Plain_CodeIgniter.php │ ├── Plain_Config.php │ ├── Plain_Controller.php │ ├── Plain_Exceptions.php │ ├── Plain_Hooks.php │ ├── Plain_Lang.php │ ├── Plain_Loader.php │ ├── Plain_Model.php │ ├── Plain_Router.php │ └── index.html ├── helpers │ ├── MY_url_helper.php │ ├── data_helper.php │ ├── hash_helper.php │ ├── hrecipe_helper.php │ ├── http_build_url_helper.php │ ├── index.html │ ├── oembed_helper.php │ ├── simple_html_dom.php │ ├── validation_helper.php │ └── view_helper.php ├── hooks │ ├── Unmark_Languages.php │ └── index.html ├── index.html ├── language │ ├── english.php │ ├── index.html │ ├── phrases.php │ └── phrases_errors.php ├── libraries │ ├── CIDatabaseSessionHandler.php │ ├── Exceptional.php │ ├── JSONExport.php │ ├── JSONImport.php │ ├── JSONImportStateMachine │ │ ├── JSONImportStateInterface.php │ │ ├── JSONImportStateMarks.php │ │ ├── JSONImportStateMetaData.php │ │ ├── JSONImportStateStart.php │ │ └── index.html │ ├── Mark_Import.php │ ├── Plain_Cache.php │ ├── Plain_Email.php │ ├── Plain_Migration.php │ ├── Plain_Session.php │ ├── Uuid.php │ └── index.html ├── logs │ └── index.html ├── migrations │ ├── 001_create_nilai.php │ ├── 002_archive_stats.php │ ├── 003_users_update.php │ ├── 004_password_update.php │ ├── 005_users_admin_flag.php │ ├── 006_plain_sessions.php │ ├── 007_batshit_crazy.php │ ├── 008_user_token.php │ ├── 009_delete_marks.php │ ├── 010_tokens.php │ ├── 2014022801_label_sort.php │ ├── 2014112501_user_titles.php │ └── index.html ├── models │ ├── Labels_model.php │ ├── Marks_model.php │ ├── Tags_model.php │ ├── Tokens_model.php │ ├── User_marks_to_tags_model.php │ ├── Users_model.php │ ├── Users_to_marks_model.php │ └── index.html ├── third_party │ ├── PHP-Markdown-1.2.5 │ │ ├── License.text │ │ ├── PHP Markdown Extra Readme.text │ │ ├── index.html │ │ └── markdown.php │ └── index.html └── views │ ├── email │ ├── forgot-password.php │ ├── index.html │ └── update-password.php │ ├── errors │ ├── cli │ │ ├── error_404.php │ │ ├── error_db.php │ │ ├── error_exception.php │ │ ├── error_general.php │ │ ├── error_php.php │ │ └── index.html │ ├── html │ │ ├── error_404.php │ │ ├── error_db.php │ │ ├── error_general.php │ │ ├── error_php.php │ │ └── index.html │ └── index.html │ ├── import │ ├── index.html │ └── index.php │ ├── index.html │ ├── json │ ├── index.html │ └── index.php │ ├── layouts │ ├── accountlinks.php │ ├── footer.php │ ├── footer_scripts.php │ ├── footer_unlogged_scripts.php │ ├── header.php │ ├── index.html │ ├── jsvars.php │ ├── navigation.php │ ├── navigation │ │ ├── index.html │ │ ├── nav_helper.php │ │ ├── nav_icons.php │ │ └── nav_panels.php │ ├── sidebar.php │ ├── sidebar │ │ ├── index.html │ │ └── sidebar_notices.php │ ├── timeline.php │ ├── topbar │ │ ├── index.html │ │ └── searchform.php │ └── userforms.php │ ├── marks │ ├── error.php │ ├── index.html │ ├── index.php │ └── info.php │ ├── partials │ ├── debug.php │ └── index.html │ ├── register │ ├── index.html │ └── index.php │ ├── setup.php │ ├── singletons │ ├── index.html │ └── reset.php │ └── welcome.php ├── assets ├── .htaccess ├── css │ ├── icons.data.png.css │ ├── icons.data.svg.css │ ├── icons.fallback.css │ ├── index.html │ ├── partials │ │ ├── _animation.scss │ │ ├── _bookmarklet.scss │ │ ├── _grid-settings.scss │ │ ├── _login.scss │ │ ├── _main.scss │ │ ├── _mobile.scss │ │ ├── _navigation.scss │ │ ├── _normalize.scss │ │ ├── _overlays.scss │ │ ├── _scaffolding.scss │ │ ├── _setup.scss │ │ ├── _sidebar.scss │ │ ├── _stream.scss │ │ ├── _variables.scss │ │ └── index.html │ ├── selectize.css │ ├── unmark.scss │ └── unmark_welcome.scss ├── images │ ├── demo.gif │ ├── feature_bookmarklet.jpg │ ├── feature_chrome.jpg │ ├── feature_git.jpg │ ├── feature_import.jpg │ ├── feature_notes.jpg │ ├── feature_preview.jpg │ ├── feature_tweet.jpg │ ├── icons │ │ ├── archive.png │ │ ├── bell.png │ │ ├── big_close.png │ │ ├── check.png │ │ ├── check_dark.png │ │ ├── circle_arrow_down.png │ │ ├── circle_arrow_up.png │ │ ├── circle_check.png │ │ ├── down.png │ │ ├── edit.png │ │ ├── ellipsis.png │ │ ├── github.png │ │ ├── go.png │ │ ├── goto_link.png │ │ ├── goto_title.png │ │ ├── heading_archive.png │ │ ├── heading_close.png │ │ ├── heading_collapse.png │ │ ├── heading_expand.png │ │ ├── heading_search.png │ │ ├── heading_tag.png │ │ ├── heading_time.png │ │ ├── index.html │ │ ├── label.png │ │ ├── large_check.png │ │ ├── large_x.png │ │ ├── links.png │ │ ├── logo.png │ │ ├── logo_text_dark.png │ │ ├── logo_text_light.png │ │ ├── logo_text_white.png │ │ ├── menu_close.png │ │ ├── menu_open.png │ │ ├── option_down.png │ │ ├── option_up.png │ │ ├── search.png │ │ ├── settings.png │ │ ├── small_check.png │ │ ├── small_x.png │ │ ├── spinner.png │ │ ├── time.png │ │ ├── unarchive.png │ │ ├── up.png │ │ └── upgrade.png │ ├── index.html │ ├── logo.png │ ├── logo_text_light.png │ └── pwa │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── index.html │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg ├── index.html ├── js │ ├── index.html │ ├── plugins │ │ ├── Chart.min.js │ │ ├── fitvids.js │ │ ├── hogan.js │ │ ├── index.html │ │ ├── jquery.pjax.js │ │ ├── modernizr-2.7.1.min.js │ │ ├── selectize.min.js │ │ └── unmark-graph.js │ ├── production │ │ └── index.html │ ├── templates │ │ ├── JS-Templates.html │ │ ├── index.html │ │ ├── mark-info-edit.html │ │ ├── mark-info-list-item.html │ │ └── unmark-templates.js │ ├── unmark.actions.js │ ├── unmark.add.js │ ├── unmark.client.js │ ├── unmark.init.js │ ├── unmark.js │ ├── unmark.login.js │ ├── unmark.marks.js │ ├── unmark.pwa.js │ ├── unmark.register.js │ ├── unmark.reset.js │ └── unmark.touch.js ├── libraries │ ├── bourbon │ │ ├── _bourbon-deprecated-upcoming.scss │ │ ├── _bourbon.scss │ │ ├── addons │ │ │ ├── _button.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _font-family.scss │ │ │ ├── _hide-text.scss │ │ │ ├── _html5-input-types.scss │ │ │ ├── _position.scss │ │ │ ├── _prefixer.scss │ │ │ ├── _retina-image.scss │ │ │ ├── _size.scss │ │ │ ├── _timing-functions.scss │ │ │ └── _triangle.scss │ │ ├── css3 │ │ │ ├── _animation.scss │ │ │ ├── _appearance.scss │ │ │ ├── _backface-visibility.scss │ │ │ ├── _background-image.scss │ │ │ ├── _background.scss │ │ │ ├── _border-image.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _box-sizing.scss │ │ │ ├── _columns.scss │ │ │ ├── _flex-box.scss │ │ │ ├── _font-face.scss │ │ │ ├── _hidpi-media-query.scss │ │ │ ├── _image-rendering.scss │ │ │ ├── _inline-block.scss │ │ │ ├── _keyframes.scss │ │ │ ├── _linear-gradient.scss │ │ │ ├── _perspective.scss │ │ │ ├── _placeholder.scss │ │ │ ├── _radial-gradient.scss │ │ │ ├── _transform.scss │ │ │ ├── _transition.scss │ │ │ └── _user-select.scss │ │ ├── functions │ │ │ ├── _compact.scss │ │ │ ├── _flex-grid.scss │ │ │ ├── _grid-width.scss │ │ │ ├── _linear-gradient.scss │ │ │ ├── _modular-scale.scss │ │ │ ├── _px-to-em.scss │ │ │ ├── _radial-gradient.scss │ │ │ ├── _tint-shade.scss │ │ │ └── _transition-property-name.scss │ │ └── helpers │ │ │ ├── _deprecated-webkit-gradient.scss │ │ │ ├── _gradient-positions-parser.scss │ │ │ ├── _linear-positions-parser.scss │ │ │ ├── _radial-arg-parser.scss │ │ │ ├── _radial-positions-parser.scss │ │ │ ├── _render-gradients.scss │ │ │ └── _shape-size-stripper.scss │ ├── index.html │ ├── jquery │ │ ├── index.html │ │ └── jquery-2.1.0.min.js │ └── neat │ │ ├── _neat-helpers.scss │ │ ├── _neat.scss │ │ ├── functions │ │ ├── _new-breakpoint.scss │ │ └── _private.scss │ │ ├── grid │ │ ├── _fill-parent.scss │ │ ├── _grid.scss │ │ ├── _media.scss │ │ ├── _omega.scss │ │ ├── _outer-container.scss │ │ ├── _pad.scss │ │ ├── _private.scss │ │ ├── _reset.scss │ │ ├── _row.scss │ │ ├── _shift.scss │ │ ├── _span-columns.scss │ │ ├── _to-deprecate.scss │ │ └── _visual-grid.scss │ │ ├── index.html │ │ └── settings │ │ ├── _grid.scss │ │ └── _visual-grid.scss └── touch_icons │ └── index.html ├── bookmarklets ├── unmark_autoclose.js └── unmark_default.js ├── browserconfig.xml ├── custom_example └── readme.md ├── docker-compose.yml ├── docker-configs └── php-custom.ini ├── export-schema.md ├── favicon.ico ├── index.php ├── license.txt ├── manifest.json ├── package-lock.json ├── package.json ├── readme.md ├── service-worker.js └── system ├── .htaccess ├── core ├── Benchmark.php ├── CodeIgniter.php ├── Common.php ├── Config.php ├── Controller.php ├── Exceptions.php ├── Hooks.php ├── Input.php ├── Lang.php ├── Loader.php ├── Log.php ├── Model.php ├── Output.php ├── Router.php ├── Security.php ├── URI.php ├── Utf8.php ├── compat │ ├── hash.php │ ├── index.html │ ├── mbstring.php │ ├── password.php │ └── standard.php └── index.html ├── database ├── DB.php ├── DB_cache.php ├── DB_driver.php ├── DB_forge.php ├── DB_query_builder.php ├── DB_result.php ├── DB_utility.php ├── drivers │ ├── cubrid │ │ ├── cubrid_driver.php │ │ ├── cubrid_forge.php │ │ ├── cubrid_result.php │ │ ├── cubrid_utility.php │ │ └── index.html │ ├── ibase │ │ ├── ibase_driver.php │ │ ├── ibase_forge.php │ │ ├── ibase_result.php │ │ ├── ibase_utility.php │ │ └── index.html │ ├── index.html │ ├── mssql │ │ ├── index.html │ │ ├── mssql_driver.php │ │ ├── mssql_forge.php │ │ ├── mssql_result.php │ │ └── mssql_utility.php │ ├── mysql │ │ ├── index.html │ │ ├── mysql_driver.php │ │ ├── mysql_forge.php │ │ ├── mysql_result.php │ │ └── mysql_utility.php │ ├── mysqli │ │ ├── index.html │ │ ├── mysqli_driver.php │ │ ├── mysqli_forge.php │ │ ├── mysqli_result.php │ │ └── mysqli_utility.php │ ├── oci8 │ │ ├── index.html │ │ ├── oci8_driver.php │ │ ├── oci8_forge.php │ │ ├── oci8_result.php │ │ └── oci8_utility.php │ ├── odbc │ │ ├── index.html │ │ ├── odbc_driver.php │ │ ├── odbc_forge.php │ │ ├── odbc_result.php │ │ └── odbc_utility.php │ ├── pdo │ │ ├── index.html │ │ ├── pdo_driver.php │ │ ├── pdo_forge.php │ │ ├── pdo_result.php │ │ ├── pdo_utility.php │ │ └── subdrivers │ │ │ ├── index.html │ │ │ ├── pdo_4d_driver.php │ │ │ ├── pdo_4d_forge.php │ │ │ ├── pdo_cubrid_driver.php │ │ │ ├── pdo_cubrid_forge.php │ │ │ ├── pdo_dblib_driver.php │ │ │ ├── pdo_dblib_forge.php │ │ │ ├── pdo_firebird_driver.php │ │ │ ├── pdo_firebird_forge.php │ │ │ ├── pdo_ibm_driver.php │ │ │ ├── pdo_ibm_forge.php │ │ │ ├── pdo_informix_driver.php │ │ │ ├── pdo_informix_forge.php │ │ │ ├── pdo_mysql_driver.php │ │ │ ├── pdo_mysql_forge.php │ │ │ ├── pdo_oci_driver.php │ │ │ ├── pdo_oci_forge.php │ │ │ ├── pdo_odbc_driver.php │ │ │ ├── pdo_odbc_forge.php │ │ │ ├── pdo_pgsql_driver.php │ │ │ ├── pdo_pgsql_forge.php │ │ │ ├── pdo_sqlite_driver.php │ │ │ ├── pdo_sqlite_forge.php │ │ │ ├── pdo_sqlsrv_driver.php │ │ │ └── pdo_sqlsrv_forge.php │ ├── postgre │ │ ├── index.html │ │ ├── postgre_driver.php │ │ ├── postgre_forge.php │ │ ├── postgre_result.php │ │ └── postgre_utility.php │ ├── sqlite │ │ ├── index.html │ │ ├── sqlite_driver.php │ │ ├── sqlite_forge.php │ │ ├── sqlite_result.php │ │ └── sqlite_utility.php │ ├── sqlite3 │ │ ├── index.html │ │ ├── sqlite3_driver.php │ │ ├── sqlite3_forge.php │ │ ├── sqlite3_result.php │ │ └── sqlite3_utility.php │ └── sqlsrv │ │ ├── index.html │ │ ├── sqlsrv_driver.php │ │ ├── sqlsrv_forge.php │ │ ├── sqlsrv_result.php │ │ └── sqlsrv_utility.php └── index.html ├── fonts ├── index.html └── texb.ttf ├── helpers ├── array_helper.php ├── captcha_helper.php ├── cookie_helper.php ├── date_helper.php ├── directory_helper.php ├── download_helper.php ├── email_helper.php ├── file_helper.php ├── form_helper.php ├── html_helper.php ├── index.html ├── inflector_helper.php ├── language_helper.php ├── number_helper.php ├── path_helper.php ├── security_helper.php ├── smiley_helper.php ├── string_helper.php ├── text_helper.php ├── typography_helper.php ├── url_helper.php └── xml_helper.php ├── index.html ├── language ├── english │ ├── calendar_lang.php │ ├── date_lang.php │ ├── db_lang.php │ ├── email_lang.php │ ├── form_validation_lang.php │ ├── ftp_lang.php │ ├── imglib_lang.php │ ├── index.html │ ├── migration_lang.php │ ├── number_lang.php │ ├── pagination_lang.php │ ├── profiler_lang.php │ ├── unit_test_lang.php │ └── upload_lang.php └── index.html └── libraries ├── Cache ├── Cache.php ├── drivers │ ├── Cache_apc.php │ ├── Cache_dummy.php │ ├── Cache_file.php │ ├── Cache_memcached.php │ ├── Cache_redis.php │ ├── Cache_wincache.php │ └── index.html └── index.html ├── Calendar.php ├── Cart.php ├── Driver.php ├── Email.php ├── Encrypt.php ├── Encryption.php ├── Form_validation.php ├── Ftp.php ├── Image_lib.php ├── Javascript.php ├── Javascript ├── Jquery.php └── index.html ├── Migration.php ├── Pagination.php ├── Parser.php ├── Profiler.php ├── Session ├── Session.php ├── SessionHandlerInterface.php ├── Session_driver.php ├── drivers │ ├── Session_database_driver.php │ ├── Session_files_driver.php │ ├── Session_memcached_driver.php │ ├── Session_redis_driver.php │ └── index.html └── index.html ├── Table.php ├── Trackback.php ├── Typography.php ├── Unit_test.php ├── Upload.php ├── User_agent.php ├── Xmlrpc.php ├── Xmlrpcs.php ├── Zip.php └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | # macOS 2 | .DS_Store 3 | 4 | # Application things 5 | application/config/database.php 6 | application/logs/*.php 7 | application/controllers/test.php 8 | application/views/test.php 9 | application/cache/db_backups 10 | custom 11 | error_log 12 | application/config/environment.php 13 | application/config/*/** 14 | !application/config/all/* 15 | 16 | # Development files 17 | node_modules 18 | .buildpath 19 | .project 20 | .sass-cache/ 21 | .sass-cache 22 | assets/css/.sass-cache/* 23 | assets/css/*.css.map 24 | 25 | # Production CSS and JS files 26 | assets/css/unmark.css 27 | assets/css/unmark_welcome.css 28 | assets/js/production/*.js 29 | 30 | # Custom files 31 | custom* 32 | 33 | # Release build 34 | release* 35 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | RewriteBase / 4 | 5 | #Removes access to the system folder by users. 6 | #Additionally this will allow you to create a System.php controller, 7 | #previously this would not have been possible. 8 | #'system' can be replaced if you have renamed your system folder. 9 | RewriteCond %{REQUEST_URI} ^system.* 10 | RewriteRule ^(.*)$ /index.php?/$1 [L] 11 | 12 | #When your application folder isn't in the system folder 13 | #This snippet prevents user access to the application folder 14 | #Submitted by: Fabdrol 15 | #Rename 'application' to your applications folder name. 16 | RewriteCond %{REQUEST_URI} ^application.* 17 | RewriteRule ^(.*)$ /index.php?/$1 [L] 18 | 19 | #Checks to see if the user is attempting to access a valid file, 20 | #such as an image or css document, if this isn't true it sends the 21 | #request to index.php 22 | RewriteCond %{REQUEST_FILENAME} !-f 23 | RewriteCond %{REQUEST_FILENAME} !-d 24 | RewriteRule ^(.*)$ index.php?/$1 [L] 25 | 26 | 27 | 28 | # If we don't have mod_rewrite installed, all 404's 29 | # can be sent to index.php, and everything works as normal. 30 | # Submitted by: ElliotHaughin 31 | 32 | ErrorDocument 404 index.php 33 | 34 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:5.6-apache 2 | RUN docker-php-ext-install -j$(nproc) mysqli && a2enmod rewrite -------------------------------------------------------------------------------- /application/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all -------------------------------------------------------------------------------- /application/cache/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /application/cache/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/config/all/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/config/all/language.php: -------------------------------------------------------------------------------- 1 | 'en_US', 9 | 'polish' => 'pl_PL', 10 | 'simple_chinese' => 'zh_CN' 11 | ); 12 | -------------------------------------------------------------------------------- /application/config/doctypes.php: -------------------------------------------------------------------------------- 1 | '', 5 | 'xhtml1-strict' => '', 6 | 'xhtml1-trans' => '', 7 | 'xhtml1-frame' => '', 8 | 'html5' => '', 9 | 'html4-strict' => '', 10 | 'html4-trans' => '', 11 | 'html4-frame' => '' 12 | ); 13 | 14 | /* End of file doctypes.php */ 15 | /* Location: ./application/config/doctypes.php */ -------------------------------------------------------------------------------- /application/config/foreign_chars.php: -------------------------------------------------------------------------------- 1 | 'ae', 12 | '/ö|œ/' => 'oe', 13 | '/ü/' => 'ue', 14 | '/Ä/' => 'Ae', 15 | '/Ü/' => 'Ue', 16 | '/Ö/' => 'Oe', 17 | '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A', 18 | '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a', 19 | '/Ç|Ć|Ĉ|Ċ|Č/' => 'C', 20 | '/ç|ć|ĉ|ċ|č/' => 'c', 21 | '/Ð|Ď|Đ/' => 'D', 22 | '/ð|ď|đ/' => 'd', 23 | '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E', 24 | '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e', 25 | '/Ĝ|Ğ|Ġ|Ģ/' => 'G', 26 | '/ĝ|ğ|ġ|ģ/' => 'g', 27 | '/Ĥ|Ħ/' => 'H', 28 | '/ĥ|ħ/' => 'h', 29 | '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I', 30 | '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i', 31 | '/Ĵ/' => 'J', 32 | '/ĵ/' => 'j', 33 | '/Ķ/' => 'K', 34 | '/ķ/' => 'k', 35 | '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L', 36 | '/ĺ|ļ|ľ|ŀ|ł/' => 'l', 37 | '/Ñ|Ń|Ņ|Ň/' => 'N', 38 | '/ñ|ń|ņ|ň|ʼn/' => 'n', 39 | '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O', 40 | '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o', 41 | '/Ŕ|Ŗ|Ř/' => 'R', 42 | '/ŕ|ŗ|ř/' => 'r', 43 | '/Ś|Ŝ|Ş|Š/' => 'S', 44 | '/ś|ŝ|ş|š|ſ/' => 's', 45 | '/Ţ|Ť|Ŧ/' => 'T', 46 | '/ţ|ť|ŧ/' => 't', 47 | '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U', 48 | '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u', 49 | '/Ý|Ÿ|Ŷ/' => 'Y', 50 | '/ý|ÿ|ŷ/' => 'y', 51 | '/Ŵ/' => 'W', 52 | '/ŵ/' => 'w', 53 | '/Ź|Ż|Ž/' => 'Z', 54 | '/ź|ż|ž/' => 'z', 55 | '/Æ|Ǽ/' => 'AE', 56 | '/ß/'=> 'ss', 57 | '/IJ/' => 'IJ', 58 | '/ij/' => 'ij', 59 | '/Œ/' => 'OE', 60 | '/ƒ/' => 'f' 61 | ); 62 | 63 | /* End of file foreign_chars.php */ 64 | /* Location: ./application/config/foreign_chars.php */ -------------------------------------------------------------------------------- /application/config/hooks.php: -------------------------------------------------------------------------------- 1 | 'Unmark_Localization', 17 | 'function' => 'loadLanguage', 18 | 'filename' => 'Unmark_Localization.php', 19 | 'filepath' => 'hooks', 20 | );*/ 21 | 22 | // Loads language translation array 23 | $hook['pre_controller_method'][''] = array( 24 | 'class' => 'Unmark_languages', 25 | 'function' => 'loadLanguage', 26 | 'filename' => 'Unmark_Languages.php', 27 | 'filepath' => 'hooks', 28 | ); 29 | 30 | 31 | /* End of file hooks.php */ 32 | /* Location: ./application/config/hooks.php */ 33 | -------------------------------------------------------------------------------- /application/config/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/config/profiler.php: -------------------------------------------------------------------------------- 1 | _<' . PHP_EOL; 21 | } 22 | 23 | public function processEmbeds() 24 | { 25 | $embedly_key = $this->config->item('embedly_api_key'); 26 | 27 | if (empty($embedly_key)) { 28 | print 'ERROR: Please add an embedly API key in order to process embeds.' . PHP_EOL; 29 | 30 | // Send exception 31 | $this->exceptional->createTrace(E_ERROR, 'No embedly API key configured. Cannot run process to find embeds.', __FILE__, __LINE__); 32 | exit; 33 | } 34 | 35 | set_time_limit(0); 36 | 37 | // Get any marks that haven't been run for embeds 38 | $this->load->model('marks_model', 'mark'); 39 | $marks = $this->mark->read("embed_processed = '0'", self::MAX_EMBEDS_TO_PROCESS, 1, 'mark_id, url'); 40 | 41 | if (isset($marks[0]->mark_id)) { 42 | $this->load->helper('oembed'); 43 | foreach($marks as $k => $mark) { 44 | 45 | // OEmbed check 46 | // If no embed, check recipes 47 | $embed = oembed($mark->url, $embedly_key); 48 | 49 | // Set options 50 | // Set embed processed = 1 51 | $options = array(); 52 | $options['embed_processed'] = 1; 53 | 54 | // If embed is found 55 | // Set it in options 56 | if (! empty($embed)) { 57 | $options['embed'] = $embed; 58 | } 59 | 60 | $res = $this->mark->update($mark->mark_id, $options); 61 | 62 | } 63 | } 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /application/controllers/Help.php: -------------------------------------------------------------------------------- 1 | load->library('session'); 13 | $user = $this->session->userdata('user'); 14 | 15 | if (! isset($user['admin']) || empty($user['admin'])) { 16 | header('Location: /'); 17 | exit; 18 | } 19 | } 20 | 21 | public function index() 22 | { 23 | 24 | // See if there is a users table 25 | // Also, be sure there _are_ users. 26 | if ( !$this->db->table_exists('users') ) { // No user table 27 | 28 | // There is no users table, run migrations to make 29 | // sure that database is up-to-date. 30 | $this->load->library('migration'); 31 | 32 | if ( ! $this->migration->current() ) 33 | { 34 | show_error($this->migration->error_string()); 35 | exit; 36 | } 37 | 38 | } 39 | 40 | // Make sure there is at least one user 41 | $this->db->from('users'); 42 | $number_of_users = $this->db->count_all_results(); 43 | 44 | // if users exist, redirect to homepage, else register 45 | $redirect = ($number_of_users > 0) ? '/' : '/register'; 46 | header('Location: ' . $redirect); 47 | exit; 48 | } 49 | 50 | public function setup() 51 | { 52 | if ($this->db->table_exists('users') === true) { 53 | header('Location: /'); 54 | exit; 55 | } 56 | 57 | $this->load->view('setup'); 58 | } 59 | 60 | // Used to update from one version to another. 61 | public function upgrade() 62 | { 63 | //$this->check_admin(); // Removed in 1.7.1. This is only applicable on unmark.it 64 | $this->load->library('migration'); 65 | 66 | if ( ! $this->migration->current() ) 67 | { 68 | show_error($this->migration->error_string()); 69 | exit; 70 | } 71 | exit(sprintf(unmark_phrase('Upgraded. Please return home.'), '/')); 72 | 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /application/controllers/Json.php: -------------------------------------------------------------------------------- 1 | data['errors'] = formatErrors(403); 15 | $this->renderJSON(); 16 | } 17 | 18 | // Check if user is logged in and using chrome extension 19 | public function chromePing() 20 | { 21 | if ($this->logged_in !== true || parent::isChromeExtension() === false) { 22 | $this->data['errors'] = formatErrors(403); 23 | } 24 | else { 25 | $this->data['success'] = true; 26 | } 27 | $this->renderJSON(); 28 | } 29 | 30 | // Catch all 31 | public function index() 32 | { 33 | $this->data['errors'] = formatErrors(404); 34 | $this->renderJSON(); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /application/controllers/Logout.php: -------------------------------------------------------------------------------- 1 | sessionClear(); 15 | header('Location: /'); 16 | exit; 17 | } 18 | } -------------------------------------------------------------------------------- /application/controllers/Migrations.php: -------------------------------------------------------------------------------- 1 | load->library('migration'); 26 | 27 | if ( ! $this->migration->current() ) 28 | { 29 | show_error($this->migration->error_string()); 30 | exit(-1); 31 | } else{ 32 | echo "Migrations run successfully\n"; 33 | exit(0); 34 | } 35 | } 36 | 37 | /** 38 | * Update DB to specified version 39 | */ 40 | public function version($version) 41 | { 42 | if(!empty($version) && is_numeric($version)){ 43 | // Run migrations to make 44 | // sure that database is up-to-date. 45 | $this->load->library('migration'); 46 | 47 | if ( ! $this->migration->version($version) ) 48 | { 49 | show_error($this->migration->error_string()); 50 | exit(-1); 51 | } else{ 52 | echo "Migrations run successfully for version $version\n"; 53 | exit(0); 54 | } 55 | } 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /application/controllers/Singletons.php: -------------------------------------------------------------------------------- 1 | view('singletons/changelog', $data); 18 | } 19 | 20 | // Redirect folks awayz 21 | public function index() 22 | { 23 | header('Location: /'); 24 | exit; 25 | } 26 | 27 | // TOS 28 | public function terms() 29 | { 30 | $this->view('singletons/terms'); 31 | } 32 | 33 | // Reset password View 34 | public function reset($token=null) 35 | { 36 | $this->data['token'] = $token; 37 | $this->data['no_header'] = true; 38 | $this->data['no_footer'] = true; 39 | $this->view('singletons/reset'); 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /application/controllers/Welcome.php: -------------------------------------------------------------------------------- 1 | redirectIfLoggedIn('/marks'); 14 | $this->redirectIfNotInstalled('/setup'); 15 | 16 | 17 | $this->view('welcome', array('no_header' => true, 'no_footer' => true)); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /application/controllers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/core/Plain_Exceptions.php: -------------------------------------------------------------------------------- 1 | load->library('exceptional'); 24 | $CI->exceptional->createTrace($severity, $message, $filepath, $line); 25 | } 26 | } 27 | 28 | // Only show php errors on development 29 | public function show_php_error($severity, $message, $filepath, $line) 30 | { 31 | self::log_exception($severity, $message, $filepath, $line); 32 | parent::show_php_error($severity, $message, $filepath, $line); 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /application/core/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/helpers/MY_url_helper.php: -------------------------------------------------------------------------------- 1 | config->site_url($CI->uri->uri_string()); 9 | return $_SERVER['QUERY_STRING'] ? $url.'?'.$_SERVER['QUERY_STRING'] : $url; 10 | } 11 | 12 | ?> -------------------------------------------------------------------------------- /application/helpers/hrecipe_helper.php: -------------------------------------------------------------------------------- 1 | find('.hrecipe'); 23 | 24 | if (isset($hrecipe) && is_array($hrecipe)) { 25 | $recipe = array(); 26 | 27 | // Parse recipe 28 | foreach($html->find('.fn') as $e) 29 | $recipe['title'] = $e->plaintext; 30 | 31 | foreach($html->find('.ingredient') as $e) 32 | $recipe['ingredients'][] = $e->plaintext; 33 | 34 | foreach($html->find('.yield') as $e) 35 | $recipe['yield'] = $e->plaintext; 36 | 37 | foreach($html->find('.instructions') as $e) 38 | $recipe['instructions'] = $e->plaintext; 39 | 40 | foreach($html->find('.duration') as $e) 41 | $recipe['duration'] = $e->plaintext; 42 | 43 | if (!isset($recipe['title']) || !isset($recipe['ingredients'])) { return false; } // Could be hCard 44 | 45 | $recipeHTML = '
'.$recipe['title'].'
'; 46 | 47 | if (isset($recipe['ingredients'])) { 48 | for($i=0;$i'; 50 | } 51 | } 52 | 53 | $recipeHTML .= '
'; 54 | 55 | if (isset($recipe['yield'])) { 56 | $recipeHTML .= ''.$recipe['yield'].''; 57 | } 58 | 59 | $recipeHTML .= '
'; 60 | 61 | unset($recipe); 62 | return $recipeHTML; 63 | 64 | } else { 65 | return false; 66 | 67 | } 68 | } 69 | 70 | 71 | ?> -------------------------------------------------------------------------------- /application/helpers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/helpers/view_helper.php: -------------------------------------------------------------------------------- 1 | 0) { 7 | return $num; 8 | } else { 9 | return '0'; 10 | } 11 | } 12 | 13 | // Checks current date with passed date and responsds with proper verbiage. 14 | function formatExpires($date) 15 | { 16 | $timestamp = strtotime($date); 17 | if (time() > $timestamp) { 18 | return "per Year"; // Expired 19 | } else { 20 | return "on " . date('m/d/Y', $timestamp); // Not Yet Expired 21 | } 22 | } 23 | 24 | // Takes a URL and returns a pretty looking version for view 25 | function niceUrl($url) 26 | { 27 | return rtrim(preg_replace('/https?:\/\/(www.)?/', '', $url), '/'); 28 | } 29 | 30 | 31 | // Get URL For Bookmarklet 32 | function getFullUrl() 33 | { 34 | return @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"]; 35 | } 36 | -------------------------------------------------------------------------------- /application/hooks/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/language/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/language/phrases.php: -------------------------------------------------------------------------------- 1 | value entries describing 8 | * exported file. 9 | * @author kip9 10 | * 11 | */ 12 | class JSONImportStateMetaData implements JSONImportStateInterface{ 13 | 14 | private $importData; 15 | 16 | public function __construct($importData){ 17 | $this->importData = $importData; 18 | } 19 | 20 | /** 21 | * (non-PHPdoc) 22 | * @see JSONImportStateInterface::processLine() 23 | */ 24 | public function processLine($line){ 25 | // Change state 26 | if(mb_ereg_match("\"marks\"\:[ ]*\[.*", $line)){ 27 | return new JSONImportStateMarks($this->importData); 28 | } else{ 29 | // Strip trailing comma and simulate JSON 30 | $jsonLine = '{' . mb_ereg_replace("\\,[ ]*$", '', $line) . '}'; 31 | $decodedObject = json_decode($jsonLine); 32 | foreach($decodedObject as $key => $value){ 33 | if(!isset($this->importData['meta'])){ 34 | $this->importData['meta'] = array(); 35 | } 36 | $this->importData['meta'][$key] = $value; 37 | } 38 | return $this; 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /application/libraries/JSONImportStateMachine/JSONImportStateStart.php: -------------------------------------------------------------------------------- 1 | importData = $importData; 17 | } 18 | 19 | /** 20 | * (non-PHPdoc) 21 | * @see JSONImportStateInterface::processLine() 22 | */ 23 | public function processLine($line){ 24 | // Change state 25 | if(mb_ereg_match("\"export\"\:[ ]*\{.*", $line)){ 26 | return new JSONImportStateMetaData($this->importData); 27 | } else{ 28 | return $this; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /application/libraries/JSONImportStateMachine/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/libraries/Plain_Cache.php: -------------------------------------------------------------------------------- 1 | $method(); 17 | } 18 | } 19 | else { 20 | return false; 21 | } 22 | } 23 | return false; 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /application/libraries/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/logs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/migrations/002_archive_stats.php: -------------------------------------------------------------------------------- 1 | dbforge->add_column('users_marks', array('datearchived timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); 15 | } 16 | 17 | public function down() 18 | { 19 | parent::checkForColumns('datearchived', 'users_marks'); 20 | $this->dbforge->drop_column('users_marks','datearchived'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /application/migrations/004_password_update.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users` ADD COLUMN `salt` varchar(50) DEFAULT NULL COMMENT 'The salt used to generate password.' AFTER `password`"); 15 | } 16 | 17 | public function down() 18 | { 19 | parent::checkForColumns('salt', 'users'); 20 | $this->db->query("ALTER TABLE `users` DROP COLUMN `salt`"); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /application/migrations/005_users_admin_flag.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users` ADD COLUMN `admin` tinyint(1) NOT NULL DEFAULT 0 AFTER `last_updated`"); 15 | } 16 | 17 | public function down() 18 | { 19 | parent::checkForColumns('admin', 'users'); 20 | $this->db->query("ALTER TABLE `users` DROP COLUMN `admin`"); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /application/migrations/006_plain_sessions.php: -------------------------------------------------------------------------------- 1 | db->query("CREATE TABLE IF NOT EXISTS `plain_sessions` ( 14 | session_id varchar(40) NOT NULL COMMENT 'Unique session identifier', 15 | session_data text NOT NULL COMMENT 'Serialized session data', 16 | last_updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Last updated at', 17 | PRIMARY KEY (session_id) 18 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"); 19 | } 20 | 21 | public function down() 22 | { 23 | // Drop tables 24 | $this->dbforge->drop_table('plain_sessions'); 25 | } 26 | } -------------------------------------------------------------------------------- /application/migrations/008_user_token.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users` CHANGE COLUMN `user_token` `user_token` varchar(62) NOT NULL COMMENT 'Unique user token.'"); 17 | 18 | // Update all users 19 | $users = $this->db->query("SELECT user_id, user_token, created_on FROM `users`"); 20 | if ($users->num_rows() > 0) { 21 | foreach ($users->result() as $user) { 22 | $res = $this->db->query("UPDATE `users` SET user_token = '" . $user->user_token . md5($user->created_on) . "' WHERE user_id = '" . $user->user_id . "'"); 23 | } 24 | } 25 | } 26 | 27 | public function down() 28 | { 29 | // Back to original 30 | $this->db->query("ALTER TABLE `users` CHANGE COLUMN `user_token` `user_token` varchar(30) NOT NULL COMMENT 'Unique user token.'"); 31 | } 32 | } -------------------------------------------------------------------------------- /application/migrations/009_delete_marks.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users_to_marks` ADD COLUMN `active` tinyint(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Set to 1 for active, 0 for inactive.' AFTER `notes`"); 16 | 17 | } 18 | 19 | public function down() 20 | { 21 | parent::checkForColumns('active', 'users_to_marks'); 22 | $this->db->query("ALTER TABLE `users_to_marks` DROP COLUMN `active`"); 23 | } 24 | } -------------------------------------------------------------------------------- /application/migrations/010_tokens.php: -------------------------------------------------------------------------------- 1 | db->query(" 16 | CREATE TABLE IF NOT EXISTS `tokens` ( 17 | `token_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Token ID auto generated', 18 | `user_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT 'User ID that token belongs to', 19 | `token_type` ENUM('FORGOT_PASSWORD') NOT NULL COMMENT 'Token type enum', 20 | `token_value` VARCHAR(64) NOT NULL COMMENT 'Generated token', 21 | `created_on` DATETIME NOT NULL COMMENT 'Creation date', 22 | `valid_until` DATETIME NOT NULL COMMENT 'Expiration date', 23 | `active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Active flag', 24 | `used_on` DATETIME NULL DEFAULT NULL COMMENT 'Date when token was successfully used', 25 | PRIMARY KEY (`token_id`), 26 | UNIQUE INDEX `token_value_UNIQUE` (`token_value` ASC), 27 | INDEX `token_type_user_id_active_IDX` (`token_type` ASC, `user_id` ASC, `active` ASC), 28 | CONSTRAINT `tokens_user_id_FK` 29 | FOREIGN KEY (`user_id`) 30 | REFERENCES `users` (`user_id`) 31 | ON DELETE CASCADE 32 | ON UPDATE CASCADE) ENGINE InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 33 | "); 34 | } 35 | 36 | public function down() 37 | { 38 | // Drop tables 39 | $this->dbforge->drop_table('tokens'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /application/migrations/2014022801_label_sort.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `labels` ADD COLUMN `order` tinyint(3) UNSIGNED DEFAULT NULL COMMENT 'The order to sort static system level labels.' AFTER `slug`"); 16 | 17 | // Now update all current system level labels to add correct order 18 | $slugs = array('read', 'watch', 'listen', 'buy', 'eat-drink', 'do', 'unlabeled'); 19 | foreach ($slugs as $k => $slug) { 20 | $order = $k + 1; 21 | $this->db->query("UPDATE `labels` SET labels.order = '" . $order . "' WHERE labels.slug = '" . $slug . "'"); 22 | } 23 | 24 | } 25 | 26 | public function down() 27 | { 28 | parent::checkForColumns('order', 'labels'); 29 | $this->db->query("ALTER TABLE `labels` DROP COLUMN `order`"); 30 | } 31 | } -------------------------------------------------------------------------------- /application/migrations/2014112501_user_titles.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users_to_marks` ADD COLUMN `mark_title` text DEFAULT NULL COMMENT 'An optional user-specific mark title.' AFTER `mark_id`"); 19 | 20 | } 21 | 22 | public function down() 23 | { 24 | parent::checkForColumns('mark_title', 'users_to_marks'); 25 | $this->db->query("ALTER TABLE `users_to_marks` DROP COLUMN `mark_title`"); 26 | } 27 | } -------------------------------------------------------------------------------- /application/migrations/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/models/Marks_model.php: -------------------------------------------------------------------------------- 1 | data_types = array( 16 | 'title' => 'string', 17 | 'url' => 'url', 18 | 'url_key' => 'md5', 19 | 'embed' => 'string', 20 | 'created_on' => 'datetime' 21 | ); 22 | 23 | } 24 | 25 | public function create($options=array()) 26 | { 27 | return $this->validateAndSave($options, true); 28 | } 29 | 30 | private function validateAndSave($options, $overwriteCreatedOn){ 31 | $valid = validate($options, $this->data_types, array('title', 'url')); 32 | 33 | // Make sure all the options are valid 34 | if ($valid === true) { 35 | 36 | // Make sure url doesn't already exist 37 | $md5 = md5($options['url']); 38 | $mark = $this->read("url_key = '" . $md5 . "'", 1, 1); 39 | 40 | // If not found, add it 41 | if (! isset($mark->mark_id)) { 42 | if($overwriteCreatedOn || empty($options['created_on'])){ 43 | $options['created_on'] = date('Y-m-d H:i:s'); 44 | } 45 | $options['url_key'] = $md5; 46 | $q = $this->db->insert_string('marks', $options); 47 | $res = $this->db->query($q); 48 | 49 | // Check for errors 50 | $this->sendException(); 51 | 52 | // Return mark_id 53 | if ($res === true) { 54 | $mark_id = $this->db->insert_id(); 55 | return $this->read($mark_id); 56 | } 57 | 58 | return false; 59 | } 60 | 61 | // If already exists, just return it 62 | return $mark; 63 | } 64 | 65 | return formatErrors($valid); 66 | } 67 | 68 | /** 69 | * Import existing object and save to DB 70 | * @param array $options 71 | */ 72 | public function import($options){ 73 | return $this->validateAndSave($options, false); 74 | } 75 | 76 | } -------------------------------------------------------------------------------- /application/models/Tags_model.php: -------------------------------------------------------------------------------- 1 | data_types = array( 16 | 'name' => 'string', 17 | 'slug' => 'string' 18 | ); 19 | 20 | } 21 | 22 | public function create($options=array()) 23 | { 24 | 25 | $valid = validate($options, $this->data_types, array('name')); 26 | 27 | // Make sure all the options are valid 28 | if ($valid === true) { 29 | 30 | 31 | // See if this record already exists 32 | $options['slug'] = generateSlug($options['name']); 33 | $tag = $this->read("tags.slug = '" . $options['slug'] . "'", 1, 1); 34 | 35 | // If not, add it 36 | if (! isset($tag->tag_id)) { 37 | $q = $this->db->insert_string($this->table, $options); 38 | $res = $this->db->query($q); 39 | 40 | // Check for errors 41 | $this->sendException(); 42 | 43 | // If good, return full label 44 | if ($res === true) { 45 | $tag_id = $this->db->insert_id(); 46 | return $this->read($tag_id); 47 | } 48 | 49 | // Else return error 50 | return false; 51 | } 52 | 53 | // If already exists, just return it 54 | return $tag; 55 | 56 | } 57 | 58 | return formatErrors($valid); 59 | } 60 | 61 | } -------------------------------------------------------------------------------- /application/models/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/third_party/PHP-Markdown-1.2.5/License.text: -------------------------------------------------------------------------------- 1 | PHP Markdown & Extra 2 | Copyright (c) 2004-2009 Michel Fortin 3 | 4 | All rights reserved. 5 | 6 | Based on Markdown 7 | Copyright (c) 2003-2006 John Gruber 8 | 9 | All rights reserved. 10 | 11 | Redistribution and use in source and binary forms, with or without 12 | modification, are permitted provided that the following conditions are 13 | met: 14 | 15 | * Redistributions of source code must retain the above copyright notice, 16 | this list of conditions and the following disclaimer. 17 | 18 | * Redistributions in binary form must reproduce the above copyright 19 | notice, this list of conditions and the following disclaimer in the 20 | documentation and/or other materials provided with the distribution. 21 | 22 | * Neither the name "Markdown" nor the names of its contributors may 23 | be used to endorse or promote products derived from this software 24 | without specific prior written permission. 25 | 26 | This software is provided by the copyright holders and contributors "as 27 | is" and any express or implied warranties, including, but not limited 28 | to, the implied warranties of merchantability and fitness for a 29 | particular purpose are disclaimed. In no event shall the copyright owner 30 | or contributors be liable for any direct, indirect, incidental, special, 31 | exemplary, or consequential damages (including, but not limited to, 32 | procurement of substitute goods or services; loss of use, data, or 33 | profits; or business interruption) however caused and on any theory of 34 | liability, whether in contract, strict liability, or tort (including 35 | negligence or otherwise) arising in any way out of the use of this 36 | software, even if advised of the possibility of such damage. 37 | -------------------------------------------------------------------------------- /application/third_party/PHP-Markdown-1.2.5/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/third_party/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/email/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/errors/cli/error_404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | An uncaught Exception was encountered 4 | 5 | Type: 6 | Message: 7 | Filename: getFile(), "\n"; ?> 8 | Line Number: getLine(); ?> 9 | 10 | 11 | 12 | Backtrace: 13 | getTrace() as $error): ?> 14 | 15 | File: 16 | Line: 17 | Function: 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /application/views/errors/cli/error_general.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | A PHP Error was encountered 4 | 5 | Severity: 6 | Message: 7 | Filename: 8 | Line Number: 9 | 10 | 11 | 12 | Backtrace: 13 | 14 | 15 | File: 16 | Line: 17 | Function: 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /application/views/errors/cli/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

Directory access is forbidden.

9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/errors/html/error_404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Sorry, we can't find this page 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |

Page Not Found

13 |

Sorry, the page you are looking for is no where to be found. Try restarting your journey here.

14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /application/views/errors/html/error_db.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Eek, something is wrong 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |

13 |

14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /application/views/errors/html/error_general.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Eek, something is wrong 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |

13 |

14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /application/views/errors/html/error_php.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |

An unexpected error has occured

5 |

The issue has been logged and will be taken care of shortly.

6 | 7 |

A PHP Error was encountered

8 |

Severity:

9 |

Message:

10 |

Filename:

11 |

Line Number:

12 | 13 |
-------------------------------------------------------------------------------- /application/views/errors/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

Directory access is forbidden.

9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/errors/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/import/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/import/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | <?php echo unmark_phrase('Unmark : Importer'); ?> 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 |
12 |

' . unmark_phrase('Sorry, there was an error.').'

'; 15 | print '

' . unmark_phrase('Please make sure you have a valid export.json file.') . '

'; 16 | print unmark_phrase(' Go back & try again'); 17 | if (isset($errors) ) { 18 | foreach($errors as $prop) { 19 | $first = $prop; 20 | break; 21 | } 22 | print '

'. sprintf(unmark_phrase('ERROR: %s'), $first) . '

'; 23 | } 24 | } else { 25 | print '

' . unmark_phrase('Successful Upload!') . '

'; 26 | print '

' . sprintf(unmark_phrase('%s marks added', '%s marks added', $result['added']), $result['added']) . '

'; 27 | print '

' . sprintf(unmark_phrase('%s marks skipped', '%s marks skipped', $result['skipped']), $result['skipped']) . '

'; 28 | print '

' . sprintf(unmark_phrase('%s marks failed', '%s marks failed', $result['failed']), $result['failed']) . '

'; 29 | print '

' . sprintf(unmark_phrase('%s marks total', '%s marks total', $result['total']), $result['total']) . '

'; 30 | print unmark_phrase(' Go back & see them'); 31 | } 32 | ?> 33 |
34 |
35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /application/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/json/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/json/index.php: -------------------------------------------------------------------------------- 1 | 2 | ' . ((isset($user)) ? $user['email'] : '') . ''); ?> 3 | 4 | 5 | 12 | -------------------------------------------------------------------------------- /application/views/layouts/footer.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | load->view('layouts/footer_scripts')?> 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /application/views/layouts/footer_scripts.php: -------------------------------------------------------------------------------- 1 | load->view('layouts/userforms'); ?> 2 | 3 | load->view('layouts/jsvars'); ?> 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /application/views/layouts/footer_unlogged_scripts.php: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /application/views/layouts/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/layouts/jsvars.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /application/views/layouts/navigation.php: -------------------------------------------------------------------------------- 1 | 4 | 15 | -------------------------------------------------------------------------------- /application/views/layouts/navigation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

Directory access is forbidden.

8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/layouts/navigation/nav_helper.php: -------------------------------------------------------------------------------- 1 |
  • 2 |
  • 3 |
  • 4 | 5 | 6 | -------------------------------------------------------------------------------- /application/views/layouts/sidebar/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/layouts/sidebar/sidebar_notices.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /application/views/layouts/timeline.php: -------------------------------------------------------------------------------- 1 |
    2 |
      3 | 4 |
    • 5 | 6 |
    • 7 |
    • 8 | 9 |
    • 10 |
    • 11 | 12 |
    • 13 |
    • 14 | 15 |
    • 16 |
    • 17 | 18 |
    • 19 |
    • 20 | 21 |
    • 22 |
    • 23 | 24 |
    • 25 |
    • 26 | 27 |
    • 28 | 29 |
    30 |
    31 | -------------------------------------------------------------------------------- /application/views/layouts/topbar/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/layouts/topbar/searchform.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 | 17 |
    18 | 19 |
    20 | 21 | 22 | 23 |
    24 | 25 |
    26 | -------------------------------------------------------------------------------- /application/views/marks/error.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <?php echo unmark_phrase('Sorry, Could Not Add this Mark'); ?> 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    12 |

    Yikes!

    13 |

    14 |

    15 |

    BACK 16 |

    17 | 18 | 19 | -------------------------------------------------------------------------------- /application/views/marks/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/partials/debug.php: -------------------------------------------------------------------------------- 1 |
    2 |

    Debug information - only shown for admins

    3 |
    4 | 5 |
    Page Data
    6 |
     7 |         
     8 |     
    9 | 10 |
    Session Variables
    11 |
    12 |         
    13 |     
    14 | 15 |
    Cookie Variables
    16 |
    17 |         
    18 |     
    19 | 20 |
    Server Variables
    21 |
    22 |         
    23 |     
    24 |
    -------------------------------------------------------------------------------- /application/views/partials/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/register/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/singletons/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | 4 | ### 5 | # Check for assets request under custom folder 6 | # If exists use it, if not skip and load as normal 7 | ### 8 | 9 | RewriteCond %{DOCUMENT_ROOT}/custom/%{REQUEST_URI} -f 10 | RewriteRule ^(.*) /custom/assets/$1 [L,QSA] 11 | -------------------------------------------------------------------------------- /assets/css/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/css/partials/_animation.scss: -------------------------------------------------------------------------------- 1 | // Animation Keyframes 2 | //********************************************************// 3 | @-webkit-keyframes rotate-forever { @include rotate-forever; } 4 | @-moz-keyframes rotate-forever { @include rotate-forever; } 5 | @keyframes rotate-forever { @include rotate-forever; } 6 | 7 | // Animation of Spinner 8 | .unmark-spinner { 9 | animation-duration: 0.75s; 10 | animation-iteration-count: infinite; 11 | animation-name: rotate-forever; 12 | animation-timing-function: linear; 13 | height: 44px; 14 | width: 44px; 15 | border: 2px solid darken($color_grey, 20%); 16 | border-right-color: transparent; 17 | border-radius: 50%; 18 | display: inline-block; 19 | } 20 | 21 | // Position of Spinner 22 | .unmark-spinner { 23 | display: none; 24 | //margin: 130px auto 0; 25 | margin: 0 auto; 26 | } 27 | 28 | .unmark-success { 29 | display: none; 30 | margin: 0 auto; 31 | width: 75px; 32 | i { 33 | width: 75px; 34 | height: 75px; 35 | display: block; 36 | background-size: 100%; 37 | } 38 | } 39 | 40 | // Default Spinner 41 | .icon-spinner { 42 | animation-duration: 0.75s; 43 | animation-iteration-count: infinite; 44 | animation-name: otate-forever; 45 | animation-timing-function: linear; 46 | display: inline-block; 47 | width: 25px; 48 | height: 24px; 49 | overflow: hidden; 50 | padding: 0; 51 | } 52 | -------------------------------------------------------------------------------- /assets/css/partials/_grid-settings.scss: -------------------------------------------------------------------------------- 1 | @import "../../libraries/neat/neat-helpers"; // or "neat-helpers" when in Rails 2 | 3 | // Change the grid settings 4 | $max-width: 100%; 5 | 6 | // Define your breakpoints 7 | //$tablet: new-breakpoint(max-width 768px 8); 8 | //$mobile: new-breakpoint(max-width 480px 4); -------------------------------------------------------------------------------- /assets/css/partials/_normalize.scss: -------------------------------------------------------------------------------- 1 | /* normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} 2 | -------------------------------------------------------------------------------- /assets/css/partials/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/css/unmark.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Main stylesheet for Unmark 3 | 4 | ** NOTE ** - 5 | This is the SASS File and you must run GRUNT to compile this before pushing to production 6 | 7 | */ 8 | 9 | // Normalize 10 | @import "partials/normalize"; 11 | 12 | // Variables, Mixins & Global Elements 13 | @import "partials/variables"; 14 | @import "partials/scaffolding"; 15 | 16 | // Third-party libraries 17 | @import "selectize.css"; 18 | 19 | // App Pieces 20 | @import "partials/navigation"; 21 | @import "partials/main"; 22 | @import "partials/setup"; 23 | @import "partials/bookmarklet"; 24 | @import "partials/overlays"; 25 | @import "partials/login"; 26 | @import "partials/animation"; 27 | @import "partials/mobile"; -------------------------------------------------------------------------------- /assets/images/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/demo.gif -------------------------------------------------------------------------------- /assets/images/feature_bookmarklet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/feature_bookmarklet.jpg -------------------------------------------------------------------------------- /assets/images/feature_chrome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/feature_chrome.jpg -------------------------------------------------------------------------------- /assets/images/feature_git.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/feature_git.jpg -------------------------------------------------------------------------------- /assets/images/feature_import.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/feature_import.jpg -------------------------------------------------------------------------------- /assets/images/feature_notes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/feature_notes.jpg -------------------------------------------------------------------------------- /assets/images/feature_preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/feature_preview.jpg -------------------------------------------------------------------------------- /assets/images/feature_tweet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/feature_tweet.jpg -------------------------------------------------------------------------------- /assets/images/icons/archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/archive.png -------------------------------------------------------------------------------- /assets/images/icons/bell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/bell.png -------------------------------------------------------------------------------- /assets/images/icons/big_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/big_close.png -------------------------------------------------------------------------------- /assets/images/icons/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/check.png -------------------------------------------------------------------------------- /assets/images/icons/check_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/check_dark.png -------------------------------------------------------------------------------- /assets/images/icons/circle_arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/circle_arrow_down.png -------------------------------------------------------------------------------- /assets/images/icons/circle_arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/circle_arrow_up.png -------------------------------------------------------------------------------- /assets/images/icons/circle_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/circle_check.png -------------------------------------------------------------------------------- /assets/images/icons/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/down.png -------------------------------------------------------------------------------- /assets/images/icons/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/edit.png -------------------------------------------------------------------------------- /assets/images/icons/ellipsis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/ellipsis.png -------------------------------------------------------------------------------- /assets/images/icons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/github.png -------------------------------------------------------------------------------- /assets/images/icons/go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/go.png -------------------------------------------------------------------------------- /assets/images/icons/goto_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/goto_link.png -------------------------------------------------------------------------------- /assets/images/icons/goto_title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/goto_title.png -------------------------------------------------------------------------------- /assets/images/icons/heading_archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/heading_archive.png -------------------------------------------------------------------------------- /assets/images/icons/heading_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/heading_close.png -------------------------------------------------------------------------------- /assets/images/icons/heading_collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/heading_collapse.png -------------------------------------------------------------------------------- /assets/images/icons/heading_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/heading_expand.png -------------------------------------------------------------------------------- /assets/images/icons/heading_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/heading_search.png -------------------------------------------------------------------------------- /assets/images/icons/heading_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/heading_tag.png -------------------------------------------------------------------------------- /assets/images/icons/heading_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/heading_time.png -------------------------------------------------------------------------------- /assets/images/icons/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/icons/label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/label.png -------------------------------------------------------------------------------- /assets/images/icons/large_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/large_check.png -------------------------------------------------------------------------------- /assets/images/icons/large_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/large_x.png -------------------------------------------------------------------------------- /assets/images/icons/links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/links.png -------------------------------------------------------------------------------- /assets/images/icons/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/logo.png -------------------------------------------------------------------------------- /assets/images/icons/logo_text_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/logo_text_dark.png -------------------------------------------------------------------------------- /assets/images/icons/logo_text_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/logo_text_light.png -------------------------------------------------------------------------------- /assets/images/icons/logo_text_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/logo_text_white.png -------------------------------------------------------------------------------- /assets/images/icons/menu_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/menu_close.png -------------------------------------------------------------------------------- /assets/images/icons/menu_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/menu_open.png -------------------------------------------------------------------------------- /assets/images/icons/option_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/option_down.png -------------------------------------------------------------------------------- /assets/images/icons/option_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/option_up.png -------------------------------------------------------------------------------- /assets/images/icons/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/search.png -------------------------------------------------------------------------------- /assets/images/icons/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/settings.png -------------------------------------------------------------------------------- /assets/images/icons/small_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/small_check.png -------------------------------------------------------------------------------- /assets/images/icons/small_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/small_x.png -------------------------------------------------------------------------------- /assets/images/icons/spinner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/spinner.png -------------------------------------------------------------------------------- /assets/images/icons/time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/time.png -------------------------------------------------------------------------------- /assets/images/icons/unarchive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/unarchive.png -------------------------------------------------------------------------------- /assets/images/icons/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/up.png -------------------------------------------------------------------------------- /assets/images/icons/upgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/icons/upgrade.png -------------------------------------------------------------------------------- /assets/images/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/logo.png -------------------------------------------------------------------------------- /assets/images/logo_text_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/logo_text_light.png -------------------------------------------------------------------------------- /assets/images/pwa/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/pwa/android-chrome-192x192.png -------------------------------------------------------------------------------- /assets/images/pwa/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/pwa/android-chrome-512x512.png -------------------------------------------------------------------------------- /assets/images/pwa/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/pwa/apple-touch-icon.png -------------------------------------------------------------------------------- /assets/images/pwa/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/pwa/favicon-16x16.png -------------------------------------------------------------------------------- /assets/images/pwa/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/pwa/favicon-32x32.png -------------------------------------------------------------------------------- /assets/images/pwa/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/pwa/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/assets/images/pwa/mstile-150x150.png -------------------------------------------------------------------------------- /assets/images/pwa/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /assets/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/js/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/js/plugins/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/js/plugins/unmark-graph.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Graph Main scripts for Unmark.it 3 | REQUIRES - Chart.min.js file 4 | */ 5 | 6 | 7 | if (unmark === undefined) { var unmark = {}; } 8 | if (unmark.graph === undefined) { unmark.graph = {}; } 9 | 10 | (function ($) { 11 | 12 | unmark.createGraph = function (a4, a3, a2, a1, a, s4, s3, s2, s1, s) { 13 | 14 | var lineChartData, lineChartOptions, chartElement; 15 | 16 | lineChartElement = document.getElementById("unmark-graph").getContext("2d"); 17 | 18 | lineChartData = { 19 | labels : ["4 Days Ago","3 Days Ago","2 Days Ago", "Yesterday", "Today"], 20 | datasets : [ 21 | { 22 | // Archived Settings 23 | strokeColor : "#DCDCDC", 24 | pointColor : "#C1C1C1", 25 | pointStrokeColor : "#fff", 26 | data : [a4, a3, a2, a1, a] 27 | }, 28 | { 29 | // Saved Settings 30 | strokeColor : "#B8B7B7", 31 | pointColor : "#777777", 32 | pointStrokeColor : "#fff", 33 | data : [s4, s3, s2, s1, s] 34 | } 35 | ] 36 | 37 | } 38 | 39 | lineChartOptions = { 40 | scaleShowLabels : false, 41 | scaleShowGridLines : false, 42 | datasetFill : false, 43 | bezierCurve : false, 44 | scaleLineColor: 'transparent', 45 | scaleFontColor: 'transparent' 46 | } 47 | 48 | new Chart(lineChartElement).Line(lineChartData, lineChartOptions); 49 | 50 | }; 51 | 52 | }(window.jQuery)); -------------------------------------------------------------------------------- /assets/js/production/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/js/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/js/templates/mark-info-edit.html: -------------------------------------------------------------------------------- 1 | 5 |
    6 |
    7 |

    TITLE

    8 |
    9 | 10 |
    11 |
    12 |
    13 |

    URL

    14 |
    15 | 16 | 17 |
    18 |
    19 | 24 | 36 | 37 |
    -------------------------------------------------------------------------------- /assets/js/templates/mark-info-list-item.html: -------------------------------------------------------------------------------- 1 |
    2 |

    {{title}}

    3 |
    4 | {{nice_time}} 5 | 6 | {{prettyurl}} 7 |
    8 |
    9 | {{#archived_on}} 10 | 11 | 12 | 13 | {{/archived_on}} 14 | {{^archived_on}} 15 | 16 | 17 | 18 | 19 | 20 | {{/archived_on}} 21 |
    22 | 29 |
    30 | 31 |
    -------------------------------------------------------------------------------- /assets/js/unmark.pwa.js: -------------------------------------------------------------------------------- 1 | /* 2 | Determine if browser supports a Service Worker, 3 | if so, register it for the PWA 4 | */ 5 | 6 | if ('serviceWorker' in navigator) { 7 | window.addEventListener('load', function() { 8 | navigator.serviceWorker.register('/service-worker.js').then(function(registration) { 9 | // Registration was successful 10 | console.log('ServiceWorker registration successful with scope: ', registration.scope); 11 | }).catch(function(err) { 12 | // registration failed :( 13 | //console.log('ServiceWorker registration failed: ', err); 14 | }); 15 | }); 16 | } -------------------------------------------------------------------------------- /assets/js/unmark.register.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Register/Signup 3 | */ 4 | 5 | (function ($) { 6 | 7 | // Show Error Message 8 | function showMessage(form, error, message) { 9 | var eclass = (error) ? 'error' : ''; 10 | form.parent().find('.response-message').removeClass('error').addClass(eclass).text(message).fadeIn(); 11 | } 12 | 13 | // Show or Hide Spinner 14 | function showSpinner(form, show) { 15 | var button = form.find('.login-submit i'); 16 | if (show) { 17 | button.removeClass('icon-go').addClass('icon-spinner'); 18 | } else { 19 | button.removeClass('icon-spinner').addClass('icon-go'); 20 | } 21 | } 22 | 23 | unmark.register_user = function (form) { 24 | var query, 25 | email = form.find('#email').val(), 26 | pass = form.find('#password').val(), 27 | pass2 = form.find('#password2').val(); 28 | 29 | if (pass !== pass2) { 30 | return showMessage(form, true, 'The passwords must match.'); 31 | } 32 | 33 | showSpinner(form, true); 34 | 35 | query = 'email='+unmark.urlEncode(email)+'&password='+unmark.urlEncode(pass); 36 | 37 | unmark.ajax('/register/user', 'post', query, function (res) { 38 | 39 | if (res.success) { 40 | showMessage(form, false, 'You are now registered, logging you in...'); 41 | setTimeout(function(){ window.location.href = "/" }, 2500); 42 | } else { 43 | showSpinner(form, false); 44 | showMessage(form, true, res.message); 45 | } 46 | 47 | }); 48 | 49 | }; 50 | 51 | $(document).ready(function () { 52 | 53 | $('#register_user').on('submit', function (e) { 54 | e.preventDefault(); 55 | unmark.register_user($(this)); 56 | }); 57 | 58 | }); 59 | 60 | 61 | 62 | }(window.jQuery)); 63 | -------------------------------------------------------------------------------- /assets/js/unmark.touch.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Mobile & Touch Scripts 3 | */ 4 | 5 | (function ($) { 6 | 7 | $(document).ready(function () { 8 | 9 | // Toggle the Mobile Navigation 10 | unmark.mobile_nav = function (hide) { 11 | if (hide) { 12 | unmark.mainpanels.removeClass('nav-active'); 13 | unmark.hamburger.removeClass('active'); 14 | unmark.mobile_header.removeClass('shift-right'); 15 | } else { 16 | $('.main-wrapper').animate({left: 65}, 400); 17 | $('.navigation-content').animate({left: 0}, 400); 18 | $('.navigation-content .menu-activator').animate({left: 0}, 400); 19 | unmark.mobile_sidebar(true); // Hide Mobile Sidebar 20 | } 21 | return false; 22 | }; 23 | 24 | // Toggle the Mobile Sidebar 25 | unmark.mobile_sidebar = function (hide) { 26 | if (hide) { 27 | $('.sidebar-content').show().animate({right: '-85%'}, 600, function () { 28 | $(this).hide(); 29 | $('a#mobile-sidebar-show i').removeClass('icon-heading_close').addClass('icon-ellipsis'); 30 | }); 31 | } else { 32 | $('a#mobile-sidebar-show i').removeClass('.icon-ellipsis').addClass('icon-heading_close'); 33 | unmark.mobile_nav(true); // Hide Mobile Nav 34 | } 35 | return false; 36 | } 37 | 38 | // For Small Phone Size Devices 39 | if (Modernizr.mq('only screen and (max-width: 767px)')) { 40 | 41 | // Unbind/Bind the Hamburger to show correct sidebar menu 42 | $('.menu-activator a').off().on('click', function (e) { 43 | e.preventDefault(); 44 | var open = $('.main-wrapper').css('left'); 45 | if (open === '65px') { unmark.mobile_nav(true); } else { unmark.mobile_nav(); } 46 | return false; 47 | }); 48 | 49 | // Mobile Show Sidebar 50 | $('#mobile-sidebar-show').on('click', function (e) { 51 | e.preventDefault(); 52 | var open = $('#unmark-wrapper'); 53 | if ( open.hasClass('sidebar-active') ) { 54 | unmark.mobile_sidebar(true); } else { unmark.mobile_sidebar(); 55 | } 56 | return false; 57 | }); 58 | 59 | // Set Max width for view of sidebar expand. 60 | // Since they are parsed on the fly, we need to update the DOM 61 | $('.menu-upgrade a, .menu-settings a, .menu-search a').attr('rel', '250'); 62 | 63 | } 64 | 65 | }); 66 | 67 | }(window.jQuery)); 68 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/_bourbon-deprecated-upcoming.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // These mixins/functions are deprecated 3 | // They will be removed in the next MAJOR version release 4 | //************************************************************************// 5 | @mixin box-shadow ($shadows...) { 6 | @include prefixer(box-shadow, $shadows, spec); 7 | @warn "box-shadow is deprecated and will be removed in the next major version release"; 8 | } 9 | 10 | @mixin background-size ($lengths...) { 11 | @include prefixer(background-size, $lengths, spec); 12 | @warn "background-size is deprecated and will be removed in the next major version release"; 13 | } 14 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/_bourbon.scss: -------------------------------------------------------------------------------- 1 | // Custom Helpers 2 | @import "helpers/deprecated-webkit-gradient"; 3 | @import "helpers/gradient-positions-parser"; 4 | @import "helpers/linear-positions-parser"; 5 | @import "helpers/radial-arg-parser"; 6 | @import "helpers/radial-positions-parser"; 7 | @import "helpers/render-gradients"; 8 | @import "helpers/shape-size-stripper"; 9 | 10 | // Custom Functions 11 | @import "functions/compact"; 12 | @import "functions/flex-grid"; 13 | @import "functions/grid-width"; 14 | @import "functions/linear-gradient"; 15 | @import "functions/modular-scale"; 16 | @import "functions/px-to-em"; 17 | @import "functions/radial-gradient"; 18 | @import "functions/tint-shade"; 19 | @import "functions/transition-property-name"; 20 | 21 | // CSS3 Mixins 22 | @import "css3/animation"; 23 | @import "css3/appearance"; 24 | @import "css3/backface-visibility"; 25 | @import "css3/background"; 26 | @import "css3/background-image"; 27 | @import "css3/border-image"; 28 | @import "css3/border-radius"; 29 | @import "css3/box-sizing"; 30 | @import "css3/columns"; 31 | @import "css3/flex-box"; 32 | @import "css3/font-face"; 33 | @import "css3/hidpi-media-query"; 34 | @import "css3/image-rendering"; 35 | @import "css3/inline-block"; 36 | @import "css3/keyframes"; 37 | @import "css3/linear-gradient"; 38 | @import "css3/perspective"; 39 | @import "css3/radial-gradient"; 40 | @import "css3/transform"; 41 | @import "css3/transition"; 42 | @import "css3/user-select"; 43 | @import "css3/placeholder"; 44 | 45 | // Addons & other mixins 46 | @import "addons/button"; 47 | @import "addons/clearfix"; 48 | @import "addons/font-family"; 49 | @import "addons/hide-text"; 50 | @import "addons/html5-input-types"; 51 | @import "addons/position"; 52 | @import "addons/prefixer"; 53 | @import "addons/retina-image"; 54 | @import "addons/size"; 55 | @import "addons/timing-functions"; 56 | @import "addons/triangle"; 57 | 58 | // Soon to be deprecated Mixins 59 | @import "bourbon-deprecated-upcoming"; 60 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // Micro clearfix provides an easy way to contain floats without adding additional markup 2 | // 3 | // Example usage: 4 | // 5 | // // Contain all floats within .wrapper 6 | // .wrapper { 7 | // @include clearfix; 8 | // .content, 9 | // .sidebar { 10 | // float : left; 11 | // } 12 | // } 13 | 14 | @mixin clearfix { 15 | *zoom: 1; 16 | 17 | &:before, 18 | &:after { 19 | content: " "; 20 | display: table; 21 | } 22 | 23 | &:after { 24 | clear: both; 25 | } 26 | } 27 | 28 | // Acknowledgements 29 | // Micro clearfix: [Nicolas Gallagher](http://nicolasgallagher.com/micro-clearfix-hack/) 30 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_font-family.scss: -------------------------------------------------------------------------------- 1 | $georgia: Georgia, Cambria, "Times New Roman", Times, serif; 2 | $helvetica: "Helvetica Neue", Helvetica, Arial, sans-serif; 3 | $lucida-grande: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif; 4 | $monospace: "Bitstream Vera Sans Mono", Consolas, Courier, monospace; 5 | $verdana: Verdana, Geneva, sans-serif; 6 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_hide-text.scss: -------------------------------------------------------------------------------- 1 | @mixin hide-text { 2 | color: transparent; 3 | font: 0/0 a; 4 | text-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_html5-input-types.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Generate a variable ($all-text-inputs) with a list of all html5 3 | // input types that have a text-based input, excluding textarea. 4 | // http://diveintohtml5.org/forms.html 5 | //************************************************************************// 6 | $inputs-list: 'input[type="email"]', 7 | 'input[type="number"]', 8 | 'input[type="password"]', 9 | 'input[type="search"]', 10 | 'input[type="tel"]', 11 | 'input[type="text"]', 12 | 'input[type="url"]', 13 | 14 | // Webkit & Gecko may change the display of these in the future 15 | 'input[type="color"]', 16 | 'input[type="date"]', 17 | 'input[type="datetime"]', 18 | 'input[type="datetime-local"]', 19 | 'input[type="month"]', 20 | 'input[type="time"]', 21 | 'input[type="week"]'; 22 | 23 | $unquoted-inputs-list: (); 24 | @each $input-type in $inputs-list { 25 | $unquoted-inputs-list: append($unquoted-inputs-list, unquote($input-type), comma); 26 | } 27 | 28 | $all-text-inputs: $unquoted-inputs-list; 29 | 30 | 31 | // Hover Pseudo-class 32 | //************************************************************************// 33 | $all-text-inputs-hover: (); 34 | @each $input-type in $unquoted-inputs-list { 35 | $input-type-hover: $input-type + ":hover"; 36 | $all-text-inputs-hover: append($all-text-inputs-hover, $input-type-hover, comma); 37 | } 38 | 39 | // Focus Pseudo-class 40 | //************************************************************************// 41 | $all-text-inputs-focus: (); 42 | @each $input-type in $unquoted-inputs-list { 43 | $input-type-focus: $input-type + ":focus"; 44 | $all-text-inputs-focus: append($all-text-inputs-focus, $input-type-focus, comma); 45 | } 46 | 47 | // You must use interpolation on the variable: 48 | // #{$all-text-inputs} 49 | // #{$all-text-inputs-hover} 50 | // #{$all-text-inputs-focus} 51 | 52 | // Example 53 | //************************************************************************// 54 | // #{$all-text-inputs}, textarea { 55 | // border: 1px solid red; 56 | // } 57 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_position.scss: -------------------------------------------------------------------------------- 1 | @mixin position ($position: relative, $coordinates: 0 0 0 0) { 2 | 3 | @if type-of($position) == list { 4 | $coordinates: $position; 5 | $position: relative; 6 | } 7 | 8 | $top: nth($coordinates, 1); 9 | $right: nth($coordinates, 2); 10 | $bottom: nth($coordinates, 3); 11 | $left: nth($coordinates, 4); 12 | 13 | position: $position; 14 | 15 | @if $top == auto { 16 | top: $top; 17 | } 18 | @else if not(unitless($top)) { 19 | top: $top; 20 | } 21 | 22 | @if $right == auto { 23 | right: $right; 24 | } 25 | @else if not(unitless($right)) { 26 | right: $right; 27 | } 28 | 29 | @if $bottom == auto { 30 | bottom: $bottom; 31 | } 32 | @else if not(unitless($bottom)) { 33 | bottom: $bottom; 34 | } 35 | 36 | @if $left == auto { 37 | left: $left; 38 | } 39 | @else if not(unitless($left)) { 40 | left: $left; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_prefixer.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Example: @include prefixer(border-radius, $radii, webkit ms spec); 3 | //************************************************************************// 4 | $prefix-for-webkit: true !default; 5 | $prefix-for-mozilla: true !default; 6 | $prefix-for-microsoft: true !default; 7 | $prefix-for-opera: true !default; 8 | $prefix-for-spec: true !default; // required for keyframe mixin 9 | 10 | @mixin prefixer ($property, $value, $prefixes) { 11 | @each $prefix in $prefixes { 12 | @if $prefix == webkit { 13 | @if $prefix-for-webkit { 14 | -webkit-#{$property}: $value; 15 | } 16 | } 17 | @else if $prefix == moz { 18 | @if $prefix-for-mozilla { 19 | -moz-#{$property}: $value; 20 | } 21 | } 22 | @else if $prefix == ms { 23 | @if $prefix-for-microsoft { 24 | -ms-#{$property}: $value; 25 | } 26 | } 27 | @else if $prefix == o { 28 | @if $prefix-for-opera { 29 | -o-#{$property}: $value; 30 | } 31 | } 32 | @else if $prefix == spec { 33 | @if $prefix-for-spec { 34 | #{$property}: $value; 35 | } 36 | } 37 | @else { 38 | @warn "Unrecognized prefix: #{$prefix}"; 39 | } 40 | } 41 | } 42 | 43 | @mixin disable-prefix-for-all() { 44 | $prefix-for-webkit: false; 45 | $prefix-for-mozilla: false; 46 | $prefix-for-microsoft: false; 47 | $prefix-for-opera: false; 48 | $prefix-for-spec: false; 49 | } 50 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_retina-image.scss: -------------------------------------------------------------------------------- 1 | @mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $asset-pipeline: false) { 2 | @if $asset-pipeline { 3 | background-image: image-url("#{$filename}.#{$extension}"); 4 | } 5 | @else { 6 | background-image: url("#{$filename}.#{$extension}"); 7 | } 8 | 9 | @include hidpi { 10 | 11 | @if $asset-pipeline { 12 | @if $retina-filename { 13 | background-image: image-url("#{$retina-filename}.#{$extension}"); 14 | } 15 | @else { 16 | background-image: image-url("#{$filename}@2x.#{$extension}"); 17 | } 18 | } 19 | 20 | @else { 21 | @if $retina-filename { 22 | background-image: url("#{$retina-filename}.#{$extension}"); 23 | } 24 | @else { 25 | background-image: url("#{$filename}@2x.#{$extension}"); 26 | } 27 | } 28 | 29 | background-size: $background-size; 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_size.scss: -------------------------------------------------------------------------------- 1 | @mixin size($size) { 2 | @if length($size) == 1 { 3 | @if $size == auto { 4 | width: $size; 5 | height: $size; 6 | } 7 | 8 | @else if unitless($size) { 9 | width: $size + px; 10 | height: $size + px; 11 | } 12 | 13 | @else if not(unitless($size)) { 14 | width: $size; 15 | height: $size; 16 | } 17 | } 18 | 19 | // Width x Height 20 | @if length($size) == 2 { 21 | $width: nth($size, 1); 22 | $height: nth($size, 2); 23 | 24 | @if $width == auto { 25 | width: $width; 26 | } 27 | @else if not(unitless($width)) { 28 | width: $width; 29 | } 30 | @else if unitless($width) { 31 | width: $width + px; 32 | } 33 | 34 | @if $height == auto { 35 | height: $height; 36 | } 37 | @else if not(unitless($height)) { 38 | height: $height; 39 | } 40 | @else if unitless($height) { 41 | height: $height + px; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_timing-functions.scss: -------------------------------------------------------------------------------- 1 | // CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie) 2 | // Timing functions are the same as demo'ed here: http://jqueryui.com/demos/effect/easing.html 3 | 4 | // EASE IN 5 | $ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530); 6 | $ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190); 7 | $ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220); 8 | $ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060); 9 | $ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715); 10 | $ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035); 11 | $ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335); 12 | $ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045); 13 | 14 | // EASE OUT 15 | $ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940); 16 | $ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000); 17 | $ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000); 18 | $ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000); 19 | $ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000); 20 | $ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000); 21 | $ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000); 22 | $ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275); 23 | 24 | // EASE IN OUT 25 | $ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955); 26 | $ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000); 27 | $ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000); 28 | $ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000); 29 | $ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950); 30 | $ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000); 31 | $ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860); 32 | $ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550); 33 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/addons/_triangle.scss: -------------------------------------------------------------------------------- 1 | @mixin triangle ($size, $color, $direction) { 2 | height: 0; 3 | width: 0; 4 | 5 | @if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) { 6 | border-color: transparent; 7 | border-style: solid; 8 | border-width: $size / 2; 9 | 10 | @if $direction == up { 11 | border-bottom-color: $color; 12 | 13 | } @else if $direction == right { 14 | border-left-color: $color; 15 | 16 | } @else if $direction == down { 17 | border-top-color: $color; 18 | 19 | } @else if $direction == left { 20 | border-right-color: $color; 21 | } 22 | } 23 | 24 | @else if ($direction == up-right) or ($direction == up-left) { 25 | border-top: $size solid $color; 26 | 27 | @if $direction == up-right { 28 | border-left: $size solid transparent; 29 | 30 | } @else if $direction == up-left { 31 | border-right: $size solid transparent; 32 | } 33 | } 34 | 35 | @else if ($direction == down-right) or ($direction == down-left) { 36 | border-bottom: $size solid $color; 37 | 38 | @if $direction == down-right { 39 | border-left: $size solid transparent; 40 | 41 | } @else if $direction == down-left { 42 | border-right: $size solid transparent; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_animation.scss: -------------------------------------------------------------------------------- 1 | // http://www.w3.org/TR/css3-animations/#the-animation-name-property- 2 | // Each of these mixins support comma separated lists of values, which allows different transitions for individual properties to be described in a single style rule. Each value in the list corresponds to the value at that same position in the other properties. 3 | 4 | // Official animation shorthand property. 5 | @mixin animation ($animations...) { 6 | @include prefixer(animation, $animations, webkit moz spec); 7 | } 8 | 9 | // Individual Animation Properties 10 | @mixin animation-name ($names...) { 11 | @include prefixer(animation-name, $names, webkit moz spec); 12 | } 13 | 14 | 15 | @mixin animation-duration ($times...) { 16 | @include prefixer(animation-duration, $times, webkit moz spec); 17 | } 18 | 19 | 20 | @mixin animation-timing-function ($motions...) { 21 | // ease | linear | ease-in | ease-out | ease-in-out 22 | @include prefixer(animation-timing-function, $motions, webkit moz spec); 23 | } 24 | 25 | 26 | @mixin animation-iteration-count ($values...) { 27 | // infinite | 28 | @include prefixer(animation-iteration-count, $values, webkit moz spec); 29 | } 30 | 31 | 32 | @mixin animation-direction ($directions...) { 33 | // normal | alternate 34 | @include prefixer(animation-direction, $directions, webkit moz spec); 35 | } 36 | 37 | 38 | @mixin animation-play-state ($states...) { 39 | // running | paused 40 | @include prefixer(animation-play-state, $states, webkit moz spec); 41 | } 42 | 43 | 44 | @mixin animation-delay ($times...) { 45 | @include prefixer(animation-delay, $times, webkit moz spec); 46 | } 47 | 48 | 49 | @mixin animation-fill-mode ($modes...) { 50 | // none | forwards | backwards | both 51 | @include prefixer(animation-fill-mode, $modes, webkit moz spec); 52 | } 53 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_appearance.scss: -------------------------------------------------------------------------------- 1 | @mixin appearance ($value) { 2 | @include prefixer(appearance, $value, webkit moz ms o spec); 3 | } 4 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_backface-visibility.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Backface-visibility mixin 3 | //************************************************************************// 4 | @mixin backface-visibility($visibility) { 5 | @include prefixer(backface-visibility, $visibility, webkit spec); 6 | } 7 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_background-image.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Background-image property for adding multiple background images with 3 | // gradients, or for stringing multiple gradients together. 4 | //************************************************************************// 5 | 6 | @mixin background-image($images...) { 7 | background-image: _add-prefix($images, webkit); 8 | background-image: _add-prefix($images); 9 | } 10 | 11 | @function _add-prefix($images, $vendor: false) { 12 | $images-prefixed: (); 13 | $gradient-positions: false; 14 | @for $i from 1 through length($images) { 15 | $type: type-of(nth($images, $i)); // Get type of variable - List or String 16 | 17 | // If variable is a list - Gradient 18 | @if $type == list { 19 | $gradient-type: nth(nth($images, $i), 1); // linear or radial 20 | $gradient-pos: null; 21 | $gradient-args: null; 22 | 23 | @if ($gradient-type == linear) or ($gradient-type == radial) { 24 | $gradient-pos: nth(nth($images, $i), 2); // Get gradient position 25 | $gradient-args: nth(nth($images, $i), 3); // Get actual gradient (red, blue) 26 | } 27 | @else { 28 | $gradient-args: nth(nth($images, $i), 2); // Get actual gradient (red, blue) 29 | } 30 | 31 | $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos); 32 | $gradient: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor); 33 | $images-prefixed: append($images-prefixed, $gradient, comma); 34 | } 35 | // If variable is a string - Image 36 | @else if $type == string { 37 | $images-prefixed: join($images-prefixed, nth($images, $i), comma); 38 | } 39 | } 40 | @return $images-prefixed; 41 | } 42 | 43 | //Examples: 44 | //@include background-image(linear-gradient(top, orange, red)); 45 | //@include background-image(radial-gradient(50% 50%, cover circle, orange, red)); 46 | //@include background-image(url("/images/a.png"), linear-gradient(orange, red)); 47 | //@include background-image(url("image.png"), linear-gradient(orange, red), url("image.png")); 48 | //@include background-image(linear-gradient(hsla(0, 100%, 100%, 0.25) 0%, hsla(0, 100%, 100%, 0.08) 50%, transparent 50%), linear-gradient(orange, red)); 49 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_border-radius.scss: -------------------------------------------------------------------------------- 1 | //************************************************************************// 2 | // Shorthand Border-radius mixins 3 | //************************************************************************// 4 | @mixin border-top-radius($radii) { 5 | @include prefixer(border-top-left-radius, $radii, spec); 6 | @include prefixer(border-top-right-radius, $radii, spec); 7 | } 8 | 9 | @mixin border-bottom-radius($radii) { 10 | @include prefixer(border-bottom-left-radius, $radii, spec); 11 | @include prefixer(border-bottom-right-radius, $radii, spec); 12 | } 13 | 14 | @mixin border-left-radius($radii) { 15 | @include prefixer(border-top-left-radius, $radii, spec); 16 | @include prefixer(border-bottom-left-radius, $radii, spec); 17 | } 18 | 19 | @mixin border-right-radius($radii) { 20 | @include prefixer(border-top-right-radius, $radii, spec); 21 | @include prefixer(border-bottom-right-radius, $radii, spec); 22 | } 23 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_box-sizing.scss: -------------------------------------------------------------------------------- 1 | @mixin box-sizing ($box) { 2 | // content-box | border-box | inherit 3 | @include prefixer(box-sizing, $box, webkit moz spec); 4 | } 5 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_columns.scss: -------------------------------------------------------------------------------- 1 | @mixin columns($arg: auto) { 2 | // || 3 | @include prefixer(columns, $arg, webkit moz spec); 4 | } 5 | 6 | @mixin column-count($int: auto) { 7 | // auto || integer 8 | @include prefixer(column-count, $int, webkit moz spec); 9 | } 10 | 11 | @mixin column-gap($length: normal) { 12 | // normal || length 13 | @include prefixer(column-gap, $length, webkit moz spec); 14 | } 15 | 16 | @mixin column-fill($arg: auto) { 17 | // auto || length 18 | @include prefixer(columns-fill, $arg, webkit moz spec); 19 | } 20 | 21 | @mixin column-rule($arg) { 22 | // || || 23 | @include prefixer(column-rule, $arg, webkit moz spec); 24 | } 25 | 26 | @mixin column-rule-color($color) { 27 | @include prefixer(column-rule-color, $color, webkit moz spec); 28 | } 29 | 30 | @mixin column-rule-style($style: none) { 31 | // none | hidden | dashed | dotted | double | groove | inset | inset | outset | ridge | solid 32 | @include prefixer(column-rule-style, $style, webkit moz spec); 33 | } 34 | 35 | @mixin column-rule-width ($width: none) { 36 | @include prefixer(column-rule-width, $width, webkit moz spec); 37 | } 38 | 39 | @mixin column-span($arg: none) { 40 | // none || all 41 | @include prefixer(column-span, $arg, webkit moz spec); 42 | } 43 | 44 | @mixin column-width($length: auto) { 45 | // auto || length 46 | @include prefixer(column-width, $length, webkit moz spec); 47 | } 48 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_flex-box.scss: -------------------------------------------------------------------------------- 1 | // CSS3 Flexible Box Model and property defaults 2 | 3 | // Custom shorthand notation for flexbox 4 | @mixin box($orient: inline-axis, $pack: start, $align: stretch) { 5 | @include display-box; 6 | @include box-orient($orient); 7 | @include box-pack($pack); 8 | @include box-align($align); 9 | } 10 | 11 | @mixin display-box { 12 | display: -webkit-box; 13 | display: -moz-box; 14 | display: box; 15 | } 16 | 17 | @mixin box-orient($orient: inline-axis) { 18 | // horizontal|vertical|inline-axis|block-axis|inherit 19 | @include prefixer(box-orient, $orient, webkit moz spec); 20 | } 21 | 22 | @mixin box-pack($pack: start) { 23 | // start|end|center|justify 24 | @include prefixer(box-pack, $pack, webkit moz spec); 25 | } 26 | 27 | @mixin box-align($align: stretch) { 28 | // start|end|center|baseline|stretch 29 | @include prefixer(box-align, $align, webkit moz spec); 30 | } 31 | 32 | @mixin box-direction($direction: normal) { 33 | // normal|reverse|inherit 34 | @include prefixer(box-direction, $direction, webkit moz spec); 35 | } 36 | 37 | @mixin box-lines($lines: single) { 38 | // single|multiple 39 | @include prefixer(box-lines, $lines, webkit moz spec); 40 | } 41 | 42 | @mixin box-ordinal-group($int: 1) { 43 | @include prefixer(box-ordinal-group, $int, webkit moz spec); 44 | } 45 | 46 | @mixin box-flex($value: 0.0) { 47 | @include prefixer(box-flex, $value, webkit moz spec); 48 | } 49 | 50 | @mixin box-flex-group($int: 1) { 51 | @include prefixer(box-flex-group, $int, webkit moz spec); 52 | } 53 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_font-face.scss: -------------------------------------------------------------------------------- 1 | // Order of the includes matters, and it is: normal, bold, italic, bold+italic. 2 | 3 | @mixin font-face($font-family, $file-path, $weight: normal, $style: normal, $asset-pipeline: false ) { 4 | @font-face { 5 | font-family: $font-family; 6 | font-weight: $weight; 7 | font-style: $style; 8 | 9 | @if $asset-pipeline == true { 10 | src: font-url('#{$file-path}.eot'); 11 | src: font-url('#{$file-path}.eot?#iefix') format('embedded-opentype'), 12 | font-url('#{$file-path}.woff') format('woff'), 13 | font-url('#{$file-path}.ttf') format('truetype'), 14 | font-url('#{$file-path}.svg##{$font-family}') format('svg'); 15 | } @else { 16 | src: url('#{$file-path}.eot'); 17 | src: url('#{$file-path}.eot?#iefix') format('embedded-opentype'), 18 | url('#{$file-path}.woff') format('woff'), 19 | url('#{$file-path}.ttf') format('truetype'), 20 | url('#{$file-path}.svg##{$font-family}') format('svg'); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_hidpi-media-query.scss: -------------------------------------------------------------------------------- 1 | // HiDPI mixin. Default value set to 1.3 to target Google Nexus 7 (http://bjango.com/articles/min-device-pixel-ratio/) 2 | @mixin hidpi($ratio: 1.3) { 3 | @media only screen and (-webkit-min-device-pixel-ratio: $ratio), 4 | only screen and (min--moz-device-pixel-ratio: $ratio), 5 | only screen and (-o-min-device-pixel-ratio: #{$ratio}/1), 6 | only screen and (min-resolution: #{round($ratio*96)}dpi), 7 | only screen and (min-resolution: #{$ratio}dppx) { 8 | @content; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_image-rendering.scss: -------------------------------------------------------------------------------- 1 | @mixin image-rendering ($mode:optimizeQuality) { 2 | 3 | @if ($mode == optimize-contrast) { 4 | image-rendering: -moz-crisp-edges; 5 | image-rendering: -o-crisp-edges; 6 | image-rendering: -webkit-optimize-contrast; 7 | image-rendering: optimize-contrast; 8 | } 9 | 10 | @else { 11 | image-rendering: $mode; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_inline-block.scss: -------------------------------------------------------------------------------- 1 | // Legacy support for inline-block in IE7 (maybe IE6) 2 | @mixin inline-block { 3 | display: inline-block; 4 | vertical-align: baseline; 5 | zoom: 1; 6 | *display: inline; 7 | *vertical-align: auto; 8 | } 9 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_keyframes.scss: -------------------------------------------------------------------------------- 1 | // Adds keyframes blocks for supported prefixes, removing redundant prefixes in the block's content 2 | @mixin keyframes($name) { 3 | $original-prefix-for-webkit: $prefix-for-webkit; 4 | $original-prefix-for-mozilla: $prefix-for-mozilla; 5 | $original-prefix-for-microsoft: $prefix-for-microsoft; 6 | $original-prefix-for-opera: $prefix-for-opera; 7 | $original-prefix-for-spec: $prefix-for-spec; 8 | 9 | @if $original-prefix-for-webkit { 10 | @include disable-prefix-for-all(); 11 | $prefix-for-webkit: true; 12 | @-webkit-keyframes #{$name} { 13 | @content; 14 | } 15 | } 16 | @if $original-prefix-for-mozilla { 17 | @include disable-prefix-for-all(); 18 | $prefix-for-mozilla: true; 19 | @-moz-keyframes #{$name} { 20 | @content; 21 | } 22 | } 23 | @if $original-prefix-for-opera { 24 | @include disable-prefix-for-all(); 25 | $prefix-for-opera: true; 26 | @-o-keyframes #{$name} { 27 | @content; 28 | } 29 | } 30 | @if $original-prefix-for-spec { 31 | @include disable-prefix-for-all(); 32 | $prefix-for-spec: true; 33 | @keyframes #{$name} { 34 | @content; 35 | } 36 | } 37 | 38 | $prefix-for-webkit: $original-prefix-for-webkit; 39 | $prefix-for-mozilla: $original-prefix-for-mozilla; 40 | $prefix-for-microsoft: $original-prefix-for-microsoft; 41 | $prefix-for-opera: $original-prefix-for-opera; 42 | $prefix-for-spec: $original-prefix-for-spec; 43 | } 44 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_linear-gradient.scss: -------------------------------------------------------------------------------- 1 | @mixin linear-gradient($pos, $G1, $G2: false, 2 | $G3: false, $G4: false, 3 | $G5: false, $G6: false, 4 | $G7: false, $G8: false, 5 | $G9: false, $G10: false, 6 | $deprecated-pos1: left top, 7 | $deprecated-pos2: left bottom, 8 | $fallback: false) { 9 | // Detect what type of value exists in $pos 10 | $pos-type: type-of(nth($pos, 1)); 11 | $pos-spec: null; 12 | $pos-degree: null; 13 | 14 | // If $pos is missing from mixin, reassign vars and add default position 15 | @if ($pos-type == color) or (nth($pos, 1) == "transparent") { 16 | $G10: $G9; $G9: $G8; $G8: $G7; $G7: $G6; $G6: $G5; 17 | $G5: $G4; $G4: $G3; $G3: $G2; $G2: $G1; $G1: $pos; 18 | $pos: null; 19 | } 20 | 21 | @if $pos { 22 | $positions: _linear-positions-parser($pos); 23 | $pos-degree: nth($positions, 1); 24 | $pos-spec: nth($positions, 2); 25 | } 26 | 27 | $full: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10); 28 | 29 | // Set $G1 as the default fallback color 30 | $fallback-color: nth($G1, 1); 31 | 32 | // If $fallback is a color use that color as the fallback color 33 | @if (type-of($fallback) == color) or ($fallback == "transparent") { 34 | $fallback-color: $fallback; 35 | } 36 | 37 | background-color: $fallback-color; 38 | background-image: _deprecated-webkit-gradient(linear, $deprecated-pos1, $deprecated-pos2, $full); // Safari <= 5.0 39 | background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome 40 | background-image: unquote("linear-gradient(#{$pos-spec}#{$full})"); 41 | } 42 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_perspective.scss: -------------------------------------------------------------------------------- 1 | @mixin perspective($depth: none) { 2 | // none | 3 | @include prefixer(perspective, $depth, webkit moz spec); 4 | } 5 | 6 | @mixin perspective-origin($value: 50% 50%) { 7 | @include prefixer(perspective-origin, $value, webkit moz spec); 8 | } 9 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_placeholder.scss: -------------------------------------------------------------------------------- 1 | $placeholders: '-webkit-input-placeholder', 2 | '-moz-placeholder', 3 | '-ms-input-placeholder'; 4 | 5 | @mixin placeholder { 6 | @each $placeholder in $placeholders { 7 | @if $placeholder == "-webkit-input-placeholder" { 8 | &::#{$placeholder} { 9 | @content; 10 | } 11 | } 12 | @else if $placeholder == "-moz-placeholder" { 13 | // FF 18- 14 | &:#{$placeholder} { 15 | @content; 16 | } 17 | 18 | // FF 19+ 19 | &::#{$placeholder} { 20 | @content; 21 | } 22 | } 23 | @else { 24 | &:#{$placeholder} { 25 | @content; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_radial-gradient.scss: -------------------------------------------------------------------------------- 1 | // Requires Sass 3.1+ 2 | @mixin radial-gradient($G1, $G2, 3 | $G3: false, $G4: false, 4 | $G5: false, $G6: false, 5 | $G7: false, $G8: false, 6 | $G9: false, $G10: false, 7 | $pos: null, 8 | $shape-size: null, 9 | $deprecated-pos1: center center, 10 | $deprecated-pos2: center center, 11 | $deprecated-radius1: 0, 12 | $deprecated-radius2: 460, 13 | $fallback: false) { 14 | 15 | $data: _radial-arg-parser($G1, $G2, $pos, $shape-size); 16 | $G1: nth($data, 1); 17 | $G2: nth($data, 2); 18 | $pos: nth($data, 3); 19 | $shape-size: nth($data, 4); 20 | 21 | $full: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10); 22 | 23 | // Strip deprecated cover/contain for spec 24 | $shape-size-spec: _shape-size-stripper($shape-size); 25 | 26 | // Set $G1 as the default fallback color 27 | $first-color: nth($full, 1); 28 | $fallback-color: nth($first-color, 1); 29 | 30 | @if (type-of($fallback) == color) or ($fallback == "transparent") { 31 | $fallback-color: $fallback; 32 | } 33 | 34 | // Add Commas and spaces 35 | $shape-size: if($shape-size, '#{$shape-size}, ', null); 36 | $pos: if($pos, '#{$pos}, ', null); 37 | $pos-spec: if($pos, 'at #{$pos}', null); 38 | $shape-size-spec: if(($shape-size-spec != ' ') and ($pos == null), '#{$shape-size-spec}, ', '#{$shape-size-spec} '); 39 | 40 | background-color: $fallback-color; 41 | background-image: _deprecated-webkit-gradient(radial, $deprecated-pos1, $deprecated-pos2, $full, $deprecated-radius1, $deprecated-radius2); // Safari <= 5.0 && IOS 4 42 | background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full})); 43 | background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})"); 44 | } 45 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_transform.scss: -------------------------------------------------------------------------------- 1 | @mixin transform($property: none) { 2 | // none | 3 | @include prefixer(transform, $property, webkit moz ms o spec); 4 | } 5 | 6 | @mixin transform-origin($axes: 50%) { 7 | // x-axis - left | center | right | length | % 8 | // y-axis - top | center | bottom | length | % 9 | // z-axis - length 10 | @include prefixer(transform-origin, $axes, webkit moz ms o spec); 11 | } 12 | 13 | @mixin transform-style ($style: flat) { 14 | @include prefixer(transform-style, $style, webkit moz ms o spec); 15 | } 16 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_transition.scss: -------------------------------------------------------------------------------- 1 | // Shorthand mixin. Supports multiple parentheses-deliminated values for each variable. 2 | // Example: @include transition (all, 2.0s, ease-in-out); 3 | // @include transition ((opacity, width), (1.0s, 2.0s), ease-in, (0, 2s)); 4 | // @include transition ($property:(opacity, width), $delay: (1.5s, 2.5s)); 5 | 6 | @mixin transition ($properties...) { 7 | @if length($properties) >= 1 { 8 | @include prefixer(transition, $properties, webkit moz spec); 9 | } 10 | 11 | @else { 12 | $properties: all 0.15s ease-out 0; 13 | @include prefixer(transition, $properties, webkit moz spec); 14 | } 15 | } 16 | 17 | @mixin transition-property ($properties...) { 18 | -webkit-transition-property: transition-property-names($properties, 'webkit'); 19 | -moz-transition-property: transition-property-names($properties, 'moz'); 20 | transition-property: transition-property-names($properties, false); 21 | } 22 | 23 | @mixin transition-duration ($times...) { 24 | @include prefixer(transition-duration, $times, webkit moz spec); 25 | } 26 | 27 | @mixin transition-timing-function ($motions...) { 28 | // ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier() 29 | @include prefixer(transition-timing-function, $motions, webkit moz spec); 30 | } 31 | 32 | @mixin transition-delay ($times...) { 33 | @include prefixer(transition-delay, $times, webkit moz spec); 34 | } 35 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/css3/_user-select.scss: -------------------------------------------------------------------------------- 1 | @mixin user-select($arg: none) { 2 | @include prefixer(user-select, $arg, webkit moz ms spec); 3 | } 4 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_compact.scss: -------------------------------------------------------------------------------- 1 | // Remove `false` values from a list 2 | 3 | @function compact($vars...) { 4 | $list: (); 5 | @each $var in $vars { 6 | @if $var { 7 | $list: append($list, $var, comma); 8 | } 9 | } 10 | @return $list; 11 | } 12 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_flex-grid.scss: -------------------------------------------------------------------------------- 1 | // Flexible grid 2 | @function flex-grid($columns, $container-columns: $fg-max-columns) { 3 | $width: $columns * $fg-column + ($columns - 1) * $fg-gutter; 4 | $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; 5 | @return percentage($width / $container-width); 6 | } 7 | 8 | // Flexible gutter 9 | @function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) { 10 | $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; 11 | @return percentage($gutter / $container-width); 12 | } 13 | 14 | // The $fg-column, $fg-gutter and $fg-max-columns variables must be defined in your base stylesheet to properly use the flex-grid function. 15 | // This function takes the fluid grid equation (target / context = result) and uses columns to help define each. 16 | // 17 | // The calculation presumes that your column structure will be missing the last gutter: 18 | // 19 | // -- column -- gutter -- column -- gutter -- column 20 | // 21 | // $fg-column: 60px; // Column Width 22 | // $fg-gutter: 25px; // Gutter Width 23 | // $fg-max-columns: 12; // Total Columns For Main Container 24 | // 25 | // div { 26 | // width: flex-grid(4); // returns (315px / 995px) = 31.65829%; 27 | // margin-left: flex-gutter(); // returns (25px / 995px) = 2.51256%; 28 | // 29 | // p { 30 | // width: flex-grid(2, 4); // returns (145px / 315px) = 46.031746%; 31 | // float: left; 32 | // margin: flex-gutter(4); // returns (25px / 315px) = 7.936508%; 33 | // } 34 | // 35 | // blockquote { 36 | // float: left; 37 | // width: flex-grid(2, 4); // returns (145px / 315px) = 46.031746%; 38 | // } 39 | // } -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_grid-width.scss: -------------------------------------------------------------------------------- 1 | @function grid-width($n) { 2 | @return $n * $gw-column + ($n - 1) * $gw-gutter; 3 | } 4 | 5 | // The $gw-column and $gw-gutter variables must be defined in your base stylesheet to properly use the grid-width function. 6 | // 7 | // $gw-column: 100px; // Column Width 8 | // $gw-gutter: 40px; // Gutter Width 9 | // 10 | // div { 11 | // width: grid-width(4); // returns 520px; 12 | // margin-left: $gw-gutter; // returns 40px; 13 | // } 14 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_linear-gradient.scss: -------------------------------------------------------------------------------- 1 | @function linear-gradient($pos, $gradients...) { 2 | $type: linear; 3 | $pos-type: type-of(nth($pos, 1)); 4 | 5 | // if $pos doesn't exist, fix $gradient 6 | @if ($pos-type == color) or (nth($pos, 1) == "transparent") { 7 | $gradients: zip($pos $gradients); 8 | $pos: false; 9 | } 10 | 11 | $type-gradient: $type, $pos, $gradients; 12 | @return $type-gradient; 13 | } 14 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_modular-scale.scss: -------------------------------------------------------------------------------- 1 | @function modular-scale($value, $increment, $ratio) { 2 | @if $increment > 0 { 3 | @for $i from 1 through $increment { 4 | $value: ($value * $ratio); 5 | } 6 | } 7 | 8 | @if $increment < 0 { 9 | $increment: abs($increment); 10 | @for $i from 1 through $increment { 11 | $value: ($value / $ratio); 12 | } 13 | } 14 | 15 | @return $value; 16 | } 17 | 18 | // div { 19 | // Increment Up GR with positive value 20 | // font-size: modular-scale(14px, 1, 1.618); // returns: 22.652px 21 | // 22 | // Increment Down GR with negative value 23 | // font-size: modular-scale(14px, -1, 1.618); // returns: 8.653px 24 | // 25 | // Can be used with ceil(round up) or floor(round down) 26 | // font-size: floor( modular-scale(14px, 1, 1.618) ); // returns: 22px 27 | // font-size: ceil( modular-scale(14px, 1, 1.618) ); // returns: 23px 28 | // } 29 | // 30 | // modularscale.com 31 | 32 | @function golden-ratio($value, $increment) { 33 | @return modular-scale($value, $increment, 1.618) 34 | } 35 | 36 | // div { 37 | // font-size: golden-ratio(14px, 1); // returns: 22.652px 38 | // } 39 | // 40 | // goldenratiocalculator.com 41 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_px-to-em.scss: -------------------------------------------------------------------------------- 1 | // Convert pixels to ems 2 | // eg. for a relational value of 12px write em(12) when the parent is 16px 3 | // if the parent is another value say 24px write em(12, 24) 4 | 5 | @function em($pxval, $base: 16) { 6 | @return ($pxval / $base) * 1em; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_radial-gradient.scss: -------------------------------------------------------------------------------- 1 | // This function is required and used by the background-image mixin. 2 | @function radial-gradient($G1, $G2, 3 | $G3: false, $G4: false, 4 | $G5: false, $G6: false, 5 | $G7: false, $G8: false, 6 | $G9: false, $G10: false, 7 | $pos: null, 8 | $shape-size: null) { 9 | 10 | $data: _radial-arg-parser($G1, $G2, $pos, $shape-size); 11 | $G1: nth($data, 1); 12 | $G2: nth($data, 2); 13 | $pos: nth($data, 3); 14 | $shape-size: nth($data, 4); 15 | 16 | $type: radial; 17 | $gradient: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10); 18 | 19 | $type-gradient: $type, $shape-size $pos, $gradient; 20 | @return $type-gradient; 21 | } 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_tint-shade.scss: -------------------------------------------------------------------------------- 1 | // Add percentage of white to a color 2 | @function tint($color, $percent){ 3 | @return mix(white, $color, $percent); 4 | } 5 | 6 | // Add percentage of black to a color 7 | @function shade($color, $percent){ 8 | @return mix(black, $color, $percent); 9 | } 10 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/functions/_transition-property-name.scss: -------------------------------------------------------------------------------- 1 | // Return vendor-prefixed property names if appropriate 2 | // Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background 3 | //************************************************************************// 4 | @function transition-property-names($props, $vendor: false) { 5 | $new-props: (); 6 | 7 | @each $prop in $props { 8 | $new-props: append($new-props, transition-property-name($prop, $vendor), comma); 9 | } 10 | 11 | @return $new-props; 12 | } 13 | 14 | @function transition-property-name($prop, $vendor: false) { 15 | // put other properties that need to be prefixed here aswell 16 | @if $vendor and $prop == transform { 17 | @return unquote('-'+$vendor+'-'+$prop); 18 | } 19 | @else { 20 | @return $prop; 21 | } 22 | } -------------------------------------------------------------------------------- /assets/libraries/bourbon/helpers/_deprecated-webkit-gradient.scss: -------------------------------------------------------------------------------- 1 | // Render Deprecated Webkit Gradient - Linear || Radial 2 | //************************************************************************// 3 | @function _deprecated-webkit-gradient($type, 4 | $deprecated-pos1, $deprecated-pos2, 5 | $full, 6 | $deprecated-radius1: false, $deprecated-radius2: false) { 7 | $gradient-list: (); 8 | $gradient: false; 9 | $full-length: length($full); 10 | $percentage: false; 11 | $gradient-type: $type; 12 | 13 | @for $i from 1 through $full-length { 14 | $gradient: nth($full, $i); 15 | 16 | @if length($gradient) == 2 { 17 | $color-stop: color-stop(nth($gradient, 2), nth($gradient, 1)); 18 | $gradient-list: join($gradient-list, $color-stop, comma); 19 | } 20 | @else if $gradient != null { 21 | @if $i == $full-length { 22 | $percentage: 100%; 23 | } 24 | @else { 25 | $percentage: ($i - 1) * (100 / ($full-length - 1)) + "%"; 26 | } 27 | $color-stop: color-stop(unquote($percentage), $gradient); 28 | $gradient-list: join($gradient-list, $color-stop, comma); 29 | } 30 | } 31 | 32 | @if $type == radial { 33 | $gradient: -webkit-gradient(radial, $deprecated-pos1, $deprecated-radius1, $deprecated-pos2, $deprecated-radius2, $gradient-list); 34 | } 35 | @else if $type == linear { 36 | $gradient: -webkit-gradient(linear, $deprecated-pos1, $deprecated-pos2, $gradient-list); 37 | } 38 | @return $gradient; 39 | } 40 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/helpers/_gradient-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _gradient-positions-parser($gradient-type, $gradient-positions) { 2 | @if $gradient-positions 3 | and ($gradient-type == linear) 4 | and (type-of($gradient-positions) != color) { 5 | $gradient-positions: _linear-positions-parser($gradient-positions); 6 | } 7 | @else if $gradient-positions 8 | and ($gradient-type == radial) 9 | and (type-of($gradient-positions) != color) { 10 | $gradient-positions: _radial-positions-parser($gradient-positions); 11 | } 12 | @return $gradient-positions; 13 | } 14 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/helpers/_linear-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _linear-positions-parser($pos) { 2 | $type: type-of(nth($pos, 1)); 3 | $spec: null; 4 | $degree: null; 5 | $side: null; 6 | $corner: null; 7 | $length: length($pos); 8 | // Parse Side and corner positions 9 | @if ($length > 1) { 10 | @if nth($pos, 1) == "to" { // Newer syntax 11 | $side: nth($pos, 2); 12 | 13 | @if $length == 2 { // eg. to top 14 | // Swap for backwards compatability 15 | $degree: _position-flipper(nth($pos, 2)); 16 | } 17 | @else if $length == 3 { // eg. to top left 18 | $corner: nth($pos, 3); 19 | } 20 | } 21 | @else if $length == 2 { // Older syntax ("top left") 22 | $side: _position-flipper(nth($pos, 1)); 23 | $corner: _position-flipper(nth($pos, 2)); 24 | } 25 | 26 | @if ("#{$side} #{$corner}" == "left top") or ("#{$side} #{$corner}" == "top left") { 27 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 28 | } 29 | @else if ("#{$side} #{$corner}" == "right top") or ("#{$side} #{$corner}" == "top right") { 30 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 31 | } 32 | @else if ("#{$side} #{$corner}" == "right bottom") or ("#{$side} #{$corner}" == "bottom right") { 33 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 34 | } 35 | @else if ("#{$side} #{$corner}" == "left bottom") or ("#{$side} #{$corner}" == "bottom left") { 36 | $degree: _position-flipper(#{$side}) _position-flipper(#{$corner}); 37 | } 38 | $spec: to $side $corner; 39 | } 40 | @else if $length == 1 { 41 | // Swap for backwards compatability 42 | @if $type == string { 43 | $degree: $pos; 44 | $spec: to _position-flipper($pos); 45 | } 46 | @else { 47 | $degree: -270 - $pos; //rotate the gradient opposite from spec 48 | $spec: $pos; 49 | } 50 | } 51 | $degree: unquote($degree + ","); 52 | $spec: unquote($spec + ","); 53 | @return $degree $spec; 54 | } 55 | 56 | @function _position-flipper($pos) { 57 | @return if($pos == left, right, null) 58 | if($pos == right, left, null) 59 | if($pos == top, bottom, null) 60 | if($pos == bottom, top, null); 61 | } 62 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/helpers/_radial-arg-parser.scss: -------------------------------------------------------------------------------- 1 | @function _radial-arg-parser($G1, $G2, $pos, $shape-size) { 2 | @each $value in $G1, $G2 { 3 | $first-val: nth($value, 1); 4 | $pos-type: type-of($first-val); 5 | $spec-at-index: null; 6 | 7 | // Determine if spec was passed to mixin 8 | @if type-of($value) == list { 9 | $spec-at-index: if(index($value, at), index($value, at), false); 10 | } 11 | @if $spec-at-index { 12 | @if $spec-at-index > 1 { 13 | @for $i from 1 through ($spec-at-index - 1) { 14 | $shape-size: $shape-size nth($value, $i); 15 | } 16 | @for $i from ($spec-at-index + 1) through length($value) { 17 | $pos: $pos nth($value, $i); 18 | } 19 | } 20 | @else if $spec-at-index == 1 { 21 | @for $i from ($spec-at-index + 1) through length($value) { 22 | $pos: $pos nth($value, $i); 23 | } 24 | } 25 | $G1: false; 26 | } 27 | 28 | // If not spec calculate correct values 29 | @else { 30 | @if ($pos-type != color) or ($first-val != "transparent") { 31 | @if ($pos-type == number) 32 | or ($first-val == "center") 33 | or ($first-val == "top") 34 | or ($first-val == "right") 35 | or ($first-val == "bottom") 36 | or ($first-val == "left") { 37 | 38 | $pos: $value; 39 | 40 | @if $pos == $G1 { 41 | $G1: false; 42 | } 43 | } 44 | 45 | @else if 46 | ($first-val == "ellipse") 47 | or ($first-val == "circle") 48 | or ($first-val == "closest-side") 49 | or ($first-val == "closest-corner") 50 | or ($first-val == "farthest-side") 51 | or ($first-val == "farthest-corner") 52 | or ($first-val == "contain") 53 | or ($first-val == "cover") { 54 | 55 | $shape-size: $value; 56 | 57 | @if $value == $G1 { 58 | $G1: false; 59 | } 60 | 61 | @else if $value == $G2 { 62 | $G2: false; 63 | } 64 | } 65 | } 66 | } 67 | } 68 | @return $G1, $G2, $pos, $shape-size; 69 | } 70 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/helpers/_radial-positions-parser.scss: -------------------------------------------------------------------------------- 1 | @function _radial-positions-parser($gradient-pos) { 2 | $shape-size: nth($gradient-pos, 1); 3 | $pos: nth($gradient-pos, 2); 4 | $shape-size-spec: _shape-size-stripper($shape-size); 5 | 6 | $pre-spec: unquote(if($pos, "#{$pos}, ", null)) 7 | unquote(if($shape-size, "#{$shape-size},", null)); 8 | $pos-spec: if($pos, "at #{$pos}", null); 9 | 10 | $spec: "#{$shape-size-spec} #{$pos-spec}"; 11 | 12 | // Add comma 13 | @if ($spec != ' ') { 14 | $spec: "#{$spec}," 15 | } 16 | 17 | @return $pre-spec $spec; 18 | } 19 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/helpers/_render-gradients.scss: -------------------------------------------------------------------------------- 1 | // User for linear and radial gradients within background-image or border-image properties 2 | 3 | @function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) { 4 | $pre-spec: null; 5 | $spec: null; 6 | $vendor-gradients: null; 7 | @if $gradient-type == linear { 8 | @if $gradient-positions { 9 | $pre-spec: nth($gradient-positions, 1); 10 | $spec: nth($gradient-positions, 2); 11 | } 12 | } 13 | @else if $gradient-type == radial { 14 | $pre-spec: nth($gradient-positions, 1); 15 | $spec: nth($gradient-positions, 2); 16 | } 17 | 18 | @if $vendor { 19 | $vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients); 20 | } 21 | @else if $vendor == false { 22 | $vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})"; 23 | $vendor-gradients: unquote($vendor-gradients); 24 | } 25 | @return $vendor-gradients; 26 | } 27 | -------------------------------------------------------------------------------- /assets/libraries/bourbon/helpers/_shape-size-stripper.scss: -------------------------------------------------------------------------------- 1 | @function _shape-size-stripper($shape-size) { 2 | $shape-size-spec: null; 3 | @each $value in $shape-size { 4 | @if ($value == "cover") or ($value == "contain") { 5 | $value: null; 6 | } 7 | $shape-size-spec: "#{$shape-size-spec} #{$value}"; 8 | } 9 | @return $shape-size-spec; 10 | } 11 | -------------------------------------------------------------------------------- /assets/libraries/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/libraries/jquery/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/libraries/neat/_neat-helpers.scss: -------------------------------------------------------------------------------- 1 | // Functions 2 | @import "functions/private"; 3 | @import "functions/new-breakpoint"; 4 | 5 | // Settings 6 | @import "settings/grid"; 7 | @import "settings/visual-grid"; 8 | -------------------------------------------------------------------------------- /assets/libraries/neat/_neat.scss: -------------------------------------------------------------------------------- 1 | // Bourbon Neat 1.5.0 2 | // MIT Licensed 3 | // Copyright (c) 2012-2013 thoughtbot, inc. 4 | 5 | // Helpers 6 | @import "neat-helpers"; 7 | 8 | // Grid 9 | @import "grid/private"; 10 | @import "grid/reset"; 11 | @import "grid/grid"; 12 | @import "grid/omega"; 13 | @import "grid/outer-container"; 14 | @import "grid/span-columns"; 15 | @import "grid/row"; 16 | @import "grid/shift"; 17 | @import "grid/pad"; 18 | @import "grid/fill-parent"; 19 | @import "grid/media"; 20 | @import "grid/to-deprecate"; 21 | @import "grid/visual-grid"; 22 | -------------------------------------------------------------------------------- /assets/libraries/neat/functions/_new-breakpoint.scss: -------------------------------------------------------------------------------- 1 | @function new-breakpoint($query:$feature $value $columns, $total-columns: $grid-columns) { 2 | 3 | @if length($query) == 1 { 4 | $query: $default-feature nth($query, 1) $total-columns; 5 | } 6 | 7 | @else if length($query) == 2 or length($query) == 4 { 8 | $query: append($query, $total-columns); 9 | } 10 | 11 | @if not belongs-to($query, $visual-grid-breakpoints) { 12 | $visual-grid-breakpoints: append($visual-grid-breakpoints, $query, comma); 13 | } 14 | 15 | @return $query; 16 | } 17 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_fill-parent.scss: -------------------------------------------------------------------------------- 1 | @mixin fill-parent() { 2 | width: 100%; 3 | 4 | @if $border-box-sizing == false { 5 | @include box-sizing(border-box); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_grid.scss: -------------------------------------------------------------------------------- 1 | @if $border-box-sizing == true { 2 | * { 3 | @include box-sizing(border-box); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_media.scss: -------------------------------------------------------------------------------- 1 | @mixin media($query:$feature $value $columns, $total-columns: $grid-columns) { 2 | 3 | @if length($query) == 1 { 4 | @media screen and ($default-feature: nth($query, 1)) { 5 | $default-grid-columns: $grid-columns; 6 | $grid-columns: $total-columns; 7 | @content; 8 | $grid-columns: $default-grid-columns; 9 | } 10 | } 11 | 12 | @else if length($query) == 2 { 13 | @media screen and (nth($query, 1): nth($query, 2)) { 14 | $default-grid-columns: $grid-columns; 15 | $grid-columns: $total-columns; 16 | @content; 17 | $grid-columns: $default-grid-columns; 18 | } 19 | } 20 | 21 | @else if length($query) == 3 { 22 | @media screen and (nth($query, 1): nth($query, 2)) { 23 | $default-grid-columns: $grid-columns; 24 | $grid-columns: nth($query, 3); 25 | @content; 26 | $grid-columns: $default-grid-columns; 27 | } 28 | } 29 | 30 | @else if length($query) == 4 { 31 | @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) { 32 | $default-grid-columns: $grid-columns; 33 | $grid-columns: $total-columns; 34 | @content; 35 | $grid-columns: $default-grid-columns; 36 | } 37 | } 38 | 39 | @else if length($query) == 5 { 40 | @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) { 41 | $default-grid-columns: $grid-columns; 42 | $grid-columns: nth($query, 5); 43 | @content; 44 | $grid-columns: $default-grid-columns; 45 | } 46 | } 47 | 48 | @else { 49 | @warn "Wrong number of arguments for breakpoint(). Read the documentation for more details."; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_omega.scss: -------------------------------------------------------------------------------- 1 | // Remove last element gutter 2 | @mixin omega($query: block, $direction: default) { 3 | $table: if(belongs-to(table, $query), true, false); 4 | $auto: if(belongs-to(auto, $query), true, false); 5 | 6 | @if $direction != default { 7 | @warn "The omega mixin will no longer take a $direction argument. To change the layout direction, use row($direction) or set $default-layout-direction instead." 8 | } @else { 9 | $direction: get-direction($layout-direction, $default-layout-direction); 10 | } 11 | 12 | @if length($query) == 1 { 13 | @if $auto { 14 | &:last-child { 15 | margin-#{$direction}: 0; 16 | } 17 | } 18 | 19 | @else if contains-display-value($query) { 20 | @if $table { 21 | padding-#{$direction}: 0; 22 | } 23 | 24 | @else { 25 | margin-#{$direction}: 0; 26 | } 27 | } 28 | 29 | @else { 30 | @include nth-child($query, $direction); 31 | } 32 | } 33 | 34 | @else if length($query) == 2 { 35 | @if $table { 36 | @if $auto { 37 | &:last-child { 38 | padding-#{$direction}: 0; 39 | } 40 | } 41 | 42 | @else { 43 | &:nth-child(#{nth($query, 1)}) { 44 | padding-#{$direction}: 0; 45 | } 46 | } 47 | } 48 | 49 | @else { 50 | @if $auto { 51 | &:last-child { 52 | margin-#{$direction}: 0; 53 | } 54 | } 55 | 56 | @else { 57 | @include nth-child(nth($query, 1), $direction); 58 | } 59 | } 60 | } 61 | 62 | @else { 63 | @warn "Too many arguments passed to the omega() mixin." 64 | } 65 | } 66 | 67 | @mixin nth-child($query, $direction) { 68 | $opposite-direction: get-opposite-direction($direction); 69 | 70 | &:nth-child(#{$query}) { 71 | margin-#{$direction}: 0; 72 | } 73 | 74 | @if type-of($query) == number { 75 | &:nth-child(#{$query}+1) { 76 | clear: $opposite-direction; 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_outer-container.scss: -------------------------------------------------------------------------------- 1 | @mixin outer-container { 2 | @include clearfix; 3 | max-width: $max-width; 4 | margin: { 5 | left: auto; 6 | right: auto; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_pad.scss: -------------------------------------------------------------------------------- 1 | @mixin pad($padding: flex-gutter()) { 2 | $padding-list: null; 3 | @each $value in $padding { 4 | $value: if($value == 'default', flex-gutter(), $value); 5 | $padding-list: join($padding-list, $value); 6 | } 7 | padding: $padding-list; 8 | } 9 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_private.scss: -------------------------------------------------------------------------------- 1 | $parent-columns: $grid-columns !default; 2 | $fg-column: $column; 3 | $fg-gutter: $gutter; 4 | $fg-max-columns: $grid-columns; 5 | $container-display-table: false !default; 6 | $layout-direction: nil !default; 7 | 8 | @function flex-grid($columns, $container-columns: $fg-max-columns) { 9 | $width: $columns * $fg-column + ($columns - 1) * $fg-gutter; 10 | $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; 11 | @return percentage($width / $container-width); 12 | } 13 | 14 | @function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) { 15 | $container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter; 16 | @return percentage($gutter / $container-width); 17 | } 18 | 19 | @function grid-width($n) { 20 | @return $n * $gw-column + ($n - 1) * $gw-gutter; 21 | } 22 | 23 | @function get-parent-columns($columns) { 24 | @if $columns != $grid-columns { 25 | $parent-columns: $columns; 26 | } @else { 27 | $parent-columns: $grid-columns; 28 | } 29 | 30 | @return $parent-columns; 31 | } 32 | 33 | @function is-display-table($container-is-display-table, $display) { 34 | $display-table: false; 35 | 36 | @if $container-is-display-table == true { 37 | $display-table: true; 38 | } @else if $display == table { 39 | $display-table: true; 40 | } 41 | 42 | @return $display-table; 43 | } 44 | 45 | @function get-padding-for-table-layout($columns, $total-columns) { 46 | $total-padding: flex-gutter($total-columns) * ($columns - 1); 47 | $padding: $total-padding / $columns; 48 | 49 | @return $padding; 50 | } 51 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_reset.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-display { 2 | $container-display-table: false; 3 | } 4 | 5 | @mixin reset-layout-direction { 6 | $layout-direction: $default-layout-direction; 7 | } 8 | 9 | @mixin reset-all { 10 | @include reset-display; 11 | @include reset-layout-direction; 12 | } 13 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_row.scss: -------------------------------------------------------------------------------- 1 | @mixin row($display: block, $direction: $default-layout-direction) { 2 | @include clearfix; 3 | $layout-direction: $direction; 4 | 5 | @if $display == table { 6 | display: table; 7 | @include fill-parent; 8 | table-layout: fixed; 9 | $container-display-table: true; 10 | } 11 | 12 | @else { 13 | display: block; 14 | $container-display-table: false; 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_shift.scss: -------------------------------------------------------------------------------- 1 | @mixin shift($n-columns: 1) { 2 | @include shift-in-context($n-columns); 3 | } 4 | 5 | @mixin shift-in-context($shift: $columns of $container-columns) { 6 | $n-columns: nth($shift, 1); 7 | $parent-columns: container-shift($shift); 8 | 9 | $direction: get-direction($layout-direction, $default-layout-direction); 10 | $opposite-direction: get-opposite-direction($direction); 11 | 12 | margin-#{$opposite-direction}: $n-columns * flex-grid(1, $parent-columns) + $n-columns * flex-gutter($parent-columns); 13 | 14 | // Reset nesting context 15 | $parent-columns: $grid-columns; 16 | } 17 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_span-columns.scss: -------------------------------------------------------------------------------- 1 | @mixin span-columns($span: $columns of $container-columns, $display: block) { 2 | $columns: nth($span, 1); 3 | $container-columns: container-span($span); 4 | 5 | // Set nesting context (used by shift()) 6 | $parent-columns: get-parent-columns($container-columns); 7 | 8 | $direction: get-direction($layout-direction, $default-layout-direction); 9 | $opposite-direction: get-opposite-direction($direction); 10 | 11 | $display-table: is-display-table($container-display-table, $display); 12 | 13 | @if $display-table { 14 | $padding: get-padding-for-table-layout($columns, $container-columns); 15 | display: table-cell; 16 | padding-#{$direction}: $padding; 17 | width: flex-grid($columns, $container-columns) + $padding; 18 | } @else { 19 | float: #{$opposite-direction}; 20 | 21 | @if $display != no-display { 22 | display: block; 23 | } 24 | 25 | @if $display == collapse { 26 | @warn "The 'collapse' argument will be deprecated. Use 'block-collapse' instead." 27 | } 28 | 29 | @if $display == collapse or $display == block-collapse { 30 | width: flex-grid($columns, $container-columns) + flex-gutter($container-columns); 31 | 32 | &:last-child { 33 | width: flex-grid($columns, $container-columns); 34 | } 35 | 36 | } @else { 37 | margin-#{$direction}: flex-gutter($container-columns); 38 | width: flex-grid($columns, $container-columns); 39 | 40 | &:last-child { 41 | margin-#{$direction}: 0; 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_to-deprecate.scss: -------------------------------------------------------------------------------- 1 | @mixin breakpoint($query:$feature $value $columns, $total-columns: $grid-columns) { 2 | @warn "The breakpoint() mixin was renamed to media() in Neat 1.0. Please update your project with the new syntax before the next version bump."; 3 | 4 | @if length($query) == 1 { 5 | @media screen and ($default-feature: nth($query, 1)) { 6 | $default-grid-columns: $grid-columns; 7 | $grid-columns: $total-columns; 8 | @content; 9 | $grid-columns: $default-grid-columns; 10 | } 11 | } 12 | 13 | @else if length($query) == 2 { 14 | @media screen and (nth($query, 1): nth($query, 2)) { 15 | $default-grid-columns: $grid-columns; 16 | $grid-columns: $total-columns; 17 | @content; 18 | $grid-columns: $default-grid-columns; 19 | } 20 | } 21 | 22 | @else if length($query) == 3 { 23 | @media screen and (nth($query, 1): nth($query, 2)) { 24 | $default-grid-columns: $grid-columns; 25 | $grid-columns: nth($query, 3); 26 | @content; 27 | $grid-columns: $default-grid-columns; 28 | } 29 | } 30 | 31 | @else if length($query) == 4 { 32 | @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) { 33 | $default-grid-columns: $grid-columns; 34 | $grid-columns: $total-columns; 35 | @content; 36 | $grid-columns: $default-grid-columns; 37 | } 38 | } 39 | 40 | @else if length($query) == 5 { 41 | @media screen and (nth($query, 1): nth($query, 2)) and (nth($query, 3): nth($query, 4)) { 42 | $default-grid-columns: $grid-columns; 43 | $grid-columns: nth($query, 5); 44 | @content; 45 | $grid-columns: $default-grid-columns; 46 | } 47 | } 48 | 49 | @else { 50 | @warn "Wrong number of arguments for breakpoint(). Read the documentation for more details."; 51 | } 52 | } 53 | 54 | @mixin nth-omega($nth, $display: block, $direction: default) { 55 | @warn "The nth-omega() mixin is deprecated. Please use omega() instead."; 56 | @include omega($nth $display, $direction); 57 | } 58 | -------------------------------------------------------------------------------- /assets/libraries/neat/grid/_visual-grid.scss: -------------------------------------------------------------------------------- 1 | @mixin grid-column-gradient($values...) { 2 | background-image: deprecated-webkit-gradient(linear, left top, left bottom, $values); 3 | background-image: -webkit-linear-gradient(left, $values); 4 | background-image: -moz-linear-gradient(left, $values); 5 | background-image: -ms-linear-gradient(left, $values); 6 | background-image: -o-linear-gradient(left, $values); 7 | background-image: unquote("linear-gradient(left, #{$values})"); 8 | } 9 | 10 | @if $visual-grid == true or $visual-grid == yes { 11 | body:before { 12 | content: ''; 13 | display: inline-block; 14 | @include grid-column-gradient(gradient-stops($grid-columns)); 15 | height: 100%; 16 | left: 0; 17 | margin: 0 auto; 18 | max-width: $max-width; 19 | opacity: $visual-grid-opacity; 20 | position: fixed; 21 | right: 0; 22 | width: 100%; 23 | pointer-events: none; 24 | 25 | @if $visual-grid-index == back { 26 | z-index: -1; 27 | } 28 | 29 | @else if $visual-grid-index == front { 30 | z-index: 9999; 31 | } 32 | 33 | @each $breakpoint in $visual-grid-breakpoints { 34 | @if $breakpoint != nil { 35 | @include media($breakpoint) { 36 | @include grid-column-gradient(gradient-stops($grid-columns)); 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /assets/libraries/neat/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/libraries/neat/settings/_grid.scss: -------------------------------------------------------------------------------- 1 | $column: golden-ratio(1em, 3) !default; // Column width 2 | $gutter: golden-ratio(1em, 1) !default; // Gutter between each two columns 3 | $grid-columns: 12 !default; // Total number of columns in the grid 4 | $max-width: em(1088) !default; // Max-width of the outer container 5 | $border-box-sizing: true !default; // Makes all elements have a border-box layout 6 | $default-feature: min-width; // Default @media feature for the breakpoint() mixin 7 | $default-layout-direction: LTR !default; 8 | -------------------------------------------------------------------------------- /assets/libraries/neat/settings/_visual-grid.scss: -------------------------------------------------------------------------------- 1 | $visual-grid: false !default; // Display the base grid 2 | $visual-grid-color: #EEE !default; 3 | $visual-grid-index: back !default; // Show grid behind content (back) or overlay it over the content (front) 4 | $visual-grid-opacity: 0.4 !default; 5 | $visual-grid-breakpoints: () !default; 6 | -------------------------------------------------------------------------------- /assets/touch_icons/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 403 Forbidden 4 | 5 | 6 | 7 |

    Directory access is forbidden.

    8 | 9 | 10 | -------------------------------------------------------------------------------- /bookmarklets/unmark_autoclose.js: -------------------------------------------------------------------------------- 1 | /* 2 | Unmark Bookmarklet: Auto Close 3 | This bookmarklet will open a small window, save the current page to Unmark, then close the window in one second. 4 | */ 5 | 6 | 7 | // Full 8 | 9 | javascript: (function () { 10 | l = 'https://unmark.it/mark/add?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&v=2&nowindow=yes&'; 11 | var w = window.open(l + 'noui=1', 'Unmark_AutoClose', 'location=0,links=0,scrollbars=0,toolbar=0,width=5,height=5'); 12 | w.blur(); window.focus(); 13 | setTimeout(function () { 14 | w.close(); 15 | }, 1000); 16 | })(); 17 | 18 | // Minified 19 | 20 | javascript:(function(){l="https://unmark.it/mark/add?url="+encodeURIComponent(window.location.href)+"&title="+encodeURIComponent(document.title)+"&v=2&nowindow=yes&";var e=window.open(l+"noui=1","Unmark_AutoClose","location=0,links=0,scrollbars=0,toolbar=0,width=5,height=5");e.blur();window.focus();setTimeout(function(){e.close()},1000)})() 21 | 22 | // URL Encoded in Link 23 | 24 | Unmark Auto-Close + -------------------------------------------------------------------------------- /bookmarklets/unmark_default.js: -------------------------------------------------------------------------------- 1 | /* 2 | Unmark Bookmarklet: Default 3 | This bookmarklet will open a window, allow the user to choose a label and add notes. 4 | */ 5 | 6 | 7 | // Full 8 | 9 | javascript: (function () { 10 | l = 'https://unmark.it/mark/add?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&v=1&nowindow=yes&'; 11 | var w = window.open(l + 'noui=1', 'Unmark', 'location=0,links=0,scrollbars=0,toolbar=0,width=594,height=615'); 12 | })(); 13 | 14 | // Minified 15 | 16 | javascript:(function(){l="https://unmark.it/mark/add?url="+encodeURIComponent(window.location.href)+"&title="+encodeURIComponent(document.title)+"&v=1&nowindow=yes&";var e=window.open(l+"noui=1","Unmark","location=0,links=0,scrollbars=0,toolbar=0,width=594,height=615")})() 17 | 18 | // URL Encoded in Link 19 | 20 | Unmark + 21 | -------------------------------------------------------------------------------- /browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #13293d 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /custom_example/readme.md: -------------------------------------------------------------------------------- 1 | ## Custom Directory 2 | Please go [here](https://github.com/cdevroe/unmark/wiki/Custom) to read more about this. -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | ## 2 | ## Docker Containers 3 | ## This creates containers running mySQL and WordPress 4 | ## for running Unmark. 5 | ## 6 | ## Written by Colin Devroe cdevroe.com 7 | ## 8 | ## Version 1.0 Build 001 9 | ## 10 | 11 | version: '3.3' 12 | 13 | services: 14 | apache: 15 | container_name: unmark_apache 16 | build: 17 | context: ./ 18 | image: php:5.6-apache 19 | hostname: apache 20 | ports: 21 | - "80:80" 22 | volumes: 23 | - ./:/var/www/html 24 | - ./docker-configs/php-custom.ini:/usr/local/etc/php/conf.d/custom.ini 25 | depends_on: 26 | - mysql 27 | links: 28 | - mysql 29 | mysql: 30 | container_name: unmark_mysql 31 | image: mysql:5.7 32 | hostname: mysql 33 | command: --sql_mode='' 34 | ports: 35 | - "3306:3306" 36 | volumes: 37 | - unmark_db_volume:/var/lib/mysql 38 | environment: 39 | MYSQL_ROOT_PASSWORD: unmarkrootmysqlpass 40 | MYSQL_DATABASE: unmark 41 | MYSQL_USER: unmarkuser 42 | MYSQL_PASSWORD: unmarkpass 43 | phpmyadmin: 44 | container_name: unmark_phpmyadmin 45 | image: phpmyadmin/phpmyadmin 46 | links: 47 | - mysql:db 48 | ports: 49 | - "8082:80" 50 | environment: 51 | - PMA_USER=unmarkuser 52 | - PMA_PASSWORD=unmarkpass 53 | - PHP_UPLOAD_MAX_FILESIZE=100MB 54 | volumes: 55 | unmark_db_volume: 56 | -------------------------------------------------------------------------------- /docker-configs/php-custom.ini: -------------------------------------------------------------------------------- 1 | date.timezone = "UTC" 2 | ##extension=mysqli.so -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/favicon.ico -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | == UNMARK LICENSE == 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2013-2019 Colin Devroe, Kyle Ruane, Plain, Unmark 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | 24 | 25 | == CODEIGNITER LICENSE == 26 | The MIT License (MIT) 27 | 28 | Copyright (c) 2014 - 2019, British Columbia Institute of Technology 29 | 30 | Permission is hereby granted, free of charge, to any person obtaining a copy 31 | of this software and associated documentation files (the "Software"), to deal 32 | in the Software without restriction, including without limitation the rights 33 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 34 | copies of the Software, and to permit persons to whom the Software is 35 | furnished to do so, subject to the following conditions: 36 | 37 | The above copyright notice and this permission notice shall be included in 38 | all copies or substantial portions of the Software. 39 | 40 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 41 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 42 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 43 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 44 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 45 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 46 | THE SOFTWARE. -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Unmark", 3 | "name": "Unmark", 4 | "icons": [ 5 | { 6 | "src": "/assets/images/pwa/android-chrome-192x192.png", 7 | "type": "image/png", 8 | "sizes": "192x192" 9 | }, 10 | { 11 | "src": "/assets/images/pwa/android-chrome-512x512.png", 12 | "type": "image/png", 13 | "sizes": "512x512" 14 | } 15 | ], 16 | "share_target": { 17 | "action": "/mark/add/", 18 | "params": { 19 | "url": "url", 20 | "title": "title", 21 | "text": "notes" 22 | } 23 | }, 24 | "start_url": "/?source=pwa", 25 | "background_color": "#13293d", 26 | "display": "standalone", 27 | "orientation": "portrait", 28 | "scope": "/", 29 | "theme_color": "#13293d" 30 | } 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "unmark", 3 | "url": "https://unmark.it", 4 | "version": "2020.4.0", 5 | "repository": "https://github.com/cdevroe/unmark", 6 | "license": "https://github.com/cdevroe/unmark/blob/master/license.txt", 7 | "description": "The open source to-do application for bookmarks.", 8 | "author": "https://unmark.it/", 9 | "main": "Gruntfile.js", 10 | "devDependencies": { 11 | "copy": "^0.3.2", 12 | "glob": "~3.2.8", 13 | "grunt": "^1.1.0", 14 | "grunt-contrib-clean": "^2.0.0", 15 | "grunt-contrib-compress": "^1.6.0", 16 | "grunt-contrib-concat": "^1.0.1", 17 | "grunt-contrib-copy": "^1.0.0", 18 | "grunt-contrib-sass": "^1.0.0", 19 | "grunt-contrib-uglify": "^4.0.1", 20 | "grunt-contrib-watch": "^1.1.0", 21 | "load-grunt-tasks": "^5.1.0" 22 | }, 23 | "dependencies": {} 24 | } 25 | -------------------------------------------------------------------------------- /service-worker.js: -------------------------------------------------------------------------------- 1 | var CACHE_NAME = 'unmark-version-2.0'; 2 | var urlsToCache = [ 3 | '/assets/css/unmark.css', 4 | '/assets/libraries/jquery/jquery-2.1.0.min.js', 5 | '/custom/assets/js/production/unmark.loggedin.js', 6 | '/assets/js/plugins/modernizr-2.7.1.min.js', 7 | '/assets/js/production/unmark.plugins.js' 8 | ]; 9 | 10 | self.addEventListener('install', function(event) { 11 | self.skipWaiting(); 12 | console.log('Service Worker: Installed'); 13 | // Perform install steps 14 | event.waitUntil( 15 | caches.open(CACHE_NAME) 16 | .then(function(cache) { 17 | console.log('Service Worker: Opened cache'); 18 | return cache.addAll(urlsToCache); 19 | }) 20 | ); 21 | }); 22 | 23 | // Call Activate Event 24 | self.addEventListener('activate', e => { 25 | console.log('Service Worker: Activated'); 26 | // Remove unwanted caches 27 | e.waitUntil( 28 | caches.keys().then(cacheNames => { 29 | return Promise.all( 30 | cacheNames.map(cache => { 31 | if (cache !== CACHE_NAME) { 32 | console.log('Service Worker: Clearing Old Cache ' + cache); 33 | return caches.delete(cache); 34 | } 35 | }) 36 | ); 37 | }) 38 | ); 39 | }); 40 | 41 | // Call Fetch Event 42 | self.addEventListener('fetch', e => { 43 | console.log('Service Worker: Fetching ' + e.request); 44 | e.respondWith(fetch(e.request).catch(() => caches.match(e.request))); 45 | }); -------------------------------------------------------------------------------- /system/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Require all denied 3 | 4 | 5 | Deny from all 6 | -------------------------------------------------------------------------------- /system/core/compat/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/core/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/cubrid/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/ibase/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/mssql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/mysql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/mysqli/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/oci8/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/odbc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/odbc/odbc_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/pdo_forge.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/subdrivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/postgre/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite/sqlite_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite3/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite3/sqlite3_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /system/database/drivers/sqlsrv/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/fonts/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/fonts/texb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdevroe/unmark/b35ddd5e74b593d5c2a667ef7dabd973b4f4e758/system/fonts/texb.ttf -------------------------------------------------------------------------------- /system/helpers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/language/english/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/language/english/number_lang.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Cache/drivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Cache/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Javascript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Session/drivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Session/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 403 Forbidden 5 | 6 | 7 | 8 |

    Directory access is forbidden.

    9 | 10 | 11 | 12 | --------------------------------------------------------------------------------