diff --git a/README.md b/README.md index b98e0dad..e262b741 100644 --- a/README.md +++ b/README.md @@ -17,16 +17,21 @@ license. It is written in PHP and has few dependencies. Requirements ------------ 1. PHP >= 5.2.5 -2. [mbstring](http://www.php.net/manual/en/mbstring.installation.php) - (--enable-mbstring) -3. [PHP-GD](http://php.net/manual/en/book.image.php) -4. [PHP-PDO](http://php.net/manual/en/book.pdo.php) - (only MySQL is supported at the moment) +2. MySQL server +3. [mbstring](http://www.php.net/manual/en/mbstring.installation.php) +4. [PHP GD](http://www.php.net/manual/en/intro.image.php) +5. [PHP PDO](http://www.php.net/manual/en/intro.pdo.php) We try to make sure Tinyboard is compatible with all major web servers and operating systems. Tinyboard does not include an Apache ```.htaccess``` file nor does it need one. +### Recommended +1. PHP >= 5.3 +2. MySQL server >= 5.5.3 +3. ImageMagick or command-line version (```convert``` and ```identify```) +4. [APC (Alternative PHP Cache)](http://php.net/manual/en/book.apc.php), [XCache](http://xcache.lighttpd.net/) or [Memcached](http://www.php.net/manual/en/intro.memcached.php) + Contributing ------------ You can contribute to Tinyboard by: @@ -65,7 +70,7 @@ find support from a variety of sources: * Documentation can be found [here](http://tinyboard.org/docs/). * You can join Tinyboard's IRC channel for support and general queries: [irc.datnode.net #tinyboard](irc://irc.datnode.net/tinyboard). -* You can find enterprise-grade support at [tinyboard.org](http://tinyboard.org/#support). +* You may find help at [tinyboard.org](http://tinyboard.org/#help). License -------- diff --git a/banned.php b/banned.php index 5ab85312..57e4a9bc 100644 --- a/banned.php +++ b/banned.php @@ -1,7 +1,7 @@ Banned?"; - print "

Nie jestes zbanowany.

"; + print ""._("Banned?").""; + print "

"._("You are not banned.")."

"; print ""; ?> diff --git a/imgcaptcha_im.php b/imgcaptcha_im.php deleted file mode 100644 index 152d92ad..00000000 --- a/imgcaptcha_im.php +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/imgcaptcha_p.php b/imgcaptcha_p.php deleted file mode 100644 index 9543dc6c..00000000 --- a/imgcaptcha_p.php +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/inc/anti-bot.php b/inc/anti-bot.php index bf29b3cb..fde97096 100644 --- a/inc/anti-bot.php +++ b/inc/anti-bot.php @@ -182,12 +182,12 @@ function _create_antibot($board, $thread) { $antibot = new AntiBot(array($board, $thread)); - query('DELETE FROM `antispam` WHERE `expires` < UNIX_TIMESTAMP()') or error(db_error()); + query('DELETE FROM ``antispam`` WHERE `expires` < UNIX_TIMESTAMP()') or error(db_error()); if ($thread) - $query = prepare('UPDATE `antispam` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` = :thread AND `expires` IS NULL'); + $query = prepare('UPDATE ``antispam`` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` = :thread AND `expires` IS NULL'); else - $query = prepare('UPDATE `antispam` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` IS NULL AND `expires` IS NULL'); + $query = prepare('UPDATE ``antispam`` SET `expires` = UNIX_TIMESTAMP() + :expires WHERE `board` = :board AND `thread` IS NULL AND `expires` IS NULL'); $query->bindValue(':board', $board); if ($thread) @@ -195,7 +195,7 @@ function _create_antibot($board, $thread) { $query->bindValue(':expires', $config['spam']['hidden_inputs_expire']); $query->execute() or error(db_error($query)); - $query = prepare('INSERT INTO `antispam` VALUES (:board, :thread, :hash, UNIX_TIMESTAMP(), NULL, 0)'); + $query = prepare('INSERT INTO ``antispam`` VALUES (:board, :thread, :hash, UNIX_TIMESTAMP(), NULL, 0)'); $query->bindValue(':board', $board); $query->bindValue(':thread', $thread); $query->bindValue(':hash', $antibot->hash()); @@ -248,7 +248,7 @@ function checkSpam(array $extra_salt = array()) { if ($hash != $_hash) return true; - $query = prepare('SELECT `passed` FROM `antispam` WHERE `hash` = :hash'); + $query = prepare('SELECT `passed` FROM ``antispam`` WHERE `hash` = :hash'); $query->bindValue(':hash', $hash); $query->execute() or error(db_error($query)); if ((($passed = $query->fetchColumn(0)) === false) || ($passed > $config['spam']['hidden_inputs_max_pass'])) { @@ -260,7 +260,7 @@ function checkSpam(array $extra_salt = array()) { } function incrementSpamHash($hash) { - $query = prepare('UPDATE `antispam` SET `passed` = `passed` + 1 WHERE `hash` = :hash'); + $query = prepare('UPDATE ``antispam`` SET `passed` = `passed` + 1 WHERE `hash` = :hash'); $query->bindValue(':hash', $hash); $query->execute() or error(db_error($query)); } diff --git a/inc/config.php b/inc/config.php index 6860ba42..54b60bf3 100644 --- a/inc/config.php +++ b/inc/config.php @@ -29,45 +29,53 @@ * General/misc settings * ======================= */ - // Blotter -- the simple version. - //$config['blotter'] = 'This is an important announcement!'; - - // Automatically check if a newer version of Tinyboard is available when an administrator logs in + + // Global announcement -- the very simple version. + // This used to be wrongly named $config['blotter'] (still exists as an alias). + // $config['global_message'] = 'This is an important announcement!'; + $config['blotter'] = &$config['global_message']; + + // Automatically check if a newer version of Tinyboard is available when an administrator logs in. $config['check_updates'] = true; // How often to check for updates $config['check_updates_time'] = 43200; // 12 hours - - // Shows some extra information at the bottom of pages. Good for debugging development. + + // Shows some extra information at the bottom of pages. Good for development/debugging. $config['debug'] = false; - // For development purposes. Turns 'display_errors' on. Not recommended for production. + // For development purposes. Displays (and "dies" on) all errors and warnings. Turn on with the above. $config['verbose_errors'] = true; - - // Directory where temporary files will be created. Not really used much yet except for some experimental stuff. + + // Directory where temporary files will be created. $config['tmp'] = sys_get_temp_dir(); - + // The HTTP status code to use when redirecting. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html // Can be either 303 "See Other" or 302 "Found". (303 is more correct but both should work.) + // There is really no reason for you to ever need to change this. $config['redirect_http'] = 303; - - // A small file in the main directory indicating that the script has been ran and the board(s) have been generated. - // This keeps the script from querying the database and causing strain when not needed. + + // A tiny text file in the main directory indicating that the script has been ran and the board(s) have + // been generated. This keeps the script from querying the database and causing strain when not needed. $config['has_installed'] = '.installed'; - + // Use syslog() for logging all error messages and unauthorized login attempts. $config['syslog'] = false; - + // Use `host` via shell_exec() to lookup hostnames, avoiding query timeouts. May not work on your system. // Requires safe_mode to be disabled. $config['dns_system'] = false; + // When executing most command-line tools (such as `convert` for ImageMagick image processing), add this + // to the environment path (seperated by :). + $config['shell_path'] = '/usr/local/bin'; + /* * ==================== * Database settings * ==================== */ - - // SQL driver ("mysql", "pgsql", "sqlite", "dblib", etc) - // http://www.php.net/manual/en/pdo.drivers.php + + // Database driver (http://www.php.net/manual/en/pdo.drivers.php) + // Only MySQL is supported by Tinyboard at the moment, sorry. $config['db']['type'] = 'mysql'; // Hostname or IP address $config['db']['server'] = 'localhost'; @@ -76,63 +84,77 @@ $config['db']['password'] = ''; // Tinyboard database $config['db']['database'] = ''; + // Table prefix + $config['db']['prefix'] = ''; // Use a persistent connection (experimental) $config['db']['persistent'] = false; // Anything more to add to the DSN string (eg. port=xxx;foo=bar) - $config['db']['dsn'] = 'charset=UTF8'; + $config['db']['dsn'] = ''; // Timeout duration in seconds (not all drivers support this) $config['db']['timeout'] = 5; - + /* * ==================== * Cache settings * ==================== */ - - $config['cache']['enabled'] = false; - // $config['cache']['enabled'] = 'memcached'; - // $config['cache']['enabled'] = 'redis'; - // $config['cache']['enabled'] = 'apc'; - // $config['cache']['enabled'] = 'xcache'; - - // Timeout for cached objects such as posts and HTML - $config['cache']['timeout'] = 43200; // 12 hours - - // Optional prefix if you're running multiple Tinyboard instances on the same machine + + /* + * On top of the static file caching system, you can enable the additional caching system which is + * designed to minimize SQL queries and can significantly increase speed when posting or using the + * moderator interface. APC is the recommended method of caching. + * + * http://tinyboard.org/docs/index.php?p=Config/Cache + */ + + $config['cache']['enabled'] = false; + // $config['cache']['enabled'] = 'xcache'; + // $config['cache']['enabled'] = 'apc'; + // $config['cache']['enabled'] = 'memcached'; + // $config['cache']['enabled'] = 'redis'; + + // Timeout for cached objects such as posts and HTML. + $config['cache']['timeout'] = 60 * 60 * 48; // 48 hours + + // Optional prefix if you're running multiple Tinyboard instances on the same machine. $config['cache']['prefix'] = ''; - - // Memcached servers to use - http://www.php.net/manual/en/memcached.addservers.php + + // Memcached servers to use. Read more: http://www.php.net/manual/en/memcached.addservers.php $config['cache']['memcached'] = array( array('localhost', 11211) ); // Redis server to use. Location, port, password, database id. - // Note that Tinyboard may clear the database at times, so you may want to pick a - // database id just for Tinyboard to use. + // Note that Tinyboard may clear the database at times, so you may want to pick a database id just for + // Tinyboard to use. $config['cache']['redis'] = array('localhost', 6379, '', 1); - + /* * ==================== * Cookie settings * ==================== */ - - // Used for moderation login + + // Used for moderation login. $config['cookies']['mod'] = 'mod'; + // Used for communicating with Javascript; telling it when posts were successful. - // Rebuild Javascript file after changing this value or it won't work. $config['cookies']['js'] = 'serv'; - // Cookies "path". Defaults to $config['root']. If $config['root'] is a URL, you need to set this. Should be '/' or '/board/', depending on your installation. + + // Cookies path. Defaults to $config['root']. If $config['root'] is a URL, you need to set this. Should + // be '/' or '/board/', depending on your installation. // $config['cookies']['path'] = '/'; // Where to set the 'path' parameter to $config['cookies']['path'] when creating cookies. Recommended. $config['cookies']['jail'] = true; - // How long should the cookies last (in seconds) - $config['cookies']['expire'] = 15778463; //6 months - // Make this something long and random for security + + // How long should the cookies last (in seconds). Defines how long should moderators should remain logged + // in (0 = browser session). + $config['cookies']['expire'] = 60 * 60 * 24 * 30 * 6; // ~6 months + + // Make this something long and random for security. $config['cookies']['salt'] = 'abcdefghijklmnopqrstuvwxyz09123456789!@#$%^&*()'; - // How long should moderators should remain logged in (0=browser session) (in seconds) - $config['mod']['expire'] = 15778463; //6 months - // Used to salt secure tripcodes (##trip) and poster IDs (if enabled) + + // Used to salt secure tripcodes ("##trip") and poster IDs (if enabled). $config['secure_trip_salt'] = ')(*&^%$#@!98765432190zyxwvutsrqponmlkjihgfedcba'; /* @@ -140,22 +162,29 @@ * Flood/spam settings * ==================== */ - - // How many seconds between each post + + // Minimum time between between each post by the same IP address. $config['flood_time'] = 10; - // How many seconds between each post with exactly the same content and same IP + // Minimum time between between each post with the exact same content AND same IP address. $config['flood_time_ip'] = 120; - // Same as above but different IP address + // Same as above but by a different IP address. (Same content, not necessarily same IP address.) $config['flood_time_same'] = 30; - - // DNS blacklists (DNSBL) http://tinyboard.org/docs/?p=Config/DNSBL - - // http://www.sectoor.de/tor.php - $config['dnsbl'][] = array('tor.dnsbl.sectoor.de', 1); // Tor exit servers - + + /* + * To further prevent spam and abuse, you can use DNS blacklists (DNSBL). A DNSBL is a list of IP + * addresses published through the Internet Domain Name Service (DNS) either as a zone file that can be + * used by DNS server software, or as a live DNS zone that can be queried in real-time. + * + * Read more: http://tinyboard.org/docs/?p=Config/DNSBL + */ + + // Prevents most Tor exit nodes from making posts. Recommended, as a lot of abuse comes from Tor because + // of the strong anonymity associated with it. + $config['dnsbl'][] = array('tor.dnsbl.sectoor.de', 1); + // http://www.sorbs.net/using.shtml // $config['dnsbl'][] = array('dnsbl.sorbs.net', array(2, 3, 4, 5, 6, 7, 8, 9)); - + // http://www.projecthoneypot.org/httpbl.php // $config['dnsbl'][] = array('.%.dnsbl.httpbl.org', function($ip) { // $octets = explode('.', $ip); @@ -170,11 +199,10 @@ // // return true; // }, 'dnsbl.httpbl.org'); // hide our access key - - + // Skip checking certain IP addresses against blacklists (for troubleshooting or whatever) $config['dnsbl_exceptions'][] = '127.0.0.1'; - + /* * Introduction to Tinyboard's spam filter: * @@ -194,14 +222,17 @@ * See also: http://tinyboard.org/docs/?p=Your_request_looks_automated * */ - - // Number of hidden fields to generate + + // Number of hidden fields to generate. $config['spam']['hidden_inputs_min'] = 4; $config['spam']['hidden_inputs_max'] = 12; + // How many times can a "hash" be used to post? $config['spam']['hidden_inputs_max_pass'] = 12; + // How soon after regeneration do hashes expire (in seconds)? $config['spam']['hidden_inputs_expire'] = 60 * 60 * 3; // three hours + // These are fields used to confuse the bots. Make sure they aren't actually used by Tinyboard, or it won't work. $config['spam']['hidden_input_names'] = array( 'user', @@ -215,6 +246,7 @@ 'text', 'message' ); + // Always update this when adding new valid fields to the post form, or EVERYTHING WILL BE DETECTED AS SPAM! $config['spam']['valid_inputs'] = array( 'hash', @@ -233,56 +265,18 @@ 'embed', 'recaptcha_challenge_field', 'recaptcha_response_field', - 'imgcaptcha_hash', - 'imgcaptcha_verify', 'spoiler', - 'quick-reply' + 'quick-reply', + 'page' ); - - // Custom flood filters. Detect flood attacks and reject new posts if there's a positive match. - // See http://tinyboard.org/wiki/index.php?title=Flood_filters for more information. - //$config['flood_filters'][] = array( - // 'condition' => array( - // // 100 posts in the past 5 minutes (~20 p/m) - // 'posts_in_past_x_minutes' => array(100, 5) - // ), - // // Don't allow the user to post - // 'action' => 'reject', - // // Display this message - // 'message' => 'Your post has been rejected on the suspicion of a flood attack on this board.' - //); - - // Another filter - //$config['flood_filters'][] = array( - // 'condition' => array( - // // 10 new empty threads in the past 2 minutes - // 'threads_with_no_replies_in_past_x_minutes' => array(10, 2), - // // Allow replies, but not new threads (ie. reject topics only). - // 'OP' => true - // ), - // 'action' => 'reject', - // 'message' => 'Your post has been rejected on the suspicion of a flood attack on this board (too many new threads); post a reply instead.' - //); - - // Enable reCaptcha to make spam even harder + + // Enable reCaptcha to make spam even harder. Rarely necessary. $config['recaptcha'] = false; + // Public and private key pair from https://www.google.com/recaptcha/admin/create $config['recaptcha_public'] = '6LcXTcUSAAAAAKBxyFWIt2SO8jwx4W7wcSMRoN3f'; $config['recaptcha_private'] = '6LcXTcUSAAAAAOGVbVdhmEM1_SyRF4xTKe8jbzf_'; - - $config['imgcaptcha'] = false; - $config['imgcaptcha_key'] = "cos losowego"; // max 32 znaki - $config['imgcaptcha_list'] = "/sciezka/do/pliku.txt"; - $config['imgcaptcha_images'] = "/sciezka/do/obrazkow"; // without a slash at the end - $config['imgcaptcha_question'] = "Was ist das?"; - $config['imgcaptcha_time_limit'] = 90; // Kapcza wazna przez 90 sekund po wejsciu - $config['imgcaptcha_filler'] = "/plik/kliknijmie.png"; - $config['imgcaptcha_width'] = 128; - $config['imgcaptcha_height'] = 96; - - // JESLI DODAJESZ IMGKAPCZE, NIE ZAPOMNIJ O TYM - // Wymagane tez jQuery - o tam, nizej. - //$config['additional_javascript'][] = 'js/imgcaptcha.js'; + /* * ==================== * Post settings @@ -293,100 +287,156 @@ $config['force_body'] = false; // Do you need a body for new threads? $config['force_body_op'] = true; - // Strip superfluous new lines at the end of a post - $config['strip_superfluous_returns'] = true; // Require an image for threads? $config['force_image_op'] = true; - - // Max body length + + // Strip superfluous new lines at the end of a post. + $config['strip_superfluous_returns'] = true; + // Strip combining characters from Unicode strings (eg. "Zalgo"). + $config['strip_combining_chars'] = true; + + // Maximum post body length. $config['max_body'] = 1800; - // Amount of post lines to show on the index page + // Maximum number of post body lines to show on the index page. $config['body_truncate'] = 15; - // Amount of characters to show on the index page + // Maximum number of characters to show on the index page. $config['body_truncate_char'] = 2500; - - // Typically spambots try to post a lot of links. Refuse a post with X standalone links? + + // Typically spambots try to post many links. Refuse a post with X links? $config['max_links'] = 20; - // Maximum number of cites per post (protects against abuse) + // Maximum number of cites per post (prevents abuse, as more citations mean more database queries). $config['max_cites'] = 45; - // Maximum number of cross-board links/cites per post + // Maximum number of cross-board links/citations per post. $config['max_cross'] = $config['max_cites']; - + // Track post citations (>>XX). Rebuilds posts after a cited post is deleted, removing broken links. - // A little more database load. + // Puts a little more load on the database. $config['track_cites'] = true; - - // Maximum filename length (will be truncated) + + // Maximum filename length (will be truncated). $config['max_filename_len'] = 255; - // Maximum filename length to display (the rest can be viewed upon mouseover) + // Maximum filename length to display (the rest can be viewed upon mouseover). $config['max_filename_display'] = 30; - - // How long before you can delete a post after posting, in seconds. + + // How long after posting should you have to wait before being able to delete that post? (In seconds.) $config['delete_time'] = 10; - // Reply limit (stops bumping thread when this is reached) + // Reply limit (stops bumping thread when this is reached). $config['reply_limit'] = 250; - - // Image hard limit (stops allowing new image replies when this is reached if not zero) + + // Image hard limit (stops allowing new image replies when this is reached if not zero). $config['image_hard_limit'] = 0; - // Reply hard limit (stops allowing new replies when this is reached if not zero) + // Reply hard limit (stops allowing new replies when this is reached if not zero). $config['reply_hard_limit'] = 0; - - // Strip repeating characters when making hashes + + $config['robot_enable'] = false; + // Strip repeating characters when making hashes. $config['robot_strip_repeating'] = true; - - // Enable mutes - // Tinyboard uses ROBOT9000's original 2^x implementation + // Enabled mutes? Tinyboard uses ROBOT9000's original 2^x implementation where x is the number of times + // you have been muted in the past. $config['robot_mute'] = true; - // How many mutes x hours ago to include in the algorithm + // How long before Tinyboard forgets about a mute? $config['robot_mute_hour'] = 336; // 2 weeks - // If you want to alter the algorithm a bit. Default value is 2. n^x - $config['robot_mute_multiplier'] = 2; - $config['robot_mute_descritpion'] = 'You have been muted for unoriginal content.'; - - // Automatically convert things like "..." to Unicode characters ("…") + // If you want to alter the algorithm a bit. Default value is 2. + $config['robot_mute_multiplier'] = 2; // (n^x where x is the number of previous mutes) + $config['robot_mute_descritpion'] = _('You have been muted for unoriginal content.'); + + // Automatically convert things like "..." to Unicode characters ("…"). $config['auto_unicode'] = true; - // Whether to turn URLs into functional links + // Whether to turn URLs into functional links. $config['markup_urls'] = true; - // Prefix those functional links with some other url, for example some service for hiding referers - // (eg. 'http://www.nullrefer.com/?', or 'http://anonym.to/?'), a pay-per-view exit page, etc. - $config['url_ads'] = ''; - - // Wordfilters are used to automatically replace certain words/phrases with something else. + + // Optional URL prefix for links (eg. "http://anonym.to/?"). + $config['link_prefix'] = ''; + $config['url_ads'] = &$config['link_prefix']; // leave alias + + // A wordfilter (sometimes referred to as just a "filter" or "censor") automatically scans users’ posts + // as they are submitted and changes or censors particular words or phrases. + // For a normal string replacement: - // $config['wordfilters'][] = array('cat', 'dog'); - + // $config['wordfilters'][] = array('cat', 'dog'); // Advanced raplcement (regular expressions): - // $config['wordfilters'][] = array('/cat/', 'dog', true); // 'true' means it's a regular expression - - // Always act as if they had typed "noko" in the email field no mattter what + // $config['wordfilters'][] = array('/ca[rt]/', 'dog', true); // 'true' means it's a regular expression + + // Always act as if the user had typed "noko" into the email field. $config['always_noko'] = false; - - // Custom tripcodes. The below example makes a tripcode - // of "#test123" evaluate to "!HelloWorld" + + // Example: Custom tripcodes. The below example makes a tripcode of "#test123" evaluate to "!HelloWorld". // $config['custom_tripcode']['#test123'] = '!HelloWorld'; + // Example: Custom secure tripcode. // $config['custom_tripcode']['##securetrip'] = '!!somethingelse'; - - // Optional spoiler images + + // Allow users to mark their image as a "spoiler" when posting. The thumbnail will be replaced with a + // static spoiler image instead (see $config['spoiler_image']). $config['spoiler_images'] = false; - - + // With the following, you can disable certain superfluous fields or enable "forced anonymous". - + // When true, all names will be set to $config['anonymous']. $config['field_disable_name'] = false; - // When true, no email will be able to be set. + // When true, there will be no email field. $config['field_disable_email'] = false; - // When true, no subject will be able to be set. + // When true, there will be no subject field. $config['field_disable_subject'] = false; - // When true, no subject will be able to be set in replies. + // When true, there will be no subject field for replies. $config['field_disable_reply_subject'] = false; // When true, a blank password will be used for files (not usable for deletion). $config['field_disable_password'] = false; - - // Require users to see the ban page at least once for a ban even if it has since expired? - $config['require_ban_view'] = false; - + + // Require users to see the ban page at least once for a ban even if it has since expired. + $config['require_ban_view'] = true; + + /* + * Custom filters detect certain posts and reject/ban accordingly. They are made up of a + * condition and an action (for when ALL conditions are met). As every single post has to + * be put through each filter, having hundreds probably isn’t ideal as it could slow things down. + * + * Read more: http://tinyboard.org/docs/index.php?p=Config/Filters + * + * This used to be named $config['flood_filters'] (still exists as an alias). + */ + + // An example of blocking an imaginary known spammer, who keeps posting a reply with the name "surgeon", + // ending his posts with "regards, the surgeon" or similar. + // $config['filters'][] = array( + // 'condition' => array( + // 'name' => '/^surgeon$/', + // 'body' => '/regards,\s+(the )?surgeon$/i', + // 'OP' => false + // ), + // 'action' => 'reject', + // 'message' => 'Go away, spammer.' + // ); + + // Same as above, but issuing a 3-hour ban instead of just reject the post. + // $config['filters'][] = array( + // 'condition' => array( + // 'name' => '/^surgeon$/', + // 'body' => '/regards,\s+(the )?surgeon$/i', + // 'OP' => false + // ), + // 'action' => 'ban', + // 'expires' => 60 * 60 * 3, // 3 hours + // 'reason' => 'Go away, spammer.' + // ); + + // PHP 5.3+ (anonymous functions) + // There is also a "custom" condition, making the possibilities of this feature pretty much endless. + // This is a bad example, because there is already a "name" condition built-in. + // $config['filters'][] = array( + // 'condition' => array( + // 'body' => '/h$/i', + // 'OP' => false, + // 'custom' => function($post) { + // if($post['name'] == 'Anonymous') + // return true; + // else + // return false; + // } + // ), + // 'action' => 'reject' + // ); + /* * ==================== * Markup settings @@ -394,122 +444,160 @@ */ // "Wiki" markup syntax ($config['wiki_markup'] in pervious versions): - $config['markup'][] = array("/'''(.+?)'''/", "\$1"); - $config['markup'][] = array("/''(.+?)''/", "\$1"); - $config['markup'][] = array("/\*\*(.+?)\*\*/", "\$1"); - $config['markup'][] = array("/^[ |\t]*==(.+?)==[ |\t]*$/m", "\$1"); - - // Highlight PHP code wrapped in tags (PHP 5.3.0+) + $config['markup'][] = array("/'''([^<]+?)'''/", "\$1"); + $config['markup'][] = array("/''([^<]+?)''/", "\$1"); + $config['markup'][] = array("/\*\*([^<]+?)\*\*/", "\$1"); + $config['markup'][] = array("/^[ |\t]*==([^<]+?)==[ |\t]*$/m", "\$1"); + + // Highlight PHP code wrapped in tags (PHP 5.3+) // $config['markup'][] = array( // '/^<code>(.+)<\/code>/ms', // function($matches) { // return highlight_string(html_entity_decode($matches[1]), true); // } // ); - + /* * ==================== * Image settings * ==================== */ - - // For resizing, max thumbnail size + + // For resizing, maximum thumbnail dimensions. $config['thumb_width'] = 255; $config['thumb_height'] = 255; - // Max thumbnail size for thread images + // Maximum thumbnail dimensions for thread (OP) images. $config['thumb_op_width'] = 255; $config['thumb_op_height'] = 255; - - // Thumbnail extension, empty for inherited (png recommended) + + // Thumbnail extension ("png" recommended). Leave this empty if you want the extension to be inherited + // from the uploaded file. $config['thumb_ext'] = 'png'; - - // EXPERIMENTAL: - // Maximum amount of frames to resize (more frames means more processing power). "1" means no animated thumbnails. - // Requires $config['thumb_ext'] to be 'gif' $config['imagick'] to be enabled. + + // Maximum amount of animated GIF frames to resize (more frames can mean more processing power). A value + // of "1" means thumbnails will not be animated. Requires $config['thumb_ext'] to be 'gif' (or blank) and + // $config['thumb_method'] to be 'imagick', 'convert', or 'convert+gifsicle'. This value is not + // respected by 'convert'; will just resize all frames if this is > 1. $config['thumb_keep_animation_frames'] = 1; - - // Thumbnailing method: - // - 'gd' PHP GD (default). Only handles the most basic image formats (GIF, JPEG, PNG). - // This is a prerequisite for Tinyboard no matter what method you choose. - // - 'imagick' PHP's ImageMagick bindings. Fast and efficient, supporting many image formats. - // A few minor bugs. http://pecl.php.net/package/imagick - // - 'convert' The command line version of ImageMagick (`convert`). Fixes most of the bugs in - // PHP Imagick. - // - 'convert+gifsicle' Same as above, with the exception of using `gifsicle` (command line application) - // instead of `convert` for resizing gifs. It's faster and resulting animated gifs - // have less artifacts than if resized with ImageMagick. - + + /* + * Thumbnailing method: + * + * 'gd' PHP GD (default). Only handles the most basic image formats (GIF, JPEG, PNG). + * GD is a prerequisite for Tinyboard no matter what method you choose. + * + * 'imagick' PHP's ImageMagick bindings. Fast and efficient, supporting many image formats. + * A few minor bugs. http://pecl.php.net/package/imagick + * + * 'convert' The command line version of ImageMagick (`convert`). Fixes most of the bugs in + * PHP Imagick. `convert` produces the best still thumbnails and is highly recommended. + * + * 'gm' GraphicsMagick (`gm`) is a fork of ImageMagick with many improvements. It is more + * efficient and gets thumbnailing done using fewer resources. + * + * 'convert+gifscale' + * OR 'gm+gifsicle' Same as above, with the exception of using `gifsicle` (command line application) + * instead of `convert` for resizing GIFs. It's faster and resulting animated + * thumbnails have less artifacts than if resized with ImageMagick. + */ $config['thumb_method'] = 'gd'; + // $config['thumb_method'] = 'convert'; + + // Command-line options passed to ImageMagick when using `convert` for thumbnailing. Don't touch the + // placement of "%s" and "%d". + $config['convert_args'] = '-size %dx%d %s -thumbnail %dx%d -auto-orient +profile "*" %s'; + + // Strip EXIF metadata from JPEG files. + $config['strip_exif'] = false; + // Use the command-line `exiftool` tool to strip EXIF metadata without decompressing/recompressing JPEGs. + // Ignored when $config['redraw_image'] is true. This is also used to adjust the Orientation tag when + // $config['strip_exif'] is false and $config['convert_manual_orient'] is true. + $config['use_exiftool'] = false; + + // Redraw the image to strip any excess data (commonly ZIP archives) WARNING: This might strip the + // animation of GIFs, depending on the chosen thumbnailing method. It also requires recompressing + // the image, so more processing power is required. + $config['redraw_image'] = false; - // Regular expression to check for IE MIME type detection XSS exploit. To disable, comment the line out - // https://github.com/savetheinternet/Tinyboard/issues/20 - $config['ie_mime_type_detection'] = '/<(?:body|head|html|img|plaintext|pre|script|table|title|a href|channel|scriptlet)/i'; + // Automatically correct the orientation of JPEG files using -auto-orient in `convert`. This only works + // when `convert` or `gm` is selected for thumbnailing. Again, requires more processing power because + // this basically does the same thing as $config['redraw_image']. (If $config['redraw_image'] is enabled, + // this value doesn't matter as $config['redraw_image'] attempts to correct orientation too.) + $config['convert_auto_orient'] = false; - // Allowed image file extensions + // Is your version of ImageMagick or GraphicsMagick old? Older versions may not include the -auto-orient + // switch. This is a manual replacement for that switch. This is independent from the above switch; + // -auto-orrient is applied when thumbnailing too. + $config['convert_manual_orient'] = false; + + // Regular expression to check for an XSS exploit with IE 6 and 7. To disable, set to false. + // Details: https://github.com/savetheinternet/Tinyboard/issues/20 + $config['ie_mime_type_detection'] = '/<(?:body|head|html|img|plaintext|pre|script|table|title|a href|channel|scriptlet)/i'; + + // Allowed image file extensions. $config['allowed_ext'][] = 'jpg'; $config['allowed_ext'][] = 'jpeg'; $config['allowed_ext'][] = 'bmp'; $config['allowed_ext'][] = 'gif'; $config['allowed_ext'][] = 'png'; // $config['allowed_ext'][] = 'svg'; - - // Allowed additional file extensions (not images; downloadable files) + + // Allowed additional file extensions (not images; downloadable files). // $config['allowed_ext_files'][] = 'txt'; // $config['allowed_ext_files'][] = 'zip'; - - // An alternative function for generating a filename, instead of the default UNIX timestamp. - // http://tinyboard.org/wiki/index.php?title=Filenames - // $config['filename_func'] = 'some_function_you_have_created'; - - // Non-image file icons + + // An alternative function for generating image filenames, instead of the default UNIX timestamp. + // $config['filename_func'] = function($post) { + // return sprintf("%s", time() . substr(microtime(), 2, 3)); + // }; + + // Thumbnail to use for the non-image file uploads. $config['file_icons']['default'] = 'file.png'; $config['file_icons']['zip'] = 'zip.png'; - - // Thumbnail to use for the downloadable files (not images) + // Example: Custom thumbnail for certain file extension. + // $config['file_icons']['extension'] = 'some_file.png'; + + // Location of above images. $config['file_thumb'] = 'static/%s'; - // Thumbnail to use for spoiler images + // Location of thumbnail to use for spoiler images. $config['spoiler_image'] = 'static/spoiler.png'; - - // Thumbnail quality (compression level), from 0 to 9 - $config['thumb_quality'] = 8; - - // When a thumbnailed image is going to be the same (in dimension), just copy the entire file and use that as a thumbnail instead of resizing/redrawing + // Location of thumbnail to use for deleted images. + // $config['image_deleted'] = 'static/deleted.png'; + + // When a thumbnailed image is going to be the same (in dimension), just copy the entire file and use + // that as a thumbnail instead of resizing/redrawing. $config['minimum_copy_resize'] = false; - - // Store image hash in the database for r9k-like boards implementation soon - // Function name for hashing + + // Image hashing function. There's really no reason to change this. // sha1_file, md5_file, etc. You can also define your own similar function. $config['file_hash'] = 'sha1_file'; - - // Maximum image upload size in bytes - $config['max_filesize'] = 10*1024*1024; // 10MB - // Maximum image dimensions + + // Maximum image upload size in bytes. + $config['max_filesize'] = 10 * 1024 * 1024; // 10MB + // Maximum image dimensions. $config['max_width'] = 10000; - $config['max_height'] = $config['max_width']; // 1:1 - // Reject duplicate image uploads + $config['max_height'] = $config['max_width']; + // Reject duplicate image uploads. $config['image_reject_repost'] = true; - // Reject duplicate image uploads within the same thread. Doesn't change anything if image_reject_repost is true. + // Reject duplicate image uploads within the same thread. Doesn't change anything if + // $config['image_reject_repost'] is true. $config['image_reject_repost_in_thread'] = false; - - // Display the aspect ratio in a post's file info + + // Display the aspect ratio of uploaded files. $config['show_ratio'] = false; - // Display the file's original filename + // Display the file's original filename. $config['show_filename']= true; - // Image identification buttons using regex.info/exif, tineye and google images + // Display image identification links using regex.info/exif, TinEye and Google Images. $config['image_identification'] = false; - - // Redraw the image using GD functions to strip any excess data (commonly ZIP archives) - // WARNING: Currently strips animated GIFs too - $config['redraw_image'] = false; - + /* * ==================== * Board settings * ==================== */ - // Maximum amount of threads to display on a given page. + // Maximum amount of threads to display per page. $config['threads_per_page'] = 10; // Maximum number of pages. Content past the last page is automatically purged. $config['max_pages'] = 10; @@ -518,14 +606,14 @@ // Same as above, but for stickied threads. $config['threads_preview_sticky'] = 1; - // Name of the boards. Usually '/%s/' (/b/, /mu/, etc) - // $config['board_abbreviation'] - BOARD_TITLE + // How to display the URI of boards. Usually '/%s/' (/b/, /mu/, etc). This doesn't change the URL. Find + // $config['board_path'] if you wish to change the URL. $config['board_abbreviation'] = '/%s/'; - - // The default name (ie. Anonymous) + + // The default name (ie. Anonymous). $config['anonymous'] = 'Anonymous'; - - // How many reports you can create in the same request. + + // Number of reports you can create at once. $config['report_limit'] = 3; // Attention Whoring Bar @@ -537,82 +625,96 @@ * Display settings * ==================== */ - - // Locale (en, ru_RU.UTF-8, fi_FI.UTF-8, pl_PL.UTF-8) - $config['locale'] = 'en'; - - // Timezone + + // Tinyboard has been translated into a few langauges. See inc/locale for available translations. + $config['locale'] = 'en'; // (en, ru_RU.UTF-8, fi_FI.UTF-8, pl_PL.UTF-8) + + // Timezone to use for displaying dates/tiems. $config['timezone'] = 'America/Los_Angeles'; - - // The format string passed to strftime() for post times + // The format string passed to strftime() for displaying dates. // http://www.php.net/manual/en/function.strftime.php $config['post_date'] = '%m/%d/%y (%a) %H:%M:%S'; - // Same as above, but used for "you are banned' pages. $config['ban_date'] = '%A %e %B, %Y'; - - // The names on the post buttons. (On most imageboards, these are both "Post") - $config['button_newtopic'] = 'New Topic'; - $config['button_reply'] = 'New Reply'; - - // Assign each poster in a thread a unique ID, shown by "ID: {id}" before the post number. + + // The names on the post buttons. (On most imageboards, these are both just "Post"). + $config['button_newtopic'] = _('New Topic'); + $config['button_reply'] = _('New Reply'); + + // Assign each poster in a thread a unique ID, shown by "ID: xxxxx" before the post number. $config['poster_ids'] = false; - // Number of characters in the poster ID (maximum is 40) + // Number of characters in the poster ID (maximum is 40). $config['poster_id_length'] = 5; - - // Show thread subject in page title? + + // Show thread subject in page title. $config['thread_subject_in_title'] = false; - - // Page footer - $config['footer'][] = 'All trademarks, copyrights, comments, and images on this page are owned by and are the responsibility of their respective parties.'; - - // Characters used to generate a random password (with Javascript) + + // Additional lines added to the footer of all pages. + $config['footer'][] = _('All trademarks, copyrights, comments, and images on this page are owned by and are the responsibility of their respective parties.'); + + // Characters used to generate a random password (with Javascript). $config['genpassword_chars'] = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+'; - - // Optional banner at the top of every page. + + // Optional banner image at the top of every page. // $config['url_banner'] = '/banner.php'; - // Banner dimensions are also optional. As the banner loads after the rest of the page, everything - // may be shifted down a few pixels when it does. Making the banner a fixed size will prevent this. + // Banner dimensions are also optional. As the banner loads after the rest of the page, everything may be + // shifted down a few pixels when it does. Making the banner a fixed size will prevent this. // $config['banner_width'] = 300; // $config['banner_height'] = 100; - - // Custom stylesheets available. The prefix for each stylesheet URI is defined below. - $config['stylesheets']['Yotsuba B'] = ''; // default + + // Custom stylesheets available for the user to choose. See the "stylesheets/" folder for a list of + // available stylesheets (or create your own). + $config['stylesheets']['Yotsuba B'] = ''; // Default; there is no additional/custom stylesheet for this. $config['stylesheets']['Yotsuba'] = 'yotsuba.css'; // $config['stylesheets']['Futaba'] = 'futaba.css'; - + // $config['stylesheets']['Dark'] = 'dark.css'; + // The prefix for each stylesheet URI. Defaults to $config['root']/stylesheets/ // $config['uri_stylesheets'] = 'http://static.example.org/stylesheets/'; - - // The default stylesheet to use + + // The default stylesheet to use. $config['default_stylesheet'] = array('Yotsuba B', $config['stylesheets']['Yotsuba B']); - - // Boardlinks - // You can group, order and place the boardlist at the top of every page, using the following template. - //$config['boards'] = array( - // array('a', 'b'), - // array('c', 'd', 'e', 'f', 'g'), - // array('h', 'i', 'j'), - // array('k', array('l', 'm')), - // array('status' => 'http://status.example.org/') - //); - - // Categories - // Required for the Categories theme. - //$config['categories'] = array( - // 'Group Name' => array('a', 'b', 'c'), - // 'Another Group' => array('d') - //); - - // Custom_categories - // Optional for the Categories theme. array of name => (title, url) groups for categories with non-board links. - //$config['custom_categories'] = array( - // 'Links' => array( - // 'Tinyboard' => 'http://tinyboard.org', - // 'Donate' => 'donate.html' - // ) - //); - + + // Make stylesheet selections board-specific. + $config['stylesheets_board'] = false; + + // Use Font-Awesome for displaying lock and pin icons, instead of the images in static/. + // http://fortawesome.github.io/Font-Awesome/icon/pushpin/ + // http://fortawesome.github.io/Font-Awesome/icon/lock/ + $config['font_awesome'] = true; + $config['font_awesome_css'] = 'stylesheets/font-awesome/css/font-awesome.min.css'; + + /* + * For lack of a better name, “boardlinks” are those sets of navigational links that appear at the top + * and bottom of board pages. They can be a list of links to boards and/or other pages such as status + * blogs and social network profiles/pages. + * + * "Groups" in the boardlinks are marked with square brackets. Tinyboard allows for infinite recursion + * with groups. Each array() in $config['boards'] represents a new square bracket group. + */ + + // $config['boards'] = array( + // array('a', 'b'), + // array('c', 'd', 'e', 'f', 'g'), + // array('h', 'i', 'j'), + // array('k', array('l', 'm')), + // array('status' => 'http://status.example.org/') + // ); + + // Board categories. Only used in the "Categories" theme. + // $config['categories'] = array( + // 'Group Name' => array('a', 'b', 'c'), + // 'Another Group' => array('d') + // ); + // Optional for the Categories theme. This is an array of name => (title, url) groups for categories + // with non-board links. + // $config['custom_categories'] = array( + // 'Links' => array( + // 'Tinyboard' => 'http://tinyboard.org', + // 'Donate' => 'donate.html' + // ) + // ); + // Automatically remove unnecessary whitespace when compiling HTML files from templates. $config['minify_html'] = true; @@ -622,28 +724,31 @@ * ==================== */ - // Additional Javascript files to include on board index and thread pages. + // Additional Javascript files to include on board index and thread pages. See js/ for available scripts. $config['additional_javascript'][] = 'js/inline-expanding.js'; // $config['additional_javascript'][] = 'js/local-time.js'; - - // Some scripts require jQuery. Check the comments in script files to see what's needed. + + // Some scripts require jQuery. Check the comments in script files to see what's needed. When enabling + // jQuery, you should first empty the array so that "js/query.min.js" can be the first, and then re-add + // "js/inline-expanding.js" or else the inline-expanding script might not interact properly with other + // scripts. + // $config['additional_javascript'] = array(); // $config['additional_javascript'][] = 'js/jquery.min.js'; + // $config['additional_javascript'][] = 'js/inline-expanding.js'; // $config['additional_javascript'][] = 'js/auto-reload.js'; + // $config['additional_javascript'][] = 'js/post-hover.js'; + // $config['additional_javascript'][] = 'js/style-select.js'; + + // Where these script files are located on the web. Defaults to $config['root']. + // $config['additional_javascript_url'] = 'http://static.example.org/tinyboard-javascript-stuff/'; - // Enable hiding posts. Remember to put this AFTER jQuery. - // $config['additional_javascript'][] = 'js/post-hider.js'; - - // Where these script files are located on the web (defaults to $config['root']). - // $config['additional_javascript_url'] = '/js/'; - // Compile all additional scripts into one file ($config['file_script']) instead of including them seperately. $config['additional_javascript_compile'] = false; - - // Minify Javascript using http://code.google.com/p/minify/ + + // Minify Javascript using http://code.google.com/p/minify/. $config['minify_js'] = false; - // Allows js/quick-reply.js to work - // This will make your imageboard more vulnerable to flood attacks. + // Allows js/quick-reply.js to work. This could make your imageboard more vulnerable to flood attacks. $config['quick_reply'] = false; /* @@ -651,12 +756,12 @@ * Video embedding * ==================== */ - - // Enable embedding (see below) + + // Enable embedding (see below). $config['enable_embedding'] = false; - + // Custom embedding (YouTube, vimeo, etc.) - // It's very important that you match the full string (with ^ and $) or things will not work correctly. + // It's very important that you match the entire input (with ^ and $) or things will not work correctly. $config['embedding'] = array( array( '/^https?:\/\/(\w+\.)?youtube\.com\/watch\?v=([a-zA-Z0-9\-_]{10,11})(&.+)?$/i', @@ -683,17 +788,17 @@ '' ) ); - - // Embedding width and height + + // Embedding width and height. $config['embed_width'] = 300; $config['embed_height'] = 246; - + /* * ==================== * Error messages * ==================== */ - + // Error messages $config['error']['lurk'] = _('Lurk some more before posting.'); $config['error']['bot'] = _('You look like a bot.'); @@ -734,7 +839,7 @@ $config['error']['mime_exploit'] = _('MIME type detection XSS exploit (IE) detected; post discarded.'); $config['error']['invalid_embed'] = _('Couldn\'t make sense of the URL of the video you tried to embed.'); $config['error']['captcha'] = _('You seem to have mistyped the verification.'); - + // Moderator errors $config['error']['toomanyunban'] = _('You are only allowed to unban %s users at a time. You tried to unban %u users.'); $config['error']['invalid'] = _('Invalid username and/or password.'); @@ -757,88 +862,89 @@ * Directory/file settings * ========================= */ - + // The root directory, including the trailing slash, for Tinyboard. - // examples: '/', 'http://boards.chan.org/', '/chan/' + // Examples: '/', 'http://boards.chan.org/', '/chan/'. if (isset($_SERVER['REQUEST_URI'])) - $config['root'] = (str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) == '/' ? '/' : str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) . '/'); + $config['root'] = str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) == '/' ? '/' : str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) . '/'; else $config['root'] = '/'; // CLI mode - // The scheme and domain. This is needed to get absolute URL of some page (for instance image - // identification buttons). If you use the CLI tools, it would be wise to override this setting. - $config['domain'] = (isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? "https://" : "http://"; - $config['domain'] .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost'; - + // The scheme and domain. This is used to get the site's absolute URL (eg. for image identification links). + // If you use the CLI tools, it would be wise to override this setting. + $config['domain'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https://' : 'http://'; + $config['domain'] .= isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost'; + // If for some reason the folders and static HTML index files aren't in the current working direcotry, // enter the directory path here. Otherwise, keep it false. $config['root_file'] = false; - + + // Location of files. $config['file_index'] = 'index.html'; $config['file_page'] = '%d.html'; $config['file_mod'] = 'mod.php'; $config['file_post'] = 'post.php'; $config['file_script'] = 'main.js'; - - // Board directory, followed by a forward-slash (/). (%s is board abbreviation) + + // Board directory, followed by a forward-slash (/). $config['board_path'] = '%s/'; - + // Misc directories. $config['dir']['img'] = 'src/'; $config['dir']['thumb'] = 'thumb/'; $config['dir']['res'] = 'res/'; - // For load balancing, having a seperate server (and domain/subdomain) for serving static content is possible. - // This can either be a directory or a URL (eg. http://static.example.org/) - //$config['dir']['static'] = $config['root'] . 'static/'; - // Where to store the .html templates. This folder and templates must exist or fatal errors will be thrown. + + // For load balancing, having a seperate server (and domain/subdomain) for serving static content is + // possible. This can either be a directory or a URL. Defaults to $config['root'] . 'static/'. + // $config['dir']['static'] = 'http://static.example.org/'; + + // Where to store the .html templates. This folder and the template files must exist. $config['dir']['template'] = getcwd() . '/templates'; - // For the themes (homepages, etc.) + // Location of Tinyboard "themes". $config['dir']['themes'] = getcwd() . '/templates/themes'; - // Same as above, but a URI (accessable by web interface, not locally) + // Same as above, but a URI (accessable by web interface). $config['dir']['themes_uri'] = 'templates/themes'; - // Homepage directory + // Home directory. Used by themes. $config['dir']['home'] = ''; - - // Static images - // These can be URLs OR base64 (data URI scheme) - //$config['image_sticky'] = $config['dir']['static'] . 'sticky.gif'; - //$config['image_locked'] = $config['dir']['static'] . 'locked.gif'; - //$config['image_bumplocked'] = $config['dir']['static'] . 'sage.gif'; - //$config['image_deleted'] = $config['dir']['static'] . 'deleted.'; - //$config['image_zip'] = $config['dir']['static'] . 'zip.'; - - // If you want to put images and other dynamic-static stuff on another (preferably cookieless) domain, you can use this: - // This will override $config['root'] and $config['dir']['...'] directives. - // "%s" will get replaced with $board['dir'], which usually includes a trailing slash. To avoid double slashes, you don't need - // to put a slash after %s + + // Static images. These can be URLs OR base64 (data URI scheme). These are only used if + // $config['font_awesome'] is false (default). + // $config['image_sticky'] = 'static/sticky.gif'; + // $config['image_locked'] = 'static/locked.gif'; + // $config['image_bumplocked'] = 'static/sage.gif'. + + // If you want to put images and other dynamic-static stuff on another (preferably cookieless) domain. + // This will override $config['root'] and $config['dir']['...'] directives. "%s" will get replaced with + // $board['dir'], which includes a trailing slash. // $config['uri_thumb'] = 'http://images.example.org/%sthumb/'; // $config['uri_img'] = 'http://images.example.org/%ssrc/'; - - // Set custom locations for stylesheets, scripts and maybe a banner. - // This can be good for load balancing across multiple servers or hostnames. + + // Set custom locations for stylesheets and the main script file. This can be used for load balancing + // across multiple servers or hostnames. // $config['url_stylesheet'] = 'http://static.example.org/style.css'; // main/base stylesheet // $config['url_javascript'] = 'http://static.example.org/main.js'; + + // Website favicon. // $config['url_favicon'] = '/favicon.gif'; + // EXPERIMENTAL: Try not to build pages when we shouldn't have to. + $config['try_smarter'] = false; + /* * ==================== * Mod settings * ==================== */ - - // Limit how many bans can be removed via the ban list. (Set too -1 to remove limit.) - $config['mod']['unban_limit'] = 5; - - // Whether or not to lock moderator sessions to the IP address that was logged in with. + + // Limit how many bans can be removed via the ban list. Set to -1 for no limit. + $config['mod']['unban_limit'] = -1; + + // Whether or not to lock moderator sessions to IP addresses. This makes cookie theft ineffective. $config['mod']['lock_ip'] = true; - - // The page that is first shown when a moderator logs in. Defaults to the dashboard. + + // The page that is first shown when a moderator logs in. Defaults to the dashboard (?/). $config['mod']['default'] = '/'; - - // Don't even display MySQL password to administrators (in the configuration page). - $config['mod']['never_reveal_password'] = true; - - // Mod links (full HTML) - // Correspond to above permission directives + + // Mod links (full HTML). $config['mod']['link_delete'] = '[D]'; $config['mod']['link_ban'] = '[B]'; $config['mod']['link_bandelete'] = '[B&D]'; @@ -853,85 +959,98 @@ $config['mod']['link_bumpunlock'] = '[-Sage]'; $config['mod']['link_editpost'] = '[Edit]'; $config['mod']['link_move'] = '[Move]'; - - // Moderator capcodes + + // Moderator capcodes. $config['capcode'] = ' ## %s'; - - // Custom capcodes, by example: - // "## Custom" becomes lightgreen, italic and bold + + // "## Custom" becomes lightgreen, italic and bold: //$config['custom_capcode']['Custom'] =' ## %s'; - - // "## Mod" makes everything purple, including the name and tripcode + + // "## Mod" makes everything purple, including the name and tripcode: //$config['custom_capcode']['Mod'] = array( // ' ## %s', // 'color:purple', // Change name style; optional // 'color:purple' // Change tripcode style; optional //); - - // "## Admin" makes everything red and bold, including the name and tripcode + + // "## Admin" makes everything red and bold, including the name and tripcode: //$config['custom_capcode']['Admin'] = array( // ' ## %s', // 'color:red;font-weight:bold', // Change name style; optional // 'color:red;font-weight:bold' // Change tripcode style; optional //); - - // Enable IP range bans (eg. "127.*.0.1", "127.0.0.*", and "12*.0.0.1" all match "127.0.0.1"). - // A little more load on the database + + // Enable IP range bans (eg. "127.*.0.1", "127.0.0.*", and "12*.0.0.1" all match "127.0.0.1"). Puts a + // little more load on the database $config['ban_range'] = true; - - // Enable CDIR netmask bans (eg. "10.0.0.0/8" for 10.0.0.0.0 - 10.255.255.255). Useful for stopping persistent spammers. - // Again, a little more database load. + + // Enable CDIR netmask bans (eg. "10.0.0.0/8" for 10.0.0.0.0 - 10.255.255.255). Useful for stopping + // persistent spammers and ban evaders. Again, a little more database load. $config['ban_cidr'] = true; - - // Do a DNS lookup on IP addresses to get their hostname on the IP summary page + + // How often (minimum) to purge the ban list of expired bans (which have been seen). Only works when + // $config['cache'] is enabled and working. + $config['purge_bans'] = 60 * 60 * 12; // 12 hours + + // Do DNS lookups on IP addresses to get their hostname for the moderator IP pages (?/IP/x.x.x.x). $config['mod']['dns_lookup'] = true; - // How many recent posts, per board, to show in the IP summary page + // How many recent posts, per board, to show in ?/IP/x.x.x.x. $config['mod']['ip_recentposts'] = 5; - - // How many posts to display on the reports page + + // Number of posts to display on the reports page. $config['mod']['recent_reports'] = 10; - - // How many actions to show per page in the moderation log + // Number of actions to show per page in the moderation log. $config['mod']['modlog_page'] = 350; - // How many bans to show per page in the ban list + // Number of bans to show per page in the ban list. $config['mod']['banlist_page'] = 350; - - // Number of news entries to display per page + // Number of news entries to display per page. $config['mod']['news_page'] = 40; - - // Number of results to dispaly per page + // Number of results to display per page. $config['mod']['search_page'] = 200; - - // How many entries to show per page in the moderator noticeboard + // Number of entries to show per page in the moderator noticeboard. $config['mod']['noticeboard_page'] = 50; - // Number of entries to summarize and display on the dashboard + // Number of entries to summarize and display on the dashboard. $config['mod']['noticeboard_dashboard'] = 5; - - // Default public ban message - $config['mod']['default_ban_message'] = 'USER WAS BANNED FOR THIS POST'; - // What to append to the post for public bans ("%s" is the message) + + // Check public ban message by default. + $config['mod']['check_ban_message'] = false; + // Default public ban message. In public ban messages, %length% is replaced with "for x days" or + // "permanently" (with %LENGTH% being the uppercase equivalent). + $config['mod']['default_ban_message'] = _('USER WAS BANNED FOR THIS POST'); + // $config['mod']['default_ban_message'] = 'USER WAS BANNED %LENGTH% FOR THIS POST'; + // HTML to append to post bodies for public bans messages (where "%s" is the message). $config['mod']['ban_message'] = '(%s)'; - - // When moving a thread to another board and choosing to keep a "shadow thread", an automated post (with a capcode) will - // be made, linking to the new location for the thread. "%s" will be replaced with a standard cross-board post citation (>>>/board/xxx) + + // When moving a thread to another board and choosing to keep a "shadow thread", an automated post (with + // a capcode) will be made, linking to the new location for the thread. "%s" will be replaced with a + // standard cross-board post citation (>>>/board/xxx) $config['mod']['shadow_mesage'] = 'Moved to %s.'; // Capcode to use when posting the above message. $config['mod']['shadow_capcode'] = 'Mod'; - // Name to use when posting the above message. If false, the default board name will be used. If something else, that will be used. + // Name to use when posting the above message. If false, $config['anonymous'] will be used. $config['mod']['shadow_name'] = false; - - // Wait indefinitely when rebuilding everything + + // PHP time limit for ?/rebuild. A value of 0 should cause PHP to wait indefinitely. $config['mod']['rebuild_timelimit'] = 0; - - // PM snippet (for ?/inbox) length in characters + + // PM snippet (for ?/inbox) length in characters. $config['mod']['snippet_length'] = 75; - - // Edit raw HTML in posts by default + + // Edit raw HTML in posts by default. $config['mod']['raw_html_default'] = false; - - // Automatically dismiss all reports regarding a thread when it is locked + + // Automatically dismiss all reports regarding a thread when it is locked. $config['mod']['dismiss_reports_on_lock'] = true; - + + // Replace ?/config with a simple text editor for editing inc/instance-config.php. + $config['mod']['config_editor_php'] = false; + +/* + * ==================== + * Mod permissions + * ==================== + */ + // Probably best not to change these: if (!defined('JANITOR')) { define('JANITOR', 0, true); @@ -939,31 +1058,24 @@ define('ADMIN', 2, true); define('DISABLED', 3, true); } - -/* - * ==================== - * Mod permissions - * ==================== - */ - - // Capcode permissions + + // Capcode permissions. $config['mod']['capcode'] = array( // JANITOR => array('Janitor'), - MOD => array('Mod'), + MOD => array('Mod'), ADMIN => true ); - + // Example: Allow mods to post with "## Moderator" as well // $config['mod']['capcode'][MOD][] = 'Moderator'; - // Example: Allow janitors to post with any capcode // $config['mod']['capcode'][JANITOR] = true; - - // Set any of the below to "DISABLED" to make them unavailable for everyone. - + + // Set any of the below to "DISABLED" to make them unavailable for everyone. + // Don't worry about per-board moderators. Let all mods moderate any board. $config['mod']['skip_per_board'] = false; - + /* Post Controls */ // View IP addresses $config['mod']['show_ip'] = MOD; @@ -1002,8 +1114,8 @@ // Bypass flood check $config['mod']['flood'] = ADMIN; // Raw HTML posting - $config['mod']['rawhtml'] = MOD; - + $config['mod']['rawhtml'] = ADMIN; + /* Administration */ // View the report queue $config['mod']['reports'] = JANITOR; @@ -1015,8 +1127,8 @@ $config['mod']['view_banlist'] = MOD; // View the username of the mod who made a ban $config['mod']['view_banstaff'] = MOD; - // If the moderator doesn't fit the $config['mod']['view_banstaff''] (previous) permission, - // show him just a "?" instead. Otherwise, it will be "Mod" or "Admin" + // If the moderator doesn't fit the $config['mod']['view_banstaff''] (previous) permission, show him just + // a "?" instead. Otherwise, it will be "Mod" or "Admin". $config['mod']['view_banquestionmark'] = false; // Show expired bans in the ban list (they are kept in cache until the culprit returns) $config['mod']['view_banexpired'] = true; @@ -1048,8 +1160,10 @@ $config['mod']['createusers'] = ADMIN; // View the moderation log $config['mod']['modlog'] = ADMIN; - // View relevant moderation log entries on IP address pages (ie. ban history, etc.) - // Warning: Can be pretty resource exhaustive if your mod logs are huge. + // View IP addresses of other mods in ?/log + $config['mod']['show_ip_modlog'] = ADMIN; + // View relevant moderation log entries on IP address pages (ie. ban history, etc.) Warning: Can be + // pretty resource intensive if your mod logs are huge. $config['mod']['modlog_ip'] = MOD; // Create a PM (viewing mod usernames) $config['mod']['create_pm'] = JANITOR; @@ -1059,6 +1173,9 @@ $config['mod']['rebuild'] = ADMIN; // Search through posts, IP address notes and bans $config['mod']['search'] = JANITOR; + // Allow searching posts (can be used with board configuration file to disallow searching through a + // certain board) + $config['mod']['search_posts'] = JANITOR; // Read the moderator noticeboard $config['mod']['noticeboard'] = JANITOR; // Post to the moderator noticeboard @@ -1075,15 +1192,70 @@ $config['mod']['news_custom'] = ADMIN; // Delete news entries $config['mod']['news_delete'] = ADMIN; - - // View the current configuration - $config['mod']['show_config'] = ADMIN; + // Execute un-filtered SQL queries on the database (?/debug/sql) + $config['mod']['debug_sql'] = DISABLED; // Edit the current configuration (via web interface) $config['mod']['edit_config'] = ADMIN; + + // Config editor permissions + $config['mod']['config'] = array( + JANITOR => false, + MOD => false, + ADMIN => false, + DISABLED => false, + ); + + // Disable the following configuration variables from being changed via ?/config. The following default + // banned variables are considered somewhat dangerous. + $config['mod']['config'][DISABLED] = array( + 'mod>config', + 'mod>config_editor_php', + 'convert_args', + 'db>password', + ); - // Execute un-filtered SQL queries on the database (?/debug/sql) - $config['mod']['debug_sql'] = DISABLED; + $config['mod']['config'][JANITOR] = array( + '!', // Allow editing ONLY the variables listed (in this case, nothing). + ); + + $config['mod']['config'][MOD] = array( + '!', // Allow editing ONLY the variables listed (plus that in $config['mod']['config'][JANITOR]). + 'global_message', + ); + + // Example: Disallow ADMIN from editing (and viewing) $config['db']['password']. + // $config['mod']['config'][ADMIN] = array( + // 'db>password', + // ); + // Example: Allow ADMIN to edit anything other than $config['db'] + // (and $config['mod']['config'][DISABLED]). + // $config['mod']['config'][ADMIN] = array( + // 'db', + // ); + +/* + * ==================== + * Public post search + * ==================== + */ + $config['search'] = array(); + + // Enable the search form + $config['search']['enable'] = false; + + // Maximal number of queries per IP address per minutes + $config['search']['queries_per_minutes'] = Array(15, 2); + + // Global maximal number of queries per minutes + $config['search']['queries_per_minutes_all'] = Array(50, 2); + + // Limit of search results + $config['search']['search_limit'] = 100; + + // Boards for searching + //$config['search']['boards'] = array('a', 'b', 'c', 'd', 'e'); + /* * ==================== * Events (PHP 5.3.0+) @@ -1095,7 +1267,7 @@ // event_handler('post', function($post) { // // do something // }); - + // event_handler('post', function($post) { // // do something else // @@ -1108,35 +1280,50 @@ * Other/uncategorized * ==================== */ - - // Meta keywords. It's probably best to include these in per-board configurations. - //$config['meta_keywords'] = 'chan,anonymous discussion,imageboard,tinyboard'; - - // Link imageboard to your Google Analytics account to track users and provide marketing insights. + + // Meta keywords. It's probably best to include these in per-board configurations. + // $config['meta_keywords'] = 'chan,anonymous discussion,imageboard,tinyboard'; + + // Link imageboard to your Google Analytics account to track users and provide traffic insights. // $config['google_analytics'] = 'UA-xxxxxxx-yy'; // Keep the Google Analytics cookies to one domain -- ga._setDomainName() // $config['google_analytics_domain'] = 'www.example.org'; - - // If you use Varnish, Squid, or any similar caching reverse-proxy in front of Tinyboard, - // you can configure Tinyboard to PURGE files when they're written to - //$config['purge'] = array( - // array('127.0.0.1', 80) - // array('127.0.0.1', 80, 'example.org') - //); - // Connection timeout, in seconds + + // If you use Varnish, Squid, or any similar caching reverse-proxy in front of Tinyboard, you can + // configure Tinyboard to PURGE files when they're written to. + // $config['purge'] = array( + // array('127.0.0.1', 80) + // array('127.0.0.1', 80, 'example.org') + // ); + + // Connection timeout for $config['purge'], in seconds. $config['purge_timeout'] = 3; - - // Remote servers - // http://tinyboard.org/wiki/index.php?title=Multiple_Servers - //$config['remote']['static'] = array( - // 'host' => 'static.example.org', - // 'auth' => array( - // 'method' => 'plain', - // 'username' => 'username', - // 'password' => 'password!123' - // ), - // 'type' => 'scp' - //); - - // Complex regular expression to catch URLs + + // Additional mod.php?/ pages. Look in inc/mod/pages.php for help. + // $config['mod']['custom_pages']['/something/(\d+)'] = function($id) { + // global $config; + // if (!hasPermission($config['mod']['something'])) + // error($config['error']['noaccess']); + // // ... + // }; + + // Example: Add links to dashboard (will all be in a new "Other" category). + // $config['mod']['dashboard_links']['Something'] = '?/something'; + + // Remote servers. I'm not even sure if this code works anymore. It might. Haven't tried it in a while. + // $config['remote']['static'] = array( + // 'host' => 'static.example.org', + // 'auth' => array( + // 'method' => 'plain', + // 'username' => 'username', + // 'password' => 'password!123' + // ), + // 'type' => 'scp' + // ); + + // Regex for board URIs. Don't add "`" character or any Unicode that MySQL can't handle. 58 characters + // is the absolute maximum, because MySQL cannot handle table names greater than 64 characters. + $config['board_regex'] = '[0-9a-zA-Z$_\x{0080}-\x{FFFF}]{1,58}'; + + // Complex regular expression to catch URLs. $config['url_regex'] = '/' . '(https?|ftp):\/\/' . '(([\w\-]+\.)+[a-zA-Z]{2,6}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' . '(:\d+)?' . '(\/([\w\-~.#\/?=&;:+%!*\[\]@$\'()+,|\^]+)?)?' . '/'; diff --git a/inc/database.php b/inc/database.php index a0edd1fb..24959d0c 100644 --- a/inc/database.php +++ b/inc/database.php @@ -51,12 +51,16 @@ function sql_open() { try { $options = array( PDO::ATTR_TIMEOUT => $config['db']['timeout'], - PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true ); if ($config['db']['persistent']) $options[PDO::ATTR_PERSISTENT] = true; - return $pdo = new PDO($dsn, $config['db']['user'], $config['db']['password'], $options); + $pdo = new PDO($dsn, $config['db']['user'], $config['db']['password'], $options); + if (mysql_version() >= 50503) + query('SET NAMES utf8mb4') or error(db_error()); + else + query('SET NAMES utf8') or error(db_error()); + return $pdo; } catch(PDOException $e) { $message = $e->getMessage(); @@ -65,13 +69,26 @@ function sql_open() { $message = str_replace($config['db']['password'], 'hidden', $message); // Print error - error('Database error: ' . $message); + error(_('Database error: ') . $message); } } +// 5.6.10 becomes 50610 +function mysql_version() { + global $pdo; + + $version = $pdo->getAttribute(PDO::ATTR_SERVER_VERSION); + $v = explode('.', $version); + if (count($v) != 3) + return false; + return (int) sprintf("%02d%02d%02d", $v[0], $v[1], $v[2]); +} + function prepare($query) { global $pdo, $debug, $config; + $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query); + sql_open(); if ($config['debug']) @@ -83,6 +100,8 @@ function prepare($query) { function query($query) { global $pdo, $debug, $config; + $query = preg_replace('/``('.$config['board_regex'].')``/u', '`' . $config['db']['prefix'] . '$1`', $query); + sql_open(); if ($config['debug']) { @@ -102,14 +121,14 @@ function query($query) { return $pdo->query($query); } -function db_error($PDOStatement=null) { - global $pdo; +function db_error($PDOStatement = null) { + global $pdo, $db_error; if (isset($PDOStatement)) { - $err = $PDOStatement->errorInfo(); - return $err[2]; + $db_error = $PDOStatement->errorInfo(); + return $db_error[2]; } - $err = $pdo->errorInfo(); - return $err[2]; + $db_error = $pdo->errorInfo(); + return $db_error[2]; } diff --git a/inc/display.php b/inc/display.php index fe8bb048..18eeb1f6 100644 --- a/inc/display.php +++ b/inc/display.php @@ -25,6 +25,7 @@ function doBoardListPart($list, $root) { $body = ''; foreach ($list as $board) { if (is_array($board)) + // $body .= ' [' . doBoardListPart($board, $root) . '] '; $body .= ' [' . doBoardListPart($board, $root) . '] '; else { if (($key = array_search($board, $list)) && gettype($key) == 'string') { @@ -56,8 +57,8 @@ function createBoardlist($mod=false) { ); } -function error($message, $priority = true) { - global $board, $mod, $config; +function error($message, $priority = true, $debug_stuff = false) { + global $board, $mod, $config, $db_error; if ($config['syslog'] && $priority !== false) { // Use LOG_NOTICE instead of LOG_ERR or LOG_WARNING because most error message are not significant. @@ -68,18 +69,22 @@ function error($message, $priority = true) { // Running from CLI die('Error: ' . $message . "\n"); } + + if ($config['debug'] && isset($db_error)) { + $debug_stuff = array_combine(array('SQLSTATE', 'Error code', 'Error message'), $db_error); + } die(Element('page.html', array( - 'config'=>$config, - 'title'=>'Error', - 'subtitle'=>'An error has occured.', - 'body'=>'
' . - '

' . _($message) . '

' . - (isset($board) ? - "

Go back.

" : '') . - '
' + 'config' => $config, + 'title' => _('Error'), + 'subtitle' => _('An error has occured.'), + 'body' => Element('error.html', array( + 'config' => $config, + 'message' => $message, + 'mod' => $mod, + 'board' => isset($board) ? $board : false, + 'debug' => is_array($debug_stuff) ? str_replace("\n", ' ', utf8tohtml(print_r($debug_stuff, true))) : utf8tohtml($debug_stuff) + )) ))); } @@ -207,7 +212,7 @@ function truncate($body, $url, $max_lines = false, $max_chars = false) { $body = preg_replace('/&[^;]*$/', '', $body); } - $body .= 'Post too long. Click here to view the full text.'; + $body .= ''.sprintf(_('Post too long. Click here to view the full text.'), $url).''; } return $body; @@ -235,7 +240,7 @@ function bidi_cleanup($str){ function secure_link_confirm($text, $title, $confirm_message, $href) { global $config; - return '' . $text . ''; + return '' . $text . ''; } function secure_link($href) { return $href . '/' . make_secure_link_token($href); @@ -299,7 +304,7 @@ class Post { // Fix internal links // Very complicated regex $this->body = preg_replace( - '/' . $config['mod']['link_ban'] . ''; + $built .= ' ' . $config['mod']['link_ban'] . ''; // Ban & Delete if (hasPermission($config['mod']['bandelete'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_bandelete'] . ''; + $built .= ' ' . $config['mod']['link_bandelete'] . ''; // Delete file (keep post) if (!empty($this->file) && hasPermission($config['mod']['deletefile'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], 'Delete file', 'Are you sure you want to delete this file?', $board['uri'] . '/deletefile/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_editpost'] . ''; + $built .= ' ' . $config['mod']['link_editpost'] . ''; if (!empty($built)) $built = '' . $built . ''; @@ -398,7 +403,7 @@ class Thread { // Fix internal links // Very complicated regex $this->body = preg_replace( - '/' . $config['mod']['link_ban'] . ''; + $built .= ' ' . $config['mod']['link_ban'] . ''; // Ban & Delete if (hasPermission($config['mod']['bandelete'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_bandelete'] . ''; + $built .= ' ' . $config['mod']['link_bandelete'] . ''; // Delete file (keep post) if (!empty($this->file) && $this->file != 'deleted' && hasPermission($config['mod']['deletefile'], $board['uri'], $this->mod)) - $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], 'Delete file', 'Are you sure you want to delete this file?', $board['uri'] . '/deletefile/' . $this->id); + $built .= ' ' . secure_link_confirm($config['mod']['link_deletefile'], _('Delete file'), _('Are you sure you want to delete this file?'), $board['dir'] . 'deletefile/' . $this->id); // Sticky if (hasPermission($config['mod']['sticky'], $board['uri'], $this->mod)) if ($this->sticky) - $built .= ' ' . $config['mod']['link_desticky'] . ''; + $built .= ' ' . $config['mod']['link_desticky'] . ''; else - $built .= ' ' . $config['mod']['link_sticky'] . ''; + $built .= ' ' . $config['mod']['link_sticky'] . ''; if (hasPermission($config['mod']['bumplock'], $board['uri'], $this->mod)) if ($this->bumplocked) - $built .= ' ' . $config['mod']['link_bumpunlock'] . ''; + $built .= ' ' . $config['mod']['link_bumpunlock'] . ''; else - $built .= ' ' . $config['mod']['link_bumplock'] . ''; + $built .= ' ' . $config['mod']['link_bumplock'] . ''; // Lock if (hasPermission($config['mod']['lock'], $board['uri'], $this->mod)) if ($this->locked) - $built .= ' ' . $config['mod']['link_unlock'] . ''; + $built .= ' ' . $config['mod']['link_unlock'] . ''; else - $built .= ' ' . $config['mod']['link_lock'] . ''; + $built .= ' ' . $config['mod']['link_lock'] . ''; if (hasPermission($config['mod']['move'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_move'] . ''; + $built .= ' ' . $config['mod']['link_move'] . ''; // Edit post if (hasPermission($config['mod']['editpost'], $board['uri'], $this->mod)) - $built .= ' ' . $config['mod']['link_editpost'] . ''; + $built .= ' ' . $config['mod']['link_editpost'] . ''; if (!empty($built)) $built = '' . $built . ''; diff --git a/inc/filters.php b/inc/filters.php index 524d37cf..cd512821 100644 --- a/inc/filters.php +++ b/inc/filters.php @@ -81,7 +81,7 @@ class Filter { else $all_boards = false; - $query = prepare("INSERT INTO `bans` VALUES (NULL, :ip, :mod, :set, :expires, :reason, :board, 0)"); + $query = prepare("INSERT INTO ``bans`` VALUES (NULL, :ip, :mod, :set, :expires, :reason, :board, 0)"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':mod', -1); $query->bindValue(':set', time()); @@ -132,10 +132,10 @@ class Filter { function do_filters(array $post) { global $config; - if (!isset($config['flood_filters'])) + if (!isset($config['filters'])) return; - foreach ($config['flood_filters'] as $arr) { + foreach ($config['filters'] as $arr) { $filter = new Filter($arr); if ($filter->check($post)) $filter->action(); diff --git a/inc/functions.php b/inc/functions.php index fe1e254c..2e487eed 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -25,14 +25,14 @@ loadConfig(); function loadConfig() { global $board, $config, $__ip, $debug, $__version; - + $error = function_exists('error') ? 'error' : 'basic_error_function_because_the_other_isnt_loaded_yet'; - + reset_events(); - + if (!isset($_SERVER['REMOTE_ADDR'])) $_SERVER['REMOTE_ADDR'] = '0.0.0.0'; - + $arrays = array( 'db', 'cache', @@ -41,7 +41,7 @@ function loadConfig() { 'dir', 'mod', 'spam', - 'flood_filters', + 'filters', 'wordfilters', 'custom_capcode', 'custom_tripcode', @@ -55,43 +55,44 @@ function loadConfig() { 'stylesheets', 'additional_javascript', 'markup', - 'custom_pages' + 'custom_pages', + 'dashboard_links' ); - + $config = array(); foreach ($arrays as $key) { $config[$key] = array(); } - + require 'inc/config.php'; if (!file_exists('inc/instance-config.php')) $error('Tinyboard is not configured! Create inc/instance-config.php.'); - + require 'inc/instance-config.php'; - + if (isset($board['dir']) && file_exists($board['dir'] . '/config.php')) { require $board['dir'] . '/config.php'; } - + if (!isset($__version)) $__version = file_exists('.installed') ? trim(file_get_contents('.installed')) : false; $config['version'] = $__version; - + if ($config['debug']) { if (!isset($debug)) { - $debug = array('sql' => array(), 'purge' => array(), 'cached' => array(), 'write' => array()); + $debug = array('sql' => array(), 'exec' => array(), 'purge' => array(), 'cached' => array(), 'write' => array()); $debug['start'] = microtime(true); } } - + date_default_timezone_set($config['timezone']); - - if (!isset($config['blotter'])) - $config['blotter'] = false; - + + if (!isset($config['global_message'])) + $config['global_message'] = false; + if (!isset($config['post_url'])) $config['post_url'] = $config['root'] . $config['file_post']; - + if (!isset($config['referer_match'])) if (isset($_SERVER['HTTP_HOST'])) { $config['referer_match'] = '/^' . @@ -99,28 +100,28 @@ function loadConfig() { 'https?:\/\/' . $_SERVER['HTTP_HOST']) . preg_quote($config['root'], '/') . '(' . - str_replace('%s', '\w+', preg_quote($config['board_path'], '/')) . + str_replace('%s', $config['board_regex'], preg_quote($config['board_path'], '/')) . '(' . preg_quote($config['file_index'], '/') . '|' . str_replace('%d', '\d+', preg_quote($config['file_page'])) . ')?' . '|' . - str_replace('%s', '\w+', preg_quote($config['board_path'], '/')) . + str_replace('%s', $config['board_regex'], preg_quote($config['board_path'], '/')) . preg_quote($config['dir']['res'], '/') . str_replace('%d', '\d+', preg_quote($config['file_page'], '/')) . '|' . preg_quote($config['file_mod'], '/') . '\?\/.+' . - ')([#?](.+)?)?$/i'; + ')([#?](.+)?)?$/ui'; } else { // CLI mode $config['referer_match'] = '//'; } if (!isset($config['cookies']['path'])) $config['cookies']['path'] = &$config['root']; - + if (!isset($config['dir']['static'])) $config['dir']['static'] = $config['root'] . 'static/'; - + if (!isset($config['image_sticky'])) $config['image_sticky'] = $config['dir']['static'] . 'sticky.gif'; if (!isset($config['image_locked'])) @@ -129,50 +130,50 @@ function loadConfig() { $config['image_bumplocked'] = $config['dir']['static'] . 'sage.gif'; if (!isset($config['image_deleted'])) $config['image_deleted'] = $config['dir']['static'] . 'deleted.png'; - if (!isset($config['image_zip'])) - $config['image_zip'] = $config['dir']['static'] . 'zip.png'; - + if (!isset($config['uri_thumb'])) $config['uri_thumb'] = $config['root'] . $board['dir'] . $config['dir']['thumb']; elseif (isset($board['dir'])) $config['uri_thumb'] = sprintf($config['uri_thumb'], $board['dir']); - + if (!isset($config['uri_img'])) $config['uri_img'] = $config['root'] . $board['dir'] . $config['dir']['img']; elseif (isset($board['dir'])) $config['uri_img'] = sprintf($config['uri_img'], $board['dir']); - + if (!isset($config['uri_stylesheets'])) $config['uri_stylesheets'] = $config['root'] . 'stylesheets/'; - + if (!isset($config['url_stylesheet'])) $config['url_stylesheet'] = $config['uri_stylesheets'] . 'style.css'; if (!isset($config['url_javascript'])) $config['url_javascript'] = $config['root'] . $config['file_script']; if (!isset($config['additional_javascript_url'])) $config['additional_javascript_url'] = $config['root']; - + if ($config['root_file']) { chdir($config['root_file']); } if ($config['verbose_errors']) { + set_error_handler('verbose_error_handler'); error_reporting(E_ALL); - ini_set('display_errors', 1); + ini_set('display_errors', true); + ini_set('html_errors', false); } - + // Keep the original address to properly comply with other board configurations if (!isset($__ip)) $__ip = $_SERVER['REMOTE_ADDR']; - + // ::ffff:0.0.0.0 if (preg_match('/^\:\:(ffff\:)?(\d+\.\d+\.\d+\.\d+)$/', $__ip, $m)) $_SERVER['REMOTE_ADDR'] = $m[2]; - + if (_setlocale(LC_ALL, $config['locale']) === false) { $error('The specified locale (' . $config['locale'] . ') does not exist on your platform!'); } - + if (extension_loaded('gettext')) { bindtextdomain('tinyboard', './inc/locale'); bind_textdomain_codeset('tinyboard', 'UTF-8'); @@ -182,11 +183,11 @@ function loadConfig() { _bind_textdomain_codeset('tinyboard', 'UTF-8'); _textdomain('tinyboard'); } - - + + if ($config['syslog']) openlog('tinyboard', LOG_ODELAY, LOG_SYSLOG); // open a connection to sysem logger - + if ($config['recaptcha']) require_once 'inc/lib/recaptcha/recaptchalib.php'; if ($config['cache']['enabled']) @@ -196,12 +197,12 @@ function loadConfig() { function basic_error_function_because_the_other_isnt_loaded_yet($message, $priority = true) { global $config; - + if ($config['syslog'] && $priority !== false) { // Use LOG_NOTICE instead of LOG_ERR or LOG_WARNING because most error message are not significant. _syslog($priority !== true ? $priority : LOG_NOTICE, $message); } - + // Yes, this is horrible. die('Error' . '').appendTo($('head')); + + var board = $('form input[name="board"]').val().toString(); + + if (!localStorage.hiddenimages) + localStorage.hiddenimages = '{}'; + + // Load data from HTML5 localStorage + var hidden_data = JSON.parse(localStorage.hiddenimages); + + var store_data = function() { + localStorage.hiddenimages = JSON.stringify(hidden_data); + }; + + // Delete old hidden images (30+ days old) + for (var key in hidden_data) { + for (var id in hidden_data[key]) { + if (hidden_data[key][id] < Math.round(Date.now() / 1000) - 60 * 60 * 24 * 30) { + delete hidden_data[key][id]; + store_data(); + } + } + } + + if (!hidden_data[board]) { + hidden_data[board] = {}; // id : timestamp + } + + $('div.post > a > img, div > a > img').each(function() { + var img = this; + var fileinfo = $(this).parent().prev(); + var id = $(this).parent().parent().find('>p.intro>a.post_no:eq(1),>div.post.op>p.intro>a.post_no:eq(1)').text(); + + var replacement = $(''+_('File')+' ('+_('hide')+'): '); + + replacement.find('a').click(function() { + hidden_data[board][id] = Math.round(Date.now() / 1000); + store_data(); + + var show_link = $(''+_('show')+'').click(function() { + delete hidden_data[board][id]; + store_data(); + + $(img) + .removeClass('hidden') + .attr('src', $(img).data('orig')); + $(this).prev().show(); + $(this).remove(); + }); + + $(this).hide().after(show_link); + + if ($(img).parent()[0].dataset.expanded == 'true') { + $(img).parent().click(); + } + $(img) + .data('orig', img.src) + .attr('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==') + .addClass('hidden'); + }); + + $(this).parent().prev().contents().first().replaceWith(replacement); + + if (hidden_data[board][id]) + $(this).parent().prev().find('.hide-image-link').click(); + + }); +}); diff --git a/js/hide-threads.js b/js/hide-threads.js new file mode 100644 index 00000000..44bd829b --- /dev/null +++ b/js/hide-threads.js @@ -0,0 +1,83 @@ +/* + * hide-threads.js + * https://github.com/savetheinternet/Tinyboard/blob/master/js/hide-threads.js + * + * Released under the MIT license + * Copyright (c) 2013 Michael Save + * + * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; + * $config['additional_javascript'][] = 'js/hide-threads.js'; + * + */ + +$(document).ready(function(){ + if (active_page != "index" && active_page != "ukko") + return; // not index + + if (!localStorage.hiddenthreads) + localStorage.hiddenthreads = '{}'; + + // Load data from HTML5 localStorage + var hidden_data = JSON.parse(localStorage.hiddenthreads); + + var store_data = function() { + localStorage.hiddenthreads = JSON.stringify(hidden_data); + }; + + // Delete old hidden threads (7+ days old) + for (var key in hidden_data) { + for (var id in hidden_data[key]) { + if (hidden_data[key][id] < Math.round(Date.now() / 1000) - 60 * 60 * 24 * 7) { + delete hidden_data[key][id]; + store_data(); + } + } + } + + var do_hide_threads = function() { + var id = $(this).children('p.intro').children('a.post_no:eq(1)').text(); + var thread_container = $(this).parent(); + + var board = thread_container.data("board"); + + if (!hidden_data[board]) { + hidden_data[board] = {}; // id : timestamp + } + + $('[–] ') + .insertBefore(thread_container.find(':not(h2,h2 *):first')) + .click(function() { + hidden_data[board][id] = Math.round(Date.now() / 1000); + store_data(); + + thread_container.find('div.post,img,p.fileinfo,a.hide-thread-link,br').hide(); + + var hidden_div = thread_container.find('div.post.op > p.intro').clone(); + hidden_div.addClass('thread-hidden'); + hidden_div.find('a[href]:not([href$=".html"]),input').remove(); + hidden_div.html(hidden_div.html().replace(' [] ', ' ')); + hidden_div.html(hidden_div.html().replace(' [] ', ' ')); + + $('[+] ') + .insertBefore(hidden_div.find(':first')) + .click(function() { + delete hidden_data[board][id]; + store_data(); + thread_container.find('div.post,img,p.fileinfo,a.hide-thread-link,br').show(); + $(this).remove(); + hidden_div.remove(); + }); + + hidden_div.insertAfter(thread_container.find(':not(h2,h2 *):first')); + }); + if (hidden_data[board][id]) + thread_container.find('.hide-thread-link').click(); + } + + $('div.post.op').each(do_hide_threads); + + $(document).bind('new_post', function(e, post) { + do_hide_threads.call($(post).find('div.post.op')[0]); + }); +}); diff --git a/js/imgcaptcha.js b/js/imgcaptcha.js deleted file mode 100644 index 99aad414..00000000 --- a/js/imgcaptcha.js +++ /dev/null @@ -1,12 +0,0 @@ -function ic_odswiezKapcze() { - $.get(configRoot + "imgcaptcha_p.php", function(data) { - $("#imgcaptcha_hash").val(data); - $("#imgcaptcha_img").prop("src",configRoot + "imgcaptcha_im.php?cr=" + data); - }); -} -//function resetujKapcze() { -// $("#imgcaptcha_img").prop("src",configRoot + "zakrytek.png"); -//} -//$(document).ready(function(){ -// //resetujKapcze(); - to nie powinno byc na razie potrzebne -//}); diff --git a/js/inline-expanding-filename.js b/js/inline-expanding-filename.js new file mode 100644 index 00000000..048a0e1a --- /dev/null +++ b/js/inline-expanding-filename.js @@ -0,0 +1,33 @@ +/* + * inline-expanding-filename.js + * Binds image filename link to expanding, to make kusaba x users somewhat more accustomed. + * https://github.com/vichan-devel/Tinyboard/blob/master/js/inline-expanding.js + * + * Released under the MIT license + * Copyright (c) 2012-2013 Marcin Łabanowski + * + * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; + * $config['additional_javascript'][] = 'js/inline-expanding.js'; + * $config['additional_javascript'][] = 'js/inline-expanding-filename.js'; + * + */ + +onready(function(){ + var inline_expanding_filename = function() { + $(this).find(".fileinfo > a").click(function(){ + var imagelink = $(this).parent().parent().find('a[target="_blank"]:first'); + if(imagelink.length > 0) { + imagelink.click(); + return false; + } + }); + }; + + $('div[id^="thread_"]').each(inline_expanding_filename); + + // allow to work with auto-reload.js, etc. + $(document).bind('new_post', function(e, post) { + inline_expanding_filename.call(post); + }); +}); diff --git a/js/inline-expanding.js b/js/inline-expanding.js index 7c9923fa..398db181 100644 --- a/js/inline-expanding.js +++ b/js/inline-expanding.js @@ -3,10 +3,10 @@ * https://github.com/savetheinternet/Tinyboard/blob/master/js/inline-expanding.js * * Released under the MIT license - * Copyright (c) 2012 Michael Save + * Copyright (c) 2012-2013 Michael Save * * Usage: - * $config['additional_javascript'][] = 'js/jquery.min.js'; + * // $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/inline-expanding.js'; * */ @@ -14,30 +14,40 @@ onready(function(){ var inline_expand_post = function() { var link = this.getElementsByTagName('a'); - - for(var i = 0; i < link.length; i++) { - if(typeof link[i] == "object" && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') { + + for (var i = 0; i < link.length; i++) { + if (typeof link[i] == "object" && link[i].childNodes && typeof link[i].childNodes[0] !== 'undefined' && link[i].childNodes[0].src && link[i].className != 'file') { + if (window.jQuery && !$(link).prev().hasClass('fileinfo')) { + continue; + } link[i].childNodes[0].style.maxWidth = '95%'; link[i].onclick = function(e) { - if(e.which == 2) { + if (this.childNodes[0].className == 'hidden') + return false; + if (e.which == 2 || e.metaKey) return true; - } - if(!this.tag) { - this.tag = this.childNodes[0].src; + if (!this.dataset.src) { + this.dataset.expanded = 'true'; + this.dataset.src= this.childNodes[0].src; + this.dataset.width = this.childNodes[0].style.width; + this.dataset.height = this.childNodes[0].style.height; this.childNodes[0].src = this.href; this.childNodes[0].style.width = 'auto'; this.childNodes[0].style.height = 'auto'; this.childNodes[0].style.opacity = '0.4'; this.childNodes[0].style.filter = 'alpha(opacity=40)'; this.childNodes[0].onload = function() { - this.style.opacity = '1'; - this.style.filter = ''; + this.style.opacity = ''; + delete this.style.filter; } } else { - this.childNodes[0].src = this.tag; - this.childNodes[0].style.width = 'auto'; - this.childNodes[0].style.height = 'auto'; - this.tag = ''; + this.childNodes[0].src = this.dataset.src; + this.childNodes[0].style.width = this.dataset.width; + this.childNodes[0].style.height = this.dataset.height; + delete this.dataset.expanded; + delete this.dataset.src; + delete this.childNodes[0].style.opacity; + delete this.childNodes[0].style.filter; } return false; } @@ -45,11 +55,14 @@ onready(function(){ } } - $('div[id^="thread_"]').each(inline_expand_post); - - // allow to work with auto-reload.js, etc. - $(document).bind('new_post', function(e, post) { - inline_expand_post.call(post); - }); -}); + if (window.jQuery) { + $('div[id^="thread_"]').each(inline_expand_post); + // allow to work with auto-reload.js, etc. + $(document).bind('new_post', function(e, post) { + inline_expand_post.call(post); + }); + } else { + inline_expand_post.call(document); + } +}); diff --git a/js/local-time.js b/js/local-time.js index a4e2fb51..d581e304 100644 --- a/js/local-time.js +++ b/js/local-time.js @@ -6,7 +6,7 @@ * Copyright (c) 2012 Michael Save * * Usage: - * $config['additional_javascript'][] = 'js/jquery.min.js'; + * // $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/local-time.js'; * */ @@ -44,10 +44,12 @@ onready(function(){ }; do_localtime(document); - - // allow to work with auto-reload.js, etc. - $(document).bind('new_post', function(e, post) { - do_localtime(post); - }); + + if (window.jQuery) { + // allow to work with auto-reload.js, etc. + $(document).bind('new_post', function(e, post) { + do_localtime(post); + }); + } }); diff --git a/js/post-hider.js b/js/post-hider.js deleted file mode 100644 index 742c21bc..00000000 --- a/js/post-hider.js +++ /dev/null @@ -1,53 +0,0 @@ -function phGetCookieName(board, id) { - return "ph_hide_" + board + "_" + id; -} -function phPostHidden(board, id) { - return (localStorage.getItem(phGetCookieName(board, id)) != null); -} -function phPostToggle(board, id) { - if(phPostHidden(board, id)) { localStorage.removeItem(phGetCookieName(board, id)); } - else { localStorage.setItem(phGetCookieName(board, id),"yes"); } -} -function phGetInnerText(board, id) { - if(phPostHidden(board, id)) { return "[+]"; } - else { return "[–]"; } -} -function phGetOpID(element) { - return Number(element.children("div.post.op").children("p.intro").children("a.post_no.p2").text()); -} -function phGetOpBoard(element) { - return element.data("board"); -} -function phPostHandle(element) { - var id = phGetOpID(element); - var board = phGetOpBoard(element); - var preplies = element.children("div.post.reply"); - var pbody = element.children("div.post.op").children("div.body"); - var pimage = element.children("a:first").children("img"); - var pbutton = element.children("div.post.op").children("p.intro").children("a.posthider"); - var pomitted = element.children("div.post.op").children("span.omitted"); - if(phPostHidden(board, id)) { element.addClass("thread-hidden"); pomitted.hide(); preplies.hide(); pbody.hide(); pimage.hide(); pbutton.text("[+]"); } - else { element.removeClass("thread-hidden"); pomitted.show(); preplies.show(); pbody.show(); pimage.show(); pbutton.text("[–]"); } -} - -function phHandleThread(index, element) { - // Get thread ID. - var pin = $(this).children("div.post.op").children("p.intro"); - var tid = phGetOpID($(this)); - if(tid != NaN) { - $("[?]").insertAfter(pin.children('a:last')).click(function(e) { - var eO = $(e.target); - var par = eO.parent().parent().parent(); - phPostToggle(phGetOpBoard(par), phGetOpID(par)); - phPostHandle(par); - return false; - }); - phPostHandle($(this)); - } -} - -$(document).ready(function(){ - if (active_page != "thread") { - $('form[name="postcontrols"] > div[id^="thread"]').each(phHandleThread); - } -}); diff --git a/js/post-hider.js b/js/post-hider.js new file mode 120000 index 00000000..693c14d6 --- /dev/null +++ b/js/post-hider.js @@ -0,0 +1 @@ +hide-threads.js \ No newline at end of file diff --git a/js/post-hover.js b/js/post-hover.js index 48f0ed96..040b6a73 100644 --- a/js/post-hover.js +++ b/js/post-hover.js @@ -17,13 +17,28 @@ onready(function(){ var $link = $(this); var id; - - if(id = $link.text().match(/^>>(\d+)$/)) { - id = id[1]; + var matches; + + if(matches = $link.text().match(/^>>(?:>\/([^\/]+)\/)?(\d+)$/)) { + id = matches[2]; } else { return; } + var board = $(this); + while (board.data('board') === undefined) { + board = board.parent(); + } + var threadid = board.attr('id').replace("thread_", ""); + board = board.data('board'); + + var parentboard = board; + + if (matches[1] !== undefined) { + board = matches[1]; + } + + var $post = false; var hovering = false; var hovered_at; @@ -32,28 +47,34 @@ onready(function(){ hovered_at = {'x': e.pageX, 'y': e.pageY}; var start_hover = function($link) { - if($post.is(':visible') && + if($.contains($post[0], $link[0])) { + // link links to itself or to op; ignore + } + else if($post.is(':visible') && $post.offset().top + $post.height() >= $(window).scrollTop() && - $post.offset().top <= $(window).scrollTop() + $(window).height() - ) { + $post.offset().top <= $(window).scrollTop() + $(window).height()) { // post is in view $post.attr('style', 'border-style: none dashed dashed none; background: ' + $post.css('border-right-color')); } else { var $newPost = $post.clone(); + $newPost.find('>.reply, >br').remove(); $newPost.find('span.mentioned').remove(); + $newPost .attr('id', 'post-hover-' + id) + .attr('data-board', board) .addClass('post-hover') .css('position', 'absolute') .css('border-style', 'solid') .css('box-shadow', '1px 1px 1px #999') .css('display', 'block') - .insertAfter($link.parent()); + .addClass('reply').addClass('post') + .insertAfter($link.parent()) $link.trigger('mousemove'); } }; - $post = $('div.post#reply_' + id); + $post = $('[data-board="' + board + '"] div.post#reply_' + id + ', [data-board="' + board + '"]div#thread_' + id); if($post.length > 0) { start_hover($(this)); } else { @@ -68,13 +89,27 @@ onready(function(){ url: url, context: document.body, success: function(data) { - $(data).find('div.post.reply').each(function() { - if($('#' + $(this).attr('id')).length == 0) - $('div.post:first').prepend($(this).css('display', 'none').addClass('hidden')); + var mythreadid = $(data).find('div[id^="thread_"]').attr('id').replace("thread_", ""); - }); + if (mythreadid == threadid && parentboard == board) { + $(data).find('div.post.reply').each(function() { + if($('[data-board="' + board + '"] #' + $(this).attr('id')).length == 0) { + $('[data-board="' + board + '"]#thread_' + threadid + " .post.reply:first").before($(this).hide().addClass('hidden')); + } + }); + } + else if ($('[data-board="' + board + '"]#thread_'+mythreadid).length > 0) { + $(data).find('div.post.reply').each(function() { + if($('[data-board="' + board + '"] #' + $(this).attr('id')).length == 0) { + $('[data-board="' + board + '"]#thread_' + mythreadid + " .post.reply:first").before($(this).hide().addClass('hidden')); + } + }); + } + else { + $(data).find('div[id^="thread_"]').hide().attr('data-cached', 'yes').prependTo('form[name="postcontrols"]'); + } - $post = $('div.post#reply_' + id); + $post = $('[data-board="' + board + '"] div.post#reply_' + id + ', [data-board="' + board + '"]div#thread_' + id); if(hovering && $post.length > 0) { start_hover($link); } @@ -87,14 +122,14 @@ onready(function(){ return; $post.attr('style', ''); - if($post.hasClass('hidden')) + if($post.hasClass('hidden') || $post.data('cached') == 'yes') $post.css('display', 'none'); $('.post-hover').remove(); }).mousemove(function(e) { if(!$post) return; - var $hover = $('#post-hover-' + id); + var $hover = $('#post-hover-' + id + '[data-board="' + board + '"]'); if($hover.length == 0) return; diff --git a/js/quick-post-controls.js b/js/quick-post-controls.js index c28f874f..1cbc0711 100644 --- a/js/quick-post-controls.js +++ b/js/quick-post-controls.js @@ -71,10 +71,16 @@ $(document).ready(function(){ } }; - $('div.post input[type=checkbox].delete').each(function() { + var init_qpc = function() { $(this).change(open_form); if(this.checked) $(this).trigger('change'); + }; + + $('div.post input[type=checkbox].delete').each(init_qpc); + + $(document).bind('new_post', function(e, post) { + $(post).find('input[type=checkbox].delete').each(init_qpc); }); }); diff --git a/js/show-backlinks.js b/js/show-backlinks.js index 4ead494b..f23cfc38 100644 --- a/js/show-backlinks.js +++ b/js/show-backlinks.js @@ -48,7 +48,12 @@ onready(function(){ $('div.post.reply').each(showBackLinks); $(document).bind('new_post', function(e, post) { - showBackLinks.call(post); + if ($(post).hasClass("reply")) { + showBackLinks.call(post); + } + else { + $(post).find('div.post.reply').each(showBackLinks); + } }); }); diff --git a/js/style-select.js b/js/style-select.js new file mode 100644 index 00000000..6dcb11e4 --- /dev/null +++ b/js/style-select.js @@ -0,0 +1,44 @@ +/* + * style-select.js + * https://github.com/savetheinternet/Tinyboard/blob/master/js/style-select.js + * + * Changes the stylesheet chooser links to a '); + + var i = 1; + stylesDiv.children().each(function() { + var opt = $('') + .html(this.innerHTML.replace(/(^\[|\]$)/g, '')) + .val(i); + if ($(this).hasClass('selected')) + opt.attr('selected', true); + stylesSelect.append(opt); + $(this).attr('id', 'style-select-' + i); + i++; + }); + + stylesSelect.change(function() { + $('#style-select-' + $(this).val()).click(); + }); + + stylesDiv.hide(); + + stylesDiv.after( + $('
') + .text(_('Style: ')) + .append(stylesSelect) + ); +}); + diff --git a/js/toggle-images.js b/js/toggle-images.js new file mode 100644 index 00000000..de1d47b3 --- /dev/null +++ b/js/toggle-images.js @@ -0,0 +1,77 @@ +/* + * toggle-images.js + * + * Released under the MIT license + * Copyright (c) 2012 Michael Save + * + * Usage: + * $config['additional_javascript'][] = 'js/jquery.min.js'; + * $config['additional_javascript'][] = 'js/toggle-images.js'; + * + */ + +$(document).ready(function(){ + var hide_images = localStorage['hideimages'] ? true : false; + + $('').appendTo($('head')); + + var hideImage = function() { + if ($(this).parent()[0].dataset.expanded == 'true') { + $(this).parent().click(); + } + $(this) + .attr('data-orig', this.src) + .attr('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==') + .addClass('hidden'); + }; + + var restoreImage = function() { + $(this) + .attr('src', $(this).attr('data-orig')) + .removeClass('hidden'); + }; + + // Fix for hide-images.js + var show_hide_hide_images_buttons = function() { + if (hide_images) { + $('a.hide-image-link').each(function() { + if ($(this).next().hasClass('show-image-link')) { + $(this).next().hide(); + } + $(this).hide().after(''+_('hidden')+''); + }); + } else { + $('span.toggle-images-placeholder').remove(); + $('a.hide-image-link').each(function() { + if ($(this).next().hasClass('show-image-link')) { + $(this).next().show(); + } else { + $(this).show(); + } + }); + } + }; + + $('hr:first').before(''); + $('div#toggle-images a') + .text(hide_images ? _('Show images') : _('Hide images')) + .click(function() { + hide_images = !hide_images; + if (hide_images) { + $('div > a > img').each(hideImage); + localStorage.hideimages = true; + } else { + $('div > a > img').each(restoreImage); + delete localStorage.hideimages; + } + + show_hide_hide_images_buttons(); + + $(this).text(hide_images ? _('Show images') : _('Hide images')) + }); + + if (hide_images) { + $('div > a > img').each(hideImage); + show_hide_hide_images_buttons(); + } +}); diff --git a/mod.php b/mod.php index d3dc5c23..be66db78 100644 --- a/mod.php +++ b/mod.php @@ -18,7 +18,7 @@ if (get_magic_quotes_gpc()) { $_POST = strip_array($_POST); } -$query = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : ''; +$query = isset($_SERVER['QUERY_STRING']) ? rawurldecode($_SERVER['QUERY_STRING']) : ''; $pages = array( '' => ':?/', // redirect to dashboard @@ -28,7 +28,7 @@ $pages = array( '/users' => 'users', // manage users '/users/(\d+)' => 'user', // edit user - '/users/(\d+)/(promote|demote)' => 'user_promote', // prmote/demote user + '/users/(\d+)/(promote|demote)' => 'user_promote', // prmote/demote user '/users/new' => 'user_new', // create a new user '/new_PM/([^/]+)' => 'new_pm', // create a new pm '/PM/(\d+)(/reply)?' => 'pm', // read a pm @@ -36,7 +36,7 @@ $pages = array( '/noticeboard' => 'noticeboard', // view noticeboard '/noticeboard/(\d+)' => 'noticeboard', // view noticeboard - '/noticeboard/delete/(\d+)' => 'noticeboard_delete',// delete from noticeboard + '/noticeboard/delete/(\d+)' => 'noticeboard_delete', // delete from noticeboard '/log' => 'log', // modlog '/log/(\d+)' => 'log', // modlog '/log:([^/]+)' => 'user_log', // modlog @@ -45,7 +45,7 @@ $pages = array( '/news/(\d+)' => 'news', // view news '/news/delete/(\d+)' => 'news_delete', // delete from news - '/edit/([\w+.]+)' => 'edit_board', // edit board details + '/edit/(\%b)' => 'edit_board', // edit board details '/new-board' => 'new_board', // create a new board '/rebuild' => 'rebuild', // rebuild static files @@ -57,21 +57,21 @@ $pages = array( '/bans' => 'bans', // ban list '/bans/(\d+)' => 'bans', // ban list - '/search' => 'search_redirect', // search + '/search' => 'search_redirect', // search '/search/(posts|IP_notes|bans|log)/(.+)/(\d+)' => 'search', // search '/search/(posts|IP_notes|bans|log)/(.+)' => 'search', // search // CSRF-protected moderator actions - '/ban' => 'secure_POST ban', // new ban - '/([\w+.]+)/ban(&delete)?/(\d+)' => 'secure_POST ban_post', // ban poster - '/([\w+.]+)/move/(\d+)' => 'secure_POST move', // move thread - '/([\w+.]+)/edit(_raw)?/(\d+)' => 'secure_POST edit_post', // edit post - '/([\w+.]+)/delete/(\d+)' => 'secure delete', // delete post - '/([\w+.]+)/deletefile/(\d+)' => 'secure deletefile', // delete file from post - '/([\w+.]+)/deletebyip/(\d+)(/global)?' => 'secure deletebyip', // delete all posts by IP address - '/([\w+.]+)/(un)?lock/(\d+)' => 'secure lock', // lock thread - '/([\w+.]+)/(un)?sticky/(\d+)' => 'secure sticky', // sticky thread - '/([\w+.]+)/bump(un)?lock/(\d+)' => 'secure bumplock', // "bumplock" thread + '/ban' => 'secure_POST ban', // new ban + '/(\%b)/ban(&delete)?/(\d+)' => 'secure_POST ban_post', // ban poster + '/(\%b)/move/(\d+)' => 'secure_POST move', // move thread + '/(\%b)/edit(_raw)?/(\d+)' => 'secure_POST edit_post', // edit post + '/(\%b)/delete/(\d+)' => 'secure delete', // delete post + '/(\%b)/deletefile/(\d+)' => 'secure deletefile', // delete file from post + '/(\%b)/deletebyip/(\d+)(/global)?' => 'secure deletebyip', // delete all posts by IP address + '/(\%b)/(un)?lock/(\d+)' => 'secure lock', // lock thread + '/(\%b)/(un)?sticky/(\d+)' => 'secure sticky', // sticky thread + '/(\%b)/bump(un)?lock/(\d+)' => 'secure bumplock', // "bumplock" thread '/themes' => 'themes_list', // manage themes '/themes/(\w+)' => 'theme_configure', // configure/reconfigure theme @@ -79,6 +79,7 @@ $pages = array( '/themes/(\w+)/uninstall' => 'theme_uninstall', // uninstall theme '/config' => 'config', // config editor + '/config/(\%b)' => 'config', // config editor // these pages aren't listed in the dashboard without $config['debug'] '/debug/antispam' => 'debug_antispam', @@ -86,10 +87,10 @@ $pages = array( '/debug/sql' => 'secure_POST debug_sql', // This should always be at the end: - '/([\w+.]+)/' => 'view_board', - '/([\w+.]+)/' . preg_quote($config['file_index'], '!') => 'view_board', - '/([\w+.]+)/' . str_replace('%d', '(\d+)', preg_quote($config['file_page'], '!')) => 'view_board', - '/([\w+.]+)/' . preg_quote($config['dir']['res'], '!') . + '/(\%b)/' => 'view_board', + '/(\%b)/' . preg_quote($config['file_index'], '!') => 'view_board', + '/(\%b)/' . str_replace('%d', '(\d+)', preg_quote($config['file_page'], '!')) => 'view_board', + '/(\%b)/' . preg_quote($config['dir']['res'], '!') . str_replace('%d', '(\d+)', preg_quote($config['file_page'], '!')) => 'view_thread', ); @@ -109,7 +110,8 @@ $new_pages = array(); foreach ($pages as $key => $callback) { if (is_string($callback) && preg_match('/^secure /', $callback)) $key .= '(/(?P[a-f0-9]{8}))?'; - $new_pages[@$key[0] == '!' ? $key : '!^' . $key . '(?:&[^&=]+=[^&]*)*$!'] = $callback; + $key = str_replace('\%b', '?P' . sprintf(substr($config['board_path'], 0, -1), $config['board_regex']), $key); + $new_pages[@$key[0] == '!' ? $key : '!^' . $key . '(?:&[^&=]+=[^&]*)*$!u'] = $callback; } $pages = $new_pages; @@ -117,6 +119,15 @@ foreach ($pages as $uri => $handler) { if (preg_match($uri, $query, $matches)) { $matches = array_slice($matches, 1); + if (isset($matches['board'])) { + $board_match = $matches['board']; + unset($matches['board']); + $key = array_search($board_match, $matches); + if (preg_match('/^' . sprintf(substr($config['board_path'], 0, -1), '(' . $config['board_regex'] . ')') . '$/u', $matches[$key], $board_match)) { + $matches[$key] = $board_match[1]; + } + } + if (is_string($handler) && preg_match('/^secure(_POST)? /', $handler, $m)) { $secure_post_only = isset($m[1]); if (!$secure_post_only || $_SERVER['REQUEST_METHOD'] == 'POST') { diff --git a/post.php b/post.php index 4ded8622..6a23b64c 100644 --- a/post.php +++ b/post.php @@ -6,7 +6,6 @@ require 'inc/functions.php'; require 'inc/anti-bot.php'; -require 'inc/imgcaptcha.php'; // Fix for magic quotes if (get_magic_quotes_gpc()) { @@ -49,11 +48,11 @@ if (isset($_POST['delete'])) { error($config['error']['nodelete']); foreach ($delete as &$id) { - $query = prepare(sprintf("SELECT `thread`, `time`,`password` FROM `posts_%s` WHERE `id` = :id", $board['uri'])); + $query = prepare(sprintf("SELECT `thread`, `time`,`password` FROM ``posts_%s`` WHERE `id` = :id", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - if ($post = $query->fetch()) { + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { if ($password != '' && $post['password'] != $password) error($config['error']['invalidpassword']); @@ -109,23 +108,23 @@ if (isset($_POST['delete'])) { if (count($report) > $config['report_limit']) error($config['error']['toomanyreports']); - $reason = &$_POST['reason']; + $reason = escape_markup_modifiers($_POST['reason']); markup($reason); foreach ($report as &$id) { - $query = prepare(sprintf("SELECT `thread` FROM `posts_%s` WHERE `id` = :id", $board['uri'])); + $query = prepare(sprintf("SELECT `thread` FROM ``posts_%s`` WHERE `id` = :id", $board['uri'])); $query->bindValue(':id', $id, PDO::PARAM_INT); $query->execute() or error(db_error($query)); - $post = $query->fetch(); + $thread = $query->fetchColumn(); - if ($post) { + if ($thread) { if ($config['syslog']) _syslog(LOG_INFO, 'Reported post: ' . - '/' . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $post['thread'] ? $post['thread'] : $id) . ($post['thread'] ? '#' . $id : '') . + '/' . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $thread ? $thread : $id) . ($thread ? '#' . $id : '') . ' for "' . $reason . '"' ); - $query = prepare("INSERT INTO `reports` VALUES (NULL, :time, :ip, :board, :post, :reason)"); + $query = prepare("INSERT INTO ``reports`` VALUES (NULL, :time, :ip, :board, :post, :reason)"); $query->bindValue(':time', time(), PDO::PARAM_INT); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR); $query->bindValue(':board', $board['uri'], PDO::PARAM_INT); @@ -173,7 +172,7 @@ if (isset($_POST['delete'])) { error($config['error']['bot']); // Check the referrer - if (!isset($_SERVER['HTTP_REFERER']) || !preg_match($config['referer_match'], $_SERVER['HTTP_REFERER'])) + if (!isset($_SERVER['HTTP_REFERER']) || !preg_match($config['referer_match'], urldecode($_SERVER['HTTP_REFERER']))) error($config['error']['referer']); checkDNSBL(); @@ -198,12 +197,7 @@ if (isset($_POST['delete'])) { error($config['error']['captcha']); } } - if ($config['imgcaptcha']) { - if (!isset($_POST['imgcaptcha_verify']) || !isset($_POST['imgcaptcha_hash'])) - error($config['error']['bot']); - if (ic_verifyHash($_POST['imgcaptcha_hash'],$_POST['imgcaptcha_verify'])) - error($config['error']['captcha']); - } + if ($post['mod'] = isset($_POST['mod']) && $_POST['mod']) { require 'inc/mod.php'; if (!$mod) { @@ -224,7 +218,7 @@ if (isset($_POST['delete'])) { } if (!$post['mod']) { - $post['antispam_hash'] = checkSpam(array($board['uri'], isset($post['thread']) && !($config['quick_reply'] && isset($_POST['quick-reply'])) ? $post['thread'] : null)); + $post['antispam_hash'] = checkSpam(array($board['uri'], isset($post['thread']) && !($config['quick_reply'] && isset($_POST['quick-reply'])) ? $post['thread'] : ($config['try_smarter'] && isset($_POST['page']) ? 0 - (int)$_POST['page'] : null))); if ($post['antispam_hash'] === true) error($config['error']['spam']); } @@ -235,11 +229,11 @@ if (isset($_POST['delete'])) { //Check if thread exists if (!$post['op']) { - $query = prepare(sprintf("SELECT `sticky`,`locked`,`sage` FROM `posts_%s` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); + $query = prepare(sprintf("SELECT `sticky`,`locked`,`sage` FROM ``posts_%s`` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri'])); $query->bindValue(':id', $post['thread'], PDO::PARAM_INT); $query->execute() or error(db_error()); - if (!$thread = $query->fetch()) { + if (!$thread = $query->fetch(PDO::FETCH_ASSOC)) { // Non-existant error($config['error']['nonexistant']); } @@ -292,7 +286,7 @@ if (isset($_POST['delete'])) { $post['has_file'] = !isset($post['embed']) && (($post['op'] && !isset($post['no_longer_require_an_image_for_op']) && $config['force_image_op']) || (isset($_FILES['file']) && $_FILES['file']['tmp_name'] != '')); if ($post['has_file']) - $post['filename'] = utf8tohtml(get_magic_quotes_gpc() ? stripslashes($_FILES['file']['name']) : $_FILES['file']['name']); + $post['filename'] = urldecode(get_magic_quotes_gpc() ? stripslashes($_FILES['file']['name']) : $_FILES['file']['name']); if (!($post['has_file'] || isset($post['embed'])) || (($post['op'] && $config['force_body_op']) || (!$post['op'] && $config['force_body']))) { $stripped_whitespace = preg_replace('/[\s]/u', '', $post['body']); @@ -355,7 +349,7 @@ if (isset($_POST['delete'])) { } else $noko = false; if ($post['has_file']) { - $post['extension'] = strtolower(substr($post['filename'], strrpos($post['filename'], '.') + 1)); + $post['extension'] = strtolower(mb_substr($post['filename'], mb_strrpos($post['filename'], '.') + 1)); if (isset($config['filename_func'])) $post['file_id'] = $config['filename_func']($post); else @@ -365,6 +359,13 @@ if (isset($_POST['delete'])) { $post['thumb'] = $board['dir'] . $config['dir']['thumb'] . $post['file_id'] . '.' . ($config['thumb_ext'] ? $config['thumb_ext'] : $post['extension']); } + if ($config['strip_combining_chars']) { + $post['name'] = strip_combining_chars($post['name']); + $post['email'] = strip_combining_chars($post['email']); + $post['subject'] = strip_combining_chars($post['subject']); + $post['body'] = strip_combining_chars($post['body']); + } + // Check string lengths if (mb_strlen($post['name']) > 35) error(sprintf($config['error']['toolong'], 'name')); @@ -376,13 +377,32 @@ if (isset($_POST['delete'])) { error($config['error']['toolong_body']); if (mb_strlen($post['password']) > 20) error(sprintf($config['error']['toolong'], 'password')); - + wordfilters($post['body']); + $post['body'] = escape_markup_modifiers($post['body']); - $post['body_nomarkup'] = $post['body']; + if ($mod && isset($post['raw']) && $post['raw']) { + $post['body'] = '' . $post['body'] . ''; + } + + if (mysql_version() >= 50503) { + $post['body_nomarkup'] = $post['body']; // Assume we're using the utf8mb4 charset + } else { + // MySQL's `utf8` charset only supports up to 3-byte symbols + // Remove anything >= 0x010000 + + $chars = preg_split('//u', $post['body'], -1, PREG_SPLIT_NO_EMPTY); + $post['body_nomarkup'] = ''; + foreach ($chars as $char) { + $o = 0; + $ord = ordutf8($char, $o); + if ($ord >= 0x010000) + continue; + $post['body_nomarkup'] .= $char; + } + } - if (!($mod && isset($post['raw']) && $post['raw'])) - $post['tracked_cites'] = markup($post['body'], true); + $post['tracked_cites'] = markup($post['body'], true); // Check for a flood if (!hasPermission($config['mod']['flood'], $board['uri']) && checkFlood($post)) { @@ -400,7 +420,7 @@ if (isset($_POST['delete'])) { $is_an_image = !in_array($post['extension'], $config['allowed_ext_files']); // Truncate filename if it is too long - $post['filename'] = substr($post['filename'], 0, $config['max_filename_len']); + $post['filename'] = mb_substr($post['filename'], 0, $config['max_filename_len']); $upload = $_FILES['file']['tmp_name']; @@ -410,7 +430,7 @@ if (isset($_POST['delete'])) { $post['filehash'] = $config['file_hash']($upload); $post['filesize'] = filesize($upload); - if ($is_an_image) { + if ($is_an_image && $config['ie_mime_type_detection'] !== false) { // Check IE MIME type detection XSS exploit $buffer = file_get_contents($upload, null, null, null, 255); if (preg_match($config['ie_mime_type_detection'], $buffer)) { @@ -428,20 +448,47 @@ if (isset($_POST['delete'])) { error($config['error']['maxsize']); } - // The following code corrects the image orientation based on EXIF. - // Currently only works with the 'convert' option selected but it could easily be expanded to work with the rest if you can be bothered. - if ($config['thumb_method'] == 'convert') { - if ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg') { - $exif = exif_read_data($upload); - if (isset($exif['Orientation']) && $exif['Orientation'] != 1) { - shell_exec('convert ' . escapeshellarg($upload) . ' -auto-orient ' . escapeshellarg($upload)); + + if ($config['convert_auto_orient'] && ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg')) { + // The following code corrects the image orientation. + // Currently only works with the 'convert' option selected but it could easily be expanded to work with the rest if you can be bothered. + if (!($config['redraw_image'] || (($config['strip_exif'] && !$config['use_exiftool']) && ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg')))) { + if (in_array($config['thumb_method'], array('convert', 'convert+gifsicle', 'gm', 'gm+gifsicle'))) { + $exif = @exif_read_data($upload); + $gm = in_array($config['thumb_method'], array('gm', 'gm+gifsicle')); + if (isset($exif['Orientation']) && $exif['Orientation'] != 1) { + if ($config['convert_manual_orient']) { + $error = shell_exec_error(($gm ? 'gm ' : '') . 'convert ' . + escapeshellarg($upload) . ' ' . + ImageConvert::jpeg_exif_orientation(false, $exif) . ' ' . + ($config['strip_exif'] ? '+profile "*"' : + ($config['use_exiftool'] ? '' : '+profile "*"') + ) . ' ' . + escapeshellarg($upload)); + if ($config['use_exiftool'] && !$config['strip_exif']) { + if ($exiftool_error = shell_exec_error( + 'exiftool -q -orientation=1 -n ' . escapeshellarg($upload))) + error('exiftool failed!', null, $exiftool_error); + } else { + // TODO: Find another way to remove the Orientation tag from the EXIF profile + // without needing `exiftool`. + } + } else { + $error = shell_exec_error(($gm ? 'gm ' : '') . 'convert ' . + escapeshellarg($upload) . ' -auto-orient ' . escapeshellarg($upload)); + } + if ($error) + error('Could not auto-orient image!', null, $error); + $size = @getimagesize($upload); + if ($config['strip_exif']) + $post['exif_stripped'] = true; + } } } } // create image object - $image = new Image($upload, $post['extension']); - + $image = new Image($upload, $post['extension'], $size); if ($image->size->width > $config['max_width'] || $image->size->height > $config['max_height']) { $image->delete(); error($config['error']['maxsize']); @@ -481,9 +528,14 @@ if (isset($_POST['delete'])) { $thumb->_destroy(); } - if ($config['redraw_image']) { - $image->to($post['file']); - $dont_copy_file = true; + if ($config['redraw_image'] || (!@$post['exif_stripped'] && $config['strip_exif'] && ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg'))) { + if (!$config['redraw_image'] && $config['use_exiftool']) { + if($error = shell_exec_error('exiftool -ignoreMinorErrors -q -q -all= ' . escapeshellarg($upload))) + error('Could not strip EXIF metadata!', null, $error); + } else { + $image->to($post['file']); + $dont_copy_file = true; + } } $image->destroy(); } else { @@ -497,7 +549,7 @@ if (isset($_POST['delete'])) { } if (!isset($dont_copy_file) || !$dont_copy_file) { - if (!@move_uploaded_file($_FILES['file']['tmp_name'], $post['file'])) + if (!@move_uploaded_file($upload, $post['file'])) error($config['error']['nomove']); } } @@ -544,9 +596,9 @@ if (isset($_POST['delete'])) { // Remove board directories before inserting them into the database. if ($post['has_file']) { $post['file_path'] = $post['file']; - $post['file'] = substr_replace($post['file'], '', 0, mb_strlen($board['dir'] . $config['dir']['img'])); + $post['file'] = mb_substr($post['file'], mb_strlen($board['dir'] . $config['dir']['img'])); if ($is_an_image && $post['thumb'] != 'spoiler') - $post['thumb'] = substr_replace($post['thumb'], '', 0, mb_strlen($board['dir'] . $config['dir']['thumb'])); + $post['thumb'] = mb_substr($post['thumb'], mb_strlen($board['dir'] . $config['dir']['thumb'])); } $post = (object)$post; @@ -564,7 +616,7 @@ if (isset($_POST['delete'])) { if (isset($post['tracked_cites'])) { foreach ($post['tracked_cites'] as $cite) { - $query = prepare('INSERT INTO `cites` VALUES (:board, :post, :target_board, :target)'); + $query = prepare('INSERT INTO ``cites`` VALUES (:board, :post, :target_board, :target)'); $query->bindValue(':board', $board['uri']); $query->bindValue(':post', $id, PDO::PARAM_INT); $query->bindValue(':target_board',$cite[0]); @@ -573,12 +625,15 @@ if (isset($_POST['delete'])) { } } - buildThread($post['op'] ? $id : $post['thread']); - if (!$post['op'] && strtolower($post['email']) != 'sage' && !$thread['sage'] && ($config['reply_limit'] == 0 || $numposts['replies']+1 < $config['reply_limit'])) { bumpThread($post['thread']); } + buildThread($post['op'] ? $id : $post['thread']); + + if ($config['try_smarter'] && $post['op']) + $build_pages = range(1, $config['max_pages']); + if ($post['op']) clean(); diff --git a/search.php b/search.php index 27ddbe15..a40c4701 100644 --- a/search.php +++ b/search.php @@ -17,21 +17,21 @@ $phrase = $_GET['search']; $_body = ''; - $query = prepare("SELECT COUNT(*) FROM `search_queries` WHERE `ip` = :ip AND `time` > :time"); + $query = prepare("SELECT COUNT(*) FROM ``search_queries`` WHERE `ip` = :ip AND `time` > :time"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':time', time() - ($queries_per_minutes[1] * 60)); $query->execute() or error(db_error($query)); if($query->fetchColumn() > $queries_per_minutes[0]) error(_('Wait a while before searching again, please.')); - $query = prepare("SELECT COUNT(*) FROM `search_queries` WHERE `time` > :time"); + $query = prepare("SELECT COUNT(*) FROM ``search_queries`` WHERE `time` > :time"); $query->bindValue(':time', time() - ($queries_per_minutes_all[1] * 60)); $query->execute() or error(db_error($query)); if($query->fetchColumn() > $queries_per_minutes_all[0]) error(_('Wait a while before searching again, please.')); - $query = prepare("INSERT INTO `search_queries` VALUES (:ip, :time, :query)"); + $query = prepare("INSERT INTO ``search_queries`` VALUES (:ip, :time, :query)"); $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); $query->bindValue(':time', time()); $query->bindValue(':query', $phrase); @@ -40,7 +40,7 @@ _syslog(LOG_NOTICE, 'Searched /' . $_GET['board'] . '/ for "' . $phrase . '"'); // Cleanup search queries table - $query = prepare("DELETE FROM `search_queries` WHERE `time` <= :time"); + $query = prepare("DELETE FROM ``search_queries`` WHERE `time` <= :time"); $query->bindValue(':time', time() - ($queries_per_minutes_all[1] * 60)); $query->execute() or error(db_error($query)); @@ -85,6 +85,9 @@ // Use asterisk as wildcard to suit convention $phrase = str_replace('*', '%', $phrase); + // Remove `, it's used by table prefix magic + $phrase = str_replace('`', '!`', $phrase); + $like = ''; $match = Array(); @@ -119,7 +122,7 @@ $like = str_replace('%', '%%', $like); - $query = prepare(sprintf("SELECT * FROM `posts_%s` WHERE " . $like . " ORDER BY `time` DESC LIMIT :limit", $board['uri'])); + $query = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE " . $like . " ORDER BY `time` DESC LIMIT :limit", $board['uri'])); $query->bindValue(':limit', $search_limit, PDO::PARAM_INT); $query->execute() or error(db_error($query)); diff --git a/static/error.png b/static/error.png deleted file mode 100644 index f1ff27a8..00000000 Binary files a/static/error.png and /dev/null differ diff --git a/static/ok.png b/static/ok.png deleted file mode 100644 index cbe92c77..00000000 Binary files a/static/ok.png and /dev/null differ diff --git a/stylesheets/dark.css b/stylesheets/dark.css index 920debe8..0982c278 100644 --- a/stylesheets/dark.css +++ b/stylesheets/dark.css @@ -1,171 +1,176 @@ -/** - * dark.css - * For AwsumChan by Circlepuller - */ -body { - background: #1E1E1E; - color: #999999; - font-family: sans-serif; - font-size: 12px; -} -span.quote { - color:#B8D962; -} -h1 { - font-size: 20pt; - text-align: center; - letter-spacing: 0px; -} -div.title, h1 { - color: #32DD72; - font-family: Arial, Helvetica, sans-serif; -} -div.title p { - font-size: 10px; -} -a:link, a:visited, p.intro a.email span.name { - color: #CCCCCC; - text-decoration: underline; - font-family: sans-serif; -} -a:link:hover, a:visited:hover { - color: #fff; - font-family: sans-serif; - text-decoration: underline overline; - -} -a.post_no { - color: #AAAAAA; - text-decoration: none; -} -a.post_no:hover { - color: #32DD72 !important; - text-decoration: underline overline; -} -div.post.reply { - background: #333333; - border: #555555 1px solid; -} -div.post.reply.highlighted { - background: transparent; - border: transparent 1px solid; -} -div.post.reply div.body a:link, div.post.reply div.body a:visited { - color: #CCCCCC; -} -div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { - color: #32DD72; -} -p.intro span.subject { - font-size: 12px; - font-family: sans-serif; - color: #446655; - font-weight: 800; -} -p.intro span.name { - color: #32DD72; - font-weight: 800; -} -p.intro a.capcode, p.intro a.nametag { - color: magenta; - margin-left: 0; -} -p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name { - color: #32ddaf; -} -input[type="text"], textarea, select { - background: #333333; - color: #CCCCCC; - border: #666666 1px solid; - padding-left: 5px; - padding-right: -5px; - font-family: sans-serif; - font-size: 10pt; -} -input[type="password"] { - background: #333333; - color: #CCCCCC; - border: #666666 1px solid; -} -form table tr th { - background: #333333; - color: #AAAAAA; - font-weight: 800; - text-align: left; - padding: 0; -} -div.banner { - background: #32DD72; - color: #000; - text-align: center; - width: 250px; - padding: 4px; - padding-left: 12px; - padding-right: 12px; - margin-left: auto; - margin-right: auto; - font-size: 12px; -} -div.banner a { - color:#000; -} -input[type="submit"] { - background: #333333; - border: #888888 1px solid; - color: #CCCCCC; -} -input[type="submit"]:hover { - background: #555555; - border: #888888 1px solid; - color: #32DD72; -} -input[type="text"]:focus { - border:#aaa 1px solid; -} -p.fileinfo a:hover { - text-decoration: underline; -} -span.trip { - color: #AAAAAA; -} -div.pages { - color: #AAAAAA; - background: #333333; - border: #666666 1px solid; - font-family: sans-serif; - font-size: 10pt; -} -div.pages a.selected { - color: #CCCCCC; -} -hr { - height: 1px; - border: #333333 1px solid; -} -div.boardlist { - color: #999999; - background-color: rgba(12%, 12%, 12%, 0.10); -} - -div.ban { - background-color: transparent; - border: transparent 0px solid; -} -div.ban h2 { - background: transparent; - color: lime; - font-size: 12px; -} -table.modlog tr th { - background: #333333; - color: #AAAAAA; -} - -.desktop-style div.boardlist:nth-child(1) { - text-shadow: black 1px 1px 1px, black -1px -1px 1px, black -1px 1px 1px, black 1px -1px 1px; -} - - -.desktop-style div.boardlist:nth-child(1):hover { - background-color: rgba(30%, 30%, 30%, 0.65); -} +/** + * dark.css + * For AwsumChan by Circlepuller + */ +body { + background: #1E1E1E; + color: #999999; + font-family: sans-serif; + font-size: 12px; +} +span.quote { + color:#B8D962; +} +h1 { + font-size: 20pt; + text-align: center; + letter-spacing: 0px; +} +div.title, h1 { + color: #32DD72; + font-family: Arial, Helvetica, sans-serif; +} +div.title p { + font-size: 10px; +} +a:link, a:visited, p.intro a.email span.name { + color: #CCCCCC; + text-decoration: none; + font-family: sans-serif; +} +a:link:hover, a:visited:hover { + color: #fff; + font-family: sans-serif; + text-decoration: none; + +} +a.post_no { + color: #AAAAAA; + text-decoration: none; +} +a.post_no:hover { + color: #32DD72 !important; + text-decoration: underline overline; +} +div.post.reply { + background: #333333; + border: #555555 1px solid; + -webkit-border-radius: 10px; + -khtml-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + +} +div.post.reply.highlighted { + background: #555; + border: transparent 1px solid; +} +div.post.reply div.body a:link, div.post.reply div.body a:visited { + color: #CCCCCC; +} +div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { + color: #32DD72; +} +p.intro span.subject { + font-size: 12px; + font-family: sans-serif; + color: #446655; + font-weight: 800; +} +p.intro span.name { + color: #32DD72; + font-weight: 800; +} +p.intro a.capcode, p.intro a.nametag { + color: magenta; + margin-left: 0; +} +p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name { + color: #32ddaf; +} +input[type="text"], textarea, select { + background: #333333; + color: #CCCCCC; + border: #666666 1px solid; + padding-left: 5px; + padding-right: -5px; + font-family: sans-serif; + font-size: 10pt; +} +input[type="password"] { + background: #333333; + color: #CCCCCC; + border: #666666 1px solid; +} +form table tr th { + background: #333333; + color: #AAAAAA; + font-weight: 800; + text-align: left; + padding: 0; +} +div.banner { + background: #32DD72; + color: #000; + text-align: center; + width: 250px; + padding: 4px; + padding-left: 12px; + padding-right: 12px; + margin-left: auto; + margin-right: auto; + font-size: 12px; +} +div.banner a { + color:#000; +} +input[type="submit"] { + background: #333333; + border: #888888 1px solid; + color: #CCCCCC; +} +input[type="submit"]:hover { + background: #555555; + border: #888888 1px solid; + color: #32DD72; +} +input[type="text"]:focus { + border:#aaa 1px solid; +} +p.fileinfo a:hover { + text-decoration: underline; +} +span.trip { + color: #AAAAAA; +} +div.pages { + color: #AAAAAA; + background: #333333; + border: #666666 1px solid; + font-family: sans-serif; + font-size: 10pt; +} +div.pages a.selected { + color: #CCCCCC; +} +hr { + height: 1px; + border: #333333 1px solid; +} +div.boardlist { + color: #999999; + background-color: rgba(12%, 12%, 12%, 0.10); +} + +div.ban { + background-color: transparent; + border: transparent 0px solid; +} +div.ban h2 { + background: transparent; + color: lime; + font-size: 12px; +} +table.modlog tr th { + background: #333333; + color: #AAAAAA; +} + +.desktop-style div.boardlist:nth-child(1) { + text-shadow: black 1px 1px 1px, black -1px -1px 1px, black -1px 1px 1px, black 1px -1px 1px; +} + + +.desktop-style div.boardlist:nth-child(1):hover { + background-color: rgba(30%, 30%, 30%, 0.65); +} diff --git a/stylesheets/ferus.css b/stylesheets/ferus.css new file mode 100644 index 00000000..5dbf11ed --- /dev/null +++ b/stylesheets/ferus.css @@ -0,0 +1,150 @@ +body { + background: #050505; + color: #00FF00; + font-family: monospace; + font-size: 11px; +} +h1 { + font-size: 20pt; + text-align: center; + letter-spacing: 0px; +} +div.title, h1 { + color: #00FF00; + font-family: Arial, Helvetica, sans-serif; +} +div.title p { + font-size: 13px; +} +a:link, a:visited, p.intro a.email span.name { + color: #16C816; + text-decoration: underline; + font-family: monospace; +} +a:link:hover, a:visited:hover { + color: #003C00; + font-family: monospace;; + text-decoration: underline overline; +} +a.post_no { + color: #464646; + text-decoration: none; +} +a.post_no:hover { + color: maroon; + text-decoration: underline overline; +} +div.post.reply { + background: #0E0E0E; + border: #414141 2px solid; +} +.de-pview { + background: rgba(14, 14, 14, 0.84) !important; +} +div.post.reply.highlighted { + background: transparent; + border: #414141 2px solid; +} +div.post.reply div.body a:link, div.post.reply div.body a:visited { + color: #646464; +} +div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { + color: #00FF00; +} +p.intro span.subject { + font-size: 12px; + font-family: monospace; + color: #446655; + font-weight: 800; +} +p.intro span.name { + color: #008200; + font-weight: 900; +} +p.intro a.capcode, p.intro a.nametag { + color: magenta; + margin-left: 0; +} +p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name { + color: #00CC64; + font-family: monospace; +} +input[type="text"], textarea, select { + background: #333333; + color: #CCCCCC; + border: #666666 1px solid; + padding-left: 5px; + padding-right: -5px; + font-family: monospace; + font-size: 10pt; +} +input[type="password"] { + background: #333333; + color: #8B8B8B; + border: #666666 1px solid; +} +form table tr th { + background: #333333; + color: #828282; + font-weight: 800; + text-align: left; + padding: 0; +} +div.banner { + background: #00AA00; + color: #646464; + text-align: center; + width: 250px; + padding: 4px; + padding-left: 12px; + padding-right: 12px; + margin-left: auto; + margin-right: auto; + font-size: 12px; +} +input[type="submit"] { + background: #333333; + border: #888888 1px solid; + color: #A0A0A0; +} +input[type="submit"]:hover { + background: #555555; + border: #888888 1px solid; + color: #00FF00; +} +p.fileinfo a:hover { + text-decoration: underline; +} +span.trip { + color: #AAAAAA; +} +div.pages { + color: #AAAAAA; + background: #333333; + border: #666666 1px solid; + font-family: sans-serif; + font-size: 10pt; +} +div.pages a.selected { + color: #8C8C8C; +} +hr { + height: 1px; + border: #333333 1px solid; +} +div.boardlist { + color: #999999; +} +div.ban { + background-color: transparent; + border: transparent 0px solid; +} +div.ban h2 { + background: transparent; + color: lime; + font-size: 12px; +} +table.modlog tr th { + background: #00FF00; + color: #AAAAAA; +} \ No newline at end of file diff --git a/stylesheets/font-awesome/css/font-awesome-ie7.css b/stylesheets/font-awesome/css/font-awesome-ie7.css new file mode 100644 index 00000000..17f07766 --- /dev/null +++ b/stylesheets/font-awesome/css/font-awesome-ie7.css @@ -0,0 +1,1203 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ +.icon-large { + font-size: 1.3333333333333333em; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + vertical-align: middle; +} +.nav [class^="icon-"], +.nav [class*=" icon-"] { + vertical-align: inherit; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; +} +.nav [class^="icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + vertical-align: -25%; +} +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large { + line-height: .75em; + margin-top: -7px; + padding-top: 5px; + margin-bottom: -5px; + padding-bottom: 4px; +} +.btn [class^="icon-"].pull-left, +.btn [class*=" icon-"].pull-left, +.btn [class^="icon-"].pull-right, +.btn [class*=" icon-"].pull-right { + vertical-align: inherit; +} +.btn [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large { + margin-top: -0.5em; +} +a [class^="icon-"], +a [class*=" icon-"] { + cursor: pointer; +} +.icon-glass { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-music { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-search { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-envelope-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-heart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-user { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-film { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th-large { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-th-list { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-zoom-in { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-zoom-out { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-power-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cog { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gear { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trash { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-home { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-time { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-road { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-download-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-download { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-upload { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-inbox { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-repeat { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rotate-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-refresh { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lock { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flag { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-headphones { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-volume-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-qrcode { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-barcode { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tag { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tags { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-book { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bookmark { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-print { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-camera { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-font { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bold { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-italic { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-text-height { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-text-width { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-center { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-align-justify { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-indent-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-indent-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facetime-video { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-picture { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pencil { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-map-marker { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-adjust { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tint { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-edit { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-move { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-step-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fast-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-backward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pause { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fast-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-step-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eject { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-question-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-info-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-screenshot { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-remove-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ok-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ban-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mail-forward { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-full { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-small { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-asterisk { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exclamation-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gift { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-leaf { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fire { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eye-open { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eye-close { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-warning-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plane { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-calendar { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-random { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comment { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-magnet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-retweet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-shopping-cart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-close { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-open { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-vertical { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-resize-horizontal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bar-chart { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-twitter-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facebook-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-camera-retro { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-key { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cogs { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gears { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comments { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-up-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-down-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-half { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-heart-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signout { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linkedin-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pushpin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-external-link { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-signin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trophy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-upload-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lemon { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-phone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unchecked { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bookmark-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-phone-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-twitter { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-facebook { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unlock { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-credit-card { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rss { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hdd { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bullhorn { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bell { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-certificate { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hand-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-globe { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-wrench { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tasks { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-filter { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-briefcase { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fullscreen { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-group { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-link { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-beaker { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cut { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-copy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paper-clip { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paperclip { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-save { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sign-blank { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reorder { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-ul { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-list-ol { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-strikethrough { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-underline { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-table { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-magic { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-truck { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pinterest { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-pinterest-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-google-plus-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-google-plus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-money { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-caret-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-columns { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-envelope { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linkedin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-undo { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rotate-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-legal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dashboard { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comment-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-comments-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bolt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sitemap { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-umbrella { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-paste { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-lightbulb { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exchange { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud-download { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cloud-upload { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-user-md { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stethoscope { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-suitcase { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bell-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-coffee { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-food { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file-text-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-building { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-hospital { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ambulance { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-medkit { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fighter-jet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-beer { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-h-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-plus-sign-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-double-angle-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-angle-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-desktop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-laptop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tablet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mobile-phone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle-blank { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-quote-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-quote-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-spinner { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-circle { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reply { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mail-reply { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-github-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-close-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-folder-open-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-expand-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-collapse-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-smile { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-frown { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-meh { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gamepad { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-keyboard { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flag-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flag-checkered { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-terminal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-code { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-reply-all { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-mail-reply-all { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-half-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-star-half-full { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-location-arrow { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-crop { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-code-fork { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unlink { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-question { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-info { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-exclamation { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-superscript { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-subscript { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eraser { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-puzzle-piece { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-microphone { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-microphone-off { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-shield { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-calendar-empty { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-fire-extinguisher { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rocket { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-maxcdn { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-chevron-sign-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-html5 { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-css3 { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-anchor { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-unlock-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bullseye { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ellipsis-horizontal { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ellipsis-vertical { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rss-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-play-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-ticket { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-minus-sign-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check-minus { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-level-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-level-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-check-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-edit-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-external-link-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-share-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-compass { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-collapse { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-collapse-top { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-expand { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-eur { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-euro { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gbp { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-usd { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dollar { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-inr { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-rupee { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-jpy { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-yen { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-cny { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-renminbi { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-krw { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-won { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-btc { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bitcoin { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-file-text { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-alphabet { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-alphabet-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-attributes { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-attributes-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-order { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sort-by-order-alt { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-thumbs-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-youtube-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-youtube { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-xing { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-xing-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-youtube-play { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dropbox { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-stackexchange { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-instagram { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-flickr { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-adn { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bitbucket { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bitbucket-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tumblr { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-tumblr-sign { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-down { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-up { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-left { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-long-arrow-right { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-apple { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-windows { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-android { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-linux { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-dribbble { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-skype { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-foursquare { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-trello { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-female { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-male { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-gittip { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-sun { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-moon { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-archive { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-bug { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-vk { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-weibo { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} +.icon-renren { + *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); +} diff --git a/stylesheets/font-awesome/css/font-awesome-ie7.min.css b/stylesheets/font-awesome/css/font-awesome-ie7.min.css new file mode 100644 index 00000000..d3dae63b --- /dev/null +++ b/stylesheets/font-awesome/css/font-awesome-ie7.min.css @@ -0,0 +1,384 @@ +.icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle;} +.nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;}.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%;} +.nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px;} +.btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit;} +.btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em;} +a [class^="icon-"],a [class*=" icon-"]{cursor:pointer;} +.icon-glass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-music{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-search{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-envelope-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-heart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-user{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-film{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th-large{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-zoom-in{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-zoom-out{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-power-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cog{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gear{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trash{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-home{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-time{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-road{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-download-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-inbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-repeat{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rotate-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-refresh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-headphones{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-qrcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-barcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tags{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-book{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bookmark{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-print{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-camera{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-font{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bold{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-italic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-text-height{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-text-width{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-center{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-justify{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-indent-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-indent-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facetime-video{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-picture{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pencil{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-map-marker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-adjust{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tint{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-edit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-move{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-step-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fast-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pause{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fast-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-step-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eject{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-question-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-info-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-screenshot{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ban-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-small{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-asterisk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exclamation-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gift{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-leaf{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fire{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eye-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eye-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-warning-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plane{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-calendar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-random{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comment{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-magnet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-retweet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-shopping-cart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bar-chart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-twitter-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facebook-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-camera-retro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-key{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cogs{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gears{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comments{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-up-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-down-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-heart-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signout{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linkedin-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pushpin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-external-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trophy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-upload-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lemon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unchecked{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bookmark-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-phone-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-twitter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facebook{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-credit-card{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rss{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hdd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bullhorn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bell{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-certificate{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-globe{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-wrench{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tasks{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-filter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-briefcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fullscreen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-group{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-beaker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cut{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-copy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paper-clip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paperclip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-save{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sign-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reorder{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-ul{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-ol{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-strikethrough{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-underline{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-table{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-magic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-truck{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pinterest{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pinterest-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-google-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-google-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-money{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-columns{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-envelope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linkedin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-undo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rotate-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-legal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dashboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comment-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comments-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bolt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sitemap{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-umbrella{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paste{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lightbulb{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-user-md{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stethoscope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-suitcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bell-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-coffee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-food{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-text-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-building{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hospital{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ambulance{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-medkit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fighter-jet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-beer{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-h-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-desktop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-laptop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tablet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mobile-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-quote-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-quote-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-spinner{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-close-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-open-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-expand-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-smile{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-frown{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-meh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gamepad{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-keyboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag-checkered{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-terminal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-code{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-location-arrow{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-crop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-code-fork{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlink{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-question{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-info{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exclamation{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-superscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-subscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eraser{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-puzzle-piece{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-microphone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-microphone-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-shield{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-calendar-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fire-extinguisher{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rocket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-maxcdn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-html5{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-css3{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-anchor{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlock-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bullseye{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ellipsis-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ellipsis-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rss-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ticket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-level-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-level-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-edit-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-external-link-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-compass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse-top{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-expand{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eur{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-euro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gbp{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-usd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dollar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-inr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rupee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-jpy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-yen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cny{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-renminbi{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-krw{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-won{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-btc{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitcoin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-text{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-alphabet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-alphabet-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-attributes{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-attributes-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-order{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-order-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-xing{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-xing-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dropbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stackexchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-instagram{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flickr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-adn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitbucket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitbucket-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tumblr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tumblr-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-apple{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-windows{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-android{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linux{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dribbble{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-skype{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-foursquare{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trello{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-female{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-male{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gittip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sun{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-moon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-archive{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bug{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-vk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-weibo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-renren{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} diff --git a/stylesheets/font-awesome/css/font-awesome.css b/stylesheets/font-awesome/css/font-awesome.css new file mode 100644 index 00000000..7ede1828 --- /dev/null +++ b/stylesheets/font-awesome/css/font-awesome.css @@ -0,0 +1,1479 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../font/fontawesome-webfont.eot?v=3.2.1'); + src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg'); + font-weight: normal; + font-style: normal; +} +/* FONT AWESOME CORE + * -------------------------- */ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: 1.3333333333333333em; +} +/* makes sure icons active on rollover in links */ +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; +} +/* increased font size for icon-large */ +[class^="icon-"].icon-fixed-width, +[class*=" icon-"].icon-fixed-width { + display: inline-block; + width: 1.1428571428571428em; + text-align: right; + padding-right: 0.2857142857142857em; +} +[class^="icon-"].icon-fixed-width.icon-large, +[class*=" icon-"].icon-fixed-width.icon-large { + width: 1.4285714285714286em; +} +.icons-ul { + margin-left: 2.142857142857143em; + list-style-type: none; +} +.icons-ul > li { + position: relative; +} +.icons-ul .icon-li { + position: absolute; + left: -2.142857142857143em; + width: 2.142857142857143em; + text-align: center; + line-height: inherit; +} +[class^="icon-"].hide, +[class*=" icon-"].hide { + display: none; +} +.icon-muted { + color: #eeeeee; +} +.icon-light { + color: #ffffff; +} +.icon-dark { + color: #333333; +} +.icon-border { + border: solid 1px #eeeeee; + padding: .2em .25em .15em; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.icon-2x { + font-size: 2em; +} +.icon-2x.icon-border { + border-width: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.icon-3x { + font-size: 3em; +} +.icon-3x.icon-border { + border-width: 3px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.icon-4x { + font-size: 4em; +} +.icon-4x.icon-border { + border-width: 4px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.icon-5x { + font-size: 5em; +} +.icon-5x.icon-border { + border-width: 5px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +[class^="icon-"].pull-left, +[class*=" icon-"].pull-left { + margin-right: .3em; +} +[class^="icon-"].pull-right, +[class*=" icon-"].pull-right { + margin-left: .3em; +} +/* BOOTSTRAP SPECIFIC CLASSES + * -------------------------- */ +/* Bootstrap 2.0 sprites.less reset */ +[class^="icon-"], +[class*=" icon-"] { + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} +/* keeps Bootstrap styles with and without icons the same */ +.btn [class^="icon-"].icon-large, +.nav [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].icon-spin, +.nav [class^="icon-"].icon-spin, +.btn [class*=" icon-"].icon-spin, +.nav [class*=" icon-"].icon-spin { + display: inline-block; +} +.nav-tabs [class^="icon-"], +.nav-pills [class^="icon-"], +.nav-tabs [class*=" icon-"], +.nav-pills [class*=" icon-"], +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].pull-left.icon-2x, +.btn [class*=" icon-"].pull-left.icon-2x, +.btn [class^="icon-"].pull-right.icon-2x, +.btn [class*=" icon-"].pull-right.icon-2x { + margin-top: .18em; +} +.btn [class^="icon-"].icon-spin.icon-large, +.btn [class*=" icon-"].icon-spin.icon-large { + line-height: .8em; +} +.btn.btn-small [class^="icon-"].pull-left.icon-2x, +.btn.btn-small [class*=" icon-"].pull-left.icon-2x, +.btn.btn-small [class^="icon-"].pull-right.icon-2x, +.btn.btn-small [class*=" icon-"].pull-right.icon-2x { + margin-top: .25em; +} +.btn.btn-large [class^="icon-"], +.btn.btn-large [class*=" icon-"] { + margin-top: 0; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x, +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-top: .05em; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x { + margin-right: .2em; +} +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-left: .2em; +} +/* Fixes alignment in nav lists */ +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + line-height: inherit; +} +/* EXTRAS + * -------------------------- */ +/* Stacked and layered icon */ +.icon-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: -35%; +} +.icon-stack [class^="icon-"], +.icon-stack [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: 1em; + line-height: inherit; + *line-height: 2em; +} +.icon-stack .icon-stack-base { + font-size: 2em; + *line-height: 1em; +} +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +/* Prevent stack and spinners from being taken inline when inside a link */ +a .icon-stack, +a .icon-spin { + display: inline-block; + text-decoration: none; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +/* ensure rotation occurs inside anchor tags */ +a .icon-rotate-90:before, +a .icon-rotate-180:before, +a .icon-rotate-270:before, +a .icon-flip-horizontal:before, +a .icon-flip-vertical:before { + display: inline-block; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-glass:before { + content: "\f000"; +} +.icon-music:before { + content: "\f001"; +} +.icon-search:before { + content: "\f002"; +} +.icon-envelope-alt:before { + content: "\f003"; +} +.icon-heart:before { + content: "\f004"; +} +.icon-star:before { + content: "\f005"; +} +.icon-star-empty:before { + content: "\f006"; +} +.icon-user:before { + content: "\f007"; +} +.icon-film:before { + content: "\f008"; +} +.icon-th-large:before { + content: "\f009"; +} +.icon-th:before { + content: "\f00a"; +} +.icon-th-list:before { + content: "\f00b"; +} +.icon-ok:before { + content: "\f00c"; +} +.icon-remove:before { + content: "\f00d"; +} +.icon-zoom-in:before { + content: "\f00e"; +} +.icon-zoom-out:before { + content: "\f010"; +} +.icon-power-off:before, +.icon-off:before { + content: "\f011"; +} +.icon-signal:before { + content: "\f012"; +} +.icon-gear:before, +.icon-cog:before { + content: "\f013"; +} +.icon-trash:before { + content: "\f014"; +} +.icon-home:before { + content: "\f015"; +} +.icon-file-alt:before { + content: "\f016"; +} +.icon-time:before { + content: "\f017"; +} +.icon-road:before { + content: "\f018"; +} +.icon-download-alt:before { + content: "\f019"; +} +.icon-download:before { + content: "\f01a"; +} +.icon-upload:before { + content: "\f01b"; +} +.icon-inbox:before { + content: "\f01c"; +} +.icon-play-circle:before { + content: "\f01d"; +} +.icon-rotate-right:before, +.icon-repeat:before { + content: "\f01e"; +} +.icon-refresh:before { + content: "\f021"; +} +.icon-list-alt:before { + content: "\f022"; +} +.icon-lock:before { + content: "\f023"; +} +.icon-flag:before { + content: "\f024"; +} +.icon-headphones:before { + content: "\f025"; +} +.icon-volume-off:before { + content: "\f026"; +} +.icon-volume-down:before { + content: "\f027"; +} +.icon-volume-up:before { + content: "\f028"; +} +.icon-qrcode:before { + content: "\f029"; +} +.icon-barcode:before { + content: "\f02a"; +} +.icon-tag:before { + content: "\f02b"; +} +.icon-tags:before { + content: "\f02c"; +} +.icon-book:before { + content: "\f02d"; +} +.icon-bookmark:before { + content: "\f02e"; +} +.icon-print:before { + content: "\f02f"; +} +.icon-camera:before { + content: "\f030"; +} +.icon-font:before { + content: "\f031"; +} +.icon-bold:before { + content: "\f032"; +} +.icon-italic:before { + content: "\f033"; +} +.icon-text-height:before { + content: "\f034"; +} +.icon-text-width:before { + content: "\f035"; +} +.icon-align-left:before { + content: "\f036"; +} +.icon-align-center:before { + content: "\f037"; +} +.icon-align-right:before { + content: "\f038"; +} +.icon-align-justify:before { + content: "\f039"; +} +.icon-list:before { + content: "\f03a"; +} +.icon-indent-left:before { + content: "\f03b"; +} +.icon-indent-right:before { + content: "\f03c"; +} +.icon-facetime-video:before { + content: "\f03d"; +} +.icon-picture:before { + content: "\f03e"; +} +.icon-pencil:before { + content: "\f040"; +} +.icon-map-marker:before { + content: "\f041"; +} +.icon-adjust:before { + content: "\f042"; +} +.icon-tint:before { + content: "\f043"; +} +.icon-edit:before { + content: "\f044"; +} +.icon-share:before { + content: "\f045"; +} +.icon-check:before { + content: "\f046"; +} +.icon-move:before { + content: "\f047"; +} +.icon-step-backward:before { + content: "\f048"; +} +.icon-fast-backward:before { + content: "\f049"; +} +.icon-backward:before { + content: "\f04a"; +} +.icon-play:before { + content: "\f04b"; +} +.icon-pause:before { + content: "\f04c"; +} +.icon-stop:before { + content: "\f04d"; +} +.icon-forward:before { + content: "\f04e"; +} +.icon-fast-forward:before { + content: "\f050"; +} +.icon-step-forward:before { + content: "\f051"; +} +.icon-eject:before { + content: "\f052"; +} +.icon-chevron-left:before { + content: "\f053"; +} +.icon-chevron-right:before { + content: "\f054"; +} +.icon-plus-sign:before { + content: "\f055"; +} +.icon-minus-sign:before { + content: "\f056"; +} +.icon-remove-sign:before { + content: "\f057"; +} +.icon-ok-sign:before { + content: "\f058"; +} +.icon-question-sign:before { + content: "\f059"; +} +.icon-info-sign:before { + content: "\f05a"; +} +.icon-screenshot:before { + content: "\f05b"; +} +.icon-remove-circle:before { + content: "\f05c"; +} +.icon-ok-circle:before { + content: "\f05d"; +} +.icon-ban-circle:before { + content: "\f05e"; +} +.icon-arrow-left:before { + content: "\f060"; +} +.icon-arrow-right:before { + content: "\f061"; +} +.icon-arrow-up:before { + content: "\f062"; +} +.icon-arrow-down:before { + content: "\f063"; +} +.icon-mail-forward:before, +.icon-share-alt:before { + content: "\f064"; +} +.icon-resize-full:before { + content: "\f065"; +} +.icon-resize-small:before { + content: "\f066"; +} +.icon-plus:before { + content: "\f067"; +} +.icon-minus:before { + content: "\f068"; +} +.icon-asterisk:before { + content: "\f069"; +} +.icon-exclamation-sign:before { + content: "\f06a"; +} +.icon-gift:before { + content: "\f06b"; +} +.icon-leaf:before { + content: "\f06c"; +} +.icon-fire:before { + content: "\f06d"; +} +.icon-eye-open:before { + content: "\f06e"; +} +.icon-eye-close:before { + content: "\f070"; +} +.icon-warning-sign:before { + content: "\f071"; +} +.icon-plane:before { + content: "\f072"; +} +.icon-calendar:before { + content: "\f073"; +} +.icon-random:before { + content: "\f074"; +} +.icon-comment:before { + content: "\f075"; +} +.icon-magnet:before { + content: "\f076"; +} +.icon-chevron-up:before { + content: "\f077"; +} +.icon-chevron-down:before { + content: "\f078"; +} +.icon-retweet:before { + content: "\f079"; +} +.icon-shopping-cart:before { + content: "\f07a"; +} +.icon-folder-close:before { + content: "\f07b"; +} +.icon-folder-open:before { + content: "\f07c"; +} +.icon-resize-vertical:before { + content: "\f07d"; +} +.icon-resize-horizontal:before { + content: "\f07e"; +} +.icon-bar-chart:before { + content: "\f080"; +} +.icon-twitter-sign:before { + content: "\f081"; +} +.icon-facebook-sign:before { + content: "\f082"; +} +.icon-camera-retro:before { + content: "\f083"; +} +.icon-key:before { + content: "\f084"; +} +.icon-gears:before, +.icon-cogs:before { + content: "\f085"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-thumbs-up-alt:before { + content: "\f087"; +} +.icon-thumbs-down-alt:before { + content: "\f088"; +} +.icon-star-half:before { + content: "\f089"; +} +.icon-heart-empty:before { + content: "\f08a"; +} +.icon-signout:before { + content: "\f08b"; +} +.icon-linkedin-sign:before { + content: "\f08c"; +} +.icon-pushpin:before { + content: "\f08d"; +} +.icon-external-link:before { + content: "\f08e"; +} +.icon-signin:before { + content: "\f090"; +} +.icon-trophy:before { + content: "\f091"; +} +.icon-github-sign:before { + content: "\f092"; +} +.icon-upload-alt:before { + content: "\f093"; +} +.icon-lemon:before { + content: "\f094"; +} +.icon-phone:before { + content: "\f095"; +} +.icon-unchecked:before, +.icon-check-empty:before { + content: "\f096"; +} +.icon-bookmark-empty:before { + content: "\f097"; +} +.icon-phone-sign:before { + content: "\f098"; +} +.icon-twitter:before { + content: "\f099"; +} +.icon-facebook:before { + content: "\f09a"; +} +.icon-github:before { + content: "\f09b"; +} +.icon-unlock:before { + content: "\f09c"; +} +.icon-credit-card:before { + content: "\f09d"; +} +.icon-rss:before { + content: "\f09e"; +} +.icon-hdd:before { + content: "\f0a0"; +} +.icon-bullhorn:before { + content: "\f0a1"; +} +.icon-bell:before { + content: "\f0a2"; +} +.icon-certificate:before { + content: "\f0a3"; +} +.icon-hand-right:before { + content: "\f0a4"; +} +.icon-hand-left:before { + content: "\f0a5"; +} +.icon-hand-up:before { + content: "\f0a6"; +} +.icon-hand-down:before { + content: "\f0a7"; +} +.icon-circle-arrow-left:before { + content: "\f0a8"; +} +.icon-circle-arrow-right:before { + content: "\f0a9"; +} +.icon-circle-arrow-up:before { + content: "\f0aa"; +} +.icon-circle-arrow-down:before { + content: "\f0ab"; +} +.icon-globe:before { + content: "\f0ac"; +} +.icon-wrench:before { + content: "\f0ad"; +} +.icon-tasks:before { + content: "\f0ae"; +} +.icon-filter:before { + content: "\f0b0"; +} +.icon-briefcase:before { + content: "\f0b1"; +} +.icon-fullscreen:before { + content: "\f0b2"; +} +.icon-group:before { + content: "\f0c0"; +} +.icon-link:before { + content: "\f0c1"; +} +.icon-cloud:before { + content: "\f0c2"; +} +.icon-beaker:before { + content: "\f0c3"; +} +.icon-cut:before { + content: "\f0c4"; +} +.icon-copy:before { + content: "\f0c5"; +} +.icon-paperclip:before, +.icon-paper-clip:before { + content: "\f0c6"; +} +.icon-save:before { + content: "\f0c7"; +} +.icon-sign-blank:before { + content: "\f0c8"; +} +.icon-reorder:before { + content: "\f0c9"; +} +.icon-list-ul:before { + content: "\f0ca"; +} +.icon-list-ol:before { + content: "\f0cb"; +} +.icon-strikethrough:before { + content: "\f0cc"; +} +.icon-underline:before { + content: "\f0cd"; +} +.icon-table:before { + content: "\f0ce"; +} +.icon-magic:before { + content: "\f0d0"; +} +.icon-truck:before { + content: "\f0d1"; +} +.icon-pinterest:before { + content: "\f0d2"; +} +.icon-pinterest-sign:before { + content: "\f0d3"; +} +.icon-google-plus-sign:before { + content: "\f0d4"; +} +.icon-google-plus:before { + content: "\f0d5"; +} +.icon-money:before { + content: "\f0d6"; +} +.icon-caret-down:before { + content: "\f0d7"; +} +.icon-caret-up:before { + content: "\f0d8"; +} +.icon-caret-left:before { + content: "\f0d9"; +} +.icon-caret-right:before { + content: "\f0da"; +} +.icon-columns:before { + content: "\f0db"; +} +.icon-sort:before { + content: "\f0dc"; +} +.icon-sort-down:before { + content: "\f0dd"; +} +.icon-sort-up:before { + content: "\f0de"; +} +.icon-envelope:before { + content: "\f0e0"; +} +.icon-linkedin:before { + content: "\f0e1"; +} +.icon-rotate-left:before, +.icon-undo:before { + content: "\f0e2"; +} +.icon-legal:before { + content: "\f0e3"; +} +.icon-dashboard:before { + content: "\f0e4"; +} +.icon-comment-alt:before { + content: "\f0e5"; +} +.icon-comments-alt:before { + content: "\f0e6"; +} +.icon-bolt:before { + content: "\f0e7"; +} +.icon-sitemap:before { + content: "\f0e8"; +} +.icon-umbrella:before { + content: "\f0e9"; +} +.icon-paste:before { + content: "\f0ea"; +} +.icon-lightbulb:before { + content: "\f0eb"; +} +.icon-exchange:before { + content: "\f0ec"; +} +.icon-cloud-download:before { + content: "\f0ed"; +} +.icon-cloud-upload:before { + content: "\f0ee"; +} +.icon-user-md:before { + content: "\f0f0"; +} +.icon-stethoscope:before { + content: "\f0f1"; +} +.icon-suitcase:before { + content: "\f0f2"; +} +.icon-bell-alt:before { + content: "\f0f3"; +} +.icon-coffee:before { + content: "\f0f4"; +} +.icon-food:before { + content: "\f0f5"; +} +.icon-file-text-alt:before { + content: "\f0f6"; +} +.icon-building:before { + content: "\f0f7"; +} +.icon-hospital:before { + content: "\f0f8"; +} +.icon-ambulance:before { + content: "\f0f9"; +} +.icon-medkit:before { + content: "\f0fa"; +} +.icon-fighter-jet:before { + content: "\f0fb"; +} +.icon-beer:before { + content: "\f0fc"; +} +.icon-h-sign:before { + content: "\f0fd"; +} +.icon-plus-sign-alt:before { + content: "\f0fe"; +} +.icon-double-angle-left:before { + content: "\f100"; +} +.icon-double-angle-right:before { + content: "\f101"; +} +.icon-double-angle-up:before { + content: "\f102"; +} +.icon-double-angle-down:before { + content: "\f103"; +} +.icon-angle-left:before { + content: "\f104"; +} +.icon-angle-right:before { + content: "\f105"; +} +.icon-angle-up:before { + content: "\f106"; +} +.icon-angle-down:before { + content: "\f107"; +} +.icon-desktop:before { + content: "\f108"; +} +.icon-laptop:before { + content: "\f109"; +} +.icon-tablet:before { + content: "\f10a"; +} +.icon-mobile-phone:before { + content: "\f10b"; +} +.icon-circle-blank:before { + content: "\f10c"; +} +.icon-quote-left:before { + content: "\f10d"; +} +.icon-quote-right:before { + content: "\f10e"; +} +.icon-spinner:before { + content: "\f110"; +} +.icon-circle:before { + content: "\f111"; +} +.icon-mail-reply:before, +.icon-reply:before { + content: "\f112"; +} +.icon-github-alt:before { + content: "\f113"; +} +.icon-folder-close-alt:before { + content: "\f114"; +} +.icon-folder-open-alt:before { + content: "\f115"; +} +.icon-expand-alt:before { + content: "\f116"; +} +.icon-collapse-alt:before { + content: "\f117"; +} +.icon-smile:before { + content: "\f118"; +} +.icon-frown:before { + content: "\f119"; +} +.icon-meh:before { + content: "\f11a"; +} +.icon-gamepad:before { + content: "\f11b"; +} +.icon-keyboard:before { + content: "\f11c"; +} +.icon-flag-alt:before { + content: "\f11d"; +} +.icon-flag-checkered:before { + content: "\f11e"; +} +.icon-terminal:before { + content: "\f120"; +} +.icon-code:before { + content: "\f121"; +} +.icon-reply-all:before { + content: "\f122"; +} +.icon-mail-reply-all:before { + content: "\f122"; +} +.icon-star-half-full:before, +.icon-star-half-empty:before { + content: "\f123"; +} +.icon-location-arrow:before { + content: "\f124"; +} +.icon-crop:before { + content: "\f125"; +} +.icon-code-fork:before { + content: "\f126"; +} +.icon-unlink:before { + content: "\f127"; +} +.icon-question:before { + content: "\f128"; +} +.icon-info:before { + content: "\f129"; +} +.icon-exclamation:before { + content: "\f12a"; +} +.icon-superscript:before { + content: "\f12b"; +} +.icon-subscript:before { + content: "\f12c"; +} +.icon-eraser:before { + content: "\f12d"; +} +.icon-puzzle-piece:before { + content: "\f12e"; +} +.icon-microphone:before { + content: "\f130"; +} +.icon-microphone-off:before { + content: "\f131"; +} +.icon-shield:before { + content: "\f132"; +} +.icon-calendar-empty:before { + content: "\f133"; +} +.icon-fire-extinguisher:before { + content: "\f134"; +} +.icon-rocket:before { + content: "\f135"; +} +.icon-maxcdn:before { + content: "\f136"; +} +.icon-chevron-sign-left:before { + content: "\f137"; +} +.icon-chevron-sign-right:before { + content: "\f138"; +} +.icon-chevron-sign-up:before { + content: "\f139"; +} +.icon-chevron-sign-down:before { + content: "\f13a"; +} +.icon-html5:before { + content: "\f13b"; +} +.icon-css3:before { + content: "\f13c"; +} +.icon-anchor:before { + content: "\f13d"; +} +.icon-unlock-alt:before { + content: "\f13e"; +} +.icon-bullseye:before { + content: "\f140"; +} +.icon-ellipsis-horizontal:before { + content: "\f141"; +} +.icon-ellipsis-vertical:before { + content: "\f142"; +} +.icon-rss-sign:before { + content: "\f143"; +} +.icon-play-sign:before { + content: "\f144"; +} +.icon-ticket:before { + content: "\f145"; +} +.icon-minus-sign-alt:before { + content: "\f146"; +} +.icon-check-minus:before { + content: "\f147"; +} +.icon-level-up:before { + content: "\f148"; +} +.icon-level-down:before { + content: "\f149"; +} +.icon-check-sign:before { + content: "\f14a"; +} +.icon-edit-sign:before { + content: "\f14b"; +} +.icon-external-link-sign:before { + content: "\f14c"; +} +.icon-share-sign:before { + content: "\f14d"; +} +.icon-compass:before { + content: "\f14e"; +} +.icon-collapse:before { + content: "\f150"; +} +.icon-collapse-top:before { + content: "\f151"; +} +.icon-expand:before { + content: "\f152"; +} +.icon-euro:before, +.icon-eur:before { + content: "\f153"; +} +.icon-gbp:before { + content: "\f154"; +} +.icon-dollar:before, +.icon-usd:before { + content: "\f155"; +} +.icon-rupee:before, +.icon-inr:before { + content: "\f156"; +} +.icon-yen:before, +.icon-jpy:before { + content: "\f157"; +} +.icon-renminbi:before, +.icon-cny:before { + content: "\f158"; +} +.icon-won:before, +.icon-krw:before { + content: "\f159"; +} +.icon-bitcoin:before, +.icon-btc:before { + content: "\f15a"; +} +.icon-file:before { + content: "\f15b"; +} +.icon-file-text:before { + content: "\f15c"; +} +.icon-sort-by-alphabet:before { + content: "\f15d"; +} +.icon-sort-by-alphabet-alt:before { + content: "\f15e"; +} +.icon-sort-by-attributes:before { + content: "\f160"; +} +.icon-sort-by-attributes-alt:before { + content: "\f161"; +} +.icon-sort-by-order:before { + content: "\f162"; +} +.icon-sort-by-order-alt:before { + content: "\f163"; +} +.icon-thumbs-up:before { + content: "\f164"; +} +.icon-thumbs-down:before { + content: "\f165"; +} +.icon-youtube-sign:before { + content: "\f166"; +} +.icon-youtube:before { + content: "\f167"; +} +.icon-xing:before { + content: "\f168"; +} +.icon-xing-sign:before { + content: "\f169"; +} +.icon-youtube-play:before { + content: "\f16a"; +} +.icon-dropbox:before { + content: "\f16b"; +} +.icon-stackexchange:before { + content: "\f16c"; +} +.icon-instagram:before { + content: "\f16d"; +} +.icon-flickr:before { + content: "\f16e"; +} +.icon-adn:before { + content: "\f170"; +} +.icon-bitbucket:before { + content: "\f171"; +} +.icon-bitbucket-sign:before { + content: "\f172"; +} +.icon-tumblr:before { + content: "\f173"; +} +.icon-tumblr-sign:before { + content: "\f174"; +} +.icon-long-arrow-down:before { + content: "\f175"; +} +.icon-long-arrow-up:before { + content: "\f176"; +} +.icon-long-arrow-left:before { + content: "\f177"; +} +.icon-long-arrow-right:before { + content: "\f178"; +} +.icon-apple:before { + content: "\f179"; +} +.icon-windows:before { + content: "\f17a"; +} +.icon-android:before { + content: "\f17b"; +} +.icon-linux:before { + content: "\f17c"; +} +.icon-dribbble:before { + content: "\f17d"; +} +.icon-skype:before { + content: "\f17e"; +} +.icon-foursquare:before { + content: "\f180"; +} +.icon-trello:before { + content: "\f181"; +} +.icon-female:before { + content: "\f182"; +} +.icon-male:before { + content: "\f183"; +} +.icon-gittip:before { + content: "\f184"; +} +.icon-sun:before { + content: "\f185"; +} +.icon-moon:before { + content: "\f186"; +} +.icon-archive:before { + content: "\f187"; +} +.icon-bug:before { + content: "\f188"; +} +.icon-vk:before { + content: "\f189"; +} +.icon-weibo:before { + content: "\f18a"; +} +.icon-renren:before { + content: "\f18b"; +} diff --git a/stylesheets/font-awesome/css/font-awesome.min.css b/stylesheets/font-awesome/css/font-awesome.min.css new file mode 100644 index 00000000..866437fa --- /dev/null +++ b/stylesheets/font-awesome/css/font-awesome.min.css @@ -0,0 +1,403 @@ +@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.2.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;} +[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;} +.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;} +a [class^="icon-"],a [class*=" icon-"]{display:inline;} +[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em;} +.icons-ul{margin-left:2.142857142857143em;list-style-type:none;}.icons-ul>li{position:relative;} +.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit;} +[class^="icon-"].hide,[class*=" icon-"].hide{display:none;} +.icon-muted{color:#eeeeee;} +.icon-light{color:#ffffff;} +.icon-dark{color:#333333;} +.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;} +.pull-right{float:right;} +.pull-left{float:left;} +[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;} +[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;} +[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;} +.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;} +.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;} +.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;} +.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;} +.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;} +.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;} +.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;} +.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;} +.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;} +.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;} +.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit;} +.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;} +.icon-stack .icon-stack-base{font-size:2em;*line-height:1em;} +.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;} +a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none;} +@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);} +.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);} +.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);} +.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);} +.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);} +a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block;} +.icon-glass:before{content:"\f000";} +.icon-music:before{content:"\f001";} +.icon-search:before{content:"\f002";} +.icon-envelope-alt:before{content:"\f003";} +.icon-heart:before{content:"\f004";} +.icon-star:before{content:"\f005";} +.icon-star-empty:before{content:"\f006";} +.icon-user:before{content:"\f007";} +.icon-film:before{content:"\f008";} +.icon-th-large:before{content:"\f009";} +.icon-th:before{content:"\f00a";} +.icon-th-list:before{content:"\f00b";} +.icon-ok:before{content:"\f00c";} +.icon-remove:before{content:"\f00d";} +.icon-zoom-in:before{content:"\f00e";} +.icon-zoom-out:before{content:"\f010";} +.icon-power-off:before,.icon-off:before{content:"\f011";} +.icon-signal:before{content:"\f012";} +.icon-gear:before,.icon-cog:before{content:"\f013";} +.icon-trash:before{content:"\f014";} +.icon-home:before{content:"\f015";} +.icon-file-alt:before{content:"\f016";} +.icon-time:before{content:"\f017";} +.icon-road:before{content:"\f018";} +.icon-download-alt:before{content:"\f019";} +.icon-download:before{content:"\f01a";} +.icon-upload:before{content:"\f01b";} +.icon-inbox:before{content:"\f01c";} +.icon-play-circle:before{content:"\f01d";} +.icon-rotate-right:before,.icon-repeat:before{content:"\f01e";} +.icon-refresh:before{content:"\f021";} +.icon-list-alt:before{content:"\f022";} +.icon-lock:before{content:"\f023";} +.icon-flag:before{content:"\f024";} +.icon-headphones:before{content:"\f025";} +.icon-volume-off:before{content:"\f026";} +.icon-volume-down:before{content:"\f027";} +.icon-volume-up:before{content:"\f028";} +.icon-qrcode:before{content:"\f029";} +.icon-barcode:before{content:"\f02a";} +.icon-tag:before{content:"\f02b";} +.icon-tags:before{content:"\f02c";} +.icon-book:before{content:"\f02d";} +.icon-bookmark:before{content:"\f02e";} +.icon-print:before{content:"\f02f";} +.icon-camera:before{content:"\f030";} +.icon-font:before{content:"\f031";} +.icon-bold:before{content:"\f032";} +.icon-italic:before{content:"\f033";} +.icon-text-height:before{content:"\f034";} +.icon-text-width:before{content:"\f035";} +.icon-align-left:before{content:"\f036";} +.icon-align-center:before{content:"\f037";} +.icon-align-right:before{content:"\f038";} +.icon-align-justify:before{content:"\f039";} +.icon-list:before{content:"\f03a";} +.icon-indent-left:before{content:"\f03b";} +.icon-indent-right:before{content:"\f03c";} +.icon-facetime-video:before{content:"\f03d";} +.icon-picture:before{content:"\f03e";} +.icon-pencil:before{content:"\f040";} +.icon-map-marker:before{content:"\f041";} +.icon-adjust:before{content:"\f042";} +.icon-tint:before{content:"\f043";} +.icon-edit:before{content:"\f044";} +.icon-share:before{content:"\f045";} +.icon-check:before{content:"\f046";} +.icon-move:before{content:"\f047";} +.icon-step-backward:before{content:"\f048";} +.icon-fast-backward:before{content:"\f049";} +.icon-backward:before{content:"\f04a";} +.icon-play:before{content:"\f04b";} +.icon-pause:before{content:"\f04c";} +.icon-stop:before{content:"\f04d";} +.icon-forward:before{content:"\f04e";} +.icon-fast-forward:before{content:"\f050";} +.icon-step-forward:before{content:"\f051";} +.icon-eject:before{content:"\f052";} +.icon-chevron-left:before{content:"\f053";} +.icon-chevron-right:before{content:"\f054";} +.icon-plus-sign:before{content:"\f055";} +.icon-minus-sign:before{content:"\f056";} +.icon-remove-sign:before{content:"\f057";} +.icon-ok-sign:before{content:"\f058";} +.icon-question-sign:before{content:"\f059";} +.icon-info-sign:before{content:"\f05a";} +.icon-screenshot:before{content:"\f05b";} +.icon-remove-circle:before{content:"\f05c";} +.icon-ok-circle:before{content:"\f05d";} +.icon-ban-circle:before{content:"\f05e";} +.icon-arrow-left:before{content:"\f060";} +.icon-arrow-right:before{content:"\f061";} +.icon-arrow-up:before{content:"\f062";} +.icon-arrow-down:before{content:"\f063";} +.icon-mail-forward:before,.icon-share-alt:before{content:"\f064";} +.icon-resize-full:before{content:"\f065";} +.icon-resize-small:before{content:"\f066";} +.icon-plus:before{content:"\f067";} +.icon-minus:before{content:"\f068";} +.icon-asterisk:before{content:"\f069";} +.icon-exclamation-sign:before{content:"\f06a";} +.icon-gift:before{content:"\f06b";} +.icon-leaf:before{content:"\f06c";} +.icon-fire:before{content:"\f06d";} +.icon-eye-open:before{content:"\f06e";} +.icon-eye-close:before{content:"\f070";} +.icon-warning-sign:before{content:"\f071";} +.icon-plane:before{content:"\f072";} +.icon-calendar:before{content:"\f073";} +.icon-random:before{content:"\f074";} +.icon-comment:before{content:"\f075";} +.icon-magnet:before{content:"\f076";} +.icon-chevron-up:before{content:"\f077";} +.icon-chevron-down:before{content:"\f078";} +.icon-retweet:before{content:"\f079";} +.icon-shopping-cart:before{content:"\f07a";} +.icon-folder-close:before{content:"\f07b";} +.icon-folder-open:before{content:"\f07c";} +.icon-resize-vertical:before{content:"\f07d";} +.icon-resize-horizontal:before{content:"\f07e";} +.icon-bar-chart:before{content:"\f080";} +.icon-twitter-sign:before{content:"\f081";} +.icon-facebook-sign:before{content:"\f082";} +.icon-camera-retro:before{content:"\f083";} +.icon-key:before{content:"\f084";} +.icon-gears:before,.icon-cogs:before{content:"\f085";} +.icon-comments:before{content:"\f086";} +.icon-thumbs-up-alt:before{content:"\f087";} +.icon-thumbs-down-alt:before{content:"\f088";} +.icon-star-half:before{content:"\f089";} +.icon-heart-empty:before{content:"\f08a";} +.icon-signout:before{content:"\f08b";} +.icon-linkedin-sign:before{content:"\f08c";} +.icon-pushpin:before{content:"\f08d";} +.icon-external-link:before{content:"\f08e";} +.icon-signin:before{content:"\f090";} +.icon-trophy:before{content:"\f091";} +.icon-github-sign:before{content:"\f092";} +.icon-upload-alt:before{content:"\f093";} +.icon-lemon:before{content:"\f094";} +.icon-phone:before{content:"\f095";} +.icon-unchecked:before,.icon-check-empty:before{content:"\f096";} +.icon-bookmark-empty:before{content:"\f097";} +.icon-phone-sign:before{content:"\f098";} +.icon-twitter:before{content:"\f099";} +.icon-facebook:before{content:"\f09a";} +.icon-github:before{content:"\f09b";} +.icon-unlock:before{content:"\f09c";} +.icon-credit-card:before{content:"\f09d";} +.icon-rss:before{content:"\f09e";} +.icon-hdd:before{content:"\f0a0";} +.icon-bullhorn:before{content:"\f0a1";} +.icon-bell:before{content:"\f0a2";} +.icon-certificate:before{content:"\f0a3";} +.icon-hand-right:before{content:"\f0a4";} +.icon-hand-left:before{content:"\f0a5";} +.icon-hand-up:before{content:"\f0a6";} +.icon-hand-down:before{content:"\f0a7";} +.icon-circle-arrow-left:before{content:"\f0a8";} +.icon-circle-arrow-right:before{content:"\f0a9";} +.icon-circle-arrow-up:before{content:"\f0aa";} +.icon-circle-arrow-down:before{content:"\f0ab";} +.icon-globe:before{content:"\f0ac";} +.icon-wrench:before{content:"\f0ad";} +.icon-tasks:before{content:"\f0ae";} +.icon-filter:before{content:"\f0b0";} +.icon-briefcase:before{content:"\f0b1";} +.icon-fullscreen:before{content:"\f0b2";} +.icon-group:before{content:"\f0c0";} +.icon-link:before{content:"\f0c1";} +.icon-cloud:before{content:"\f0c2";} +.icon-beaker:before{content:"\f0c3";} +.icon-cut:before{content:"\f0c4";} +.icon-copy:before{content:"\f0c5";} +.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6";} +.icon-save:before{content:"\f0c7";} +.icon-sign-blank:before{content:"\f0c8";} +.icon-reorder:before{content:"\f0c9";} +.icon-list-ul:before{content:"\f0ca";} +.icon-list-ol:before{content:"\f0cb";} +.icon-strikethrough:before{content:"\f0cc";} +.icon-underline:before{content:"\f0cd";} +.icon-table:before{content:"\f0ce";} +.icon-magic:before{content:"\f0d0";} +.icon-truck:before{content:"\f0d1";} +.icon-pinterest:before{content:"\f0d2";} +.icon-pinterest-sign:before{content:"\f0d3";} +.icon-google-plus-sign:before{content:"\f0d4";} +.icon-google-plus:before{content:"\f0d5";} +.icon-money:before{content:"\f0d6";} +.icon-caret-down:before{content:"\f0d7";} +.icon-caret-up:before{content:"\f0d8";} +.icon-caret-left:before{content:"\f0d9";} +.icon-caret-right:before{content:"\f0da";} +.icon-columns:before{content:"\f0db";} +.icon-sort:before{content:"\f0dc";} +.icon-sort-down:before{content:"\f0dd";} +.icon-sort-up:before{content:"\f0de";} +.icon-envelope:before{content:"\f0e0";} +.icon-linkedin:before{content:"\f0e1";} +.icon-rotate-left:before,.icon-undo:before{content:"\f0e2";} +.icon-legal:before{content:"\f0e3";} +.icon-dashboard:before{content:"\f0e4";} +.icon-comment-alt:before{content:"\f0e5";} +.icon-comments-alt:before{content:"\f0e6";} +.icon-bolt:before{content:"\f0e7";} +.icon-sitemap:before{content:"\f0e8";} +.icon-umbrella:before{content:"\f0e9";} +.icon-paste:before{content:"\f0ea";} +.icon-lightbulb:before{content:"\f0eb";} +.icon-exchange:before{content:"\f0ec";} +.icon-cloud-download:before{content:"\f0ed";} +.icon-cloud-upload:before{content:"\f0ee";} +.icon-user-md:before{content:"\f0f0";} +.icon-stethoscope:before{content:"\f0f1";} +.icon-suitcase:before{content:"\f0f2";} +.icon-bell-alt:before{content:"\f0f3";} +.icon-coffee:before{content:"\f0f4";} +.icon-food:before{content:"\f0f5";} +.icon-file-text-alt:before{content:"\f0f6";} +.icon-building:before{content:"\f0f7";} +.icon-hospital:before{content:"\f0f8";} +.icon-ambulance:before{content:"\f0f9";} +.icon-medkit:before{content:"\f0fa";} +.icon-fighter-jet:before{content:"\f0fb";} +.icon-beer:before{content:"\f0fc";} +.icon-h-sign:before{content:"\f0fd";} +.icon-plus-sign-alt:before{content:"\f0fe";} +.icon-double-angle-left:before{content:"\f100";} +.icon-double-angle-right:before{content:"\f101";} +.icon-double-angle-up:before{content:"\f102";} +.icon-double-angle-down:before{content:"\f103";} +.icon-angle-left:before{content:"\f104";} +.icon-angle-right:before{content:"\f105";} +.icon-angle-up:before{content:"\f106";} +.icon-angle-down:before{content:"\f107";} +.icon-desktop:before{content:"\f108";} +.icon-laptop:before{content:"\f109";} +.icon-tablet:before{content:"\f10a";} +.icon-mobile-phone:before{content:"\f10b";} +.icon-circle-blank:before{content:"\f10c";} +.icon-quote-left:before{content:"\f10d";} +.icon-quote-right:before{content:"\f10e";} +.icon-spinner:before{content:"\f110";} +.icon-circle:before{content:"\f111";} +.icon-mail-reply:before,.icon-reply:before{content:"\f112";} +.icon-github-alt:before{content:"\f113";} +.icon-folder-close-alt:before{content:"\f114";} +.icon-folder-open-alt:before{content:"\f115";} +.icon-expand-alt:before{content:"\f116";} +.icon-collapse-alt:before{content:"\f117";} +.icon-smile:before{content:"\f118";} +.icon-frown:before{content:"\f119";} +.icon-meh:before{content:"\f11a";} +.icon-gamepad:before{content:"\f11b";} +.icon-keyboard:before{content:"\f11c";} +.icon-flag-alt:before{content:"\f11d";} +.icon-flag-checkered:before{content:"\f11e";} +.icon-terminal:before{content:"\f120";} +.icon-code:before{content:"\f121";} +.icon-reply-all:before{content:"\f122";} +.icon-mail-reply-all:before{content:"\f122";} +.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";} +.icon-location-arrow:before{content:"\f124";} +.icon-crop:before{content:"\f125";} +.icon-code-fork:before{content:"\f126";} +.icon-unlink:before{content:"\f127";} +.icon-question:before{content:"\f128";} +.icon-info:before{content:"\f129";} +.icon-exclamation:before{content:"\f12a";} +.icon-superscript:before{content:"\f12b";} +.icon-subscript:before{content:"\f12c";} +.icon-eraser:before{content:"\f12d";} +.icon-puzzle-piece:before{content:"\f12e";} +.icon-microphone:before{content:"\f130";} +.icon-microphone-off:before{content:"\f131";} +.icon-shield:before{content:"\f132";} +.icon-calendar-empty:before{content:"\f133";} +.icon-fire-extinguisher:before{content:"\f134";} +.icon-rocket:before{content:"\f135";} +.icon-maxcdn:before{content:"\f136";} +.icon-chevron-sign-left:before{content:"\f137";} +.icon-chevron-sign-right:before{content:"\f138";} +.icon-chevron-sign-up:before{content:"\f139";} +.icon-chevron-sign-down:before{content:"\f13a";} +.icon-html5:before{content:"\f13b";} +.icon-css3:before{content:"\f13c";} +.icon-anchor:before{content:"\f13d";} +.icon-unlock-alt:before{content:"\f13e";} +.icon-bullseye:before{content:"\f140";} +.icon-ellipsis-horizontal:before{content:"\f141";} +.icon-ellipsis-vertical:before{content:"\f142";} +.icon-rss-sign:before{content:"\f143";} +.icon-play-sign:before{content:"\f144";} +.icon-ticket:before{content:"\f145";} +.icon-minus-sign-alt:before{content:"\f146";} +.icon-check-minus:before{content:"\f147";} +.icon-level-up:before{content:"\f148";} +.icon-level-down:before{content:"\f149";} +.icon-check-sign:before{content:"\f14a";} +.icon-edit-sign:before{content:"\f14b";} +.icon-external-link-sign:before{content:"\f14c";} +.icon-share-sign:before{content:"\f14d";} +.icon-compass:before{content:"\f14e";} +.icon-collapse:before{content:"\f150";} +.icon-collapse-top:before{content:"\f151";} +.icon-expand:before{content:"\f152";} +.icon-euro:before,.icon-eur:before{content:"\f153";} +.icon-gbp:before{content:"\f154";} +.icon-dollar:before,.icon-usd:before{content:"\f155";} +.icon-rupee:before,.icon-inr:before{content:"\f156";} +.icon-yen:before,.icon-jpy:before{content:"\f157";} +.icon-renminbi:before,.icon-cny:before{content:"\f158";} +.icon-won:before,.icon-krw:before{content:"\f159";} +.icon-bitcoin:before,.icon-btc:before{content:"\f15a";} +.icon-file:before{content:"\f15b";} +.icon-file-text:before{content:"\f15c";} +.icon-sort-by-alphabet:before{content:"\f15d";} +.icon-sort-by-alphabet-alt:before{content:"\f15e";} +.icon-sort-by-attributes:before{content:"\f160";} +.icon-sort-by-attributes-alt:before{content:"\f161";} +.icon-sort-by-order:before{content:"\f162";} +.icon-sort-by-order-alt:before{content:"\f163";} +.icon-thumbs-up:before{content:"\f164";} +.icon-thumbs-down:before{content:"\f165";} +.icon-youtube-sign:before{content:"\f166";} +.icon-youtube:before{content:"\f167";} +.icon-xing:before{content:"\f168";} +.icon-xing-sign:before{content:"\f169";} +.icon-youtube-play:before{content:"\f16a";} +.icon-dropbox:before{content:"\f16b";} +.icon-stackexchange:before{content:"\f16c";} +.icon-instagram:before{content:"\f16d";} +.icon-flickr:before{content:"\f16e";} +.icon-adn:before{content:"\f170";} +.icon-bitbucket:before{content:"\f171";} +.icon-bitbucket-sign:before{content:"\f172";} +.icon-tumblr:before{content:"\f173";} +.icon-tumblr-sign:before{content:"\f174";} +.icon-long-arrow-down:before{content:"\f175";} +.icon-long-arrow-up:before{content:"\f176";} +.icon-long-arrow-left:before{content:"\f177";} +.icon-long-arrow-right:before{content:"\f178";} +.icon-apple:before{content:"\f179";} +.icon-windows:before{content:"\f17a";} +.icon-android:before{content:"\f17b";} +.icon-linux:before{content:"\f17c";} +.icon-dribbble:before{content:"\f17d";} +.icon-skype:before{content:"\f17e";} +.icon-foursquare:before{content:"\f180";} +.icon-trello:before{content:"\f181";} +.icon-female:before{content:"\f182";} +.icon-male:before{content:"\f183";} +.icon-gittip:before{content:"\f184";} +.icon-sun:before{content:"\f185";} +.icon-moon:before{content:"\f186";} +.icon-archive:before{content:"\f187";} +.icon-bug:before{content:"\f188";} +.icon-vk:before{content:"\f189";} +.icon-weibo:before{content:"\f18a";} +.icon-renren:before{content:"\f18b";} diff --git a/stylesheets/font-awesome/font/FontAwesome.otf b/stylesheets/font-awesome/font/FontAwesome.otf new file mode 100644 index 00000000..70125459 Binary files /dev/null and b/stylesheets/font-awesome/font/FontAwesome.otf differ diff --git a/stylesheets/font-awesome/font/fontawesome-webfont.eot b/stylesheets/font-awesome/font/fontawesome-webfont.eot new file mode 100755 index 00000000..0662cb96 Binary files /dev/null and b/stylesheets/font-awesome/font/fontawesome-webfont.eot differ diff --git a/stylesheets/font-awesome/font/fontawesome-webfont.svg b/stylesheets/font-awesome/font/fontawesome-webfont.svg new file mode 100755 index 00000000..2edb4ec3 --- /dev/null +++ b/stylesheets/font-awesome/font/fontawesome-webfont.svg @@ -0,0 +1,399 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stylesheets/font-awesome/font/fontawesome-webfont.ttf b/stylesheets/font-awesome/font/fontawesome-webfont.ttf new file mode 100755 index 00000000..d3659246 Binary files /dev/null and b/stylesheets/font-awesome/font/fontawesome-webfont.ttf differ diff --git a/stylesheets/font-awesome/font/fontawesome-webfont.woff b/stylesheets/font-awesome/font/fontawesome-webfont.woff new file mode 100755 index 00000000..b9bd17e1 Binary files /dev/null and b/stylesheets/font-awesome/font/fontawesome-webfont.woff differ diff --git a/stylesheets/font-awesome/less/bootstrap.less b/stylesheets/font-awesome/less/bootstrap.less new file mode 100644 index 00000000..a2c96046 --- /dev/null +++ b/stylesheets/font-awesome/less/bootstrap.less @@ -0,0 +1,84 @@ +/* BOOTSTRAP SPECIFIC CLASSES + * -------------------------- */ + +/* Bootstrap 2.0 sprites.less reset */ +[class^="icon-"], +[class*=" icon-"] { + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} + +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} + + +/* keeps Bootstrap styles with and without icons the same */ +.btn, .nav { + [class^="icon-"], + [class*=" icon-"] { +// display: inline; + &.icon-large { line-height: .9em; } + &.icon-spin { display: inline-block; } + } +} +.nav-tabs, .nav-pills { + [class^="icon-"], + [class*=" icon-"] { + &, &.icon-large { line-height: .9em; } + } +} +.btn { + [class^="icon-"], + [class*=" icon-"] { + &.pull-left, &.pull-right { + &.icon-2x { margin-top: .18em; } + } + &.icon-spin.icon-large { line-height: .8em; } + } +} +.btn.btn-small { + [class^="icon-"], + [class*=" icon-"] { + &.pull-left, &.pull-right { + &.icon-2x { margin-top: .25em; } + } + } +} +.btn.btn-large { + [class^="icon-"], + [class*=" icon-"] { + margin-top: 0; // overrides bootstrap default + &.pull-left, &.pull-right { + &.icon-2x { margin-top: .05em; } + } + &.pull-left.icon-2x { margin-right: .2em; } + &.pull-right.icon-2x { margin-left: .2em; } + } +} + +/* Fixes alignment in nav lists */ +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + line-height: inherit; +} diff --git a/stylesheets/font-awesome/less/core.less b/stylesheets/font-awesome/less/core.less new file mode 100644 index 00000000..1ef7e223 --- /dev/null +++ b/stylesheets/font-awesome/less/core.less @@ -0,0 +1,129 @@ +/* FONT AWESOME CORE + * -------------------------- */ + +[class^="icon-"], +[class*=" icon-"] { + .icon-FontAwesome(); +} + +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} + +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: 4/3em; +} + +/* makes sure icons active on rollover in links */ +a { + [class^="icon-"], + [class*=" icon-"] { + display: inline; + } +} + +/* increased font size for icon-large */ +[class^="icon-"], +[class*=" icon-"] { + &.icon-fixed-width { + display: inline-block; + width: 16/14em; + text-align: right; + padding-right: 4/14em; + &.icon-large { + width: 20/14em; + } + } +} + +.icons-ul { + margin-left: @icons-li-width; + list-style-type: none; + + > li { position: relative; } + + .icon-li { + position: absolute; + left: -@icons-li-width; + width: @icons-li-width; + text-align: center; + line-height: inherit; + } +} + +// allows usage of the hide class directly on font awesome icons +[class^="icon-"], +[class*=" icon-"] { + &.hide { + display: none; + } +} + +.icon-muted { color: @iconMuted; } +.icon-light { color: @iconLight; } +.icon-dark { color: @iconDark; } + +// Icon Borders +// ------------------------- + +.icon-border { + border: solid 1px @borderColor; + padding: .2em .25em .15em; + .border-radius(3px); +} + +// Icon Sizes +// ------------------------- + +.icon-2x { + font-size: 2em; + &.icon-border { + border-width: 2px; + .border-radius(4px); + } +} +.icon-3x { + font-size: 3em; + &.icon-border { + border-width: 3px; + .border-radius(5px); + } +} +.icon-4x { + font-size: 4em; + &.icon-border { + border-width: 4px; + .border-radius(6px); + } +} + +.icon-5x { + font-size: 5em; + &.icon-border { + border-width: 5px; + .border-radius(7px); + } +} + + +// Floats & Margins +// ------------------------- + +// Quick floats +.pull-right { float: right; } +.pull-left { float: left; } + +[class^="icon-"], +[class*=" icon-"] { + &.pull-left { + margin-right: .3em; + } + &.pull-right { + margin-left: .3em; + } +} diff --git a/stylesheets/font-awesome/less/extras.less b/stylesheets/font-awesome/less/extras.less new file mode 100644 index 00000000..c93c260c --- /dev/null +++ b/stylesheets/font-awesome/less/extras.less @@ -0,0 +1,93 @@ +/* EXTRAS + * -------------------------- */ + +/* Stacked and layered icon */ +.icon-stack(); + +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +/* Prevent stack and spinners from being taken inline when inside a link */ +a .icon-stack, +a .icon-spin { + display: inline-block; + text-decoration: none; +} + +@-moz-keyframes spin { + 0% { -moz-transform: rotate(0deg); } + 100% { -moz-transform: rotate(359deg); } +} +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(359deg); } +} +@-o-keyframes spin { + 0% { -o-transform: rotate(0deg); } + 100% { -o-transform: rotate(359deg); } +} +@-ms-keyframes spin { + 0% { -ms-transform: rotate(0deg); } + 100% { -ms-transform: rotate(359deg); } +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} + +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} + +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + +/* ensure rotation occurs inside anchor tags */ +a { + .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { + &:before { display: inline-block; } + } +} diff --git a/stylesheets/font-awesome/less/font-awesome-ie7.less b/stylesheets/font-awesome/less/font-awesome-ie7.less new file mode 100644 index 00000000..6675c498 --- /dev/null +++ b/stylesheets/font-awesome/less/font-awesome-ie7.less @@ -0,0 +1,1953 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ + +.icon-large { + font-size: 4/3em; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + vertical-align: middle; +} + +.nav { + [class^="icon-"], + [class*=" icon-"] { + vertical-align: inherit; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + &.icon-large { + vertical-align: -25%; + } + } +} + +.nav-pills, .nav-tabs { + [class^="icon-"], + [class*=" icon-"] { + &.icon-large { + line-height: .75em; + margin-top: -7px; + padding-top: 5px; + margin-bottom: -5px; + padding-bottom: 4px; + } + } +} + +.btn { + [class^="icon-"], + [class*=" icon-"] { + &.pull-left, &.pull-right { vertical-align: inherit; } + &.icon-large { + margin-top: -.5em; + } + } +} + +a [class^="icon-"], +a [class*=" icon-"] { + cursor: pointer; +} + +.ie7icon(@inner) { *zoom: ~"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')"; } + + +.icon-glass { + .ie7icon(''); +} + + +.icon-music { + .ie7icon(''); +} + + +.icon-search { + .ie7icon(''); +} + + +.icon-envelope-alt { + .ie7icon(''); +} + + +.icon-heart { + .ie7icon(''); +} + + +.icon-star { + .ie7icon(''); +} + + +.icon-star-empty { + .ie7icon(''); +} + + +.icon-user { + .ie7icon(''); +} + + +.icon-film { + .ie7icon(''); +} + + +.icon-th-large { + .ie7icon(''); +} + + +.icon-th { + .ie7icon(''); +} + + +.icon-th-list { + .ie7icon(''); +} + + +.icon-ok { + .ie7icon(''); +} + + +.icon-remove { + .ie7icon(''); +} + + +.icon-zoom-in { + .ie7icon(''); +} + + +.icon-zoom-out { + .ie7icon(''); +} + + +.icon-off { + .ie7icon(''); +} + +.icon-power-off { + .ie7icon(''); +} + + +.icon-signal { + .ie7icon(''); +} + + +.icon-cog { + .ie7icon(''); +} + +.icon-gear { + .ie7icon(''); +} + + +.icon-trash { + .ie7icon(''); +} + + +.icon-home { + .ie7icon(''); +} + + +.icon-file-alt { + .ie7icon(''); +} + + +.icon-time { + .ie7icon(''); +} + + +.icon-road { + .ie7icon(''); +} + + +.icon-download-alt { + .ie7icon(''); +} + + +.icon-download { + .ie7icon(''); +} + + +.icon-upload { + .ie7icon(''); +} + + +.icon-inbox { + .ie7icon(''); +} + + +.icon-play-circle { + .ie7icon(''); +} + + +.icon-repeat { + .ie7icon(''); +} + +.icon-rotate-right { + .ie7icon(''); +} + + +.icon-refresh { + .ie7icon(''); +} + + +.icon-list-alt { + .ie7icon(''); +} + + +.icon-lock { + .ie7icon(''); +} + + +.icon-flag { + .ie7icon(''); +} + + +.icon-headphones { + .ie7icon(''); +} + + +.icon-volume-off { + .ie7icon(''); +} + + +.icon-volume-down { + .ie7icon(''); +} + + +.icon-volume-up { + .ie7icon(''); +} + + +.icon-qrcode { + .ie7icon(''); +} + + +.icon-barcode { + .ie7icon(''); +} + + +.icon-tag { + .ie7icon(''); +} + + +.icon-tags { + .ie7icon(''); +} + + +.icon-book { + .ie7icon(''); +} + + +.icon-bookmark { + .ie7icon(''); +} + + +.icon-print { + .ie7icon(''); +} + + +.icon-camera { + .ie7icon(''); +} + + +.icon-font { + .ie7icon(''); +} + + +.icon-bold { + .ie7icon(''); +} + + +.icon-italic { + .ie7icon(''); +} + + +.icon-text-height { + .ie7icon(''); +} + + +.icon-text-width { + .ie7icon(''); +} + + +.icon-align-left { + .ie7icon(''); +} + + +.icon-align-center { + .ie7icon(''); +} + + +.icon-align-right { + .ie7icon(''); +} + + +.icon-align-justify { + .ie7icon(''); +} + + +.icon-list { + .ie7icon(''); +} + + +.icon-indent-left { + .ie7icon(''); +} + + +.icon-indent-right { + .ie7icon(''); +} + + +.icon-facetime-video { + .ie7icon(''); +} + + +.icon-picture { + .ie7icon(''); +} + + +.icon-pencil { + .ie7icon(''); +} + + +.icon-map-marker { + .ie7icon(''); +} + + +.icon-adjust { + .ie7icon(''); +} + + +.icon-tint { + .ie7icon(''); +} + + +.icon-edit { + .ie7icon(''); +} + + +.icon-share { + .ie7icon(''); +} + + +.icon-check { + .ie7icon(''); +} + + +.icon-move { + .ie7icon(''); +} + + +.icon-step-backward { + .ie7icon(''); +} + + +.icon-fast-backward { + .ie7icon(''); +} + + +.icon-backward { + .ie7icon(''); +} + + +.icon-play { + .ie7icon(''); +} + + +.icon-pause { + .ie7icon(''); +} + + +.icon-stop { + .ie7icon(''); +} + + +.icon-forward { + .ie7icon(''); +} + + +.icon-fast-forward { + .ie7icon(''); +} + + +.icon-step-forward { + .ie7icon(''); +} + + +.icon-eject { + .ie7icon(''); +} + + +.icon-chevron-left { + .ie7icon(''); +} + + +.icon-chevron-right { + .ie7icon(''); +} + + +.icon-plus-sign { + .ie7icon(''); +} + + +.icon-minus-sign { + .ie7icon(''); +} + + +.icon-remove-sign { + .ie7icon(''); +} + + +.icon-ok-sign { + .ie7icon(''); +} + + +.icon-question-sign { + .ie7icon(''); +} + + +.icon-info-sign { + .ie7icon(''); +} + + +.icon-screenshot { + .ie7icon(''); +} + + +.icon-remove-circle { + .ie7icon(''); +} + + +.icon-ok-circle { + .ie7icon(''); +} + + +.icon-ban-circle { + .ie7icon(''); +} + + +.icon-arrow-left { + .ie7icon(''); +} + + +.icon-arrow-right { + .ie7icon(''); +} + + +.icon-arrow-up { + .ie7icon(''); +} + + +.icon-arrow-down { + .ie7icon(''); +} + + +.icon-share-alt { + .ie7icon(''); +} + +.icon-mail-forward { + .ie7icon(''); +} + + +.icon-resize-full { + .ie7icon(''); +} + + +.icon-resize-small { + .ie7icon(''); +} + + +.icon-plus { + .ie7icon(''); +} + + +.icon-minus { + .ie7icon(''); +} + + +.icon-asterisk { + .ie7icon(''); +} + + +.icon-exclamation-sign { + .ie7icon(''); +} + + +.icon-gift { + .ie7icon(''); +} + + +.icon-leaf { + .ie7icon(''); +} + + +.icon-fire { + .ie7icon(''); +} + + +.icon-eye-open { + .ie7icon(''); +} + + +.icon-eye-close { + .ie7icon(''); +} + + +.icon-warning-sign { + .ie7icon(''); +} + + +.icon-plane { + .ie7icon(''); +} + + +.icon-calendar { + .ie7icon(''); +} + + +.icon-random { + .ie7icon(''); +} + + +.icon-comment { + .ie7icon(''); +} + + +.icon-magnet { + .ie7icon(''); +} + + +.icon-chevron-up { + .ie7icon(''); +} + + +.icon-chevron-down { + .ie7icon(''); +} + + +.icon-retweet { + .ie7icon(''); +} + + +.icon-shopping-cart { + .ie7icon(''); +} + + +.icon-folder-close { + .ie7icon(''); +} + + +.icon-folder-open { + .ie7icon(''); +} + + +.icon-resize-vertical { + .ie7icon(''); +} + + +.icon-resize-horizontal { + .ie7icon(''); +} + + +.icon-bar-chart { + .ie7icon(''); +} + + +.icon-twitter-sign { + .ie7icon(''); +} + + +.icon-facebook-sign { + .ie7icon(''); +} + + +.icon-camera-retro { + .ie7icon(''); +} + + +.icon-key { + .ie7icon(''); +} + + +.icon-cogs { + .ie7icon(''); +} + +.icon-gears { + .ie7icon(''); +} + + +.icon-comments { + .ie7icon(''); +} + + +.icon-thumbs-up-alt { + .ie7icon(''); +} + + +.icon-thumbs-down-alt { + .ie7icon(''); +} + + +.icon-star-half { + .ie7icon(''); +} + + +.icon-heart-empty { + .ie7icon(''); +} + + +.icon-signout { + .ie7icon(''); +} + + +.icon-linkedin-sign { + .ie7icon(''); +} + + +.icon-pushpin { + .ie7icon(''); +} + + +.icon-external-link { + .ie7icon(''); +} + + +.icon-signin { + .ie7icon(''); +} + + +.icon-trophy { + .ie7icon(''); +} + + +.icon-github-sign { + .ie7icon(''); +} + + +.icon-upload-alt { + .ie7icon(''); +} + + +.icon-lemon { + .ie7icon(''); +} + + +.icon-phone { + .ie7icon(''); +} + + +.icon-check-empty { + .ie7icon(''); +} + +.icon-unchecked { + .ie7icon(''); +} + + +.icon-bookmark-empty { + .ie7icon(''); +} + + +.icon-phone-sign { + .ie7icon(''); +} + + +.icon-twitter { + .ie7icon(''); +} + + +.icon-facebook { + .ie7icon(''); +} + + +.icon-github { + .ie7icon(''); +} + + +.icon-unlock { + .ie7icon(''); +} + + +.icon-credit-card { + .ie7icon(''); +} + + +.icon-rss { + .ie7icon(''); +} + + +.icon-hdd { + .ie7icon(''); +} + + +.icon-bullhorn { + .ie7icon(''); +} + + +.icon-bell { + .ie7icon(''); +} + + +.icon-certificate { + .ie7icon(''); +} + + +.icon-hand-right { + .ie7icon(''); +} + + +.icon-hand-left { + .ie7icon(''); +} + + +.icon-hand-up { + .ie7icon(''); +} + + +.icon-hand-down { + .ie7icon(''); +} + + +.icon-circle-arrow-left { + .ie7icon(''); +} + + +.icon-circle-arrow-right { + .ie7icon(''); +} + + +.icon-circle-arrow-up { + .ie7icon(''); +} + + +.icon-circle-arrow-down { + .ie7icon(''); +} + + +.icon-globe { + .ie7icon(''); +} + + +.icon-wrench { + .ie7icon(''); +} + + +.icon-tasks { + .ie7icon(''); +} + + +.icon-filter { + .ie7icon(''); +} + + +.icon-briefcase { + .ie7icon(''); +} + + +.icon-fullscreen { + .ie7icon(''); +} + + +.icon-group { + .ie7icon(''); +} + + +.icon-link { + .ie7icon(''); +} + + +.icon-cloud { + .ie7icon(''); +} + + +.icon-beaker { + .ie7icon(''); +} + + +.icon-cut { + .ie7icon(''); +} + + +.icon-copy { + .ie7icon(''); +} + + +.icon-paper-clip { + .ie7icon(''); +} + +.icon-paperclip { + .ie7icon(''); +} + + +.icon-save { + .ie7icon(''); +} + + +.icon-sign-blank { + .ie7icon(''); +} + + +.icon-reorder { + .ie7icon(''); +} + + +.icon-list-ul { + .ie7icon(''); +} + + +.icon-list-ol { + .ie7icon(''); +} + + +.icon-strikethrough { + .ie7icon(''); +} + + +.icon-underline { + .ie7icon(''); +} + + +.icon-table { + .ie7icon(''); +} + + +.icon-magic { + .ie7icon(''); +} + + +.icon-truck { + .ie7icon(''); +} + + +.icon-pinterest { + .ie7icon(''); +} + + +.icon-pinterest-sign { + .ie7icon(''); +} + + +.icon-google-plus-sign { + .ie7icon(''); +} + + +.icon-google-plus { + .ie7icon(''); +} + + +.icon-money { + .ie7icon(''); +} + + +.icon-caret-down { + .ie7icon(''); +} + + +.icon-caret-up { + .ie7icon(''); +} + + +.icon-caret-left { + .ie7icon(''); +} + + +.icon-caret-right { + .ie7icon(''); +} + + +.icon-columns { + .ie7icon(''); +} + + +.icon-sort { + .ie7icon(''); +} + + +.icon-sort-down { + .ie7icon(''); +} + + +.icon-sort-up { + .ie7icon(''); +} + + +.icon-envelope { + .ie7icon(''); +} + + +.icon-linkedin { + .ie7icon(''); +} + + +.icon-undo { + .ie7icon(''); +} + +.icon-rotate-left { + .ie7icon(''); +} + + +.icon-legal { + .ie7icon(''); +} + + +.icon-dashboard { + .ie7icon(''); +} + + +.icon-comment-alt { + .ie7icon(''); +} + + +.icon-comments-alt { + .ie7icon(''); +} + + +.icon-bolt { + .ie7icon(''); +} + + +.icon-sitemap { + .ie7icon(''); +} + + +.icon-umbrella { + .ie7icon(''); +} + + +.icon-paste { + .ie7icon(''); +} + + +.icon-lightbulb { + .ie7icon(''); +} + + +.icon-exchange { + .ie7icon(''); +} + + +.icon-cloud-download { + .ie7icon(''); +} + + +.icon-cloud-upload { + .ie7icon(''); +} + + +.icon-user-md { + .ie7icon(''); +} + + +.icon-stethoscope { + .ie7icon(''); +} + + +.icon-suitcase { + .ie7icon(''); +} + + +.icon-bell-alt { + .ie7icon(''); +} + + +.icon-coffee { + .ie7icon(''); +} + + +.icon-food { + .ie7icon(''); +} + + +.icon-file-text-alt { + .ie7icon(''); +} + + +.icon-building { + .ie7icon(''); +} + + +.icon-hospital { + .ie7icon(''); +} + + +.icon-ambulance { + .ie7icon(''); +} + + +.icon-medkit { + .ie7icon(''); +} + + +.icon-fighter-jet { + .ie7icon(''); +} + + +.icon-beer { + .ie7icon(''); +} + + +.icon-h-sign { + .ie7icon(''); +} + + +.icon-plus-sign-alt { + .ie7icon(''); +} + + +.icon-double-angle-left { + .ie7icon(''); +} + + +.icon-double-angle-right { + .ie7icon(''); +} + + +.icon-double-angle-up { + .ie7icon(''); +} + + +.icon-double-angle-down { + .ie7icon(''); +} + + +.icon-angle-left { + .ie7icon(''); +} + + +.icon-angle-right { + .ie7icon(''); +} + + +.icon-angle-up { + .ie7icon(''); +} + + +.icon-angle-down { + .ie7icon(''); +} + + +.icon-desktop { + .ie7icon(''); +} + + +.icon-laptop { + .ie7icon(''); +} + + +.icon-tablet { + .ie7icon(''); +} + + +.icon-mobile-phone { + .ie7icon(''); +} + + +.icon-circle-blank { + .ie7icon(''); +} + + +.icon-quote-left { + .ie7icon(''); +} + + +.icon-quote-right { + .ie7icon(''); +} + + +.icon-spinner { + .ie7icon(''); +} + + +.icon-circle { + .ie7icon(''); +} + + +.icon-reply { + .ie7icon(''); +} + +.icon-mail-reply { + .ie7icon(''); +} + + +.icon-github-alt { + .ie7icon(''); +} + + +.icon-folder-close-alt { + .ie7icon(''); +} + + +.icon-folder-open-alt { + .ie7icon(''); +} + + +.icon-expand-alt { + .ie7icon(''); +} + + +.icon-collapse-alt { + .ie7icon(''); +} + + +.icon-smile { + .ie7icon(''); +} + + +.icon-frown { + .ie7icon(''); +} + + +.icon-meh { + .ie7icon(''); +} + + +.icon-gamepad { + .ie7icon(''); +} + + +.icon-keyboard { + .ie7icon(''); +} + + +.icon-flag-alt { + .ie7icon(''); +} + + +.icon-flag-checkered { + .ie7icon(''); +} + + +.icon-terminal { + .ie7icon(''); +} + + +.icon-code { + .ie7icon(''); +} + + +.icon-reply-all { + .ie7icon(''); +} + + +.icon-mail-reply-all { + .ie7icon(''); +} + + +.icon-star-half-empty { + .ie7icon(''); +} + +.icon-star-half-full { + .ie7icon(''); +} + + +.icon-location-arrow { + .ie7icon(''); +} + + +.icon-crop { + .ie7icon(''); +} + + +.icon-code-fork { + .ie7icon(''); +} + + +.icon-unlink { + .ie7icon(''); +} + + +.icon-question { + .ie7icon(''); +} + + +.icon-info { + .ie7icon(''); +} + + +.icon-exclamation { + .ie7icon(''); +} + + +.icon-superscript { + .ie7icon(''); +} + + +.icon-subscript { + .ie7icon(''); +} + + +.icon-eraser { + .ie7icon(''); +} + + +.icon-puzzle-piece { + .ie7icon(''); +} + + +.icon-microphone { + .ie7icon(''); +} + + +.icon-microphone-off { + .ie7icon(''); +} + + +.icon-shield { + .ie7icon(''); +} + + +.icon-calendar-empty { + .ie7icon(''); +} + + +.icon-fire-extinguisher { + .ie7icon(''); +} + + +.icon-rocket { + .ie7icon(''); +} + + +.icon-maxcdn { + .ie7icon(''); +} + + +.icon-chevron-sign-left { + .ie7icon(''); +} + + +.icon-chevron-sign-right { + .ie7icon(''); +} + + +.icon-chevron-sign-up { + .ie7icon(''); +} + + +.icon-chevron-sign-down { + .ie7icon(''); +} + + +.icon-html5 { + .ie7icon(''); +} + + +.icon-css3 { + .ie7icon(''); +} + + +.icon-anchor { + .ie7icon(''); +} + + +.icon-unlock-alt { + .ie7icon(''); +} + + +.icon-bullseye { + .ie7icon(''); +} + + +.icon-ellipsis-horizontal { + .ie7icon(''); +} + + +.icon-ellipsis-vertical { + .ie7icon(''); +} + + +.icon-rss-sign { + .ie7icon(''); +} + + +.icon-play-sign { + .ie7icon(''); +} + + +.icon-ticket { + .ie7icon(''); +} + + +.icon-minus-sign-alt { + .ie7icon(''); +} + + +.icon-check-minus { + .ie7icon(''); +} + + +.icon-level-up { + .ie7icon(''); +} + + +.icon-level-down { + .ie7icon(''); +} + + +.icon-check-sign { + .ie7icon(''); +} + + +.icon-edit-sign { + .ie7icon(''); +} + + +.icon-external-link-sign { + .ie7icon(''); +} + + +.icon-share-sign { + .ie7icon(''); +} + + +.icon-compass { + .ie7icon(''); +} + + +.icon-collapse { + .ie7icon(''); +} + + +.icon-collapse-top { + .ie7icon(''); +} + + +.icon-expand { + .ie7icon(''); +} + + +.icon-eur { + .ie7icon(''); +} + +.icon-euro { + .ie7icon(''); +} + + +.icon-gbp { + .ie7icon(''); +} + + +.icon-usd { + .ie7icon(''); +} + +.icon-dollar { + .ie7icon(''); +} + + +.icon-inr { + .ie7icon(''); +} + +.icon-rupee { + .ie7icon(''); +} + + +.icon-jpy { + .ie7icon(''); +} + +.icon-yen { + .ie7icon(''); +} + + +.icon-cny { + .ie7icon(''); +} + +.icon-renminbi { + .ie7icon(''); +} + + +.icon-krw { + .ie7icon(''); +} + +.icon-won { + .ie7icon(''); +} + + +.icon-btc { + .ie7icon(''); +} + +.icon-bitcoin { + .ie7icon(''); +} + + +.icon-file { + .ie7icon(''); +} + + +.icon-file-text { + .ie7icon(''); +} + + +.icon-sort-by-alphabet { + .ie7icon(''); +} + + +.icon-sort-by-alphabet-alt { + .ie7icon(''); +} + + +.icon-sort-by-attributes { + .ie7icon(''); +} + + +.icon-sort-by-attributes-alt { + .ie7icon(''); +} + + +.icon-sort-by-order { + .ie7icon(''); +} + + +.icon-sort-by-order-alt { + .ie7icon(''); +} + + +.icon-thumbs-up { + .ie7icon(''); +} + + +.icon-thumbs-down { + .ie7icon(''); +} + + +.icon-youtube-sign { + .ie7icon(''); +} + + +.icon-youtube { + .ie7icon(''); +} + + +.icon-xing { + .ie7icon(''); +} + + +.icon-xing-sign { + .ie7icon(''); +} + + +.icon-youtube-play { + .ie7icon(''); +} + + +.icon-dropbox { + .ie7icon(''); +} + + +.icon-stackexchange { + .ie7icon(''); +} + + +.icon-instagram { + .ie7icon(''); +} + + +.icon-flickr { + .ie7icon(''); +} + + +.icon-adn { + .ie7icon(''); +} + + +.icon-bitbucket { + .ie7icon(''); +} + + +.icon-bitbucket-sign { + .ie7icon(''); +} + + +.icon-tumblr { + .ie7icon(''); +} + + +.icon-tumblr-sign { + .ie7icon(''); +} + + +.icon-long-arrow-down { + .ie7icon(''); +} + + +.icon-long-arrow-up { + .ie7icon(''); +} + + +.icon-long-arrow-left { + .ie7icon(''); +} + + +.icon-long-arrow-right { + .ie7icon(''); +} + + +.icon-apple { + .ie7icon(''); +} + + +.icon-windows { + .ie7icon(''); +} + + +.icon-android { + .ie7icon(''); +} + + +.icon-linux { + .ie7icon(''); +} + + +.icon-dribbble { + .ie7icon(''); +} + + +.icon-skype { + .ie7icon(''); +} + + +.icon-foursquare { + .ie7icon(''); +} + + +.icon-trello { + .ie7icon(''); +} + + +.icon-female { + .ie7icon(''); +} + + +.icon-male { + .ie7icon(''); +} + + +.icon-gittip { + .ie7icon(''); +} + + +.icon-sun { + .ie7icon(''); +} + + +.icon-moon { + .ie7icon(''); +} + + +.icon-archive { + .ie7icon(''); +} + + +.icon-bug { + .ie7icon(''); +} + + +.icon-vk { + .ie7icon(''); +} + + +.icon-weibo { + .ie7icon(''); +} + + +.icon-renren { + .ie7icon(''); +} + + diff --git a/stylesheets/font-awesome/less/font-awesome.less b/stylesheets/font-awesome/less/font-awesome.less new file mode 100644 index 00000000..0f454612 --- /dev/null +++ b/stylesheets/font-awesome/less/font-awesome.less @@ -0,0 +1,33 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "bootstrap.less"; +@import "extras.less"; +@import "icons.less"; diff --git a/stylesheets/font-awesome/less/icons.less b/stylesheets/font-awesome/less/icons.less new file mode 100644 index 00000000..476d201e --- /dev/null +++ b/stylesheets/font-awesome/less/icons.less @@ -0,0 +1,381 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.icon-glass:before { content: @glass; } +.icon-music:before { content: @music; } +.icon-search:before { content: @search; } +.icon-envelope-alt:before { content: @envelope-alt; } +.icon-heart:before { content: @heart; } +.icon-star:before { content: @star; } +.icon-star-empty:before { content: @star-empty; } +.icon-user:before { content: @user; } +.icon-film:before { content: @film; } +.icon-th-large:before { content: @th-large; } +.icon-th:before { content: @th; } +.icon-th-list:before { content: @th-list; } +.icon-ok:before { content: @ok; } +.icon-remove:before { content: @remove; } +.icon-zoom-in:before { content: @zoom-in; } +.icon-zoom-out:before { content: @zoom-out; } +.icon-power-off:before, +.icon-off:before { content: @off; } +.icon-signal:before { content: @signal; } +.icon-gear:before, +.icon-cog:before { content: @cog; } +.icon-trash:before { content: @trash; } +.icon-home:before { content: @home; } +.icon-file-alt:before { content: @file-alt; } +.icon-time:before { content: @time; } +.icon-road:before { content: @road; } +.icon-download-alt:before { content: @download-alt; } +.icon-download:before { content: @download; } +.icon-upload:before { content: @upload; } +.icon-inbox:before { content: @inbox; } +.icon-play-circle:before { content: @play-circle; } +.icon-rotate-right:before, +.icon-repeat:before { content: @repeat; } +.icon-refresh:before { content: @refresh; } +.icon-list-alt:before { content: @list-alt; } +.icon-lock:before { content: @lock; } +.icon-flag:before { content: @flag; } +.icon-headphones:before { content: @headphones; } +.icon-volume-off:before { content: @volume-off; } +.icon-volume-down:before { content: @volume-down; } +.icon-volume-up:before { content: @volume-up; } +.icon-qrcode:before { content: @qrcode; } +.icon-barcode:before { content: @barcode; } +.icon-tag:before { content: @tag; } +.icon-tags:before { content: @tags; } +.icon-book:before { content: @book; } +.icon-bookmark:before { content: @bookmark; } +.icon-print:before { content: @print; } +.icon-camera:before { content: @camera; } +.icon-font:before { content: @font; } +.icon-bold:before { content: @bold; } +.icon-italic:before { content: @italic; } +.icon-text-height:before { content: @text-height; } +.icon-text-width:before { content: @text-width; } +.icon-align-left:before { content: @align-left; } +.icon-align-center:before { content: @align-center; } +.icon-align-right:before { content: @align-right; } +.icon-align-justify:before { content: @align-justify; } +.icon-list:before { content: @list; } +.icon-indent-left:before { content: @indent-left; } +.icon-indent-right:before { content: @indent-right; } +.icon-facetime-video:before { content: @facetime-video; } +.icon-picture:before { content: @picture; } +.icon-pencil:before { content: @pencil; } +.icon-map-marker:before { content: @map-marker; } +.icon-adjust:before { content: @adjust; } +.icon-tint:before { content: @tint; } +.icon-edit:before { content: @edit; } +.icon-share:before { content: @share; } +.icon-check:before { content: @check; } +.icon-move:before { content: @move; } +.icon-step-backward:before { content: @step-backward; } +.icon-fast-backward:before { content: @fast-backward; } +.icon-backward:before { content: @backward; } +.icon-play:before { content: @play; } +.icon-pause:before { content: @pause; } +.icon-stop:before { content: @stop; } +.icon-forward:before { content: @forward; } +.icon-fast-forward:before { content: @fast-forward; } +.icon-step-forward:before { content: @step-forward; } +.icon-eject:before { content: @eject; } +.icon-chevron-left:before { content: @chevron-left; } +.icon-chevron-right:before { content: @chevron-right; } +.icon-plus-sign:before { content: @plus-sign; } +.icon-minus-sign:before { content: @minus-sign; } +.icon-remove-sign:before { content: @remove-sign; } +.icon-ok-sign:before { content: @ok-sign; } +.icon-question-sign:before { content: @question-sign; } +.icon-info-sign:before { content: @info-sign; } +.icon-screenshot:before { content: @screenshot; } +.icon-remove-circle:before { content: @remove-circle; } +.icon-ok-circle:before { content: @ok-circle; } +.icon-ban-circle:before { content: @ban-circle; } +.icon-arrow-left:before { content: @arrow-left; } +.icon-arrow-right:before { content: @arrow-right; } +.icon-arrow-up:before { content: @arrow-up; } +.icon-arrow-down:before { content: @arrow-down; } +.icon-mail-forward:before, +.icon-share-alt:before { content: @share-alt; } +.icon-resize-full:before { content: @resize-full; } +.icon-resize-small:before { content: @resize-small; } +.icon-plus:before { content: @plus; } +.icon-minus:before { content: @minus; } +.icon-asterisk:before { content: @asterisk; } +.icon-exclamation-sign:before { content: @exclamation-sign; } +.icon-gift:before { content: @gift; } +.icon-leaf:before { content: @leaf; } +.icon-fire:before { content: @fire; } +.icon-eye-open:before { content: @eye-open; } +.icon-eye-close:before { content: @eye-close; } +.icon-warning-sign:before { content: @warning-sign; } +.icon-plane:before { content: @plane; } +.icon-calendar:before { content: @calendar; } +.icon-random:before { content: @random; } +.icon-comment:before { content: @comment; } +.icon-magnet:before { content: @magnet; } +.icon-chevron-up:before { content: @chevron-up; } +.icon-chevron-down:before { content: @chevron-down; } +.icon-retweet:before { content: @retweet; } +.icon-shopping-cart:before { content: @shopping-cart; } +.icon-folder-close:before { content: @folder-close; } +.icon-folder-open:before { content: @folder-open; } +.icon-resize-vertical:before { content: @resize-vertical; } +.icon-resize-horizontal:before { content: @resize-horizontal; } +.icon-bar-chart:before { content: @bar-chart; } +.icon-twitter-sign:before { content: @twitter-sign; } +.icon-facebook-sign:before { content: @facebook-sign; } +.icon-camera-retro:before { content: @camera-retro; } +.icon-key:before { content: @key; } +.icon-gears:before, +.icon-cogs:before { content: @cogs; } +.icon-comments:before { content: @comments; } +.icon-thumbs-up-alt:before { content: @thumbs-up-alt; } +.icon-thumbs-down-alt:before { content: @thumbs-down-alt; } +.icon-star-half:before { content: @star-half; } +.icon-heart-empty:before { content: @heart-empty; } +.icon-signout:before { content: @signout; } +.icon-linkedin-sign:before { content: @linkedin-sign; } +.icon-pushpin:before { content: @pushpin; } +.icon-external-link:before { content: @external-link; } +.icon-signin:before { content: @signin; } +.icon-trophy:before { content: @trophy; } +.icon-github-sign:before { content: @github-sign; } +.icon-upload-alt:before { content: @upload-alt; } +.icon-lemon:before { content: @lemon; } +.icon-phone:before { content: @phone; } +.icon-unchecked:before, +.icon-check-empty:before { content: @check-empty; } +.icon-bookmark-empty:before { content: @bookmark-empty; } +.icon-phone-sign:before { content: @phone-sign; } +.icon-twitter:before { content: @twitter; } +.icon-facebook:before { content: @facebook; } +.icon-github:before { content: @github; } +.icon-unlock:before { content: @unlock; } +.icon-credit-card:before { content: @credit-card; } +.icon-rss:before { content: @rss; } +.icon-hdd:before { content: @hdd; } +.icon-bullhorn:before { content: @bullhorn; } +.icon-bell:before { content: @bell; } +.icon-certificate:before { content: @certificate; } +.icon-hand-right:before { content: @hand-right; } +.icon-hand-left:before { content: @hand-left; } +.icon-hand-up:before { content: @hand-up; } +.icon-hand-down:before { content: @hand-down; } +.icon-circle-arrow-left:before { content: @circle-arrow-left; } +.icon-circle-arrow-right:before { content: @circle-arrow-right; } +.icon-circle-arrow-up:before { content: @circle-arrow-up; } +.icon-circle-arrow-down:before { content: @circle-arrow-down; } +.icon-globe:before { content: @globe; } +.icon-wrench:before { content: @wrench; } +.icon-tasks:before { content: @tasks; } +.icon-filter:before { content: @filter; } +.icon-briefcase:before { content: @briefcase; } +.icon-fullscreen:before { content: @fullscreen; } +.icon-group:before { content: @group; } +.icon-link:before { content: @link; } +.icon-cloud:before { content: @cloud; } +.icon-beaker:before { content: @beaker; } +.icon-cut:before { content: @cut; } +.icon-copy:before { content: @copy; } +.icon-paperclip:before, +.icon-paper-clip:before { content: @paper-clip; } +.icon-save:before { content: @save; } +.icon-sign-blank:before { content: @sign-blank; } +.icon-reorder:before { content: @reorder; } +.icon-list-ul:before { content: @list-ul; } +.icon-list-ol:before { content: @list-ol; } +.icon-strikethrough:before { content: @strikethrough; } +.icon-underline:before { content: @underline; } +.icon-table:before { content: @table; } +.icon-magic:before { content: @magic; } +.icon-truck:before { content: @truck; } +.icon-pinterest:before { content: @pinterest; } +.icon-pinterest-sign:before { content: @pinterest-sign; } +.icon-google-plus-sign:before { content: @google-plus-sign; } +.icon-google-plus:before { content: @google-plus; } +.icon-money:before { content: @money; } +.icon-caret-down:before { content: @caret-down; } +.icon-caret-up:before { content: @caret-up; } +.icon-caret-left:before { content: @caret-left; } +.icon-caret-right:before { content: @caret-right; } +.icon-columns:before { content: @columns; } +.icon-sort:before { content: @sort; } +.icon-sort-down:before { content: @sort-down; } +.icon-sort-up:before { content: @sort-up; } +.icon-envelope:before { content: @envelope; } +.icon-linkedin:before { content: @linkedin; } +.icon-rotate-left:before, +.icon-undo:before { content: @undo; } +.icon-legal:before { content: @legal; } +.icon-dashboard:before { content: @dashboard; } +.icon-comment-alt:before { content: @comment-alt; } +.icon-comments-alt:before { content: @comments-alt; } +.icon-bolt:before { content: @bolt; } +.icon-sitemap:before { content: @sitemap; } +.icon-umbrella:before { content: @umbrella; } +.icon-paste:before { content: @paste; } +.icon-lightbulb:before { content: @lightbulb; } +.icon-exchange:before { content: @exchange; } +.icon-cloud-download:before { content: @cloud-download; } +.icon-cloud-upload:before { content: @cloud-upload; } +.icon-user-md:before { content: @user-md; } +.icon-stethoscope:before { content: @stethoscope; } +.icon-suitcase:before { content: @suitcase; } +.icon-bell-alt:before { content: @bell-alt; } +.icon-coffee:before { content: @coffee; } +.icon-food:before { content: @food; } +.icon-file-text-alt:before { content: @file-text-alt; } +.icon-building:before { content: @building; } +.icon-hospital:before { content: @hospital; } +.icon-ambulance:before { content: @ambulance; } +.icon-medkit:before { content: @medkit; } +.icon-fighter-jet:before { content: @fighter-jet; } +.icon-beer:before { content: @beer; } +.icon-h-sign:before { content: @h-sign; } +.icon-plus-sign-alt:before { content: @plus-sign-alt; } +.icon-double-angle-left:before { content: @double-angle-left; } +.icon-double-angle-right:before { content: @double-angle-right; } +.icon-double-angle-up:before { content: @double-angle-up; } +.icon-double-angle-down:before { content: @double-angle-down; } +.icon-angle-left:before { content: @angle-left; } +.icon-angle-right:before { content: @angle-right; } +.icon-angle-up:before { content: @angle-up; } +.icon-angle-down:before { content: @angle-down; } +.icon-desktop:before { content: @desktop; } +.icon-laptop:before { content: @laptop; } +.icon-tablet:before { content: @tablet; } +.icon-mobile-phone:before { content: @mobile-phone; } +.icon-circle-blank:before { content: @circle-blank; } +.icon-quote-left:before { content: @quote-left; } +.icon-quote-right:before { content: @quote-right; } +.icon-spinner:before { content: @spinner; } +.icon-circle:before { content: @circle; } +.icon-mail-reply:before, +.icon-reply:before { content: @reply; } +.icon-github-alt:before { content: @github-alt; } +.icon-folder-close-alt:before { content: @folder-close-alt; } +.icon-folder-open-alt:before { content: @folder-open-alt; } +.icon-expand-alt:before { content: @expand-alt; } +.icon-collapse-alt:before { content: @collapse-alt; } +.icon-smile:before { content: @smile; } +.icon-frown:before { content: @frown; } +.icon-meh:before { content: @meh; } +.icon-gamepad:before { content: @gamepad; } +.icon-keyboard:before { content: @keyboard; } +.icon-flag-alt:before { content: @flag-alt; } +.icon-flag-checkered:before { content: @flag-checkered; } +.icon-terminal:before { content: @terminal; } +.icon-code:before { content: @code; } +.icon-reply-all:before { content: @reply-all; } +.icon-mail-reply-all:before { content: @mail-reply-all; } +.icon-star-half-full:before, +.icon-star-half-empty:before { content: @star-half-empty; } +.icon-location-arrow:before { content: @location-arrow; } +.icon-crop:before { content: @crop; } +.icon-code-fork:before { content: @code-fork; } +.icon-unlink:before { content: @unlink; } +.icon-question:before { content: @question; } +.icon-info:before { content: @info; } +.icon-exclamation:before { content: @exclamation; } +.icon-superscript:before { content: @superscript; } +.icon-subscript:before { content: @subscript; } +.icon-eraser:before { content: @eraser; } +.icon-puzzle-piece:before { content: @puzzle-piece; } +.icon-microphone:before { content: @microphone; } +.icon-microphone-off:before { content: @microphone-off; } +.icon-shield:before { content: @shield; } +.icon-calendar-empty:before { content: @calendar-empty; } +.icon-fire-extinguisher:before { content: @fire-extinguisher; } +.icon-rocket:before { content: @rocket; } +.icon-maxcdn:before { content: @maxcdn; } +.icon-chevron-sign-left:before { content: @chevron-sign-left; } +.icon-chevron-sign-right:before { content: @chevron-sign-right; } +.icon-chevron-sign-up:before { content: @chevron-sign-up; } +.icon-chevron-sign-down:before { content: @chevron-sign-down; } +.icon-html5:before { content: @html5; } +.icon-css3:before { content: @css3; } +.icon-anchor:before { content: @anchor; } +.icon-unlock-alt:before { content: @unlock-alt; } +.icon-bullseye:before { content: @bullseye; } +.icon-ellipsis-horizontal:before { content: @ellipsis-horizontal; } +.icon-ellipsis-vertical:before { content: @ellipsis-vertical; } +.icon-rss-sign:before { content: @rss-sign; } +.icon-play-sign:before { content: @play-sign; } +.icon-ticket:before { content: @ticket; } +.icon-minus-sign-alt:before { content: @minus-sign-alt; } +.icon-check-minus:before { content: @check-minus; } +.icon-level-up:before { content: @level-up; } +.icon-level-down:before { content: @level-down; } +.icon-check-sign:before { content: @check-sign; } +.icon-edit-sign:before { content: @edit-sign; } +.icon-external-link-sign:before { content: @external-link-sign; } +.icon-share-sign:before { content: @share-sign; } +.icon-compass:before { content: @compass; } +.icon-collapse:before { content: @collapse; } +.icon-collapse-top:before { content: @collapse-top; } +.icon-expand:before { content: @expand; } +.icon-euro:before, +.icon-eur:before { content: @eur; } +.icon-gbp:before { content: @gbp; } +.icon-dollar:before, +.icon-usd:before { content: @usd; } +.icon-rupee:before, +.icon-inr:before { content: @inr; } +.icon-yen:before, +.icon-jpy:before { content: @jpy; } +.icon-renminbi:before, +.icon-cny:before { content: @cny; } +.icon-won:before, +.icon-krw:before { content: @krw; } +.icon-bitcoin:before, +.icon-btc:before { content: @btc; } +.icon-file:before { content: @file; } +.icon-file-text:before { content: @file-text; } +.icon-sort-by-alphabet:before { content: @sort-by-alphabet; } +.icon-sort-by-alphabet-alt:before { content: @sort-by-alphabet-alt; } +.icon-sort-by-attributes:before { content: @sort-by-attributes; } +.icon-sort-by-attributes-alt:before { content: @sort-by-attributes-alt; } +.icon-sort-by-order:before { content: @sort-by-order; } +.icon-sort-by-order-alt:before { content: @sort-by-order-alt; } +.icon-thumbs-up:before { content: @thumbs-up; } +.icon-thumbs-down:before { content: @thumbs-down; } +.icon-youtube-sign:before { content: @youtube-sign; } +.icon-youtube:before { content: @youtube; } +.icon-xing:before { content: @xing; } +.icon-xing-sign:before { content: @xing-sign; } +.icon-youtube-play:before { content: @youtube-play; } +.icon-dropbox:before { content: @dropbox; } +.icon-stackexchange:before { content: @stackexchange; } +.icon-instagram:before { content: @instagram; } +.icon-flickr:before { content: @flickr; } +.icon-adn:before { content: @adn; } +.icon-bitbucket:before { content: @bitbucket; } +.icon-bitbucket-sign:before { content: @bitbucket-sign; } +.icon-tumblr:before { content: @tumblr; } +.icon-tumblr-sign:before { content: @tumblr-sign; } +.icon-long-arrow-down:before { content: @long-arrow-down; } +.icon-long-arrow-up:before { content: @long-arrow-up; } +.icon-long-arrow-left:before { content: @long-arrow-left; } +.icon-long-arrow-right:before { content: @long-arrow-right; } +.icon-apple:before { content: @apple; } +.icon-windows:before { content: @windows; } +.icon-android:before { content: @android; } +.icon-linux:before { content: @linux; } +.icon-dribbble:before { content: @dribbble; } +.icon-skype:before { content: @skype; } +.icon-foursquare:before { content: @foursquare; } +.icon-trello:before { content: @trello; } +.icon-female:before { content: @female; } +.icon-male:before { content: @male; } +.icon-gittip:before { content: @gittip; } +.icon-sun:before { content: @sun; } +.icon-moon:before { content: @moon; } +.icon-archive:before { content: @archive; } +.icon-bug:before { content: @bug; } +.icon-vk:before { content: @vk; } +.icon-weibo:before { content: @weibo; } +.icon-renren:before { content: @renren; } diff --git a/stylesheets/font-awesome/less/mixins.less b/stylesheets/font-awesome/less/mixins.less new file mode 100644 index 00000000..f7fdda59 --- /dev/null +++ b/stylesheets/font-awesome/less/mixins.less @@ -0,0 +1,48 @@ +// Mixins +// -------------------------- + +.icon(@icon) { + .icon-FontAwesome(); + content: @icon; +} + +.icon-FontAwesome() { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; // fixes ie7 issues +} + +.border-radius(@radius) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +.icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) { + .icon-stack { + position: relative; + display: inline-block; + width: @width; + height: @height; + line-height: @width; + vertical-align: -35%; + [class^="icon-"], + [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: @top-font-size; + line-height: inherit; + *line-height: @height; + } + .icon-stack-base { + font-size: @base-font-size; + *line-height: @height / @base-font-size; + } + } +} diff --git a/stylesheets/font-awesome/less/path.less b/stylesheets/font-awesome/less/path.less new file mode 100644 index 00000000..8ccef8cf --- /dev/null +++ b/stylesheets/font-awesome/less/path.less @@ -0,0 +1,14 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}'); + src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'), + url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'), + url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'), + url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg'); +// src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/stylesheets/font-awesome/less/variables.less b/stylesheets/font-awesome/less/variables.less new file mode 100644 index 00000000..9d0879b0 --- /dev/null +++ b/stylesheets/font-awesome/less/variables.less @@ -0,0 +1,735 @@ +// Variables +// -------------------------- + +@FontAwesomePath: "../font"; +//@FontAwesomePath: "//netdna.bootstrapcdn.com/font-awesome/3.2.1/font"; // for referencing Bootstrap CDN font files directly +@FontAwesomeVersion: "3.2.1"; +@borderColor: #eee; +@iconMuted: #eee; +@iconLight: #fff; +@iconDark: #333; +@icons-li-width: 30/14em; + + + @glass: "\f000"; + + @music: "\f001"; + + @search: "\f002"; + + @envelope-alt: "\f003"; + + @heart: "\f004"; + + @star: "\f005"; + + @star-empty: "\f006"; + + @user: "\f007"; + + @film: "\f008"; + + @th-large: "\f009"; + + @th: "\f00a"; + + @th-list: "\f00b"; + + @ok: "\f00c"; + + @remove: "\f00d"; + + @zoom-in: "\f00e"; + + @zoom-out: "\f010"; + + @off: "\f011"; + + @signal: "\f012"; + + @cog: "\f013"; + + @trash: "\f014"; + + @home: "\f015"; + + @file-alt: "\f016"; + + @time: "\f017"; + + @road: "\f018"; + + @download-alt: "\f019"; + + @download: "\f01a"; + + @upload: "\f01b"; + + @inbox: "\f01c"; + + @play-circle: "\f01d"; + + @repeat: "\f01e"; + + @refresh: "\f021"; + + @list-alt: "\f022"; + + @lock: "\f023"; + + @flag: "\f024"; + + @headphones: "\f025"; + + @volume-off: "\f026"; + + @volume-down: "\f027"; + + @volume-up: "\f028"; + + @qrcode: "\f029"; + + @barcode: "\f02a"; + + @tag: "\f02b"; + + @tags: "\f02c"; + + @book: "\f02d"; + + @bookmark: "\f02e"; + + @print: "\f02f"; + + @camera: "\f030"; + + @font: "\f031"; + + @bold: "\f032"; + + @italic: "\f033"; + + @text-height: "\f034"; + + @text-width: "\f035"; + + @align-left: "\f036"; + + @align-center: "\f037"; + + @align-right: "\f038"; + + @align-justify: "\f039"; + + @list: "\f03a"; + + @indent-left: "\f03b"; + + @indent-right: "\f03c"; + + @facetime-video: "\f03d"; + + @picture: "\f03e"; + + @pencil: "\f040"; + + @map-marker: "\f041"; + + @adjust: "\f042"; + + @tint: "\f043"; + + @edit: "\f044"; + + @share: "\f045"; + + @check: "\f046"; + + @move: "\f047"; + + @step-backward: "\f048"; + + @fast-backward: "\f049"; + + @backward: "\f04a"; + + @play: "\f04b"; + + @pause: "\f04c"; + + @stop: "\f04d"; + + @forward: "\f04e"; + + @fast-forward: "\f050"; + + @step-forward: "\f051"; + + @eject: "\f052"; + + @chevron-left: "\f053"; + + @chevron-right: "\f054"; + + @plus-sign: "\f055"; + + @minus-sign: "\f056"; + + @remove-sign: "\f057"; + + @ok-sign: "\f058"; + + @question-sign: "\f059"; + + @info-sign: "\f05a"; + + @screenshot: "\f05b"; + + @remove-circle: "\f05c"; + + @ok-circle: "\f05d"; + + @ban-circle: "\f05e"; + + @arrow-left: "\f060"; + + @arrow-right: "\f061"; + + @arrow-up: "\f062"; + + @arrow-down: "\f063"; + + @share-alt: "\f064"; + + @resize-full: "\f065"; + + @resize-small: "\f066"; + + @plus: "\f067"; + + @minus: "\f068"; + + @asterisk: "\f069"; + + @exclamation-sign: "\f06a"; + + @gift: "\f06b"; + + @leaf: "\f06c"; + + @fire: "\f06d"; + + @eye-open: "\f06e"; + + @eye-close: "\f070"; + + @warning-sign: "\f071"; + + @plane: "\f072"; + + @calendar: "\f073"; + + @random: "\f074"; + + @comment: "\f075"; + + @magnet: "\f076"; + + @chevron-up: "\f077"; + + @chevron-down: "\f078"; + + @retweet: "\f079"; + + @shopping-cart: "\f07a"; + + @folder-close: "\f07b"; + + @folder-open: "\f07c"; + + @resize-vertical: "\f07d"; + + @resize-horizontal: "\f07e"; + + @bar-chart: "\f080"; + + @twitter-sign: "\f081"; + + @facebook-sign: "\f082"; + + @camera-retro: "\f083"; + + @key: "\f084"; + + @cogs: "\f085"; + + @comments: "\f086"; + + @thumbs-up-alt: "\f087"; + + @thumbs-down-alt: "\f088"; + + @star-half: "\f089"; + + @heart-empty: "\f08a"; + + @signout: "\f08b"; + + @linkedin-sign: "\f08c"; + + @pushpin: "\f08d"; + + @external-link: "\f08e"; + + @signin: "\f090"; + + @trophy: "\f091"; + + @github-sign: "\f092"; + + @upload-alt: "\f093"; + + @lemon: "\f094"; + + @phone: "\f095"; + + @check-empty: "\f096"; + + @bookmark-empty: "\f097"; + + @phone-sign: "\f098"; + + @twitter: "\f099"; + + @facebook: "\f09a"; + + @github: "\f09b"; + + @unlock: "\f09c"; + + @credit-card: "\f09d"; + + @rss: "\f09e"; + + @hdd: "\f0a0"; + + @bullhorn: "\f0a1"; + + @bell: "\f0a2"; + + @certificate: "\f0a3"; + + @hand-right: "\f0a4"; + + @hand-left: "\f0a5"; + + @hand-up: "\f0a6"; + + @hand-down: "\f0a7"; + + @circle-arrow-left: "\f0a8"; + + @circle-arrow-right: "\f0a9"; + + @circle-arrow-up: "\f0aa"; + + @circle-arrow-down: "\f0ab"; + + @globe: "\f0ac"; + + @wrench: "\f0ad"; + + @tasks: "\f0ae"; + + @filter: "\f0b0"; + + @briefcase: "\f0b1"; + + @fullscreen: "\f0b2"; + + @group: "\f0c0"; + + @link: "\f0c1"; + + @cloud: "\f0c2"; + + @beaker: "\f0c3"; + + @cut: "\f0c4"; + + @copy: "\f0c5"; + + @paper-clip: "\f0c6"; + + @save: "\f0c7"; + + @sign-blank: "\f0c8"; + + @reorder: "\f0c9"; + + @list-ul: "\f0ca"; + + @list-ol: "\f0cb"; + + @strikethrough: "\f0cc"; + + @underline: "\f0cd"; + + @table: "\f0ce"; + + @magic: "\f0d0"; + + @truck: "\f0d1"; + + @pinterest: "\f0d2"; + + @pinterest-sign: "\f0d3"; + + @google-plus-sign: "\f0d4"; + + @google-plus: "\f0d5"; + + @money: "\f0d6"; + + @caret-down: "\f0d7"; + + @caret-up: "\f0d8"; + + @caret-left: "\f0d9"; + + @caret-right: "\f0da"; + + @columns: "\f0db"; + + @sort: "\f0dc"; + + @sort-down: "\f0dd"; + + @sort-up: "\f0de"; + + @envelope: "\f0e0"; + + @linkedin: "\f0e1"; + + @undo: "\f0e2"; + + @legal: "\f0e3"; + + @dashboard: "\f0e4"; + + @comment-alt: "\f0e5"; + + @comments-alt: "\f0e6"; + + @bolt: "\f0e7"; + + @sitemap: "\f0e8"; + + @umbrella: "\f0e9"; + + @paste: "\f0ea"; + + @lightbulb: "\f0eb"; + + @exchange: "\f0ec"; + + @cloud-download: "\f0ed"; + + @cloud-upload: "\f0ee"; + + @user-md: "\f0f0"; + + @stethoscope: "\f0f1"; + + @suitcase: "\f0f2"; + + @bell-alt: "\f0f3"; + + @coffee: "\f0f4"; + + @food: "\f0f5"; + + @file-text-alt: "\f0f6"; + + @building: "\f0f7"; + + @hospital: "\f0f8"; + + @ambulance: "\f0f9"; + + @medkit: "\f0fa"; + + @fighter-jet: "\f0fb"; + + @beer: "\f0fc"; + + @h-sign: "\f0fd"; + + @plus-sign-alt: "\f0fe"; + + @double-angle-left: "\f100"; + + @double-angle-right: "\f101"; + + @double-angle-up: "\f102"; + + @double-angle-down: "\f103"; + + @angle-left: "\f104"; + + @angle-right: "\f105"; + + @angle-up: "\f106"; + + @angle-down: "\f107"; + + @desktop: "\f108"; + + @laptop: "\f109"; + + @tablet: "\f10a"; + + @mobile-phone: "\f10b"; + + @circle-blank: "\f10c"; + + @quote-left: "\f10d"; + + @quote-right: "\f10e"; + + @spinner: "\f110"; + + @circle: "\f111"; + + @reply: "\f112"; + + @github-alt: "\f113"; + + @folder-close-alt: "\f114"; + + @folder-open-alt: "\f115"; + + @expand-alt: "\f116"; + + @collapse-alt: "\f117"; + + @smile: "\f118"; + + @frown: "\f119"; + + @meh: "\f11a"; + + @gamepad: "\f11b"; + + @keyboard: "\f11c"; + + @flag-alt: "\f11d"; + + @flag-checkered: "\f11e"; + + @terminal: "\f120"; + + @code: "\f121"; + + @reply-all: "\f122"; + + @mail-reply-all: "\f122"; + + @star-half-empty: "\f123"; + + @location-arrow: "\f124"; + + @crop: "\f125"; + + @code-fork: "\f126"; + + @unlink: "\f127"; + + @question: "\f128"; + + @info: "\f129"; + + @exclamation: "\f12a"; + + @superscript: "\f12b"; + + @subscript: "\f12c"; + + @eraser: "\f12d"; + + @puzzle-piece: "\f12e"; + + @microphone: "\f130"; + + @microphone-off: "\f131"; + + @shield: "\f132"; + + @calendar-empty: "\f133"; + + @fire-extinguisher: "\f134"; + + @rocket: "\f135"; + + @maxcdn: "\f136"; + + @chevron-sign-left: "\f137"; + + @chevron-sign-right: "\f138"; + + @chevron-sign-up: "\f139"; + + @chevron-sign-down: "\f13a"; + + @html5: "\f13b"; + + @css3: "\f13c"; + + @anchor: "\f13d"; + + @unlock-alt: "\f13e"; + + @bullseye: "\f140"; + + @ellipsis-horizontal: "\f141"; + + @ellipsis-vertical: "\f142"; + + @rss-sign: "\f143"; + + @play-sign: "\f144"; + + @ticket: "\f145"; + + @minus-sign-alt: "\f146"; + + @check-minus: "\f147"; + + @level-up: "\f148"; + + @level-down: "\f149"; + + @check-sign: "\f14a"; + + @edit-sign: "\f14b"; + + @external-link-sign: "\f14c"; + + @share-sign: "\f14d"; + + @compass: "\f14e"; + + @collapse: "\f150"; + + @collapse-top: "\f151"; + + @expand: "\f152"; + + @eur: "\f153"; + + @gbp: "\f154"; + + @usd: "\f155"; + + @inr: "\f156"; + + @jpy: "\f157"; + + @cny: "\f158"; + + @krw: "\f159"; + + @btc: "\f15a"; + + @file: "\f15b"; + + @file-text: "\f15c"; + + @sort-by-alphabet: "\f15d"; + + @sort-by-alphabet-alt: "\f15e"; + + @sort-by-attributes: "\f160"; + + @sort-by-attributes-alt: "\f161"; + + @sort-by-order: "\f162"; + + @sort-by-order-alt: "\f163"; + + @thumbs-up: "\f164"; + + @thumbs-down: "\f165"; + + @youtube-sign: "\f166"; + + @youtube: "\f167"; + + @xing: "\f168"; + + @xing-sign: "\f169"; + + @youtube-play: "\f16a"; + + @dropbox: "\f16b"; + + @stackexchange: "\f16c"; + + @instagram: "\f16d"; + + @flickr: "\f16e"; + + @adn: "\f170"; + + @bitbucket: "\f171"; + + @bitbucket-sign: "\f172"; + + @tumblr: "\f173"; + + @tumblr-sign: "\f174"; + + @long-arrow-down: "\f175"; + + @long-arrow-up: "\f176"; + + @long-arrow-left: "\f177"; + + @long-arrow-right: "\f178"; + + @apple: "\f179"; + + @windows: "\f17a"; + + @android: "\f17b"; + + @linux: "\f17c"; + + @dribbble: "\f17d"; + + @skype: "\f17e"; + + @foursquare: "\f180"; + + @trello: "\f181"; + + @female: "\f182"; + + @male: "\f183"; + + @gittip: "\f184"; + + @sun: "\f185"; + + @moon: "\f186"; + + @archive: "\f187"; + + @bug: "\f188"; + + @vk: "\f189"; + + @weibo: "\f18a"; + + @renren: "\f18b"; + diff --git a/stylesheets/font-awesome/scss/_bootstrap.scss b/stylesheets/font-awesome/scss/_bootstrap.scss new file mode 100644 index 00000000..837d2df6 --- /dev/null +++ b/stylesheets/font-awesome/scss/_bootstrap.scss @@ -0,0 +1,84 @@ +/* BOOTSTRAP SPECIFIC CLASSES + * -------------------------- */ + +/* Bootstrap 2.0 sprites.less reset */ +[class^="icon-"], +[class*=" icon-"] { + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} + +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} + + +/* keeps Bootstrap styles with and without icons the same */ +.btn, .nav { + [class^="icon-"], + [class*=" icon-"] { + // display: inline; + &.icon-large { line-height: .9em; } + &.icon-spin { display: inline-block; } + } +} +.nav-tabs, .nav-pills { + [class^="icon-"], + [class*=" icon-"] { + &, &.icon-large { line-height: .9em; } + } +} +.btn { + [class^="icon-"], + [class*=" icon-"] { + &.pull-left, &.pull-right { + &.icon-2x { margin-top: .18em; } + } + &.icon-spin.icon-large { line-height: .8em; } + } +} +.btn.btn-small { + [class^="icon-"], + [class*=" icon-"] { + &.pull-left, &.pull-right { + &.icon-2x { margin-top: .25em; } + } + } +} +.btn.btn-large { + [class^="icon-"], + [class*=" icon-"] { + margin-top: 0; // overrides bootstrap default + &.pull-left, &.pull-right { + &.icon-2x { margin-top: .05em; } + } + &.pull-left.icon-2x { margin-right: .2em; } + &.pull-right.icon-2x { margin-left: .2em; } + } +} + +/* Fixes alignment in nav lists */ +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + line-height: inherit; +} diff --git a/stylesheets/font-awesome/scss/_core.scss b/stylesheets/font-awesome/scss/_core.scss new file mode 100644 index 00000000..0189c73d --- /dev/null +++ b/stylesheets/font-awesome/scss/_core.scss @@ -0,0 +1,129 @@ +/* FONT AWESOME CORE + * -------------------------- */ + +[class^="icon-"], +[class*=" icon-"] { + @include icon-FontAwesome(); +} + +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} + +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: (4em/3); +} + +/* makes sure icons active on rollover in links */ +a { + [class^="icon-"], + [class*=" icon-"] { + display: inline; + } +} + +/* increased font size for icon-large */ +[class^="icon-"], +[class*=" icon-"] { + &.icon-fixed-width { + display: inline-block; + width: (16em/14); + text-align: right; + padding-right: (4em/14); + &.icon-large { + width: (20em/14); + } + } +} + +.icons-ul { + margin-left: $icons-li-width; + list-style-type: none; + + > li { position: relative; } + + .icon-li { + position: absolute; + left: -$icons-li-width; + width: $icons-li-width; + text-align: center; + line-height: inherit; + } +} + +// allows usage of the hide class directly on font awesome icons +[class^="icon-"], +[class*=" icon-"] { + &.hide { + display: none; + } +} + +.icon-muted { color: $iconMuted; } +.icon-light { color: $iconLight; } +.icon-dark { color: $iconDark; } + +// Icon Borders +// ------------------------- + +.icon-border { + border: solid 1px $borderColor; + padding: .2em .25em .15em; + @include border-radius(3px); +} + +// Icon Sizes +// ------------------------- + +.icon-2x { + font-size: 2em; + &.icon-border { + border-width: 2px; + @include border-radius(4px); + } +} +.icon-3x { + font-size: 3em; + &.icon-border { + border-width: 3px; + @include border-radius(5px); + } +} +.icon-4x { + font-size: 4em; + &.icon-border { + border-width: 4px; + @include border-radius(6px); + } +} + +.icon-5x { + font-size: 5em; + &.icon-border { + border-width: 5px; + @include border-radius(7px); + } +} + + +// Floats & Margins +// ------------------------- + +// Quick floats +.pull-right { float: right; } +.pull-left { float: left; } + +[class^="icon-"], +[class*=" icon-"] { + &.pull-left { + margin-right: .3em; + } + &.pull-right { + margin-left: .3em; + } +} diff --git a/stylesheets/font-awesome/scss/_extras.scss b/stylesheets/font-awesome/scss/_extras.scss new file mode 100644 index 00000000..9a25845d --- /dev/null +++ b/stylesheets/font-awesome/scss/_extras.scss @@ -0,0 +1,93 @@ +/* EXTRAS + * -------------------------- */ + +/* Stacked and layered icon */ +@include icon-stack(); + +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +/* Prevent stack and spinners from being taken inline when inside a link */ +a .icon-stack, +a .icon-spin { + display: inline-block; + text-decoration: none; +} + +@-moz-keyframes spin { + 0% { -moz-transform: rotate(0deg); } + 100% { -moz-transform: rotate(359deg); } +} +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(359deg); } +} +@-o-keyframes spin { + 0% { -o-transform: rotate(0deg); } + 100% { -o-transform: rotate(359deg); } +} +@-ms-keyframes spin { + 0% { -ms-transform: rotate(0deg); } + 100% { -ms-transform: rotate(359deg); } +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} + +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} + +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + +/* ensure rotation occurs inside anchor tags */ +a { + .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { + &:before { display: inline-block; } + } +} diff --git a/stylesheets/font-awesome/scss/_icons.scss b/stylesheets/font-awesome/scss/_icons.scss new file mode 100644 index 00000000..eefda0c9 --- /dev/null +++ b/stylesheets/font-awesome/scss/_icons.scss @@ -0,0 +1,381 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + * readers do not read off random characters that represent icons */ + +.icon-glass:before { content: $glass; } +.icon-music:before { content: $music; } +.icon-search:before { content: $search; } +.icon-envelope-alt:before { content: $envelope-alt; } +.icon-heart:before { content: $heart; } +.icon-star:before { content: $star; } +.icon-star-empty:before { content: $star-empty; } +.icon-user:before { content: $user; } +.icon-film:before { content: $film; } +.icon-th-large:before { content: $th-large; } +.icon-th:before { content: $th; } +.icon-th-list:before { content: $th-list; } +.icon-ok:before { content: $ok; } +.icon-remove:before { content: $remove; } +.icon-zoom-in:before { content: $zoom-in; } +.icon-zoom-out:before { content: $zoom-out; } +.icon-power-off:before, +.icon-off:before { content: $off; } +.icon-signal:before { content: $signal; } +.icon-gear:before, +.icon-cog:before { content: $cog; } +.icon-trash:before { content: $trash; } +.icon-home:before { content: $home; } +.icon-file-alt:before { content: $file-alt; } +.icon-time:before { content: $time; } +.icon-road:before { content: $road; } +.icon-download-alt:before { content: $download-alt; } +.icon-download:before { content: $download; } +.icon-upload:before { content: $upload; } +.icon-inbox:before { content: $inbox; } +.icon-play-circle:before { content: $play-circle; } +.icon-rotate-right:before, +.icon-repeat:before { content: $repeat; } +.icon-refresh:before { content: $refresh; } +.icon-list-alt:before { content: $list-alt; } +.icon-lock:before { content: $lock; } +.icon-flag:before { content: $flag; } +.icon-headphones:before { content: $headphones; } +.icon-volume-off:before { content: $volume-off; } +.icon-volume-down:before { content: $volume-down; } +.icon-volume-up:before { content: $volume-up; } +.icon-qrcode:before { content: $qrcode; } +.icon-barcode:before { content: $barcode; } +.icon-tag:before { content: $tag; } +.icon-tags:before { content: $tags; } +.icon-book:before { content: $book; } +.icon-bookmark:before { content: $bookmark; } +.icon-print:before { content: $print; } +.icon-camera:before { content: $camera; } +.icon-font:before { content: $font; } +.icon-bold:before { content: $bold; } +.icon-italic:before { content: $italic; } +.icon-text-height:before { content: $text-height; } +.icon-text-width:before { content: $text-width; } +.icon-align-left:before { content: $align-left; } +.icon-align-center:before { content: $align-center; } +.icon-align-right:before { content: $align-right; } +.icon-align-justify:before { content: $align-justify; } +.icon-list:before { content: $list; } +.icon-indent-left:before { content: $indent-left; } +.icon-indent-right:before { content: $indent-right; } +.icon-facetime-video:before { content: $facetime-video; } +.icon-picture:before { content: $picture; } +.icon-pencil:before { content: $pencil; } +.icon-map-marker:before { content: $map-marker; } +.icon-adjust:before { content: $adjust; } +.icon-tint:before { content: $tint; } +.icon-edit:before { content: $edit; } +.icon-share:before { content: $share; } +.icon-check:before { content: $check; } +.icon-move:before { content: $move; } +.icon-step-backward:before { content: $step-backward; } +.icon-fast-backward:before { content: $fast-backward; } +.icon-backward:before { content: $backward; } +.icon-play:before { content: $play; } +.icon-pause:before { content: $pause; } +.icon-stop:before { content: $stop; } +.icon-forward:before { content: $forward; } +.icon-fast-forward:before { content: $fast-forward; } +.icon-step-forward:before { content: $step-forward; } +.icon-eject:before { content: $eject; } +.icon-chevron-left:before { content: $chevron-left; } +.icon-chevron-right:before { content: $chevron-right; } +.icon-plus-sign:before { content: $plus-sign; } +.icon-minus-sign:before { content: $minus-sign; } +.icon-remove-sign:before { content: $remove-sign; } +.icon-ok-sign:before { content: $ok-sign; } +.icon-question-sign:before { content: $question-sign; } +.icon-info-sign:before { content: $info-sign; } +.icon-screenshot:before { content: $screenshot; } +.icon-remove-circle:before { content: $remove-circle; } +.icon-ok-circle:before { content: $ok-circle; } +.icon-ban-circle:before { content: $ban-circle; } +.icon-arrow-left:before { content: $arrow-left; } +.icon-arrow-right:before { content: $arrow-right; } +.icon-arrow-up:before { content: $arrow-up; } +.icon-arrow-down:before { content: $arrow-down; } +.icon-mail-forward:before, +.icon-share-alt:before { content: $share-alt; } +.icon-resize-full:before { content: $resize-full; } +.icon-resize-small:before { content: $resize-small; } +.icon-plus:before { content: $plus; } +.icon-minus:before { content: $minus; } +.icon-asterisk:before { content: $asterisk; } +.icon-exclamation-sign:before { content: $exclamation-sign; } +.icon-gift:before { content: $gift; } +.icon-leaf:before { content: $leaf; } +.icon-fire:before { content: $fire; } +.icon-eye-open:before { content: $eye-open; } +.icon-eye-close:before { content: $eye-close; } +.icon-warning-sign:before { content: $warning-sign; } +.icon-plane:before { content: $plane; } +.icon-calendar:before { content: $calendar; } +.icon-random:before { content: $random; } +.icon-comment:before { content: $comment; } +.icon-magnet:before { content: $magnet; } +.icon-chevron-up:before { content: $chevron-up; } +.icon-chevron-down:before { content: $chevron-down; } +.icon-retweet:before { content: $retweet; } +.icon-shopping-cart:before { content: $shopping-cart; } +.icon-folder-close:before { content: $folder-close; } +.icon-folder-open:before { content: $folder-open; } +.icon-resize-vertical:before { content: $resize-vertical; } +.icon-resize-horizontal:before { content: $resize-horizontal; } +.icon-bar-chart:before { content: $bar-chart; } +.icon-twitter-sign:before { content: $twitter-sign; } +.icon-facebook-sign:before { content: $facebook-sign; } +.icon-camera-retro:before { content: $camera-retro; } +.icon-key:before { content: $key; } +.icon-gears:before, +.icon-cogs:before { content: $cogs; } +.icon-comments:before { content: $comments; } +.icon-thumbs-up-alt:before { content: $thumbs-up-alt; } +.icon-thumbs-down-alt:before { content: $thumbs-down-alt; } +.icon-star-half:before { content: $star-half; } +.icon-heart-empty:before { content: $heart-empty; } +.icon-signout:before { content: $signout; } +.icon-linkedin-sign:before { content: $linkedin-sign; } +.icon-pushpin:before { content: $pushpin; } +.icon-external-link:before { content: $external-link; } +.icon-signin:before { content: $signin; } +.icon-trophy:before { content: $trophy; } +.icon-github-sign:before { content: $github-sign; } +.icon-upload-alt:before { content: $upload-alt; } +.icon-lemon:before { content: $lemon; } +.icon-phone:before { content: $phone; } +.icon-unchecked:before, +.icon-check-empty:before { content: $check-empty; } +.icon-bookmark-empty:before { content: $bookmark-empty; } +.icon-phone-sign:before { content: $phone-sign; } +.icon-twitter:before { content: $twitter; } +.icon-facebook:before { content: $facebook; } +.icon-github:before { content: $github; } +.icon-unlock:before { content: $unlock; } +.icon-credit-card:before { content: $credit-card; } +.icon-rss:before { content: $rss; } +.icon-hdd:before { content: $hdd; } +.icon-bullhorn:before { content: $bullhorn; } +.icon-bell:before { content: $bell; } +.icon-certificate:before { content: $certificate; } +.icon-hand-right:before { content: $hand-right; } +.icon-hand-left:before { content: $hand-left; } +.icon-hand-up:before { content: $hand-up; } +.icon-hand-down:before { content: $hand-down; } +.icon-circle-arrow-left:before { content: $circle-arrow-left; } +.icon-circle-arrow-right:before { content: $circle-arrow-right; } +.icon-circle-arrow-up:before { content: $circle-arrow-up; } +.icon-circle-arrow-down:before { content: $circle-arrow-down; } +.icon-globe:before { content: $globe; } +.icon-wrench:before { content: $wrench; } +.icon-tasks:before { content: $tasks; } +.icon-filter:before { content: $filter; } +.icon-briefcase:before { content: $briefcase; } +.icon-fullscreen:before { content: $fullscreen; } +.icon-group:before { content: $group; } +.icon-link:before { content: $link; } +.icon-cloud:before { content: $cloud; } +.icon-beaker:before { content: $beaker; } +.icon-cut:before { content: $cut; } +.icon-copy:before { content: $copy; } +.icon-paperclip:before, +.icon-paper-clip:before { content: $paper-clip; } +.icon-save:before { content: $save; } +.icon-sign-blank:before { content: $sign-blank; } +.icon-reorder:before { content: $reorder; } +.icon-list-ul:before { content: $list-ul; } +.icon-list-ol:before { content: $list-ol; } +.icon-strikethrough:before { content: $strikethrough; } +.icon-underline:before { content: $underline; } +.icon-table:before { content: $table; } +.icon-magic:before { content: $magic; } +.icon-truck:before { content: $truck; } +.icon-pinterest:before { content: $pinterest; } +.icon-pinterest-sign:before { content: $pinterest-sign; } +.icon-google-plus-sign:before { content: $google-plus-sign; } +.icon-google-plus:before { content: $google-plus; } +.icon-money:before { content: $money; } +.icon-caret-down:before { content: $caret-down; } +.icon-caret-up:before { content: $caret-up; } +.icon-caret-left:before { content: $caret-left; } +.icon-caret-right:before { content: $caret-right; } +.icon-columns:before { content: $columns; } +.icon-sort:before { content: $sort; } +.icon-sort-down:before { content: $sort-down; } +.icon-sort-up:before { content: $sort-up; } +.icon-envelope:before { content: $envelope; } +.icon-linkedin:before { content: $linkedin; } +.icon-rotate-left:before, +.icon-undo:before { content: $undo; } +.icon-legal:before { content: $legal; } +.icon-dashboard:before { content: $dashboard; } +.icon-comment-alt:before { content: $comment-alt; } +.icon-comments-alt:before { content: $comments-alt; } +.icon-bolt:before { content: $bolt; } +.icon-sitemap:before { content: $sitemap; } +.icon-umbrella:before { content: $umbrella; } +.icon-paste:before { content: $paste; } +.icon-lightbulb:before { content: $lightbulb; } +.icon-exchange:before { content: $exchange; } +.icon-cloud-download:before { content: $cloud-download; } +.icon-cloud-upload:before { content: $cloud-upload; } +.icon-user-md:before { content: $user-md; } +.icon-stethoscope:before { content: $stethoscope; } +.icon-suitcase:before { content: $suitcase; } +.icon-bell-alt:before { content: $bell-alt; } +.icon-coffee:before { content: $coffee; } +.icon-food:before { content: $food; } +.icon-file-text-alt:before { content: $file-text-alt; } +.icon-building:before { content: $building; } +.icon-hospital:before { content: $hospital; } +.icon-ambulance:before { content: $ambulance; } +.icon-medkit:before { content: $medkit; } +.icon-fighter-jet:before { content: $fighter-jet; } +.icon-beer:before { content: $beer; } +.icon-h-sign:before { content: $h-sign; } +.icon-plus-sign-alt:before { content: $plus-sign-alt; } +.icon-double-angle-left:before { content: $double-angle-left; } +.icon-double-angle-right:before { content: $double-angle-right; } +.icon-double-angle-up:before { content: $double-angle-up; } +.icon-double-angle-down:before { content: $double-angle-down; } +.icon-angle-left:before { content: $angle-left; } +.icon-angle-right:before { content: $angle-right; } +.icon-angle-up:before { content: $angle-up; } +.icon-angle-down:before { content: $angle-down; } +.icon-desktop:before { content: $desktop; } +.icon-laptop:before { content: $laptop; } +.icon-tablet:before { content: $tablet; } +.icon-mobile-phone:before { content: $mobile-phone; } +.icon-circle-blank:before { content: $circle-blank; } +.icon-quote-left:before { content: $quote-left; } +.icon-quote-right:before { content: $quote-right; } +.icon-spinner:before { content: $spinner; } +.icon-circle:before { content: $circle; } +.icon-mail-reply:before, +.icon-reply:before { content: $reply; } +.icon-github-alt:before { content: $github-alt; } +.icon-folder-close-alt:before { content: $folder-close-alt; } +.icon-folder-open-alt:before { content: $folder-open-alt; } +.icon-expand-alt:before { content: $expand-alt; } +.icon-collapse-alt:before { content: $collapse-alt; } +.icon-smile:before { content: $smile; } +.icon-frown:before { content: $frown; } +.icon-meh:before { content: $meh; } +.icon-gamepad:before { content: $gamepad; } +.icon-keyboard:before { content: $keyboard; } +.icon-flag-alt:before { content: $flag-alt; } +.icon-flag-checkered:before { content: $flag-checkered; } +.icon-terminal:before { content: $terminal; } +.icon-code:before { content: $code; } +.icon-reply-all:before { content: $reply-all; } +.icon-mail-reply-all:before { content: $mail-reply-all; } +.icon-star-half-full:before, +.icon-star-half-empty:before { content: $star-half-empty; } +.icon-location-arrow:before { content: $location-arrow; } +.icon-crop:before { content: $crop; } +.icon-code-fork:before { content: $code-fork; } +.icon-unlink:before { content: $unlink; } +.icon-question:before { content: $question; } +.icon-info:before { content: $info; } +.icon-exclamation:before { content: $exclamation; } +.icon-superscript:before { content: $superscript; } +.icon-subscript:before { content: $subscript; } +.icon-eraser:before { content: $eraser; } +.icon-puzzle-piece:before { content: $puzzle-piece; } +.icon-microphone:before { content: $microphone; } +.icon-microphone-off:before { content: $microphone-off; } +.icon-shield:before { content: $shield; } +.icon-calendar-empty:before { content: $calendar-empty; } +.icon-fire-extinguisher:before { content: $fire-extinguisher; } +.icon-rocket:before { content: $rocket; } +.icon-maxcdn:before { content: $maxcdn; } +.icon-chevron-sign-left:before { content: $chevron-sign-left; } +.icon-chevron-sign-right:before { content: $chevron-sign-right; } +.icon-chevron-sign-up:before { content: $chevron-sign-up; } +.icon-chevron-sign-down:before { content: $chevron-sign-down; } +.icon-html5:before { content: $html5; } +.icon-css3:before { content: $css3; } +.icon-anchor:before { content: $anchor; } +.icon-unlock-alt:before { content: $unlock-alt; } +.icon-bullseye:before { content: $bullseye; } +.icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; } +.icon-ellipsis-vertical:before { content: $ellipsis-vertical; } +.icon-rss-sign:before { content: $rss-sign; } +.icon-play-sign:before { content: $play-sign; } +.icon-ticket:before { content: $ticket; } +.icon-minus-sign-alt:before { content: $minus-sign-alt; } +.icon-check-minus:before { content: $check-minus; } +.icon-level-up:before { content: $level-up; } +.icon-level-down:before { content: $level-down; } +.icon-check-sign:before { content: $check-sign; } +.icon-edit-sign:before { content: $edit-sign; } +.icon-external-link-sign:before { content: $external-link-sign; } +.icon-share-sign:before { content: $share-sign; } +.icon-compass:before { content: $compass; } +.icon-collapse:before { content: $collapse; } +.icon-collapse-top:before { content: $collapse-top; } +.icon-expand:before { content: $expand; } +.icon-euro:before, +.icon-eur:before { content: $eur; } +.icon-gbp:before { content: $gbp; } +.icon-dollar:before, +.icon-usd:before { content: $usd; } +.icon-rupee:before, +.icon-inr:before { content: $inr; } +.icon-yen:before, +.icon-jpy:before { content: $jpy; } +.icon-renminbi:before, +.icon-cny:before { content: $cny; } +.icon-won:before, +.icon-krw:before { content: $krw; } +.icon-bitcoin:before, +.icon-btc:before { content: $btc; } +.icon-file:before { content: $file; } +.icon-file-text:before { content: $file-text; } +.icon-sort-by-alphabet:before { content: $sort-by-alphabet; } +.icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; } +.icon-sort-by-attributes:before { content: $sort-by-attributes; } +.icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; } +.icon-sort-by-order:before { content: $sort-by-order; } +.icon-sort-by-order-alt:before { content: $sort-by-order-alt; } +.icon-thumbs-up:before { content: $thumbs-up; } +.icon-thumbs-down:before { content: $thumbs-down; } +.icon-youtube-sign:before { content: $youtube-sign; } +.icon-youtube:before { content: $youtube; } +.icon-xing:before { content: $xing; } +.icon-xing-sign:before { content: $xing-sign; } +.icon-youtube-play:before { content: $youtube-play; } +.icon-dropbox:before { content: $dropbox; } +.icon-stackexchange:before { content: $stackexchange; } +.icon-instagram:before { content: $instagram; } +.icon-flickr:before { content: $flickr; } +.icon-adn:before { content: $adn; } +.icon-bitbucket:before { content: $bitbucket; } +.icon-bitbucket-sign:before { content: $bitbucket-sign; } +.icon-tumblr:before { content: $tumblr; } +.icon-tumblr-sign:before { content: $tumblr-sign; } +.icon-long-arrow-down:before { content: $long-arrow-down; } +.icon-long-arrow-up:before { content: $long-arrow-up; } +.icon-long-arrow-left:before { content: $long-arrow-left; } +.icon-long-arrow-right:before { content: $long-arrow-right; } +.icon-apple:before { content: $apple; } +.icon-windows:before { content: $windows; } +.icon-android:before { content: $android; } +.icon-linux:before { content: $linux; } +.icon-dribbble:before { content: $dribbble; } +.icon-skype:before { content: $skype; } +.icon-foursquare:before { content: $foursquare; } +.icon-trello:before { content: $trello; } +.icon-female:before { content: $female; } +.icon-male:before { content: $male; } +.icon-gittip:before { content: $gittip; } +.icon-sun:before { content: $sun; } +.icon-moon:before { content: $moon; } +.icon-archive:before { content: $archive; } +.icon-bug:before { content: $bug; } +.icon-vk:before { content: $vk; } +.icon-weibo:before { content: $weibo; } +.icon-renren:before { content: $renren; } diff --git a/stylesheets/font-awesome/scss/_mixins.scss b/stylesheets/font-awesome/scss/_mixins.scss new file mode 100644 index 00000000..ca9c5931 --- /dev/null +++ b/stylesheets/font-awesome/scss/_mixins.scss @@ -0,0 +1,48 @@ +// Mixins +// -------------------------- + +@mixin icon($icon) { + @include icon-FontAwesome(); + content: $icon; +} + +@mixin icon-FontAwesome() { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; // fixes ie7 issues +} + +@mixin border-radius($radius) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + border-radius: $radius; +} + +@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) { + .icon-stack { + position: relative; + display: inline-block; + width: $width; + height: $height; + line-height: $width; + vertical-align: -35%; + [class^="icon-"], + [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: $top-font-size; + line-height: inherit; + *line-height: $height; + } + .icon-stack-base { + font-size: $base-font-size; + *line-height: #{$height / $base-font-size}em; + } + } +} diff --git a/stylesheets/font-awesome/scss/_path.scss b/stylesheets/font-awesome/scss/_path.scss new file mode 100644 index 00000000..bb3f36b7 --- /dev/null +++ b/stylesheets/font-awesome/scss/_path.scss @@ -0,0 +1,14 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}'); + src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'), + url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'), + url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'), + url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg'); +// src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/stylesheets/font-awesome/scss/_variables.scss b/stylesheets/font-awesome/scss/_variables.scss new file mode 100644 index 00000000..7d6bbc5b --- /dev/null +++ b/stylesheets/font-awesome/scss/_variables.scss @@ -0,0 +1,734 @@ +// Variables +// -------------------------- + +$FontAwesomePath: "../font" !default; +$FontAwesomeVersion: "3.2.1" !default; +$borderColor: #eeeeee !default; +$iconMuted: #eeeeee !default; +$iconLight: white !default; +$iconDark: #333333 !default; +$icons-li-width: (30em/14); + + +$glass: "\f000"; + +$music: "\f001"; + +$search: "\f002"; + +$envelope-alt: "\f003"; + +$heart: "\f004"; + +$star: "\f005"; + +$star-empty: "\f006"; + +$user: "\f007"; + +$film: "\f008"; + +$th-large: "\f009"; + +$th: "\f00a"; + +$th-list: "\f00b"; + +$ok: "\f00c"; + +$remove: "\f00d"; + +$zoom-in: "\f00e"; + +$zoom-out: "\f010"; + +$off: "\f011"; + +$signal: "\f012"; + +$cog: "\f013"; + +$trash: "\f014"; + +$home: "\f015"; + +$file-alt: "\f016"; + +$time: "\f017"; + +$road: "\f018"; + +$download-alt: "\f019"; + +$download: "\f01a"; + +$upload: "\f01b"; + +$inbox: "\f01c"; + +$play-circle: "\f01d"; + +$repeat: "\f01e"; + +$refresh: "\f021"; + +$list-alt: "\f022"; + +$lock: "\f023"; + +$flag: "\f024"; + +$headphones: "\f025"; + +$volume-off: "\f026"; + +$volume-down: "\f027"; + +$volume-up: "\f028"; + +$qrcode: "\f029"; + +$barcode: "\f02a"; + +$tag: "\f02b"; + +$tags: "\f02c"; + +$book: "\f02d"; + +$bookmark: "\f02e"; + +$print: "\f02f"; + +$camera: "\f030"; + +$font: "\f031"; + +$bold: "\f032"; + +$italic: "\f033"; + +$text-height: "\f034"; + +$text-width: "\f035"; + +$align-left: "\f036"; + +$align-center: "\f037"; + +$align-right: "\f038"; + +$align-justify: "\f039"; + +$list: "\f03a"; + +$indent-left: "\f03b"; + +$indent-right: "\f03c"; + +$facetime-video: "\f03d"; + +$picture: "\f03e"; + +$pencil: "\f040"; + +$map-marker: "\f041"; + +$adjust: "\f042"; + +$tint: "\f043"; + +$edit: "\f044"; + +$share: "\f045"; + +$check: "\f046"; + +$move: "\f047"; + +$step-backward: "\f048"; + +$fast-backward: "\f049"; + +$backward: "\f04a"; + +$play: "\f04b"; + +$pause: "\f04c"; + +$stop: "\f04d"; + +$forward: "\f04e"; + +$fast-forward: "\f050"; + +$step-forward: "\f051"; + +$eject: "\f052"; + +$chevron-left: "\f053"; + +$chevron-right: "\f054"; + +$plus-sign: "\f055"; + +$minus-sign: "\f056"; + +$remove-sign: "\f057"; + +$ok-sign: "\f058"; + +$question-sign: "\f059"; + +$info-sign: "\f05a"; + +$screenshot: "\f05b"; + +$remove-circle: "\f05c"; + +$ok-circle: "\f05d"; + +$ban-circle: "\f05e"; + +$arrow-left: "\f060"; + +$arrow-right: "\f061"; + +$arrow-up: "\f062"; + +$arrow-down: "\f063"; + +$share-alt: "\f064"; + +$resize-full: "\f065"; + +$resize-small: "\f066"; + +$plus: "\f067"; + +$minus: "\f068"; + +$asterisk: "\f069"; + +$exclamation-sign: "\f06a"; + +$gift: "\f06b"; + +$leaf: "\f06c"; + +$fire: "\f06d"; + +$eye-open: "\f06e"; + +$eye-close: "\f070"; + +$warning-sign: "\f071"; + +$plane: "\f072"; + +$calendar: "\f073"; + +$random: "\f074"; + +$comment: "\f075"; + +$magnet: "\f076"; + +$chevron-up: "\f077"; + +$chevron-down: "\f078"; + +$retweet: "\f079"; + +$shopping-cart: "\f07a"; + +$folder-close: "\f07b"; + +$folder-open: "\f07c"; + +$resize-vertical: "\f07d"; + +$resize-horizontal: "\f07e"; + +$bar-chart: "\f080"; + +$twitter-sign: "\f081"; + +$facebook-sign: "\f082"; + +$camera-retro: "\f083"; + +$key: "\f084"; + +$cogs: "\f085"; + +$comments: "\f086"; + +$thumbs-up-alt: "\f087"; + +$thumbs-down-alt: "\f088"; + +$star-half: "\f089"; + +$heart-empty: "\f08a"; + +$signout: "\f08b"; + +$linkedin-sign: "\f08c"; + +$pushpin: "\f08d"; + +$external-link: "\f08e"; + +$signin: "\f090"; + +$trophy: "\f091"; + +$github-sign: "\f092"; + +$upload-alt: "\f093"; + +$lemon: "\f094"; + +$phone: "\f095"; + +$check-empty: "\f096"; + +$bookmark-empty: "\f097"; + +$phone-sign: "\f098"; + +$twitter: "\f099"; + +$facebook: "\f09a"; + +$github: "\f09b"; + +$unlock: "\f09c"; + +$credit-card: "\f09d"; + +$rss: "\f09e"; + +$hdd: "\f0a0"; + +$bullhorn: "\f0a1"; + +$bell: "\f0a2"; + +$certificate: "\f0a3"; + +$hand-right: "\f0a4"; + +$hand-left: "\f0a5"; + +$hand-up: "\f0a6"; + +$hand-down: "\f0a7"; + +$circle-arrow-left: "\f0a8"; + +$circle-arrow-right: "\f0a9"; + +$circle-arrow-up: "\f0aa"; + +$circle-arrow-down: "\f0ab"; + +$globe: "\f0ac"; + +$wrench: "\f0ad"; + +$tasks: "\f0ae"; + +$filter: "\f0b0"; + +$briefcase: "\f0b1"; + +$fullscreen: "\f0b2"; + +$group: "\f0c0"; + +$link: "\f0c1"; + +$cloud: "\f0c2"; + +$beaker: "\f0c3"; + +$cut: "\f0c4"; + +$copy: "\f0c5"; + +$paper-clip: "\f0c6"; + +$save: "\f0c7"; + +$sign-blank: "\f0c8"; + +$reorder: "\f0c9"; + +$list-ul: "\f0ca"; + +$list-ol: "\f0cb"; + +$strikethrough: "\f0cc"; + +$underline: "\f0cd"; + +$table: "\f0ce"; + +$magic: "\f0d0"; + +$truck: "\f0d1"; + +$pinterest: "\f0d2"; + +$pinterest-sign: "\f0d3"; + +$google-plus-sign: "\f0d4"; + +$google-plus: "\f0d5"; + +$money: "\f0d6"; + +$caret-down: "\f0d7"; + +$caret-up: "\f0d8"; + +$caret-left: "\f0d9"; + +$caret-right: "\f0da"; + +$columns: "\f0db"; + +$sort: "\f0dc"; + +$sort-down: "\f0dd"; + +$sort-up: "\f0de"; + +$envelope: "\f0e0"; + +$linkedin: "\f0e1"; + +$undo: "\f0e2"; + +$legal: "\f0e3"; + +$dashboard: "\f0e4"; + +$comment-alt: "\f0e5"; + +$comments-alt: "\f0e6"; + +$bolt: "\f0e7"; + +$sitemap: "\f0e8"; + +$umbrella: "\f0e9"; + +$paste: "\f0ea"; + +$lightbulb: "\f0eb"; + +$exchange: "\f0ec"; + +$cloud-download: "\f0ed"; + +$cloud-upload: "\f0ee"; + +$user-md: "\f0f0"; + +$stethoscope: "\f0f1"; + +$suitcase: "\f0f2"; + +$bell-alt: "\f0f3"; + +$coffee: "\f0f4"; + +$food: "\f0f5"; + +$file-text-alt: "\f0f6"; + +$building: "\f0f7"; + +$hospital: "\f0f8"; + +$ambulance: "\f0f9"; + +$medkit: "\f0fa"; + +$fighter-jet: "\f0fb"; + +$beer: "\f0fc"; + +$h-sign: "\f0fd"; + +$plus-sign-alt: "\f0fe"; + +$double-angle-left: "\f100"; + +$double-angle-right: "\f101"; + +$double-angle-up: "\f102"; + +$double-angle-down: "\f103"; + +$angle-left: "\f104"; + +$angle-right: "\f105"; + +$angle-up: "\f106"; + +$angle-down: "\f107"; + +$desktop: "\f108"; + +$laptop: "\f109"; + +$tablet: "\f10a"; + +$mobile-phone: "\f10b"; + +$circle-blank: "\f10c"; + +$quote-left: "\f10d"; + +$quote-right: "\f10e"; + +$spinner: "\f110"; + +$circle: "\f111"; + +$reply: "\f112"; + +$github-alt: "\f113"; + +$folder-close-alt: "\f114"; + +$folder-open-alt: "\f115"; + +$expand-alt: "\f116"; + +$collapse-alt: "\f117"; + +$smile: "\f118"; + +$frown: "\f119"; + +$meh: "\f11a"; + +$gamepad: "\f11b"; + +$keyboard: "\f11c"; + +$flag-alt: "\f11d"; + +$flag-checkered: "\f11e"; + +$terminal: "\f120"; + +$code: "\f121"; + +$reply-all: "\f122"; + +$mail-reply-all: "\f122"; + +$star-half-empty: "\f123"; + +$location-arrow: "\f124"; + +$crop: "\f125"; + +$code-fork: "\f126"; + +$unlink: "\f127"; + +$question: "\f128"; + +$info: "\f129"; + +$exclamation: "\f12a"; + +$superscript: "\f12b"; + +$subscript: "\f12c"; + +$eraser: "\f12d"; + +$puzzle-piece: "\f12e"; + +$microphone: "\f130"; + +$microphone-off: "\f131"; + +$shield: "\f132"; + +$calendar-empty: "\f133"; + +$fire-extinguisher: "\f134"; + +$rocket: "\f135"; + +$maxcdn: "\f136"; + +$chevron-sign-left: "\f137"; + +$chevron-sign-right: "\f138"; + +$chevron-sign-up: "\f139"; + +$chevron-sign-down: "\f13a"; + +$html5: "\f13b"; + +$css3: "\f13c"; + +$anchor: "\f13d"; + +$unlock-alt: "\f13e"; + +$bullseye: "\f140"; + +$ellipsis-horizontal: "\f141"; + +$ellipsis-vertical: "\f142"; + +$rss-sign: "\f143"; + +$play-sign: "\f144"; + +$ticket: "\f145"; + +$minus-sign-alt: "\f146"; + +$check-minus: "\f147"; + +$level-up: "\f148"; + +$level-down: "\f149"; + +$check-sign: "\f14a"; + +$edit-sign: "\f14b"; + +$external-link-sign: "\f14c"; + +$share-sign: "\f14d"; + +$compass: "\f14e"; + +$collapse: "\f150"; + +$collapse-top: "\f151"; + +$expand: "\f152"; + +$eur: "\f153"; + +$gbp: "\f154"; + +$usd: "\f155"; + +$inr: "\f156"; + +$jpy: "\f157"; + +$cny: "\f158"; + +$krw: "\f159"; + +$btc: "\f15a"; + +$file: "\f15b"; + +$file-text: "\f15c"; + +$sort-by-alphabet: "\f15d"; + +$sort-by-alphabet-alt: "\f15e"; + +$sort-by-attributes: "\f160"; + +$sort-by-attributes-alt: "\f161"; + +$sort-by-order: "\f162"; + +$sort-by-order-alt: "\f163"; + +$thumbs-up: "\f164"; + +$thumbs-down: "\f165"; + +$youtube-sign: "\f166"; + +$youtube: "\f167"; + +$xing: "\f168"; + +$xing-sign: "\f169"; + +$youtube-play: "\f16a"; + +$dropbox: "\f16b"; + +$stackexchange: "\f16c"; + +$instagram: "\f16d"; + +$flickr: "\f16e"; + +$adn: "\f170"; + +$bitbucket: "\f171"; + +$bitbucket-sign: "\f172"; + +$tumblr: "\f173"; + +$tumblr-sign: "\f174"; + +$long-arrow-down: "\f175"; + +$long-arrow-up: "\f176"; + +$long-arrow-left: "\f177"; + +$long-arrow-right: "\f178"; + +$apple: "\f179"; + +$windows: "\f17a"; + +$android: "\f17b"; + +$linux: "\f17c"; + +$dribbble: "\f17d"; + +$skype: "\f17e"; + +$foursquare: "\f180"; + +$trello: "\f181"; + +$female: "\f182"; + +$male: "\f183"; + +$gittip: "\f184"; + +$sun: "\f185"; + +$moon: "\f186"; + +$archive: "\f187"; + +$bug: "\f188"; + +$vk: "\f189"; + +$weibo: "\f18a"; + +$renren: "\f18b"; + diff --git a/stylesheets/font-awesome/scss/font-awesome-ie7.scss b/stylesheets/font-awesome/scss/font-awesome-ie7.scss new file mode 100644 index 00000000..0e236f61 --- /dev/null +++ b/stylesheets/font-awesome/scss/font-awesome-ie7.scss @@ -0,0 +1,1953 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ + +.icon-large { + font-size: (4em/3); + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + vertical-align: middle; +} + +.nav { + [class^="icon-"], + [class*=" icon-"] { + vertical-align: inherit; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + &.icon-large { + vertical-align: -25%; + } + } +} + +.nav-pills, .nav-tabs { + [class^="icon-"], + [class*=" icon-"] { + &.icon-large { + line-height: .75em; + margin-top: -7px; + padding-top: 5px; + margin-bottom: -5px; + padding-bottom: 4px; + } + } +} + +.btn { + [class^="icon-"], + [class*=" icon-"] { + &.pull-left, &.pull-right { vertical-align: inherit; } + &.icon-large { + margin-top: -.5em; + } + } +} + +a [class^="icon-"], +a [class*=" icon-"] { + cursor: pointer; +} + +@mixin ie7icon($inner) { *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '#{$inner}'); } + + +.icon-glass { + @include ie7icon(''); +} + + +.icon-music { + @include ie7icon(''); +} + + +.icon-search { + @include ie7icon(''); +} + + +.icon-envelope-alt { + @include ie7icon(''); +} + + +.icon-heart { + @include ie7icon(''); +} + + +.icon-star { + @include ie7icon(''); +} + + +.icon-star-empty { + @include ie7icon(''); +} + + +.icon-user { + @include ie7icon(''); +} + + +.icon-film { + @include ie7icon(''); +} + + +.icon-th-large { + @include ie7icon(''); +} + + +.icon-th { + @include ie7icon(''); +} + + +.icon-th-list { + @include ie7icon(''); +} + + +.icon-ok { + @include ie7icon(''); +} + + +.icon-remove { + @include ie7icon(''); +} + + +.icon-zoom-in { + @include ie7icon(''); +} + + +.icon-zoom-out { + @include ie7icon(''); +} + + +.icon-off { + @include ie7icon(''); +} + +.icon-power-off { + @include ie7icon(''); +} + + +.icon-signal { + @include ie7icon(''); +} + + +.icon-cog { + @include ie7icon(''); +} + +.icon-gear { + @include ie7icon(''); +} + + +.icon-trash { + @include ie7icon(''); +} + + +.icon-home { + @include ie7icon(''); +} + + +.icon-file-alt { + @include ie7icon(''); +} + + +.icon-time { + @include ie7icon(''); +} + + +.icon-road { + @include ie7icon(''); +} + + +.icon-download-alt { + @include ie7icon(''); +} + + +.icon-download { + @include ie7icon(''); +} + + +.icon-upload { + @include ie7icon(''); +} + + +.icon-inbox { + @include ie7icon(''); +} + + +.icon-play-circle { + @include ie7icon(''); +} + + +.icon-repeat { + @include ie7icon(''); +} + +.icon-rotate-right { + @include ie7icon(''); +} + + +.icon-refresh { + @include ie7icon(''); +} + + +.icon-list-alt { + @include ie7icon(''); +} + + +.icon-lock { + @include ie7icon(''); +} + + +.icon-flag { + @include ie7icon(''); +} + + +.icon-headphones { + @include ie7icon(''); +} + + +.icon-volume-off { + @include ie7icon(''); +} + + +.icon-volume-down { + @include ie7icon(''); +} + + +.icon-volume-up { + @include ie7icon(''); +} + + +.icon-qrcode { + @include ie7icon(''); +} + + +.icon-barcode { + @include ie7icon(''); +} + + +.icon-tag { + @include ie7icon(''); +} + + +.icon-tags { + @include ie7icon(''); +} + + +.icon-book { + @include ie7icon(''); +} + + +.icon-bookmark { + @include ie7icon(''); +} + + +.icon-print { + @include ie7icon(''); +} + + +.icon-camera { + @include ie7icon(''); +} + + +.icon-font { + @include ie7icon(''); +} + + +.icon-bold { + @include ie7icon(''); +} + + +.icon-italic { + @include ie7icon(''); +} + + +.icon-text-height { + @include ie7icon(''); +} + + +.icon-text-width { + @include ie7icon(''); +} + + +.icon-align-left { + @include ie7icon(''); +} + + +.icon-align-center { + @include ie7icon(''); +} + + +.icon-align-right { + @include ie7icon(''); +} + + +.icon-align-justify { + @include ie7icon(''); +} + + +.icon-list { + @include ie7icon(''); +} + + +.icon-indent-left { + @include ie7icon(''); +} + + +.icon-indent-right { + @include ie7icon(''); +} + + +.icon-facetime-video { + @include ie7icon(''); +} + + +.icon-picture { + @include ie7icon(''); +} + + +.icon-pencil { + @include ie7icon(''); +} + + +.icon-map-marker { + @include ie7icon(''); +} + + +.icon-adjust { + @include ie7icon(''); +} + + +.icon-tint { + @include ie7icon(''); +} + + +.icon-edit { + @include ie7icon(''); +} + + +.icon-share { + @include ie7icon(''); +} + + +.icon-check { + @include ie7icon(''); +} + + +.icon-move { + @include ie7icon(''); +} + + +.icon-step-backward { + @include ie7icon(''); +} + + +.icon-fast-backward { + @include ie7icon(''); +} + + +.icon-backward { + @include ie7icon(''); +} + + +.icon-play { + @include ie7icon(''); +} + + +.icon-pause { + @include ie7icon(''); +} + + +.icon-stop { + @include ie7icon(''); +} + + +.icon-forward { + @include ie7icon(''); +} + + +.icon-fast-forward { + @include ie7icon(''); +} + + +.icon-step-forward { + @include ie7icon(''); +} + + +.icon-eject { + @include ie7icon(''); +} + + +.icon-chevron-left { + @include ie7icon(''); +} + + +.icon-chevron-right { + @include ie7icon(''); +} + + +.icon-plus-sign { + @include ie7icon(''); +} + + +.icon-minus-sign { + @include ie7icon(''); +} + + +.icon-remove-sign { + @include ie7icon(''); +} + + +.icon-ok-sign { + @include ie7icon(''); +} + + +.icon-question-sign { + @include ie7icon(''); +} + + +.icon-info-sign { + @include ie7icon(''); +} + + +.icon-screenshot { + @include ie7icon(''); +} + + +.icon-remove-circle { + @include ie7icon(''); +} + + +.icon-ok-circle { + @include ie7icon(''); +} + + +.icon-ban-circle { + @include ie7icon(''); +} + + +.icon-arrow-left { + @include ie7icon(''); +} + + +.icon-arrow-right { + @include ie7icon(''); +} + + +.icon-arrow-up { + @include ie7icon(''); +} + + +.icon-arrow-down { + @include ie7icon(''); +} + + +.icon-share-alt { + @include ie7icon(''); +} + +.icon-mail-forward { + @include ie7icon(''); +} + + +.icon-resize-full { + @include ie7icon(''); +} + + +.icon-resize-small { + @include ie7icon(''); +} + + +.icon-plus { + @include ie7icon(''); +} + + +.icon-minus { + @include ie7icon(''); +} + + +.icon-asterisk { + @include ie7icon(''); +} + + +.icon-exclamation-sign { + @include ie7icon(''); +} + + +.icon-gift { + @include ie7icon(''); +} + + +.icon-leaf { + @include ie7icon(''); +} + + +.icon-fire { + @include ie7icon(''); +} + + +.icon-eye-open { + @include ie7icon(''); +} + + +.icon-eye-close { + @include ie7icon(''); +} + + +.icon-warning-sign { + @include ie7icon(''); +} + + +.icon-plane { + @include ie7icon(''); +} + + +.icon-calendar { + @include ie7icon(''); +} + + +.icon-random { + @include ie7icon(''); +} + + +.icon-comment { + @include ie7icon(''); +} + + +.icon-magnet { + @include ie7icon(''); +} + + +.icon-chevron-up { + @include ie7icon(''); +} + + +.icon-chevron-down { + @include ie7icon(''); +} + + +.icon-retweet { + @include ie7icon(''); +} + + +.icon-shopping-cart { + @include ie7icon(''); +} + + +.icon-folder-close { + @include ie7icon(''); +} + + +.icon-folder-open { + @include ie7icon(''); +} + + +.icon-resize-vertical { + @include ie7icon(''); +} + + +.icon-resize-horizontal { + @include ie7icon(''); +} + + +.icon-bar-chart { + @include ie7icon(''); +} + + +.icon-twitter-sign { + @include ie7icon(''); +} + + +.icon-facebook-sign { + @include ie7icon(''); +} + + +.icon-camera-retro { + @include ie7icon(''); +} + + +.icon-key { + @include ie7icon(''); +} + + +.icon-cogs { + @include ie7icon(''); +} + +.icon-gears { + @include ie7icon(''); +} + + +.icon-comments { + @include ie7icon(''); +} + + +.icon-thumbs-up-alt { + @include ie7icon(''); +} + + +.icon-thumbs-down-alt { + @include ie7icon(''); +} + + +.icon-star-half { + @include ie7icon(''); +} + + +.icon-heart-empty { + @include ie7icon(''); +} + + +.icon-signout { + @include ie7icon(''); +} + + +.icon-linkedin-sign { + @include ie7icon(''); +} + + +.icon-pushpin { + @include ie7icon(''); +} + + +.icon-external-link { + @include ie7icon(''); +} + + +.icon-signin { + @include ie7icon(''); +} + + +.icon-trophy { + @include ie7icon(''); +} + + +.icon-github-sign { + @include ie7icon(''); +} + + +.icon-upload-alt { + @include ie7icon(''); +} + + +.icon-lemon { + @include ie7icon(''); +} + + +.icon-phone { + @include ie7icon(''); +} + + +.icon-check-empty { + @include ie7icon(''); +} + +.icon-unchecked { + @include ie7icon(''); +} + + +.icon-bookmark-empty { + @include ie7icon(''); +} + + +.icon-phone-sign { + @include ie7icon(''); +} + + +.icon-twitter { + @include ie7icon(''); +} + + +.icon-facebook { + @include ie7icon(''); +} + + +.icon-github { + @include ie7icon(''); +} + + +.icon-unlock { + @include ie7icon(''); +} + + +.icon-credit-card { + @include ie7icon(''); +} + + +.icon-rss { + @include ie7icon(''); +} + + +.icon-hdd { + @include ie7icon(''); +} + + +.icon-bullhorn { + @include ie7icon(''); +} + + +.icon-bell { + @include ie7icon(''); +} + + +.icon-certificate { + @include ie7icon(''); +} + + +.icon-hand-right { + @include ie7icon(''); +} + + +.icon-hand-left { + @include ie7icon(''); +} + + +.icon-hand-up { + @include ie7icon(''); +} + + +.icon-hand-down { + @include ie7icon(''); +} + + +.icon-circle-arrow-left { + @include ie7icon(''); +} + + +.icon-circle-arrow-right { + @include ie7icon(''); +} + + +.icon-circle-arrow-up { + @include ie7icon(''); +} + + +.icon-circle-arrow-down { + @include ie7icon(''); +} + + +.icon-globe { + @include ie7icon(''); +} + + +.icon-wrench { + @include ie7icon(''); +} + + +.icon-tasks { + @include ie7icon(''); +} + + +.icon-filter { + @include ie7icon(''); +} + + +.icon-briefcase { + @include ie7icon(''); +} + + +.icon-fullscreen { + @include ie7icon(''); +} + + +.icon-group { + @include ie7icon(''); +} + + +.icon-link { + @include ie7icon(''); +} + + +.icon-cloud { + @include ie7icon(''); +} + + +.icon-beaker { + @include ie7icon(''); +} + + +.icon-cut { + @include ie7icon(''); +} + + +.icon-copy { + @include ie7icon(''); +} + + +.icon-paper-clip { + @include ie7icon(''); +} + +.icon-paperclip { + @include ie7icon(''); +} + + +.icon-save { + @include ie7icon(''); +} + + +.icon-sign-blank { + @include ie7icon(''); +} + + +.icon-reorder { + @include ie7icon(''); +} + + +.icon-list-ul { + @include ie7icon(''); +} + + +.icon-list-ol { + @include ie7icon(''); +} + + +.icon-strikethrough { + @include ie7icon(''); +} + + +.icon-underline { + @include ie7icon(''); +} + + +.icon-table { + @include ie7icon(''); +} + + +.icon-magic { + @include ie7icon(''); +} + + +.icon-truck { + @include ie7icon(''); +} + + +.icon-pinterest { + @include ie7icon(''); +} + + +.icon-pinterest-sign { + @include ie7icon(''); +} + + +.icon-google-plus-sign { + @include ie7icon(''); +} + + +.icon-google-plus { + @include ie7icon(''); +} + + +.icon-money { + @include ie7icon(''); +} + + +.icon-caret-down { + @include ie7icon(''); +} + + +.icon-caret-up { + @include ie7icon(''); +} + + +.icon-caret-left { + @include ie7icon(''); +} + + +.icon-caret-right { + @include ie7icon(''); +} + + +.icon-columns { + @include ie7icon(''); +} + + +.icon-sort { + @include ie7icon(''); +} + + +.icon-sort-down { + @include ie7icon(''); +} + + +.icon-sort-up { + @include ie7icon(''); +} + + +.icon-envelope { + @include ie7icon(''); +} + + +.icon-linkedin { + @include ie7icon(''); +} + + +.icon-undo { + @include ie7icon(''); +} + +.icon-rotate-left { + @include ie7icon(''); +} + + +.icon-legal { + @include ie7icon(''); +} + + +.icon-dashboard { + @include ie7icon(''); +} + + +.icon-comment-alt { + @include ie7icon(''); +} + + +.icon-comments-alt { + @include ie7icon(''); +} + + +.icon-bolt { + @include ie7icon(''); +} + + +.icon-sitemap { + @include ie7icon(''); +} + + +.icon-umbrella { + @include ie7icon(''); +} + + +.icon-paste { + @include ie7icon(''); +} + + +.icon-lightbulb { + @include ie7icon(''); +} + + +.icon-exchange { + @include ie7icon(''); +} + + +.icon-cloud-download { + @include ie7icon(''); +} + + +.icon-cloud-upload { + @include ie7icon(''); +} + + +.icon-user-md { + @include ie7icon(''); +} + + +.icon-stethoscope { + @include ie7icon(''); +} + + +.icon-suitcase { + @include ie7icon(''); +} + + +.icon-bell-alt { + @include ie7icon(''); +} + + +.icon-coffee { + @include ie7icon(''); +} + + +.icon-food { + @include ie7icon(''); +} + + +.icon-file-text-alt { + @include ie7icon(''); +} + + +.icon-building { + @include ie7icon(''); +} + + +.icon-hospital { + @include ie7icon(''); +} + + +.icon-ambulance { + @include ie7icon(''); +} + + +.icon-medkit { + @include ie7icon(''); +} + + +.icon-fighter-jet { + @include ie7icon(''); +} + + +.icon-beer { + @include ie7icon(''); +} + + +.icon-h-sign { + @include ie7icon(''); +} + + +.icon-plus-sign-alt { + @include ie7icon(''); +} + + +.icon-double-angle-left { + @include ie7icon(''); +} + + +.icon-double-angle-right { + @include ie7icon(''); +} + + +.icon-double-angle-up { + @include ie7icon(''); +} + + +.icon-double-angle-down { + @include ie7icon(''); +} + + +.icon-angle-left { + @include ie7icon(''); +} + + +.icon-angle-right { + @include ie7icon(''); +} + + +.icon-angle-up { + @include ie7icon(''); +} + + +.icon-angle-down { + @include ie7icon(''); +} + + +.icon-desktop { + @include ie7icon(''); +} + + +.icon-laptop { + @include ie7icon(''); +} + + +.icon-tablet { + @include ie7icon(''); +} + + +.icon-mobile-phone { + @include ie7icon(''); +} + + +.icon-circle-blank { + @include ie7icon(''); +} + + +.icon-quote-left { + @include ie7icon(''); +} + + +.icon-quote-right { + @include ie7icon(''); +} + + +.icon-spinner { + @include ie7icon(''); +} + + +.icon-circle { + @include ie7icon(''); +} + + +.icon-reply { + @include ie7icon(''); +} + +.icon-mail-reply { + @include ie7icon(''); +} + + +.icon-github-alt { + @include ie7icon(''); +} + + +.icon-folder-close-alt { + @include ie7icon(''); +} + + +.icon-folder-open-alt { + @include ie7icon(''); +} + + +.icon-expand-alt { + @include ie7icon(''); +} + + +.icon-collapse-alt { + @include ie7icon(''); +} + + +.icon-smile { + @include ie7icon(''); +} + + +.icon-frown { + @include ie7icon(''); +} + + +.icon-meh { + @include ie7icon(''); +} + + +.icon-gamepad { + @include ie7icon(''); +} + + +.icon-keyboard { + @include ie7icon(''); +} + + +.icon-flag-alt { + @include ie7icon(''); +} + + +.icon-flag-checkered { + @include ie7icon(''); +} + + +.icon-terminal { + @include ie7icon(''); +} + + +.icon-code { + @include ie7icon(''); +} + + +.icon-reply-all { + @include ie7icon(''); +} + + +.icon-mail-reply-all { + @include ie7icon(''); +} + + +.icon-star-half-empty { + @include ie7icon(''); +} + +.icon-star-half-full { + @include ie7icon(''); +} + + +.icon-location-arrow { + @include ie7icon(''); +} + + +.icon-crop { + @include ie7icon(''); +} + + +.icon-code-fork { + @include ie7icon(''); +} + + +.icon-unlink { + @include ie7icon(''); +} + + +.icon-question { + @include ie7icon(''); +} + + +.icon-info { + @include ie7icon(''); +} + + +.icon-exclamation { + @include ie7icon(''); +} + + +.icon-superscript { + @include ie7icon(''); +} + + +.icon-subscript { + @include ie7icon(''); +} + + +.icon-eraser { + @include ie7icon(''); +} + + +.icon-puzzle-piece { + @include ie7icon(''); +} + + +.icon-microphone { + @include ie7icon(''); +} + + +.icon-microphone-off { + @include ie7icon(''); +} + + +.icon-shield { + @include ie7icon(''); +} + + +.icon-calendar-empty { + @include ie7icon(''); +} + + +.icon-fire-extinguisher { + @include ie7icon(''); +} + + +.icon-rocket { + @include ie7icon(''); +} + + +.icon-maxcdn { + @include ie7icon(''); +} + + +.icon-chevron-sign-left { + @include ie7icon(''); +} + + +.icon-chevron-sign-right { + @include ie7icon(''); +} + + +.icon-chevron-sign-up { + @include ie7icon(''); +} + + +.icon-chevron-sign-down { + @include ie7icon(''); +} + + +.icon-html5 { + @include ie7icon(''); +} + + +.icon-css3 { + @include ie7icon(''); +} + + +.icon-anchor { + @include ie7icon(''); +} + + +.icon-unlock-alt { + @include ie7icon(''); +} + + +.icon-bullseye { + @include ie7icon(''); +} + + +.icon-ellipsis-horizontal { + @include ie7icon(''); +} + + +.icon-ellipsis-vertical { + @include ie7icon(''); +} + + +.icon-rss-sign { + @include ie7icon(''); +} + + +.icon-play-sign { + @include ie7icon(''); +} + + +.icon-ticket { + @include ie7icon(''); +} + + +.icon-minus-sign-alt { + @include ie7icon(''); +} + + +.icon-check-minus { + @include ie7icon(''); +} + + +.icon-level-up { + @include ie7icon(''); +} + + +.icon-level-down { + @include ie7icon(''); +} + + +.icon-check-sign { + @include ie7icon(''); +} + + +.icon-edit-sign { + @include ie7icon(''); +} + + +.icon-external-link-sign { + @include ie7icon(''); +} + + +.icon-share-sign { + @include ie7icon(''); +} + + +.icon-compass { + @include ie7icon(''); +} + + +.icon-collapse { + @include ie7icon(''); +} + + +.icon-collapse-top { + @include ie7icon(''); +} + + +.icon-expand { + @include ie7icon(''); +} + + +.icon-eur { + @include ie7icon(''); +} + +.icon-euro { + @include ie7icon(''); +} + + +.icon-gbp { + @include ie7icon(''); +} + + +.icon-usd { + @include ie7icon(''); +} + +.icon-dollar { + @include ie7icon(''); +} + + +.icon-inr { + @include ie7icon(''); +} + +.icon-rupee { + @include ie7icon(''); +} + + +.icon-jpy { + @include ie7icon(''); +} + +.icon-yen { + @include ie7icon(''); +} + + +.icon-cny { + @include ie7icon(''); +} + +.icon-renminbi { + @include ie7icon(''); +} + + +.icon-krw { + @include ie7icon(''); +} + +.icon-won { + @include ie7icon(''); +} + + +.icon-btc { + @include ie7icon(''); +} + +.icon-bitcoin { + @include ie7icon(''); +} + + +.icon-file { + @include ie7icon(''); +} + + +.icon-file-text { + @include ie7icon(''); +} + + +.icon-sort-by-alphabet { + @include ie7icon(''); +} + + +.icon-sort-by-alphabet-alt { + @include ie7icon(''); +} + + +.icon-sort-by-attributes { + @include ie7icon(''); +} + + +.icon-sort-by-attributes-alt { + @include ie7icon(''); +} + + +.icon-sort-by-order { + @include ie7icon(''); +} + + +.icon-sort-by-order-alt { + @include ie7icon(''); +} + + +.icon-thumbs-up { + @include ie7icon(''); +} + + +.icon-thumbs-down { + @include ie7icon(''); +} + + +.icon-youtube-sign { + @include ie7icon(''); +} + + +.icon-youtube { + @include ie7icon(''); +} + + +.icon-xing { + @include ie7icon(''); +} + + +.icon-xing-sign { + @include ie7icon(''); +} + + +.icon-youtube-play { + @include ie7icon(''); +} + + +.icon-dropbox { + @include ie7icon(''); +} + + +.icon-stackexchange { + @include ie7icon(''); +} + + +.icon-instagram { + @include ie7icon(''); +} + + +.icon-flickr { + @include ie7icon(''); +} + + +.icon-adn { + @include ie7icon(''); +} + + +.icon-bitbucket { + @include ie7icon(''); +} + + +.icon-bitbucket-sign { + @include ie7icon(''); +} + + +.icon-tumblr { + @include ie7icon(''); +} + + +.icon-tumblr-sign { + @include ie7icon(''); +} + + +.icon-long-arrow-down { + @include ie7icon(''); +} + + +.icon-long-arrow-up { + @include ie7icon(''); +} + + +.icon-long-arrow-left { + @include ie7icon(''); +} + + +.icon-long-arrow-right { + @include ie7icon(''); +} + + +.icon-apple { + @include ie7icon(''); +} + + +.icon-windows { + @include ie7icon(''); +} + + +.icon-android { + @include ie7icon(''); +} + + +.icon-linux { + @include ie7icon(''); +} + + +.icon-dribbble { + @include ie7icon(''); +} + + +.icon-skype { + @include ie7icon(''); +} + + +.icon-foursquare { + @include ie7icon(''); +} + + +.icon-trello { + @include ie7icon(''); +} + + +.icon-female { + @include ie7icon(''); +} + + +.icon-male { + @include ie7icon(''); +} + + +.icon-gittip { + @include ie7icon(''); +} + + +.icon-sun { + @include ie7icon(''); +} + + +.icon-moon { + @include ie7icon(''); +} + + +.icon-archive { + @include ie7icon(''); +} + + +.icon-bug { + @include ie7icon(''); +} + + +.icon-vk { + @include ie7icon(''); +} + + +.icon-weibo { + @include ie7icon(''); +} + + +.icon-renren { + @include ie7icon(''); +} + + diff --git a/stylesheets/font-awesome/scss/font-awesome.scss b/stylesheets/font-awesome/scss/font-awesome.scss new file mode 100644 index 00000000..e5903d85 --- /dev/null +++ b/stylesheets/font-awesome/scss/font-awesome.scss @@ -0,0 +1,33 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "bootstrap"; +@import "extras"; +@import "icons"; diff --git a/stylesheets/futaba+vichan.css b/stylesheets/futaba+vichan.css index d8d6fd59..adf9baef 100644 --- a/stylesheets/futaba+vichan.css +++ b/stylesheets/futaba+vichan.css @@ -86,22 +86,19 @@ unimportant, .unimportant * { table.modlog tr th { background: #EA8; } - div.boardlist { - background-color: rgba(90%,90%,90%,0.2); + background-color: rgba(90%,90%,90%,0.2); } div.boardlist .sub { - background: none; + background: none; } div.boardlist.bottom { - background-color:transparent; + background-color:transparent; } .desktop-style div.boardlist:nth-child(1) { - text-shadow: #fff 1px 1px 1px, #fff -1px -1px 1px; + text-shadow: #fff 1px 1px 1px, #fff -1px -1px 1px; } - - .desktop-style div.boardlist:nth-child(1):hover { - background-color: rgba(90%, 90%, 90%, 0.55); + background-color: rgba(90%, 90%, 90%, 0.55); } diff --git a/stylesheets/gentoochan.css b/stylesheets/gentoochan.css index 8213eb26..eb3d6471 100644 --- a/stylesheets/gentoochan.css +++ b/stylesheets/gentoochan.css @@ -19,9 +19,12 @@ a.post_no { color: #ccc; } div.post.reply, input, textarea { - background: rgba(0, 0, 0, 0.1)!important; - border: 1px solid rgba(0, 0, 0, 0.2)!important; - border-radius: 2px !important; + background: rgba(0, 0, 0, 0.1); + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 2px; +} +div.post.reply.post-hover { + background: rgba(200, 200, 200, 0.85); } div.post.reply.highlighted { background: #f0c0b0; diff --git a/stylesheets/img/bghead.png b/stylesheets/img/bghead.png new file mode 100644 index 00000000..94202009 Binary files /dev/null and b/stylesheets/img/bghead.png differ diff --git a/stylesheets/img/roachtlo.png b/stylesheets/img/roachtlo.png new file mode 100644 index 00000000..f3a9cefc Binary files /dev/null and b/stylesheets/img/roachtlo.png differ diff --git a/stylesheets/miku.css b/stylesheets/miku.css index 95d9b2de..2f55b48c 100644 --- a/stylesheets/miku.css +++ b/stylesheets/miku.css @@ -1,97 +1,97 @@ -/** - * miku.css - * For AwsumChan by Circlepuller - */ -body { - background: #D2FFEE url('img/fade-miku.png') top repeat-x; -} - -a:link, a:visited { - text-decoration: none; - color: #00637B; -} - -a:link:hover, a:visited:hover { - color: #DD0000; -} - -a.post_no { - color: #000033; -} - -p.intro a.email span.name { - color: #0093AB; -} - -p.intro a.email:hover span.name { - color: #DD0000; -} - -h2, div.title, h1 { - color: #800000; -} - -form table tr th { - background: #95D2D3; -} - -div.banner { - background-color: #E04000; -} - -div.post.op hr { - border-color: #B7C9D5; -} - -p.intro span.subject { - color: #117743; - font-weight: 800; -} - -p.intro span.name { - color: #117743; - font-weight: 800; -} - -div.post.reply.highlighted { - background: #a9d8ff; -} - -div.post.reply { - background: #B6DDDE; - border-color: #8FCCCD; -} - -div.ban { - border: 1px solid #0093AB; -} - -div.ban h2 { - background: #B6DDDE; - color: #0093AB; -} - -div.pages { - color: #8899AA; - background: #B6DDDE; - border-right: 1px solid #8FCCCD; - border-bottom: 1px solid #8FCCCD; -} - -hr { - border-color: #B7D9C5; -} - -div.boardlist { - color: #0093AB; - background-color: rgba(65%, 85%, 95%, 0.2); -} - -.desktop-style div.boardlist:nth-child(1) { - text-shadow: #D2FFEE 1px 1px 1px, #D2FFEE -1px -1px 1px; -} - - -.desktop-style div.boardlist:nth-child(1):hover { - background-color: rgba(70%, 95%, 100%, 0.45); -} \ No newline at end of file +/** + * miku.css + * For AwsumChan by Circlepuller + */ +body { + background: #D2FFEE url('img/fade-miku.png') top repeat-x; +} + +a:link, a:visited { + text-decoration: none; + color: #00637B; +} + +a:link:hover, a:visited:hover { + color: #DD0000; +} + +a.post_no { + color: #000033; +} + +p.intro a.email span.name { + color: #0093AB; +} + +p.intro a.email:hover span.name { + color: #DD0000; +} + +h2, div.title, h1 { + color: #800000; +} + +form table tr th { + background: #95D2D3; +} + +div.banner { + background-color: #E04000; +} + +div.post.op hr { + border-color: #B7C9D5; +} + +p.intro span.subject { + color: #117743; + font-weight: 800; +} + +p.intro span.name { + color: #117743; + font-weight: 800; +} + +div.post.reply.highlighted { + background: #a9d8ff; +} + +div.post.reply { + background: #B6DDDE; + border-color: #8FCCCD; +} + +div.ban { + border: 1px solid #0093AB; +} + +div.ban h2 { + background: #B6DDDE; + color: #0093AB; +} + +div.pages { + color: #8899AA; + background: #B6DDDE; + border-right: 1px solid #8FCCCD; + border-bottom: 1px solid #8FCCCD; +} + +hr { + border-color: #B7D9C5; +} + +div.boardlist { + color: #0093AB; + background-color: rgba(65%, 85%, 95%, 0.2); +} + +.desktop-style div.boardlist:nth-child(1) { + text-shadow: #D2FFEE 1px 1px 1px, #D2FFEE -1px -1px 1px; +} + + +.desktop-style div.boardlist:nth-child(1):hover { + background-color: rgba(70%, 95%, 100%, 0.45); +} diff --git a/stylesheets/ricechan.css b/stylesheets/ricechan.css new file mode 100644 index 00000000..c6ba19b6 --- /dev/null +++ b/stylesheets/ricechan.css @@ -0,0 +1,249 @@ +/* http://userstyles.org/styles/37014/4chan-ricechan-alpha */ + +.rules, +.logo+hr, +.logo+hr+div, +.logo+hr+div+hr, +hr+script+center>a, +hr+script+center+hr, +#recaptcha_logo, +#recaptcha_tagline, +table+br+hr+center>a, +table+br+hr+center+hr, +.postarea>form>div[style]>a[target], +.doubledash {display:none !important} + +* { + border: none !important; + background: none !important; + color: inherit !important; +} +html { + color: #555 !important; + background: #222 !important; +} +#navtop { + position: absolute; + top:0;left:0;right:0; + color: #666 !important; + background: #111 !important; + border-bottom: 1px solid #282828 !important; + text-align: center; + margin: -4px; + padding: 3px; +} +#navtop a { + color: #9f0 !important; +} +hr { + border-bottom: 1px solid rgba(0,0,0,0.5) !important; + border-top: 1px solid rgba(255,255,255,0.1) !important; +} +h1 { + color: #AF2020 !important; +} +a>img { + box-shadow: 0 0 6px #000; + -moz-box-shadow: 0 0 6px #000; + -webkit-box-shadow: 0 0 6px #000; +} +.logo b { + color: #fff !important; +} +div.boardlist a { + text-decoration: none; + color: #615A5A !important; +} +div.boardlist a:hover { + color: #C08E8E !important; +} +.postarea { + color: #fff !important; + position: fixed; + top:0; right:0; +} +.postblock { + color: #999 !important; +} +.postarea form { + padding-left: 12px; + opacity: .1; + width: 0; +} +.postarea form:hover { + width: auto; + opacity: 1; + background: rgba(0,0,0,0.8) !important; + border-radius: 0 0 0 32px; + -moz-border-radius: 0 0 0 32px; + -webkit-border-radius: 0 0 0 32px; + box-shadow: 0 0 32px #000; + -moz-box-shadow: 0 0 32px #000; + -webkit-box-shadow: 0 0 32px #000; +} +tr>th>font { /*POSTINGMODE*/ + position: fixed; + top:-2px; right:0; + font-size: 0; +} +tr>th>font:after { + color: #f00 !important; + content: 'REPLY'; + font-size: 48px; +} +form table tr th { + background: #7E3737 !important; + color: #B99B9B !important; +} +input[type="text"], input[type="password"], textarea, select { + border: 2px solid rgba(94, 50, 50, 0.56) !important; + background: #7C7373 !important; + color: #311313 !important; +} +a:hover { + color: #8E748F !important; +} +a { + color: #7C7E7C !important; +} +form>table { + padding: 4px !important; +} +.reply, .replyhl { + background: rgba(0,0,0,0.25) !important; + border: 1px solid #161616 !important; + margin: 8px !important; + border-radius: 12px; + -moz-border-radius: 12px; + -webkit-border-radius: 12px; + box-shadow: 0 0 6px rgba(0,0,0,0.5); + -moz-box-shadow: 0 0 6px rgba(0,0,0,0.5); + -webkit-box-shadow: 0 0 6px rgba(0,0,0,0.5); +} +h1 { + color: #962B22 !important; + letter-spacing: 1px; +} +.replyhl { + border: 1px solid #9f0 !important; + border-width: 4px 0 !important; +} +.post.reply.highlighted { + background: rgba(18, 21, 22, 0.6) !important; +} +.omitted { + font-style: italic; +} +#de-menu { + rgba(0, 0, 0, 0.85) !important; +} +#de-alert { + rgba(0, 0, 0, 0.85) !important; +} +.de-pview { + background: rgba(0,0,0,0.86) !important; + border: 1px solid #161616 !important; + margin: 8px !important; + border-radius: 12px; + -moz-border-radius: 12px; + -webkit-border-radius: 12px; + box-shadow: 0 0 6px rgba(0,0,0,0.5); + -moz-box-shadow: 0 0 6px rgba(0,0,0,0.5); + -webkit-box-shadow: 0 0 6px rgba(0,0,0,0.5); +} +.name,.commentpostername { + color: #999 !important; +} +.trip { + color: #644 !important; +} +.capcode { + color: #BB1212!important; +} +.de-ppanel-cnt:after { + color: #3A5252 !important; +} +.public_ban { + color: #E62C2C !important; +} +blockquote { + color: #fff !important; +} +.quotejs { + color: #999 !important; +} +.quotelink { + color: #9f0 !important; +} +.unkfunc { + color: #6c6 !important; +} +.de-refmap:before { + color: #707A86 !important; +} +.de-refmap { + color: #4C505E !important; +} +p.intro a.email span.name { + text-decoration: underline; +} +.quote { + color: #82A259 !important; +} +.delete { + color: #857979 !important; +} + +.commentpostername>span[style] { + color: #f0c !important; + font-size: 1.1em; +} +a[href="mailto:sage"] { + text-decoration: none !important; +} +a[href="mailto:sage"]:before { + color: #f90; + content: '「SAGE」'; + text-shadow: 0 -1px 1px #f00; +} +.heading { + color: #B41818 !important; + font-size: 13pt !important; + text-shadow: 0 0 0.55em #522121 !important +} +strong { + color: #706E6E !important; +} +.subject { + color: #819173 !important; +} +.spoiler { + background: #D3CABC !important; + color: #D3CABC !important; +} +.spoiler:hover { + color: #3F3535 !important; +} +.filesize span { + font-size: .01em; + letter-spacing: -5em; +} +.filesize span:before { + font-size: 100em; + letter-spacing: 0; + content: attr(title); +} + +.spoiler { + color: #161515 !important; + background: #141313 !important; +} +span.spoiler:hover { + color: #858585 !important; + background: #2C2929 !important; +} +br+br+b[style] { + color: #f00 !important; +} + +} \ No newline at end of file diff --git a/stylesheets/roach.css b/stylesheets/roach.css new file mode 100644 index 00000000..ab5ab6c1 --- /dev/null +++ b/stylesheets/roach.css @@ -0,0 +1,256 @@ +html, body { + background:#FFFEED !important; + background-image: url('img/bghead.png'), url('img/roachtlo.png') !important; + background-repeat: repeat-x, no-repeat !important; + background-attachment: fixed, fixed !important; + background-position:top, right bottom !important; + color:#835B36 !important; + font-family: sans-serif !important; + font-size: 90% !important; +} +a { + color:#888 !important; + text-decoration: none !important; +} +a:hover { + color:#000 !important; +} +.reflink a:hover{ + font-weight: bold !important; +} +input, textarea { +background-color: #fff !important; +color: #000 !important; +border: 1px solid #CCC !important; +} +input:focus, textarea:focus +{ +background-color: #fff !important; +} +.adminbar { + text-align:right !important; + clear:both !important; + float:right !important; + font-size: 13px !important; +} +.navbar { + font-size: 13px !important; +} +header { + clear:both !important; + text-align:center !important; + font-size:1.7em !important; + color:#455736 !important; + width:100% !important; +} +header div.subtitle, h1 { + color:#455736 !important; +} +div.banner { + background:#F3DBA7 !important; + text-align:center !important; + padding:2px !important; + color:#835B36 !important; + width:100% !important; + margin: 0 !important; + font-weight: normal !important; + font-size: 90% !important; +} +.catalogmode { + background:#0040E0 !important; + text-align:center !important; + padding:2px !important; + color:#FFFFFF !important; + width:100% !important; +} +.postarea { + background:inherit !important; +} +.rules { + /*font-size:0.7em !important;*/ + width: 468px !important; + font-size: 10px !important; + font-family: sans-serif !important; +} +.rules li { + margin-left: 1em !important; + /*text-indent: 0em !important;*/ +} +form table tr th, form table th, .postblock { + background:#CDC8A3 !important; + color:#455736 !important; + font-weight:800 !important; + text-align: left !important; + padding-left: 3px !important; + padding-right: 3px !important; + border: none !important; +} +.footer { + text-align:center !important; + font-size:12px !important; + font-family:serif !important; +} +.passvalid { + background:#F3DBA7 !important; + text-align:center !important; + width:100% !important; + color:#ffffff !important; +} +.dellist { + font-weight: bold !important; + text-align:center !important; +} +.delbuttons { + text-align:center !important; + padding-bottom:4px !important; + +} +.managehead { + background:#AAAA66 !important; + color:#400000 !important; + padding:0px !important; +} +.postlists { + background:#FFFFFF !important; + width:100% !important; + padding:0px !important; + color:#FFF !important; +} +.row1 { + background:#EEEECC !important; + color:#FFF !important; +} +.row2 { + background:#DDDDAA !important; + color:#FFF !important; +} +.unkfunc { + background:inherit !important; + color:#789922 !important; +} +.filesize { + text-decoration:none !important; +} +.filetitle { + background:inherit !important; + font-size:1.2em !important; + color:#6D9E55 !important; + font-weight:800 !important; +} +.postername { + color:#117743 !important; + font-weight:bold !important; +} +.postertrip { + color:#117743 !important; +} +.oldpost { + color:#6D9E55 !important; + font-weight:800 !important; +} +.omittedposts { + color:#707070 !important; +} + +.reply { + background: rgba(210,140,0,0.3) !important; + color: #835B36 !important; + -moz-border-radius: 5px !important; + -webkit-border-radius: 5px !important; + padding: 5px !important; + border-style: none !important; +} +.post-hover { + background: rgba(241,219,165,1) !important; + border-style: none !important; + border: 1px dashed #000000 !important; +} +.replyhl { + background: #F0C0B0 !important; + color: #FFF !important; +} +.doubledash { + vertical-align:top !important; + clear:both !important; + float:left !important; +} +.replytitle { + font-size: 1.0em !important; + color:#6D9E55 !important; + font-weight:800 !important; +} +.commentpostername { + color:#117743 !important; + font-weight:800 !important; +} +.thumbnailmsg { + font-size: small !important; + color:#FFF !important; +} +.abbrev { + color:#707070 !important; +} +.highlighted { + background:#F3DBA7 !important; + color:#707070 !important; + border: 2px dashed #707070 !important; +} +#watchedthreads { + background-color: #F3DBa7 !important; +} + +.hidethread { + background: transparent url('./icons/blueplus/icons.gif') -32px -16px no-repeat !important; +} + +.unhidethread { + background: transparent url('./icons/blueplus/icons.gif') -48px 0px no-repeat !important; +} + +.watchthread { + background: transparent url('./icons/blueplus/icons.gif') -32px 0px no-repeat !important; +} + +.expandthread { + background: transparent url('./icons/blueplus/icons.gif') 0px -16px no-repeat !important; +} + +.quickreply { + background: transparent url('./icons/blueplus/icons.gif') 0px 0px no-repeat !important; +} + +.hidewatchedthreads { + background: transparent url('./icons/blueplus/icons.gif') -48px -16px no-repeat !important; +} + +.refreshwatchedthreads { + background: transparent url('./icons/blueplus/icons.gif') -16px -16px no-repeat !important; +} + +.restorewatchedthreads { + background: transparent url('./icons/blueplus/icons.gif') -16px 0px no-repeat !important; +} +.reflinkpreview { + background-color: #F3DBA7 !important; +} +div.pages { +background: none; +border-right: none; +border-bottom: none; +display: inline; +padding: 4px; +border: 4px double #000; +border-collapse: separate; +border-spacing: 2px; +border-color: gray; +color: #835B36 !important; +} +hr { +border-top: 1px solid #835B36 !important; +} +.desktop-style div.boardlist:nth-child(1) { + background: none repeat scroll 0 0 #FFFFFF !important; +} +.desktop-style div.boardlist:nth-child(1):hover { + background: none repeat scroll 0 0 #FFFFFF; +} \ No newline at end of file diff --git a/stylesheets/stripes.css b/stylesheets/stripes.css index da3f2aab..61a9d326 100644 --- a/stylesheets/stripes.css +++ b/stylesheets/stripes.css @@ -1,67 +1,67 @@ -/** - * stripes.css - * for vichan by klaczy - */ -body { - background: url('img/stripes_bg.png'); - color: #BBB; - font-family: 'Hevletica', sans-serif; - font-size: 12px; -} -div.boardlist:nth-child(1):hover { - background: #222 !important; -} -div.reply, div.pages { - background: -moz-linear-gradient(bottom, #323232 40%, #2E2E2E 75%) !important; - border: 1px solid #2D2D2D !important; - box-shadow: 0px 0px 10px #2C2C2C; - color: #BBB !important; -} -.reply { - margin-top: 0.5em !important; -} -.body a, a:hover { - color: #FF6666; -} -table th { background: none !important } -a, a:visited { - color: #BBB; -} -hr { - border: 0 !important; - height: 1px !important; - background-color: #AAA !important; - margin: 1.5em 0 1.5em !important; -} -.name, .body a { - color: #FF6666 !important; -} -.subject, h1, .subtitle, .selected { - color: #FF6699 !important; -} -.capcode { - color: #FF66CC !important; -} -input, textarea { - background: url('img/stripes_textarea.png'); - border: 1px #CCC; - border-radius: 3px; - padding: 3px; -} -input[type="text"] { width: 200px } -textarea { - background-size: 100% 100%; - background-color: #FCFCFC; - background-repeat: repeat-x; - width: 100%; - height: 200px; -} -input[type="submit"] { - border: 1px solid rgb(204, 204, 204); - background: url('img/stripes_submit.png'); - height: 23px; - margin-left: 0.5em; -} -.delete { - margin-top: 0.5em; -} +/** + * stripes.css + * for vichan by klaczy + */ +body { + background: url('img/stripes_bg.png'); + color: #BBB; + font-family: 'Hevletica', sans-serif; + font-size: 12px; +} +div.boardlist:nth-child(1):hover { + background: #222 !important; +} +div.reply, div.pages { + background: -moz-linear-gradient(bottom, #323232 40%, #2E2E2E 75%) !important; + border: 1px solid #2D2D2D !important; + box-shadow: 0px 0px 10px #2C2C2C; + color: #BBB !important; +} +.reply { + margin-top: 0.5em !important; +} +.body a, a:hover { + color: #FF6666; +} +table th { background: none !important } +a, a:visited { + color: #BBB; +} +hr { + border: 0 !important; + height: 1px !important; + background-color: #AAA !important; + margin: 1.5em 0 1.5em !important; +} +.name, .body a { + color: #FF6666 !important; +} +.subject, h1, .subtitle, .selected { + color: #FF6699 !important; +} +.capcode { + color: #FF66CC !important; +} +input, textarea { + background: url('img/stripes_textarea.png'); + border: 1px #CCC; + border-radius: 3px; + padding: 3px; +} +input[type="text"] { width: 200px } +textarea { + background-size: 100% 100%; + background-color: #FCFCFC; + background-repeat: repeat-x; + width: 100%; + height: 200px; +} +input[type="submit"] { + border: 1px solid rgb(204, 204, 204); + background: url('img/stripes_submit.png'); + height: 23px; + margin-left: 0.5em; +} +.delete { + margin-top: 0.5em; +} diff --git a/stylesheets/style.css b/stylesheets/style.css index 8c417d52..fbb5370f 100644 --- a/stylesheets/style.css +++ b/stylesheets/style.css @@ -145,6 +145,10 @@ div.post img.icon { margin: 0 5px; padding: 0; } +div.post i.icon { + margin: 0 4px; + font-size: 16px; +} div.post.op { margin-right: 20px; margin-bottom: 5px; @@ -401,7 +405,6 @@ table.mod.config-editor td { table.mod.config-editor input[type="text"] { width: 98%; } - .desktop-style div.boardlist:nth-child(1) { position: fixed; top: 0px; @@ -454,6 +457,7 @@ table.mod.config-editor input[type="text"] { background-color: #fff; opacity: 0.8; } -.thread-hidden { - opacity: 0.5; +p.intro.thread-hidden { + margin: 0px; + padding: 0px; } diff --git a/stylesheets/testorange.css b/stylesheets/testorange.css index 30e7274b..c7250de4 100644 --- a/stylesheets/testorange.css +++ b/stylesheets/testorange.css @@ -1,211 +1,211 @@ -/* +piwnichan style, based on testorange.css from Karachan */ - -body { - font-family: sans-serif; - font-size: 12px; - color:#bebebe; - - background-color: #1e1e1e; - background-image: url('img/testorange_testo.png'), url('img/testorange_top_bg.gif'), url('img/testorange_bg.gif'); - background-repeat: no-repeat, repeat-x, repeat; - background-attachment: fixed, scroll, scroll; - background-position: right bottom, 0% 0%, 0% 0%; -} - -.desktop-style .bl-menu{ -background-image: url('img/testorange_bg.gif'); - background-repeat: repeat; -} - -.boardlist .board a { -background-image: url('img/testorange_bg.gif'); - background-repeat: repeat; -} - - - - -a:link, a:visited, div.post.reply div.body a { - color:#ff9100; - text-decoration: none; -} -a:link:hover, a:visited:hover, div.post.reply div.body a:hover { - color:#ffff00; -} - -a.email span.name { - color:#ff9100 !important; -} - -div.post.reply.highlighted { -background: black; -} - -input { - color: #000; - background: #fff; -} -textarea { - background: #dedede url('img/testorange_textarea_bg.gif') repeat-x; -} -input, textarea { - border: 1px #fff solid; -} - -hr { - width: 100%; - height: 1px; - border: none; - background: #707070; - overflow: hidden; -} - -.reflink a:hover{ - font-weight: bold; -} -.adminbar { - text-align:right; - clear:both; - float:right; -} -h1 { - clear:both; - text-align:center; - font-size: 2.5em; - color:#ff9100; - width:100%; -} -div.title { - color:#ff9100; -} -div.banner, .replymode, .catalogmode { - text-align:center; - margin: 5px 0 5px 0; - padding: 5px 2px 5px 2px; - color:#000; - font-weight: bold; - width:100%; -} -.postblock, form table th { - color: #000; - font-size: 11px; - font-weight: bold; - text-align: center !important; -} - -.postarea { -} -.rules { - width: 468px; - font-size: 10px; -} -.rules li { - margin-left: 1em; -} -.footer { - text-align:center; - font-size:12px; -} -.passvalid { - text-align:center; - width:100%; - color:#ffffff; -} -.dellist { - font-weight: bold; - text-align:center; -} -.delbuttons { - text-align:center; - padding-bottom:4px; - -} -.managehead { - background-color: #1e1e1e; - color: #bebebe; - padding:0px; -} -.postlists { - background: #000; - width:100%; - padding:0px; - color: #bebebe; -} -.row1 { - background-color: #1e1e1e; - color: #bebebe; -} -.row2 { - background: #1e1e1e; - color: #bebebe; -} -.unkfunc { - background:inherit; - color:#789922; -} -.filesize { - text-decoration:none; -} -.filetitle { - background:inherit; - font-size:1.2em; - color: #bebebe; - font-weight:800; -} -span.name, .postername { - color:#fff !important; - font-weight:bold; -} -span.trip, .postertrip { - color:#707070; -} -.oldpost { - color:#CC1105; - font-weight:800; -} -.omittedposts { - color:#707070; -} -div.post.reply { - padding: 5px; - border: 1px #707070 solid !important; - background: #282828; - -webkit-border-radius: 10px; - -khtml-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; -} -.replyhl { - background-color: #1e1e1e; - color: #bebebe; -} -form table th, div.banner, div.pages, .replymode, .postblock, .passvalid, .catalogmode { - background: #ff9100 url('img/testorange_f_bg.gif') repeat-x !important; -} -div.pages, div.pages a { - color: black; - border: 0; -} -div.boardlist { - background-color: rgba(5%,5%,5%,0.2); -} -div.boardlist.bottom { - background-color:transparent; -} - -.desktop-style div.boardlist:nth-child(1) { - text-shadow: #000 1px 1px 1px, #500 -1px -1px 1px; -} - - -.desktop-style div.boardlist:nth-child(1):hover { - background-color: rgba(0%, 0%, 0%, 0.45); -} - -p.intro span.subject { - color:#ee8100; -} - -span.quote { - color: #a8c952; +/* +piwnichan style, based on testorange.css from Karachan */ + +body { + font-family: sans-serif; + font-size: 12px; + color:#bebebe; + + background-color: #1e1e1e; + background-image: url('img/testorange_testo.png'), url('img/testorange_top_bg.gif'), url('img/testorange_bg.gif'); + background-repeat: no-repeat, repeat-x, repeat; + background-attachment: fixed, scroll, scroll; + background-position: right bottom, 0% 0%, 0% 0%; +} + +.desktop-style .bl-menu{ +background-image: url('img/testorange_bg.gif'); + background-repeat: repeat; +} + +.boardlist .board a { +background-image: url('img/testorange_bg.gif'); + background-repeat: repeat; +} + + + + +a:link, a:visited, div.post.reply div.body a { + color:#ff9100; + text-decoration: none; +} +a:link:hover, a:visited:hover, div.post.reply div.body a:hover { + color:#ffff00; +} + +a.email span.name { + color:#ff9100 !important; +} + +div.post.reply.highlighted { +background: black; +} + +input { + color: #000; + background: #fff; +} +textarea { + background: #dedede url('img/testorange_textarea_bg.gif') repeat-x; +} +input, textarea { + border: 1px #fff solid; +} + +hr { + width: 100%; + height: 1px; + border: none; + background: #707070; + overflow: hidden; +} + +.reflink a:hover{ + font-weight: bold; +} +.adminbar { + text-align:right; + clear:both; + float:right; +} +h1 { + clear:both; + text-align:center; + font-size: 2.5em; + color:#ff9100; + width:100%; +} +div.title { + color:#ff9100; +} +div.banner, .replymode, .catalogmode { + text-align:center; + margin: 5px 0 5px 0; + padding: 5px 2px 5px 2px; + color:#000; + font-weight: bold; + width:100%; +} +.postblock, form table th { + color: #000; + font-size: 11px; + font-weight: bold; + text-align: center !important; +} + +.postarea { +} +.rules { + width: 468px; + font-size: 10px; +} +.rules li { + margin-left: 1em; +} +.footer { + text-align:center; + font-size:12px; +} +.passvalid { + text-align:center; + width:100%; + color:#ffffff; +} +.dellist { + font-weight: bold; + text-align:center; +} +.delbuttons { + text-align:center; + padding-bottom:4px; + +} +.managehead { + background-color: #1e1e1e; + color: #bebebe; + padding:0px; +} +.postlists { + background: #000; + width:100%; + padding:0px; + color: #bebebe; +} +.row1 { + background-color: #1e1e1e; + color: #bebebe; +} +.row2 { + background: #1e1e1e; + color: #bebebe; +} +.unkfunc { + background:inherit; + color:#789922; +} +.filesize { + text-decoration:none; +} +.filetitle { + background:inherit; + font-size:1.2em; + color: #bebebe; + font-weight:800; +} +span.name, .postername { + color:#fff !important; + font-weight:bold; +} +span.trip, .postertrip { + color:#707070; +} +.oldpost { + color:#CC1105; + font-weight:800; +} +.omittedposts { + color:#707070; +} +div.post.reply { + padding: 5px; + border: 1px #707070 solid !important; + background: #282828; + -webkit-border-radius: 10px; + -khtml-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; +} +.replyhl { + background-color: #1e1e1e; + color: #bebebe; +} +form table th, div.banner, div.pages, .replymode, .postblock, .passvalid, .catalogmode { + background: #ff9100 url('img/testorange_f_bg.gif') repeat-x !important; +} +div.pages, div.pages a { + color: black; + border: 0; +} +div.boardlist { + background-color: rgba(5%,5%,5%,0.2); +} +div.boardlist.bottom { + background-color:transparent; +} + +.desktop-style div.boardlist:nth-child(1) { + text-shadow: #000 1px 1px 1px, #500 -1px -1px 1px; +} + + +.desktop-style div.boardlist:nth-child(1):hover { + background-color: rgba(0%, 0%, 0%, 0.45); +} + +p.intro span.subject { + color:#ee8100; +} + +span.quote { + color: #a8c952; } diff --git a/stylesheets/wasabi.css b/stylesheets/wasabi.css index cf7041fe..3da974c3 100644 --- a/stylesheets/wasabi.css +++ b/stylesheets/wasabi.css @@ -1,402 +1,402 @@ -/** - * wasabi.css - * For AwsumChan by Circlepuller - */ -body { - background: #F7F9B0 url('img/fade-yellow.png') repeat-x 50% 0%; - color: black; - font-family: arial, helvetica, sans-serif; - font-size: 10pt; - margin: 0 8px; - padding-left: 5px; - padding-right: 5px; -} -table * { - margin: 0; -} -a:link, a:visited { - text-decoration: underline; - color: #400040; -} -a:link:hover, a:visited:hover { - color: limegreen; -} -a.post_no { - color: black; - text-decoration: none; - margin: 0; - padding: 0; -} -p.intro a.post_no, p.intro a.email { - margin: 0; -} -p.intro a.email span.name { - color: #34345C; -} -p.intro a.email:hover span.name { - color: #ff0000; -} -p.intro label { - display: inline; -} -h2 { - color: #AF0A0F; - font-size: 11pt; - margin: 0px; - padding: 0px; -} -h1 { - font-family: tahoma; - letter-spacing: -2px; - font-size: 20pt; - margin-bottom: 0; -} -h1.logo img { - display: inline; - float: none; - background-image: url('/static/logo_bg.gif'); - background-repeat: no-repeat; - background-position: center; -} -div.title, h1 { - color: #AF0A0F; - text-align: center; -} -div.title { - font-size: 8pt; - margin-bottom: 2em; -} -form { - margin-bottom: 4em; -} -form table { - margin: auto; -} -form table input { - height: auto; -} -input[type="text"], input[type="password"], textarea { - border: 1px solid #a9a9a9; - text-indent: 0px; - text-shadow: none; - text-transform: none; - word-spacing: normal; -} -form table tr td { - text-align: left; - margin: 0px; - padding: 0px; -} -form table tr th { - text-align: left; - padding: 4px; -} -form table tr th { - background: #D7FE85; -} -form table tr td div { - text-align: center; - float: left; - padding-left: 3px; -} -form table tr td div input { - display: block; - margin: 2px auto 0 auto; -} -form table tr td div label { - font-size: 10px; -} -.unimportant, .unimportant * { - font-size: 10px; -} -p.fileinfo { - display: block; - margin: 0px; - padding-right: 7em; -} -div.banner { - background-color: #400040; - font-size: 12pt; - font-weight: bold; - text-align: center; - margin: 1em 0; -} -div.banner, div.banner a { - color: white; -} -div.banner a:hover { - color: #EEF2FF; - text-decoration: none; -} -img.banner { - float: none; - margin: 4px auto 0 auto; -} -img { - display: block; - float: left; - margin: 10px 20px; - border: none; -} -div.post img { - padding: 5px; - margin: 5px 20px 0 0; -} -div.post img.icon { - display: inline; - float: none; - margin: 0 5px; - padding: 0; -} -div.post.op { - margin-right: 20px; - margin-bottom: 5px; -} -div.post.op hr { - border-color: #D9BFB7; -} -p.intro { - margin: 0.5em 0; - padding: 0; - padding-bottom: 0.2em; -} -input.delete { - float: left; - margin: 1px 6px 0 0; -} -p.intro span.subject { - color: #0F0C5D; - font-weight: bold; -} -p.intro span.name { - color: #117743; - font-weight: bold; -} -p.intro a.capcode, p.intro a.nametag { - color: #F00000; - margin-left: 0; -} -p.intro a { - margin-left: 8px; -} -div.delete { - float: right; -} -div.post.reply p { - margin: 0.3em 0 0 0; -} -div.post.reply div.body { - margin-left: 1.8em; - margin-top: 0.8em; - padding-right: 3em; - padding-bottom: 0.3em; -} -div.post.reply.highlighted { - background-color: #FFF; - border-color: #CCC; -} -div.post.reply div.body a { - color: #D00; -} -div.post { - max-width: 97%; -} -div.post div.body { - word-wrap: break-word; -} -div.post.reply { - background: #D7FE85; - margin: 0.2em 16px; - padding: 0.2em 0.3em 0.5em 0.6em; - border-width: 1px; - border-style: none solid solid none; - border-color: lightgreen; - display: inline-block; -} -span.trip { - color: #228854; -} -span.quote { - color: #3C6D8A; -} -span.omitted { - display: block; - margin-top: 1em; -} -br.clear { - clear: left; -} -span.controls { - float: right; - margin: 0; - padding: 0; - font-size: 80%; -} -span.controls.op { - float: none; - margin-left: 10px; -} -span.controls a { - margin: 0; -} -div#wrap { - width: 900px; - margin:0 auto; -} -div.ban { - background-color: white; - border: 1px solid #400040; - max-width: 700px; - margin: 30px auto; -} -div.ban p, div.ban h2 { - padding: 3px 7px; -} -div.ban h2 { - background: #D7FE85; - color: #400040; - font-size: 12pt; -} -div.ban p { - font-size: 12px; - margin-bottom: 12px; -} -div.ban p.reason { - font-weight: bold; -} -span.heading { - color: #AF0A0F; - font-size: 11pt; - font-weight: bold; - display: block; -} -span.spoiler { - background: black; - color: black; -} -div.post.reply div.body span.spoiler a { - color: black; -} -span.spoiler:hover, div.post.reply div.body span.spoiler:hover a { - color: white; -} -div.styles { - float: right; - padding-bottom: 20px; -} -div.styles a { - margin: 0 10px; -} -div.styles a.selected { - text-decoration: none; -} -table.test { - width: 100%; -} -table.test td, table.test th { - text-align: left; - padding: 5px; -} -table.test tr.h th { - background: #98E; -} -table.test td img { - margin: 0; -} -fieldset label { - display: block; -} -div.pages { - color: limegreen; - background: #D7FE85; - display: inline; - padding: 8px; - border-right: 1px solid limegreen; - border-bottom: 1px solid limegreen; -} -div.pages a.selected { - color: black; - font-weight: bolder; -} -div.pages a:link { - text-decoration: none; -} -div.pages form { - margin: 0; - padding: 0; - display: inline; -} -div.pages form input { - margin: 0 5px; - display: inline; -} -hr { - border: none; - border-top: 1px solid limegreen; - height: 0px; -} -div.boardlist { - color: limegreen; - font-size: 9pt; - margin-top: 3px; -} -div.boardlist.bottom { - margin-top: 20px; -} -div.boardlist a { - text-decoration: none; - color:#ffff22; - text-shadow: #000 1px 1px 1px, #000 -1px -1px 1px, #950000 1px 1px 2px, #009500 -1px -1px 2px; -} -div.report { - color: #333; -} -table.modlog { - margin: auto; - width: 100%; -} -table.modlog tr td { - text-align: left; - margin: 0px; - padding: 4px 15px 0 0; -} -table.modlog tr th { - text-align: left; - padding: 4px 15px 5px 5px; - white-space: nowrap; -} -table.modlog tr th { - background: #D7FE85; -} -td.minimal, th.minimal { - width: 1%; - white-space: nowrap; -} -div.top_notice { - text-align: center; - margin: 5px auto; -} -span.public_ban { - display: block; - color: red; - font-weight: bold; - margin-top: 15px; -} -span.toolong { - display: block; - margin-top: 15px; -} -div.blotter { - color: red; - font-weight: bold; - text-align: center; -} - -.desktop-style div.boardlist:nth-child(1) { - -} - - -.desktop-style div.boardlist:nth-child(1):hover { - background-color: rgba(100%, 100%, 30%, 0.35); -} +/** + * wasabi.css + * For AwsumChan by Circlepuller + */ +body { + background: #F7F9B0 url('img/fade-yellow.png') repeat-x 50% 0%; + color: black; + font-family: arial, helvetica, sans-serif; + font-size: 10pt; + margin: 0 8px; + padding-left: 5px; + padding-right: 5px; +} +table * { + margin: 0; +} +a:link, a:visited { + text-decoration: underline; + color: #400040; +} +a:link:hover, a:visited:hover { + color: limegreen; +} +a.post_no { + color: black; + text-decoration: none; + margin: 0; + padding: 0; +} +p.intro a.post_no, p.intro a.email { + margin: 0; +} +p.intro a.email span.name { + color: #34345C; +} +p.intro a.email:hover span.name { + color: #ff0000; +} +p.intro label { + display: inline; +} +h2 { + color: #AF0A0F; + font-size: 11pt; + margin: 0px; + padding: 0px; +} +h1 { + font-family: tahoma; + letter-spacing: -2px; + font-size: 20pt; + margin-bottom: 0; +} +h1.logo img { + display: inline; + float: none; + background-image: url('/static/logo_bg.gif'); + background-repeat: no-repeat; + background-position: center; +} +div.title, h1 { + color: #AF0A0F; + text-align: center; +} +div.title { + font-size: 8pt; + margin-bottom: 2em; +} +form { + margin-bottom: 4em; +} +form table { + margin: auto; +} +form table input { + height: auto; +} +input[type="text"], input[type="password"], textarea { + border: 1px solid #a9a9a9; + text-indent: 0px; + text-shadow: none; + text-transform: none; + word-spacing: normal; +} +form table tr td { + text-align: left; + margin: 0px; + padding: 0px; +} +form table tr th { + text-align: left; + padding: 4px; +} +form table tr th { + background: #D7FE85; +} +form table tr td div { + text-align: center; + float: left; + padding-left: 3px; +} +form table tr td div input { + display: block; + margin: 2px auto 0 auto; +} +form table tr td div label { + font-size: 10px; +} +.unimportant, .unimportant * { + font-size: 10px; +} +p.fileinfo { + display: block; + margin: 0px; + padding-right: 7em; +} +div.banner { + background-color: #400040; + font-size: 12pt; + font-weight: bold; + text-align: center; + margin: 1em 0; +} +div.banner, div.banner a { + color: white; +} +div.banner a:hover { + color: #EEF2FF; + text-decoration: none; +} +img.banner { + float: none; + margin: 4px auto 0 auto; +} +img { + display: block; + float: left; + margin: 10px 20px; + border: none; +} +div.post img { + padding: 5px; + margin: 5px 20px 0 0; +} +div.post img.icon { + display: inline; + float: none; + margin: 0 5px; + padding: 0; +} +div.post.op { + margin-right: 20px; + margin-bottom: 5px; +} +div.post.op hr { + border-color: #D9BFB7; +} +p.intro { + margin: 0.5em 0; + padding: 0; + padding-bottom: 0.2em; +} +input.delete { + float: left; + margin: 1px 6px 0 0; +} +p.intro span.subject { + color: #0F0C5D; + font-weight: bold; +} +p.intro span.name { + color: #117743; + font-weight: bold; +} +p.intro a.capcode, p.intro a.nametag { + color: #F00000; + margin-left: 0; +} +p.intro a { + margin-left: 8px; +} +div.delete { + float: right; +} +div.post.reply p { + margin: 0.3em 0 0 0; +} +div.post.reply div.body { + margin-left: 1.8em; + margin-top: 0.8em; + padding-right: 3em; + padding-bottom: 0.3em; +} +div.post.reply.highlighted { + background-color: #FFF; + border-color: #CCC; +} +div.post.reply div.body a { + color: #D00; +} +div.post { + max-width: 97%; +} +div.post div.body { + word-wrap: break-word; +} +div.post.reply { + background: #D7FE85; + margin: 0.2em 16px; + padding: 0.2em 0.3em 0.5em 0.6em; + border-width: 1px; + border-style: none solid solid none; + border-color: lightgreen; + display: inline-block; +} +span.trip { + color: #228854; +} +span.quote { + color: #3C6D8A; +} +span.omitted { + display: block; + margin-top: 1em; +} +br.clear { + clear: left; +} +span.controls { + float: right; + margin: 0; + padding: 0; + font-size: 80%; +} +span.controls.op { + float: none; + margin-left: 10px; +} +span.controls a { + margin: 0; +} +div#wrap { + width: 900px; + margin:0 auto; +} +div.ban { + background-color: white; + border: 1px solid #400040; + max-width: 700px; + margin: 30px auto; +} +div.ban p, div.ban h2 { + padding: 3px 7px; +} +div.ban h2 { + background: #D7FE85; + color: #400040; + font-size: 12pt; +} +div.ban p { + font-size: 12px; + margin-bottom: 12px; +} +div.ban p.reason { + font-weight: bold; +} +span.heading { + color: #AF0A0F; + font-size: 11pt; + font-weight: bold; + display: block; +} +span.spoiler { + background: black; + color: black; +} +div.post.reply div.body span.spoiler a { + color: black; +} +span.spoiler:hover, div.post.reply div.body span.spoiler:hover a { + color: white; +} +div.styles { + float: right; + padding-bottom: 20px; +} +div.styles a { + margin: 0 10px; +} +div.styles a.selected { + text-decoration: none; +} +table.test { + width: 100%; +} +table.test td, table.test th { + text-align: left; + padding: 5px; +} +table.test tr.h th { + background: #98E; +} +table.test td img { + margin: 0; +} +fieldset label { + display: block; +} +div.pages { + color: limegreen; + background: #D7FE85; + display: inline; + padding: 8px; + border-right: 1px solid limegreen; + border-bottom: 1px solid limegreen; +} +div.pages a.selected { + color: black; + font-weight: bolder; +} +div.pages a:link { + text-decoration: none; +} +div.pages form { + margin: 0; + padding: 0; + display: inline; +} +div.pages form input { + margin: 0 5px; + display: inline; +} +hr { + border: none; + border-top: 1px solid limegreen; + height: 0px; +} +div.boardlist { + color: limegreen; + font-size: 9pt; + margin-top: 3px; +} +div.boardlist.bottom { + margin-top: 20px; +} +div.boardlist a { + text-decoration: none; + color:#ffff22; + text-shadow: #000 1px 1px 1px, #000 -1px -1px 1px, #950000 1px 1px 2px, #009500 -1px -1px 2px; +} +div.report { + color: #333; +} +table.modlog { + margin: auto; + width: 100%; +} +table.modlog tr td { + text-align: left; + margin: 0px; + padding: 4px 15px 0 0; +} +table.modlog tr th { + text-align: left; + padding: 4px 15px 5px 5px; + white-space: nowrap; +} +table.modlog tr th { + background: #D7FE85; +} +td.minimal, th.minimal { + width: 1%; + white-space: nowrap; +} +div.top_notice { + text-align: center; + margin: 5px auto; +} +span.public_ban { + display: block; + color: red; + font-weight: bold; + margin-top: 15px; +} +span.toolong { + display: block; + margin-top: 15px; +} +div.blotter { + color: red; + font-weight: bold; + text-align: center; +} + +.desktop-style div.boardlist:nth-child(1) { + +} + + +.desktop-style div.boardlist:nth-child(1):hover { + background-color: rgba(100%, 100%, 30%, 0.35); +} diff --git a/templates/error.html b/templates/error.html new file mode 100644 index 00000000..3b8eb693 --- /dev/null +++ b/templates/error.html @@ -0,0 +1,18 @@ +
+

{{ message }}

+ {% if board %} +

+ + {% trans 'Go back' %} + +

+ {% endif %} +
+{% if debug and config.debug %} +
+

{% trans 'Error information' %}

+
+		{{ debug }}
+	
+
+{% endif %} \ No newline at end of file diff --git a/templates/generic_page.html b/templates/generic_page.html index 41300f6b..70cb15aa 100644 --- a/templates/generic_page.html +++ b/templates/generic_page.html @@ -22,7 +22,8 @@ {% include 'attention_bar.html' %} {% include 'post_form.html' %} - {% if config.blotter %}
{{ config.blotter }}
{% endif %} + + {% if config.global_message %}
{{ config.global_message }}
{% endif %}
diff --git a/templates/header.html b/templates/header.html index 95e0bc09..d054fd6d 100644 --- a/templates/header.html +++ b/templates/header.html @@ -4,6 +4,7 @@ {% if config.meta_keywords %}{% endif %} {% if config.default_stylesheet.1 != '' %}{% endif %} + {% if config.font_awesome %}{% endif %} {% if not nojavascript %} @@ -12,17 +13,31 @@ {% endif %} {% endif %} {% if config.recaptcha %}{% endif %} diff --git a/templates/index.html b/templates/index.html index 451ca8b1..12150d0b 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,61 +1,61 @@ - - - - - - - - {% include 'header.html' %} - {{ board.url }} - {{ board.title|e }} - - - {{ boardlist.top }} - {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} - {% if config.url_banner %}{% endif %} -
-

{{ board.url }} - {{ board.title|e }}

-
- {% if board.subtitle %} - {{ board.subtitle|e }} - {% endif %} - {% if mod %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} -
-
- - {% include 'attention_bar.html' %} - {% if not no_post_form %} - {% include 'post_form.html' %} - {% else %} - {% include 'boardlist.html' %} - {% endif %} - - {% if config.blotter %}
{{ config.blotter }}
{% endif %} -
- - - {% if mod %}{% endif %} - {{ body }} - {% include 'report_delete.html' %} -
-
{{ btn.prev }} {% for page in pages %} - [{{ page.num }}]{% if loop.last %} {% endif %} - {% endfor %} {{ btn.next }}
- {{ boardlist.bottom }} -
-

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

- {% for footer in config.footer %}

{{ footer }}

{% endfor %} -
- - - + + + + + + + + {% include 'header.html' %} + {{ board.url }} - {{ board.title|e }} + + + {{ boardlist.top }} + {% if pm %}
You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

{% endif %} + {% if config.url_banner %}{% endif %} +
+

{{ board.url }} - {{ board.title|e }}

+
+ {% if board.subtitle %} + {{ board.subtitle|e }} + {% endif %} + {% if mod %}

{% trans %}Return to dashboard{% endtrans %}

{% endif %} +
+
+ + {% include 'attention_bar.html' %} + {% if not no_post_form %} + {% include 'post_form.html' %} + {% else %} + {% include 'boardlist.html' %} + {% endif %} + + {% if config.global_message %}
{{ config.global_message }}
{% endif %} +
+
+ + {% if mod %}{% endif %} + {{ body }} + {% include 'report_delete.html' %} +
+
{{ btn.prev }} {% for page in pages %} + [{{ page.num }}]{% if loop.last %} {% endif %} + {% endfor %} {{ btn.next }}
+ {{ boardlist.bottom }} +
+

Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

+ {% for footer in config.footer %}

{{ footer }}

{% endfor %} +
+ + + diff --git a/templates/installer/check-requirements.html b/templates/installer/check-requirements.html new file mode 100644 index 00000000..b6003f3a --- /dev/null +++ b/templates/installer/check-requirements.html @@ -0,0 +1,54 @@ +
+

Pre-installation tests

+ + + + + + + {% set errors = 0 %} + {% set warnings = 0 %} + {% for test in tests %} + + + + + + {% endfor %} +
CategoryTestResult
{{ test.category }}{{ test.name }} + {% if test.result %} + + {% else %} + {% if test.required %} + {% set errors = errors + 1 %} + + {% else %} + {% set warnings = warnings + 1 %} + + {% endif %} + {% endif %} +
+ {% if errors or warnings %} +

There were {{ errors }} error(s) and {{ warnings }} warning(s).

+
    + {% for test in tests if not test.result%} +
  • + {% if test.required %} + Error: + {% else %} + Warning: + {% endif %} + {{ test.message }} +
  • + {% endfor %} +
+ {% if errors %} +

Clik here to ignore errors and attempt installing anyway (not recommended).

+ {% else %} +

Clik here to proceed with installation.

+ {% endif %} + {% else %} +

There were no errors or warnings. Good!

+

Clik here to proceed with installation.

+ {% endif %} +
diff --git a/templates/installer/config.html b/templates/installer/config.html new file mode 100644 index 00000000..193bb98b --- /dev/null +++ b/templates/installer/config.html @@ -0,0 +1,95 @@ +
+
+ Database (MySQL) + + + + + + + + + + + + + + +
+

The following is all later configurable. For more options, edit your configuration files after installing.

+
+ Cookies + + + + + +
+ +
+ Flood control + + + + + + + + + + + + + + + + + +
+ +
+ Images + + + + + + + + + + + + + + +
+ +
+ Display + + + + + + + + +
+ +
+ Directories + + +
+ +
+ Miscellaneous + + +
+ +

+ +

+
diff --git a/templates/main.js b/templates/main.js index 31c0254a..71dcd92a 100644 --- a/templates/main.js +++ b/templates/main.js @@ -1,232 +1,271 @@ -{% raw %} - -/* gettext-compatible _ function, example of usage: - * - * > // Loading pl_PL.json here (containing polish translation strings generated by tools/i18n_compile.php) - * > alert(_("Hello!")); - * Witaj! - */ -function _(s) { - return (typeof l10n != 'undefined' && typeof l10n[s] != 'undefined') ? l10n[s] : s; -} - -/* printf-like formatting function, example of usage: - * - * > alert(fmt("There are {0} birds on {1} trees", [3,4])); - * There are 3 birds on 4 trees - * > // Loading pl_PL.json here (containing polish translation strings generated by tools/locale_compile.php) - * > alert(fmt(_("{0} users"), [3])); - * 3 uzytkownikow - */ -function fmt(s,a) { - return s.replace(/\{([0-9]+)\}/g, function(x) { return a[x[1]]; }); -} - -var saved = {}; - - -var selectedstyle = '{% endraw %}{{ config.default_stylesheet.0|addslashes }}{% raw %}'; -var styles = { - {% endraw %} - {% for stylesheet in stylesheets %}{% raw %}'{% endraw %}{{ stylesheet.name|addslashes }}{% raw %}' : '{% endraw %}{{ stylesheet.uri|addslashes }}{% raw %}', - {% endraw %}{% endfor %}{% raw %} -}; - -function changeStyle(styleName, link) { - localStorage.stylesheet = styleName; - - if (!document.getElementById('stylesheet')) { - var s = document.createElement('link'); - s.rel = 'stylesheet'; - s.type = 'text/css'; - s.id = 'stylesheet'; - var x = document.getElementsByTagName('head')[0]; - x.appendChild(s); - } - - document.getElementById('stylesheet').href = styles[styleName]; - selectedstyle = styleName; - - if (document.getElementsByClassName('styles').length != 0) { - var styleLinks = document.getElementsByClassName('styles')[0].childNodes; - for (i = 0; i < styleLinks.length; i++) { - styleLinks[i].className = ''; - } - } - - if (link) { - link.className = 'selected'; - } -} - -if (localStorage.stylesheet) { - for (styleName in styles) { - if (styleName == localStorage.stylesheet) { - changeStyle(styleName); - break; - } - } -} - -function init_stylechooser() { - var newElement = document.createElement('div'); - newElement.className = 'styles'; - - for (styleName in styles) { - var style = document.createElement('a'); - style.innerHTML = '[' + styleName + ']'; - style.onclick = function() { - changeStyle(this.innerHTML.substring(1, this.innerHTML.length - 1), this); - }; - if (styleName == selectedstyle) { - style.className = 'selected'; - } - style.href = 'javascript:void(0);'; - newElement.appendChild(style); - } - - document.getElementsByTagName('body')[0].insertBefore(newElement, document.getElementsByTagName('body')[0].lastChild.nextSibling); -} - -function get_cookie(cookie_name) { - var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); - if (results) - return (unescape(results[2])); - else - return null; -} - -function highlightReply(id) { - if (typeof window.event != "undefined" && event.which == 2) { - // don't highlight on middle click - return true; - } - - var divs = document.getElementsByTagName('div'); - for (var i = 0; i < divs.length; i++) - { - if (divs[i].className.indexOf('post') != -1) - divs[i].className = divs[i].className.replace(/highlighted/, ''); - } - if (id) { - var post = document.getElementById('reply_'+id); - if (post) - post.className += ' highlighted'; - } -} - -function generatePassword() { - var pass = ''; - var chars = '{% endraw %}{{ config.genpassword_chars }}{% raw %}'; - for (var i = 0; i < 8; i++) { - var rnd = Math.floor(Math.random() * chars.length); - pass += chars.substring(rnd, rnd + 1); - } - return pass; -} - -function dopost(form) { - if (form.elements['name']) { - localStorage.name = form.elements['name'].value.replace(/( |^)## .+$/, ''); - } - if (form.elements['email'] && form.elements['email'].value != 'sage') { - localStorage.email = form.elements['email'].value; - } - - saved[document.location] = form.elements['body'].value; - sessionStorage.body = JSON.stringify(saved); - - return form.elements['body'].value != "" || form.elements['file'].value != ""; -} - -function citeReply(id) { - var body = document.getElementById('body'); - - if (document.selection) { - // IE - body.focus(); - var sel = document.selection.createRange(); - sel.text = '>>' + id + '\n'; - } else if (body.selectionStart || body.selectionStart == '0') { - // Mozilla - var start = body.selectionStart; - var end = body.selectionEnd; - body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); - } else { - // ??? - body.value += '>>' + id + '\n'; - } -} - -function rememberStuff() { - if (document.forms.post) { - if (document.forms.post.password) { - if (!localStorage.password) - localStorage.password = generatePassword(); - document.forms.post.password.value = localStorage.password; - } - - if (localStorage.name && document.forms.post.elements['name']) - document.forms.post.elements['name'].value = localStorage.name; - if (localStorage.email && document.forms.post.elements['email']) - document.forms.post.elements['email'].value = localStorage.email; - - if (window.location.hash.indexOf('q') == 1) - citeReply(window.location.hash.substring(2)); - - if (sessionStorage.body) { - var saved = JSON.parse(sessionStorage.body); - if (get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')) { - // Remove successful posts - var successful = JSON.parse(get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')); - for (var url in successful) { - saved[url] = null; - } - sessionStorage.body = JSON.stringify(saved); - - document.cookie = '{% endraw %}{{ config.cookies.js }}{% raw %}={};expires=0;path=/;'; - } - if (saved[document.location]) { - document.forms.post.body.value = saved[document.location]; - } - } - - if (localStorage.body) { - document.forms.post.body.value = localStorage.body; - localStorage.body = ''; - } - } -} - -function init() { - init_stylechooser(); - - if (document.forms.postcontrols) { - document.forms.postcontrols.password.value = localStorage.password; - } - - if (window.location.hash.indexOf('q') != 1 && window.location.hash.substring(1)) - highlightReply(window.location.hash.substring(1)); -} - -var RecaptchaOptions = { - theme : 'clean' -}; - -onready_callbacks = []; -function onready(fnc) { - onready_callbacks.push(fnc); -} - -function ready() { - for (var i = 0; i < onready_callbacks.length; i++) { - onready_callbacks[i](); - } -} - -onready(init); - -{% endraw %}{% if config.google_analytics %}{% raw %} - -var _gaq = _gaq || [];_gaq.push(['_setAccount', '{% endraw %}{{ config.google_analytics }}{% raw %}']);{% endraw %}{% if config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', '{% endraw %}{{ config.google_analytics_domain }}{% raw %}']){% endraw %}{% endif %}{% if not config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', 'none']){% endraw %}{% endif %}{% raw %};_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();{% endraw %}{% endif %} - +{% raw %} + +/* gettext-compatible _ function, example of usage: + * + * > // Loading pl_PL.json here (containing polish translation strings generated by tools/i18n_compile.php) + * > alert(_("Hello!")); + * Witaj! + */ +function _(s) { + return (typeof l10n != 'undefined' && typeof l10n[s] != 'undefined') ? l10n[s] : s; +} + +/* printf-like formatting function, example of usage: + * + * > alert(fmt("There are {0} birds on {1} trees", [3,4])); + * There are 3 birds on 4 trees + * > // Loading pl_PL.json here (containing polish translation strings generated by tools/locale_compile.php) + * > alert(fmt(_("{0} users"), [3])); + * 3 uzytkownikow + */ +function fmt(s,a) { + return s.replace(/\{([0-9]+)\}/g, function(x) { return a[x[1]]; }); +} + +var saved = {}; + + +var selectedstyle = '{% endraw %}{{ config.default_stylesheet.0|addslashes }}{% raw %}'; +var styles = { + {% endraw %} + {% for stylesheet in stylesheets %}{% raw %}'{% endraw %}{{ stylesheet.name|addslashes }}{% raw %}' : '{% endraw %}{{ stylesheet.uri|addslashes }}{% raw %}', + {% endraw %}{% endfor %}{% raw %} +}; +var board_name = false; + +function changeStyle(styleName, link) { + {% endraw %} + {% if config.stylesheets_board %}{% raw %} + if (board_name) { + stylesheet_choices[board_name] = styleName; + localStorage.board_stylesheets = JSON.stringify(stylesheet_choices); + } + {% endraw %}{% else %} + localStorage.stylesheet = styleName; + {% endif %} + {% raw %} + + if (!document.getElementById('stylesheet')) { + var s = document.createElement('link'); + s.rel = 'stylesheet'; + s.type = 'text/css'; + s.id = 'stylesheet'; + var x = document.getElementsByTagName('head')[0]; + x.appendChild(s); + } + + document.getElementById('stylesheet').href = styles[styleName]; + selectedstyle = styleName; + + if (document.getElementsByClassName('styles').length != 0) { + var styleLinks = document.getElementsByClassName('styles')[0].childNodes; + for (var i = 0; i < styleLinks.length; i++) { + styleLinks[i].className = ''; + } + } + + if (link) { + link.className = 'selected'; + } +} + + +{% endraw %} +{% if config.stylesheets_board %} + {# This is such an unacceptable mess. There needs to be an easier way. #} + var matches = document.URL.match(/\/(\w+)\/($|{{ config.dir.res|replace({'/': '\\/'}) }}{{ config.file_page|replace({'%d': '\\d+', '.': '\\.'}) }}|{{ config.file_index|replace({'.': '\\.'}) }}|{{ config.file_page|replace({'%d': '\\d+', '.': '\\.'}) }})/); + {% raw %} + if (matches) { + board_name = matches[1]; + } + + if (!localStorage.board_stylesheets) { + localStorage.board_stylesheets = '{}'; + } + + var stylesheet_choices = JSON.parse(localStorage.board_stylesheets); + if (board_name && stylesheet_choices[board_name]) { + for (var styleName in styles) { + if (styleName == stylesheet_choices[board_name]) { + changeStyle(styleName); + break; + } + } + } + {% endraw%} +{% else %} + {% raw %} + if (localStorage.stylesheet) { + for (var styleName in styles) { + if (styleName == localStorage.stylesheet) { + changeStyle(styleName); + break; + } + } + } + {% endraw %} +{% endif %} +{% raw %} + +function init_stylechooser() { + var newElement = document.createElement('div'); + newElement.className = 'styles'; + + for (styleName in styles) { + var style = document.createElement('a'); + style.innerHTML = '[' + styleName + ']'; + style.onclick = function() { + changeStyle(this.innerHTML.substring(1, this.innerHTML.length - 1), this); + }; + if (styleName == selectedstyle) { + style.className = 'selected'; + } + style.href = 'javascript:void(0);'; + newElement.appendChild(style); + } + + document.getElementsByTagName('body')[0].insertBefore(newElement, document.getElementsByTagName('body')[0].lastChild.nextSibling); +} + +function get_cookie(cookie_name) { + var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); + if (results) + return (unescape(results[2])); + else + return null; +} + +function highlightReply(id) { + if (typeof window.event != "undefined" && event.which == 2) { + // don't highlight on middle click + return true; + } + + var divs = document.getElementsByTagName('div'); + for (var i = 0; i < divs.length; i++) + { + if (divs[i].className.indexOf('post') != -1) + divs[i].className = divs[i].className.replace(/highlighted/, ''); + } + if (id) { + var post = document.getElementById('reply_'+id); + if (post) + post.className += ' highlighted'; + } +} + +function generatePassword() { + var pass = ''; + var chars = '{% endraw %}{{ config.genpassword_chars }}{% raw %}'; + for (var i = 0; i < 8; i++) { + var rnd = Math.floor(Math.random() * chars.length); + pass += chars.substring(rnd, rnd + 1); + } + return pass; +} + +function dopost(form) { + if (form.elements['name']) { + localStorage.name = form.elements['name'].value.replace(/( |^)## .+$/, ''); + } + if (form.elements['email'] && form.elements['email'].value != 'sage') { + localStorage.email = form.elements['email'].value; + } + + saved[document.location] = form.elements['body'].value; + sessionStorage.body = JSON.stringify(saved); + + return form.elements['body'].value != "" || form.elements['file'].value != ""; +} + +function citeReply(id) { + var body = document.getElementById('body'); + + if (document.selection) { + // IE + body.focus(); + var sel = document.selection.createRange(); + sel.text = '>>' + id + '\n'; + } else if (body.selectionStart || body.selectionStart == '0') { + // Mozilla + var start = body.selectionStart; + var end = body.selectionEnd; + body.value = body.value.substring(0, start) + '>>' + id + '\n' + body.value.substring(end, body.value.length); + } else { + // ??? + body.value += '>>' + id + '\n'; + } +} + +function rememberStuff() { + if (document.forms.post) { + if (document.forms.post.password) { + if (!localStorage.password) + localStorage.password = generatePassword(); + document.forms.post.password.value = localStorage.password; + } + + if (localStorage.name && document.forms.post.elements['name']) + document.forms.post.elements['name'].value = localStorage.name; + if (localStorage.email && document.forms.post.elements['email']) + document.forms.post.elements['email'].value = localStorage.email; + + if (window.location.hash.indexOf('q') == 1) + citeReply(window.location.hash.substring(2)); + + if (sessionStorage.body) { + var saved = JSON.parse(sessionStorage.body); + if (get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')) { + // Remove successful posts + var successful = JSON.parse(get_cookie('{% endraw %}{{ config.cookies.js }}{% raw %}')); + for (var url in successful) { + saved[url] = null; + } + sessionStorage.body = JSON.stringify(saved); + + document.cookie = '{% endraw %}{{ config.cookies.js }}{% raw %}={};expires=0;path=/;'; + } + if (saved[document.location]) { + document.forms.post.body.value = saved[document.location]; + } + } + + if (localStorage.body) { + document.forms.post.body.value = localStorage.body; + localStorage.body = ''; + } + } +} + +function init() { + init_stylechooser(); + + if (document.forms.postcontrols) { + document.forms.postcontrols.password.value = localStorage.password; + } + + if (window.location.hash.indexOf('q') != 1 && window.location.hash.substring(1)) + highlightReply(window.location.hash.substring(1)); +} + +var RecaptchaOptions = { + theme : 'clean' +}; + +onready_callbacks = []; +function onready(fnc) { + onready_callbacks.push(fnc); +} + +function ready() { + for (var i = 0; i < onready_callbacks.length; i++) { + onready_callbacks[i](); + } +} + +onready(init); + +{% endraw %}{% if config.google_analytics %}{% raw %} + +var _gaq = _gaq || [];_gaq.push(['_setAccount', '{% endraw %}{{ config.google_analytics }}{% raw %}']);{% endraw %}{% if config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', '{% endraw %}{{ config.google_analytics_domain }}{% raw %}']){% endraw %}{% endif %}{% if not config.google_analytics_domain %}{% raw %}_gaq.push(['_setDomainName', 'none']){% endraw %}{% endif %}{% raw %};_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();{% endraw %}{% endif %} + diff --git a/templates/mod/ban_form.html b/templates/mod/ban_form.html index edc1ab3b..6c7560ad 100644 --- a/templates/mod/ban_form.html +++ b/templates/mod/ban_form.html @@ -41,11 +41,11 @@ - + ({% trans 'public; attached to post' %}) \ No newline at end of file diff --git a/templates/mod/config-editor.html b/templates/mod/config-editor.html index ec7213bb..a43f8cf7 100644 --- a/templates/mod/config-editor.html +++ b/templates/mod/config-editor.html @@ -1,10 +1,25 @@ +

+ Any changes you make here will simply be appended to {{ file }}. If you wish to make the most of Tinyboard's customizability, you can instead edit the file directly. This page is intended for making quick changes and for those who don't have a basic understanding of PHP code. +

+{% if boards|count %} + +{% endif %}
- - - - + + + + {% for var in conf if var.type != 'array' %} {% if var.name|count == 1 %} @@ -25,6 +40,13 @@ - {% endfor %} diff --git a/templates/mod/dashboard.html b/templates/mod/dashboard.html index 619663f5..e9fb7c9c 100644 --- a/templates/mod/dashboard.html +++ b/templates/mod/dashboard.html @@ -94,7 +94,7 @@ {% if mod|hasPermission(config.mod.rebuild) %}
  • {% trans 'Rebuild' %}
  • {% endif %} - {% if mod|hasPermission(config.mod.show_config) %} + {% if mod|hasPermission(config.mod.edit_config) %}
  • {% trans 'Configuration' %}
  • {% endif %} @@ -102,17 +102,29 @@ {% if mod|hasPermission(config.mod.search) %} -
    - {% trans 'Search' %} - -
      -
    • - {% include 'mod/search_form.html' %} -
    • -
    -
    +
    + {% trans 'Search' %} + +
      +
    • + {% include 'mod/search_form.html' %} +
    • +
    +
    {% endif %} +{% if config.mod.dashboard_links|count %} +
    + {% trans 'Other' %} + +
      + {% for label,link in config.mod.dashboard_links %} +
    • {{ label }}
    • + {% endfor %} +
    +
    +{% endif %} + {% if config.debug %}
    {% trans 'Debug' %} diff --git a/templates/mod/debug/recent_posts.html b/templates/mod/debug/recent_posts.html index 740ed21e..b84d24ab 100644 --- a/templates/mod/debug/recent_posts.html +++ b/templates/mod/debug/recent_posts.html @@ -1,4 +1,4 @@ -
    NameValueTypeDescription{% trans 'Name' %}{% trans 'Value' %}{% trans 'Type' %}{% trans 'Description' %}
    {% if var.type == 'string' %} + {% elseif var.permissions %} + {% elseif var.type == 'integer' %} {% elseif var.type == 'boolean' %} @@ -42,8 +64,8 @@ {{ var.type|e }} - {{ var.comment|join('
    ') }} +
    + {{ var.comment|join(' ') }}
    +
    @@ -24,7 +24,7 @@ {% else %} {% set thread = post.id %} {% endif %} - + {{ post.id }} diff --git a/templates/mod/edit_post_form.html b/templates/mod/edit_post_form.html index 146e725b..a2980d35 100644 --- a/templates/mod/edit_post_form.html +++ b/templates/mod/edit_post_form.html @@ -32,7 +32,7 @@ {% trans %}Comment{% endtrans %}
    Time Board - +
    diff --git a/templates/mod/log.html b/templates/mod/log.html index e75330b5..0aa3f110 100644 --- a/templates/mod/log.html +++ b/templates/mod/log.html @@ -18,7 +18,11 @@ {% endif %} - {{ log.ip }} + {% if mod|hasPermission(config.mod.show_ip_modlog) %} + {{ log.ip }} + {% else %} + hidden + {% endif %} {{ log.time|ago }} diff --git a/templates/mod/login.html b/templates/mod/login.html index 43a28d56..476897a6 100644 --- a/templates/mod/login.html +++ b/templates/mod/login.html @@ -1,26 +1,26 @@ -{% if error %}

    {{ error }}

    {% endif %} - - - - - - - - - - - - - -
    - {% trans 'Username' %} - - -
    - {% trans 'Password' %} - - -
    - -
    -
    +{% if error %}

    {{ error }}

    {% endif %} +
    + + + + + + + + + + + + +
    + {% trans 'Username' %} + + +
    + {% trans 'Password' %} + + +
    + +
    +
    diff --git a/templates/mod/news.html b/templates/mod/news.html index b6c35798..b0335e0a 100644 --- a/templates/mod/news.html +++ b/templates/mod/news.html @@ -52,7 +52,7 @@ {% trans 'no subject' %} {% endif %} - — {% trans 'by' %} {{ post.name }} {% trans 'at' %} {{ notice.time|date(config.post_date) }} + — {% trans 'by' %} {{ post.name }} {% trans 'at' %} {{ post.time|date(config.post_date) }}

    diff --git a/templates/mod/search_results.html b/templates/mod/search_results.html index b441a28f..0c87f75f 100644 --- a/templates/mod/search_results.html +++ b/templates/mod/search_results.html @@ -39,7 +39,7 @@ {% endfor %} -{% endif %} +{% endif %} {% if search_type == 'bans' %} @@ -125,7 +125,7 @@ {% endfor %}
    -{% endif %} +{% endif %} {% if search_type == 'log' %} @@ -166,7 +166,98 @@ {% endfor %}
    -{% endif %} +{% endif %} + +{% if search_type == 'posts' %} + + + + + + + + + + + + + {% for post in results %} + + + + + + + + + + + + {% endfor %} +
    TimeBoardIDThreadIPNameSubjectFileBody (snippet)
    + {{ post.time | ago }} ago + + {{ config.board_abbreviation|sprintf(post.board) }} + + {% if post.thread %} + {% set thread = post.thread %} + {% else %} + {% set thread = post.id %} + {% endif %} + + {{ post.id }} + + + + {% if post.thread %} + {{ post.thread }} + {% else %} + (OP) + {% endif %} + + + {% if mod|hasPermission(config.mod.show_ip, post.board) %} + + {{ post.ip }} + + {% else %} + hidden + {% endif %} + + + {% if post.email|length > 0 %} + {# start email #} + + {% endif %} + {% if capcode %} + {{ capcode.cap }} + {% endif %} + + + {% if post.subject %} + {{ post.subject }} + {% else %} + – + {% endif %} + + {% if post.file %} + {{ post.filename }} ({{ post.filesize | filesize }}) + {% else %} + – + {% endif %} + + {{ post.snippet }} +
    +{% endif %} {% if result_count > results|count %}

    diff --git a/templates/page.html b/templates/page.html index 07eea62e..0d33c16f 100644 --- a/templates/page.html +++ b/templates/page.html @@ -1,25 +1,25 @@ - - - - - {% include 'header.html' %} - {{ title }} - - - {% if pm %}

    You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

    {% endif %} -
    -

    {{ title }}

    -
    - {% if subtitle %} - {{ subtitle }} - {% endif %} - {% if mod and not hide_dashboard_link %}

    {% trans %}Return to dashboard{% endtrans %}

    {% endif %} -
    -
    - {{ body }} -
    -
    -

    Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

    -
    - - + + + + + {% include 'header.html' %} + {{ title }} + + + {% if pm %}
    You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

    {% endif %} +
    +

    {{ title }}

    +
    + {% if subtitle %} + {{ subtitle }} + {% endif %} + {% if mod and not hide_dashboard_link %}

    {% trans %}Return to dashboard{% endtrans %}

    {% endif %} +
    +
    + {{ body }} +
    +
    +

    Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

    +
    + + \ No newline at end of file diff --git a/templates/post_form.html b/templates/post_form.html index 64451fb9..fa486263 100755 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -4,6 +4,9 @@ {{ antibot.html() }} {{ antibot.html() }} +{% if current_page %} + +{% endif %} {% if mod %}{% endif %} {% if not config.field_disable_name or (mod and post.mod|hasPermission(config.mod.bypass_field_disable, board.uri)) %} @@ -67,21 +70,6 @@ {% endif %} - {% if config.imgcaptcha %} - - - - - {% endif %} {% endif %} - {% if mod %} + {% if mod and ((not id and post.mod|hasPermission(config.mod.sticky, board.uri)) or (not id and post.mod|hasPermission(config.mod.lock, board.uri)) or post.mod|hasPermission(config.mod.rawhtml, board.uri)) %}
    - {% trans %}Verification{% endtrans %} - {{ antibot.html() }} - - -
    - {{ config.imgcaptcha_question }}
    - Odswiez - {{ antibot.html() }} -
    {% trans %}File{% endtrans %} @@ -103,7 +91,7 @@
    {% trans %}Flags{% endtrans %} diff --git a/templates/post_reply.html b/templates/post_reply.html index 450f8246..b0391f19 100644 --- a/templates/post_reply.html +++ b/templates/post_reply.html @@ -1,111 +1,111 @@ -{% filter remove_whitespace %} -{# tabs and new lines will be ignored #} -
    - -

    - - - {% if config.poster_ids %} - ID: {{ post.ip|poster_id(post.thread) }} - {% endif %} - No. - - {{ post.id }} - -

    - {% if post.embed %} - {{ post.embed }} - {% elseif post.file == 'deleted' %} - - {% elseif post.file and post.file %} -

    File: {{ post.file }} - ( - {% if post.thumb == 'spoiler' %} - Spoiler Image, - {% endif %} - {{ post.filesize|filesize }} - {% if post.filex and post.filey %} - , {{ post.filex}}x{{ post.filey }} - {% if config.show_ratio %} - , {{ post.ratio }} - {% endif %} - {% endif %} - {% if config.show_filename and post.filename %} - , - {% if post.filename|length > config.max_filename_display %} - {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} - {% else %} - {{ post.filename|bidi_cleanup }} - {% endif %} - {% endif %} - {% if post.thumb != 'file' and config.image_identification %} - , - - io - {% if post.file|extension == 'jpg' %} - e - {% endif %} - g - t - - {% endif %} - - ) - -

    - - - - {% endif %} - {{ post.postControls }} -
    - {% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} -
    -
    -
    -{% endfilter %} +{% filter remove_whitespace %} +{# tabs and new lines will be ignored #} +
    + +

    + + + {% if config.poster_ids %} + ID: {{ post.ip|poster_id(post.thread) }} + {% endif %} + No. + + {{ post.id }} + +

    + {% if post.embed %} + {{ post.embed }} + {% elseif post.file == 'deleted' %} + + {% elseif post.file and post.file %} +

    File: {{ post.file }} + ( + {% if post.thumb == 'spoiler' %} + Spoiler Image, + {% endif %} + {{ post.filesize|filesize }} + {% if post.filex and post.filey %} + , {{ post.filex}}x{{ post.filey }} + {% if config.show_ratio %} + , {{ post.ratio }} + {% endif %} + {% endif %} + {% if config.show_filename and post.filename %} + , + {% if post.filename|length > config.max_filename_display %} + {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} + {% else %} + {{ post.filename|e|bidi_cleanup }} + {% endif %} + {% endif %} + {% if post.thumb != 'file' and config.image_identification %} + , + + io + {% if post.file|extension == 'jpg' %} + e + {% endif %} + g + t + + {% endif %} + + ) + +

    + + + + {% endif %} + {{ post.postControls }} +
    + {% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} +
    +
    +
    +{% endfilter %} diff --git a/templates/post_thread.html b/templates/post_thread.html index edc07011..a24d7557 100644 --- a/templates/post_thread.html +++ b/templates/post_thread.html @@ -23,9 +23,9 @@ {% if config.show_filename and post.filename %} , {% if post.filename|length > config.max_filename_display %} - {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} + {{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }} {% else %} - {{ post.filename|bidi_cleanup }} + {{ post.filename|e|bidi_cleanup }} {% endif %} {% endif %} {% if post.thumb != 'file' and config.image_identification %} @@ -100,13 +100,25 @@ {{ post.id }} {% if post.sticky %} - Sticky + {% if config.font_awesome %} + + {% else %} + Sticky + {% endif %} {% endif %} {% if post.locked %} - Locked + {% if config.font_awesome %} + + {% else %} + Locked + {% endif %} {% endif %} {% if post.bumplocked and (config.mod.view_bumplock < 0 or (post.mod and post.mod|hasPermission(config.mod.view_bumplock, board.uri))) %} - Bumplocked + {% if config.font_awesome %} + + {% else %} + Bumplocked + {% endif %} {% endif %} {% if index %} [{% trans %}Reply{% endtrans %}] @@ -145,4 +157,4 @@ {% include 'post_reply.html' %} {% endfor %}
    {% if hr %}
    {% endif %} - \ No newline at end of file + diff --git a/templates/posts.sql b/templates/posts.sql index c766d38e..ca2ec304 100644 --- a/templates/posts.sql +++ b/templates/posts.sql @@ -1,32 +1,33 @@ -CREATE TABLE IF NOT EXISTS `posts_{{ board }}` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `thread` int(11) DEFAULT NULL, - `subject` varchar(100) DEFAULT NULL, - `email` varchar(30) DEFAULT NULL, - `name` varchar(35) DEFAULT NULL, - `trip` varchar(15) DEFAULT NULL, - `capcode` varchar(50) DEFAULT NULL, - `body` text NOT NULL, - `body_nomarkup` text DEFAULT NULL, - `time` int(11) NOT NULL, - `bump` int(11) DEFAULT NULL, - `thumb` varchar(50) DEFAULT NULL, - `thumbwidth` int(11) DEFAULT NULL, - `thumbheight` int(11) DEFAULT NULL, - `file` varchar(50) DEFAULT NULL, - `filewidth` int(11) DEFAULT NULL, - `fileheight` int(11) DEFAULT NULL, - `filesize` int(11) DEFAULT NULL, - `filename` text DEFAULT NULL, - `filehash` text DEFAULT NULL, - `password` varchar(20) DEFAULT NULL, - `ip` varchar(45) NOT NULL, - `sticky` int(1) NOT NULL, - `locked` int(1) NOT NULL, - `sage` int(1) NOT NULL, - `embed` text, - UNIQUE KEY `id` (`id`), - KEY `thread_id` (`thread`, `id`), - KEY `time` (`time`), - FULLTEXT KEY `body` (`body`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +CREATE TABLE IF NOT EXISTS ``posts_{{ board }}`` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `thread` int(11) DEFAULT NULL, + `subject` varchar(100) DEFAULT NULL, + `email` varchar(30) DEFAULT NULL, + `name` varchar(35) DEFAULT NULL, + `trip` varchar(15) DEFAULT NULL, + `capcode` varchar(50) DEFAULT NULL, + `body` text NOT NULL, + `body_nomarkup` text, + `time` int(11) NOT NULL, + `bump` int(11) DEFAULT NULL, + `thumb` varchar(50) DEFAULT NULL, + `thumbwidth` int(11) DEFAULT NULL, + `thumbheight` int(11) DEFAULT NULL, + `file` varchar(50) DEFAULT NULL, + `filewidth` int(11) DEFAULT NULL, + `fileheight` int(11) DEFAULT NULL, + `filesize` int(11) DEFAULT NULL, + `filename` text, + `filehash` text CHARACTER SET ascii, + `password` varchar(20) DEFAULT NULL, + `ip` varchar(39) CHARACTER SET ascii NOT NULL, + `sticky` int(1) NOT NULL, + `locked` int(1) NOT NULL, + `sage` int(1) NOT NULL, + `embed` text, + UNIQUE KEY `id` (`id`), + KEY `thread_id` (`thread`,`id`), + KEY `time` (`time`), + FULLTEXT KEY `body` (`body`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ; + \ No newline at end of file diff --git a/templates/themes/basic/theme.php b/templates/themes/basic/theme.php index 7ba0d1e7..6ba09ce6 100644 --- a/templates/themes/basic/theme.php +++ b/templates/themes/basic/theme.php @@ -25,7 +25,7 @@ $settings['no_recent'] = (int) $settings['no_recent']; - $query = query("SELECT * FROM `news` ORDER BY `time` DESC" . ($settings['no_recent'] ? ' LIMIT ' . $settings['no_recent'] : '')) or error(db_error()); + $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC" . ($settings['no_recent'] ? ' LIMIT ' . $settings['no_recent'] : '')) or error(db_error()); $news = $query->fetchAll(PDO::FETCH_ASSOC); return Element('themes/basic/index.html', Array( diff --git a/templates/themes/catalog/theme.php b/templates/themes/catalog/theme.php index e585cf17..4e2d40db 100644 --- a/templates/themes/catalog/theme.php +++ b/templates/themes/catalog/theme.php @@ -37,9 +37,9 @@ $recent_posts = array(); $stats = array(); - $query = query(sprintf("SELECT *, `id` AS `thread_id`, (SELECT COUNT(*) FROM `posts_%s` WHERE `thread` = `thread_id`) AS `reply_count`, '%s' AS `board` FROM `posts_%s` WHERE `thread` IS NULL ORDER BY `bump` DESC", $board_name, $board_name, $board_name)) or error(db_error()); + $query = query(sprintf("SELECT *, `id` AS `thread_id`, (SELECT COUNT(*) FROM ``posts_%s`` WHERE `thread` = `thread_id`) AS `reply_count`, '%s' AS `board` FROM ``posts_%s`` WHERE `thread` IS NULL ORDER BY `bump` DESC", $board_name, $board_name, $board_name)) or error(db_error()); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { $post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])); $post['board_name'] = $board['name']; $post['file'] = $config['uri_thumb'] . $post['thumb']; diff --git a/templates/themes/categories/news.html b/templates/themes/categories/news.html index 9c7d8340..b3bea2b1 100644 --- a/templates/themes/categories/news.html +++ b/templates/themes/categories/news.html @@ -7,7 +7,7 @@ -

    {{ settings.title }}

    + {{ boardlist.top }}

    {{ settings.title }}

    {{ settings.subtitle }}
    @@ -15,16 +15,16 @@
    {% if news|count == 0 %} -

    (No news to show.)

    +

    {% trans %}(No news to show.){% endtrans %}

    {% else %} {% for entry in news %}

    {% if entry.subject %} {{ entry.subject }} {% else %} - no subject + {% trans %}no subject{% endtrans %} {% endif %} - — by {{ entry.name }} at {{ entry.time|date(config.post_date) }} + — {% trans %}by{% endtrans %} {{ entry.name }} {% trans %}at{% endtrans %} {{ entry.time|date(config.post_date) }}

    {{ entry.body }}

    {% endfor %} diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php index 7d468d0d..74ed61ed 100644 --- a/templates/themes/categories/theme.php +++ b/templates/themes/categories/theme.php @@ -36,7 +36,7 @@ public static function news($settings) { global $config; - $query = query("SELECT * FROM `news` ORDER BY `time` DESC") or error(db_error()); + $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); $news = $query->fetchAll(PDO::FETCH_ASSOC); return Element('themes/categories/news.html', Array( diff --git a/templates/themes/frameset/theme.php b/templates/themes/frameset/theme.php index 5fd9d29e..ffab0538 100644 --- a/templates/themes/frameset/theme.php +++ b/templates/themes/frameset/theme.php @@ -36,7 +36,7 @@ public static function news($settings) { global $config; - $query = query("SELECT * FROM `news` ORDER BY `time` DESC") or error(db_error()); + $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); $news = $query->fetchAll(PDO::FETCH_ASSOC); return Element('themes/frameset/news.html', Array( diff --git a/templates/themes/recent/theme.php b/templates/themes/recent/theme.php index 75907e77..08d910f8 100644 --- a/templates/themes/recent/theme.php +++ b/templates/themes/recent/theme.php @@ -42,12 +42,12 @@ foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE `file` IS NOT NULL AND `file` != 'deleted' AND `thumb` != 'spoiler' UNION ALL ", $_board['uri'], $_board['uri']); + $query .= sprintf("SELECT *, '%s' AS `board` FROM ``posts_%s`` WHERE `file` IS NOT NULL AND `file` != 'deleted' AND `thumb` != 'spoiler' UNION ALL ", $_board['uri'], $_board['uri']); } $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_images'], $query); $query = query($query) or error(db_error()); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { openBoard($post['board']); // board settings won't be available in the template file, so generate links now @@ -62,12 +62,12 @@ foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` UNION ALL ", $_board['uri'], $_board['uri']); + $query .= sprintf("SELECT *, '%s' AS `board` FROM ``posts_%s`` UNION ALL ", $_board['uri'], $_board['uri']); } $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_posts'], $query); $query = query($query) or error(db_error()); - while ($post = $query->fetch()) { + while ($post = $query->fetch(PDO::FETCH_ASSOC)) { openBoard($post['board']); $post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])) . '#' . $post['id']; @@ -78,40 +78,37 @@ } // Total posts - $query = 'SELECT SUM(`top`) AS `count` FROM ('; + $query = 'SELECT SUM(`top`) FROM ('; foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT MAX(`id`) AS `top` FROM `posts_%s` UNION ALL ", $_board['uri']); + $query .= sprintf("SELECT MAX(`id`) AS `top` FROM ``posts_%s`` UNION ALL ", $_board['uri']); } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); - $res = $query->fetch(); - $stats['total_posts'] = number_format($res['count']); + $stats['total_posts'] = number_format($query->fetchColumn()); // Unique IPs - $query = 'SELECT COUNT(DISTINCT(`ip`)) AS `count` FROM ('; + $query = 'SELECT COUNT(DISTINCT(`ip`)) FROM ('; foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT `ip` FROM `posts_%s` UNION ALL ", $_board['uri']); + $query .= sprintf("SELECT `ip` FROM ``posts_%s`` UNION ALL ", $_board['uri']); } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); - $res = $query->fetch(); - $stats['unique_posters'] = number_format($res['count']); + $stats['unique_posters'] = number_format($query->fetchColumn()); // Active content - $query = 'SELECT SUM(`filesize`) AS `count` FROM ('; + $query = 'SELECT SUM(`filesize`) FROM ('; foreach ($boards as &$_board) { if (in_array($_board['uri'], $this->excluded)) continue; - $query .= sprintf("SELECT `filesize` FROM `posts_%s` UNION ALL ", $_board['uri']); + $query .= sprintf("SELECT `filesize` FROM ``posts_%s`` UNION ALL ", $_board['uri']); } $query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query); $query = query($query) or error(db_error()); - $res = $query->fetch(); - $stats['active_content'] = $res['count']; + $stats['active_content'] = $query->fetchColumn(); return Element('themes/recent/recent.html', Array( 'settings' => $settings, diff --git a/templates/themes/rrdtool/theme.php b/templates/themes/rrdtool/theme.php index 68fc1850..a14169a3 100644 --- a/templates/themes/rrdtool/theme.php +++ b/templates/themes/rrdtool/theme.php @@ -61,9 +61,8 @@ // debug just the graphing (not updating) with the --debug switch if (!isset($argv[1]) || $argv[1] != '--debug') { // Update graph - $query = query(sprintf("SELECT MAX(`id`) AS `count` FROM `posts_%s`", $board)); - $count = $query->fetch(); - $count = $count['count']; + $query = query(sprintf("SELECT MAX(`id`) FROM ``posts_%s``", $board)); + $count = $query->fetchColumn(); if (!rrd_update($file, Array( '-t', diff --git a/templates/themes/sitemap/theme.php b/templates/themes/sitemap/theme.php index e210316b..226f8357 100644 --- a/templates/themes/sitemap/theme.php +++ b/templates/themes/sitemap/theme.php @@ -19,7 +19,7 @@ $threads = array(); foreach ($boards as $board) { - $query = query(sprintf("SELECT `id` AS `thread_id`, (SELECT `time` FROM `posts_%s` WHERE `thread` = `thread_id` OR `id` = `thread_id` ORDER BY `time` DESC LIMIT 1) AS `lastmod` FROM `posts_%s` WHERE `thread` IS NULL", $board, $board)) or error(db_error()); + $query = query(sprintf("SELECT `id` AS `thread_id`, (SELECT `time` FROM ``posts_%s`` WHERE `thread` = `thread_id` OR `id` = `thread_id` ORDER BY `time` DESC LIMIT 1) AS `lastmod` FROM ``posts_%s`` WHERE `thread` IS NULL", $board, $board)) or error(db_error()); $threads[$board] = $query->fetchAll(PDO::FETCH_ASSOC); } diff --git a/templates/themes/ukko/theme.php b/templates/themes/ukko/theme.php index 6fa5fa7e..1682b4ec 100644 --- a/templates/themes/ukko/theme.php +++ b/templates/themes/ukko/theme.php @@ -25,7 +25,7 @@ foreach($boards as &$_board) { if(in_array($_board['uri'], explode(' ', $this->settings['exclude']))) continue; - $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE `thread` IS NULL UNION ALL ", $_board['uri'], $_board['uri']); + $query .= sprintf("SELECT *, '%s' AS `board` FROM ``posts_%s`` WHERE `thread` IS NULL UNION ALL ", $_board['uri'], $_board['uri']); } $query = preg_replace('/UNION ALL $/', 'ORDER BY `bump` DESC', $query); $query = query($query) or error(db_error()); @@ -48,7 +48,7 @@ $post['filename'], $post['ip'], $post['sticky'], $post['locked'], $post['sage'], $post['embed'], $mod ? '?/' : $config['root'], $mod ); - $posts = prepare(sprintf("SELECT * FROM `posts_%s` WHERE `thread` = :id ORDER BY `id` DESC LIMIT :limit", $post['board'])); + $posts = prepare(sprintf("SELECT * FROM ``posts_%s`` WHERE `thread` = :id ORDER BY `id` DESC LIMIT :limit", $post['board'])); $posts->bindValue(':id', $post['id']); $posts->bindValue(':limit', ($post['sticky'] ? $config['threads_preview_sticky'] : $config['threads_preview']), PDO::PARAM_INT); $posts->execute() or error(db_error($posts)); @@ -66,7 +66,7 @@ } if ($posts->rowCount() == ($post['sticky'] ? $config['threads_preview_sticky'] : $config['threads_preview'])) { - $ct = prepare(sprintf("SELECT COUNT(`id`) as `num` FROM `posts_%s` WHERE `thread` = :thread UNION ALL SELECT COUNT(`id`) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $post['board'], $post['board'])); + $ct = prepare(sprintf("SELECT COUNT(`id`) as `num` FROM ``posts_%s`` WHERE `thread` = :thread UNION ALL SELECT COUNT(`id`) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $post['board'], $post['board'])); $ct->bindValue(':thread', $post['id'], PDO::PARAM_INT); $ct->execute() or error(db_error($count)); diff --git a/templates/themes/ukko/ukko.js b/templates/themes/ukko/ukko.js index baf0f78d..4a36b394 100644 --- a/templates/themes/ukko/ukko.js +++ b/templates/themes/ukko/ukko.js @@ -1,37 +1,115 @@ +(function(){ + var cache = new Array(), thread = false, - loading = false; + loading = false, + ukkotimer = false; +if (localStorage.hiddenboards !== null) { + localStorage.hiddenboards = "{}"; +} + +// Load data from HTML5 localStorage +var hiddenboards = JSON.parse(localStorage.hiddenboards); + +var storeboards = function() { + localStorage.hiddenboards = JSON.stringify(hiddenboards); +}; + $(document).ready(function() { - $(window).on('scroll', function() { - if($(window).scrollTop() + $(window).height() + 100 > $(document).height() && !loading && overflow.length > 0) { + var addukkohide = function() { + var ukkohide = $(''); + var board = $(this).next().data("board"); + var hr = $("
    "); + + $(this).append(ukkohide); + $(this).append(hr); + + if (hiddenboards[board] !== true) { + ukkohide.html(_("(hide threads from this board)")); + hr.hide(); + } + else { + ukkohide.html(_("(show threads from this board)")); + $(this).next().hide(); + } + ukkohide.click(function() { + hiddenboards[board] = (hiddenboards[board] !== true); + if (hiddenboards[board] !== true) { + $('[data-board="'+board+'"]:not([data-cached="yes"])').show().prev(). + find('.ukkohide').html(_("(hide threads from this board)")). + parent().find('hr').hide(); + } + else { + $('[data-board="'+board+'"]:not([data-cached="yes"])').hide().prev(). + find('.ukkohide').html(_("(show threads from this board)")) + .parent().find('hr').show(); + } + storeboards(); + return false; + }); + + }; + $("h2").each(addukkohide); + + $('.pages').hide(); + var loadnext = function() { + if (overflow.length == 0) { + $('.pages').show().html(_("No more threads to display")); + } + while($(window).scrollTop() + $(window).height() + 1000 > $(document).height() && !loading && overflow.length > 0) { var page = '../' + overflow[0].board + '/' + overflow[0].page; + thread = $('div#thread_' + overflow[0].id + '[data-board="' + overflow[0].board + '"]'); + if (thread.length > 0 && thread.attr("data-cached") !== 'yes') { // already present + overflow.shift(); + continue; + } + + var boardheader = $('

    /' + overflow[0].board + '/

    '); + if($.inArray(page, cache) != -1) { - thread = $('div#thread_' + overflow[0].id); - if(thread.length > 0) { - thread.prepend('

    /' + overflow[0].board + '/

    '); - $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).css('display', 'block')); - overflow.shift(); + if (thread.length > 0) { + $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).attr("data-cached", "no").css('display', 'block')); + boardheader.insertBefore(thread); + addukkohide.call(boardheader); + $(document).trigger('new_post', thread); } + overflow.shift(); } else { loading = true; + $('.pages').show().html(_("Loading...")); $.get(page, function(data) { cache.push(page); $(data).find('div[id*="thread_"]').each(function() { - $('body').prepend($(this).css('display', 'none').attr('data-board', overflow[0].board)); + var checkout = $(this).attr('id').replace('thread_', ''); + if ($('div#thread_' + checkout + '[data-board="' + overflow[0].board + '"]').length == 0) { + $('form[name="postcontrols"]').prepend($(this).css('display', 'none').attr("data-cached", "yes").attr('data-board', overflow[0].board)); + } }); - thread = $('div#thread_' + overflow[0].id + '[data-board="' + overflow[0].board + '"]'); + thread = $('div#thread_' + overflow[0].id + '[data-board="' + overflow[0].board + '"][data-cached="yes"]'); + if(thread.length > 0) { - thread.prepend('

    /' + overflow[0].board + '/

    '); - $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).css('display', 'block')); - overflow.shift(); + $('div[id*="thread_"]').last().after(thread.attr('data-board', overflow[0].board).attr("data-cached", "no").css('display', 'block')); + boardheader.insertBefore(thread); + addukkohide.call(boardheader); + $(document).trigger('new_post', thread); } + overflow.shift(); loading = false; + $('.pages').hide().html(""); }); + break; } } - }); + clearTimeout(ukkotimer); + ukkotimer = setTimeout(loadnext, 1000); + }; + + $(window).on('scroll', loadnext); + + ukkotimer = setTimeout(loadnext, 1000); +}); -}); \ No newline at end of file +})(); diff --git a/templates/thread.html b/templates/thread.html index 1b217c2f..7fe60a39 100644 --- a/templates/thread.html +++ b/templates/thread.html @@ -1,51 +1,52 @@ - - - - - - - - {% include 'header.html' %} - {{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %} - - - {{ boardlist.top }} - {% if pm %}
    You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

    {% endif %} - {% if config.url_banner %}{% endif %} -
    -

    {{ board.url }} - {{ board.title|e }}

    -
    - {% if board.subtitle %} - {{ board.subtitle|e }} - {% endif %} - {% if mod %}

    {% trans %}Return to dashboard{% endtrans %}

    {% endif %} -
    -
    - - - - {% include 'attention_bar.html' %} - {% include 'post_form.html' %} - - {% if config.blotter %}
    {{ config.blotter }}
    {% endif %} -
    -
    - - {% if mod %}{% endif %} - {{ body }} - {% include 'report_delete.html' %} -
    - [{% trans %}Return{% endtrans %}] - - {{ boardlist.bottom }} -
    -

    Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

    - {% for footer in config.footer %}

    {{ footer }}

    {% endfor %} -
    - - - + + + + + + + + {% include 'header.html' %} + {{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %} + + + {{ boardlist.top }} + {% if pm %}
    You have an unread PM{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.

    {% endif %} + {% if config.url_banner %}{% endif %} +
    +

    {{ board.url }} - {{ board.title|e }}

    +
    + {% if board.subtitle %} + {{ board.subtitle|e }} + {% endif %} + {% if mod %}

    {% trans %}Return to dashboard{% endtrans %}

    {% endif %} +
    +
    + + + + {% include 'attention_bar.html' %} + + {% include 'post_form.html' %} + + {% if config.global_message %}
    {{ config.global_message }}
    {% endif %} +
    +
    + + {% if mod %}{% endif %} + {{ body }} + {% include 'report_delete.html' %} +
    + [{% trans %}Return{% endtrans %}] + + {{ boardlist.bottom }} +
    +

    Powered by Tinyboard {{ config.version }} | Tinyboard Copyright © 2010-2013 Tinyboard Development Group

    + {% for footer in config.footer %}

    {{ footer }}

    {% endfor %} +
    + + + diff --git a/tools/i18n_extract.php b/tools/i18n_extract.php index 33650b50..4c32b688 100755 --- a/tools/i18n_extract.php +++ b/tools/i18n_extract.php @@ -43,5 +43,5 @@ foreach ($locales as $loc) { // Generate javascript.po passthru("cd $locdir/LC_MESSAGES; - xgettext -d javascript -L Python --force-po --from-code utf-8 $join -c $(find ../../../../js/ -name \*.js)"); + xgettext -d javascript -L Python --force-po --from-code utf-8 $join -c $(find ../../../../js/ ../../../../templates/ -name \*.js)"); }