Warning: set_time_limit(): Cannot set time limit in safe mode in /home/www/dynamic/uv.ro/mesianic.uv.ro/public_html/main.php on line 580 templates/SwiftBlue0000755000000000000000000000000014571100361011565 5ustar templates/SwiftBlue/SwiftBlue.cfg0000755000000000000000000004021514516425665014256 0ustar The mxBB Development Team'; // // When creating a new template, you normally "clone" a template and modify a number of *.tpl files. // For similar templates this means only a few files are different. // For example: you may have a template similar to subSilver, but with a different overall_header.tpl - the other files are identical. // Then this template should only contain one *.tpl file, namely overall_header.tpl, // and with $mx_template_settings['cloned_template'] = 'subSilver'. // If this template is a full set of *.tpl files, leave this blank. $mx_template_settings['cloned_template'] = '_core'; // // Block border graphics are defined in mx_main_layout.tpl, within the 'graph_border' template environment. // Turning this setting 'false' will disable block border graphics. $mx_template_settings['border_graphics'] = false; /********************************************************************************\ | Define what graphics bundles to use | - these are very handy paths to ALL kind of phpBB/MX-Publisher graphics \********************************************************************************/ $mx_images['mx_graphics']['general'] = file_exists( $mx_root_path . $current_template_path . "/images/logo.gif" ) ? $current_template_path . "/images" : ( file_exists( $mx_root_path . $cloned_template_path . "/images/logo.gif" ) ? $cloned_template_path . "/images" : $default_template_path . "/images" ); $mx_images['mx_graphics']['page_icons'] = file_exists( $mx_root_path . $current_template_path . "/images/page_icons" ) ? $current_template_path . "/images/page_icons" : ( file_exists( $mx_root_path . $cloned_template_path . "/images/page_icons" ) ? $cloned_template_path . "/images/page_icons" : $default_template_path . "/images/page_icons" ); $mx_images['mx_graphics']['block_icons'] = file_exists( $mx_root_path . $current_template_path . "/images/block_icons" ) ? $current_template_path . "/images/block_icons" : ( file_exists( $mx_root_path . $cloned_template_path . "/images/block_icons" ) ? $cloned_template_path . "/images/block_icons" : $default_template_path . "/images/block_icons" ); $mx_images['mx_graphics']['menu_icons'] = file_exists( $mx_root_path . $current_template_path . "/images/menu_icons" ) ? $current_template_path . "/images/menu_icons" : ( file_exists( $mx_root_path . $cloned_template_path . "/images/menu_icons" ) ? $cloned_template_path . "/images/menu_icons" : $default_template_path . "/images/menu_icons" ); $mx_images['mx_graphics']['admin_icons'] = file_exists( $mx_root_path . $current_template_path . "/images/admin_icons" ) ? $current_template_path . "/images/admin_icons" : ( file_exists( $mx_root_path . $cloned_template_path . "/images/admin_icons" ) ? $cloned_template_path . "/images/admin_icons" : $default_template_path . "/images/admin_icons" ); $mx_images['mx_graphics']['phpbb_icons'] = !empty($current_template_path) && file_exists( $phpbb_root_path . $current_template_path . "/images" ) ? $current_template_path . "/images" : ( !empty($cloned_template_path) && file_exists( $phpbb_root_path . $cloned_template_path . "/images" ) ? $cloned_template_path . "/images" : $default_template_path . "/images"); // // Prefix all paths to get full img URLs // $current_template_images = PORTAL_URL . $mx_images['mx_graphics']['general']; // Logo etc $current_template_page_images = PORTAL_URL . $mx_images['mx_graphics']['page_icons']; // Used by adminCP - Pages $current_template_block_images = PORTAL_URL . $mx_images['mx_graphics']['block_icons']; // Used by userCP block buttons $current_template_menu_images = PORTAL_URL . $mx_images['mx_graphics']['menu_icons']; // Used by adminCP - Navigation Menu $current_template_admin_images = PORTAL_URL . $mx_images['mx_graphics']['admin_icons']; // Internal graphics for the MX-Publisher adminCP $current_template_phpbb_images = PHPBB_URL . $mx_images['mx_graphics']['phpbb_icons']; // phpBB graphics template $current_template_theme_images = PORTAL_URL . $current_template_path . '/theme/images'; // // Standalone MX-Publisher installation? Where are the phpbb images? // //$current_template_phpbb_images = PHPBB_URL . $mx_images['mx_graphics']['phpbb_icons']; // phpBB graphics template $current_template_phpbb_images = PHPBB_URL . $mx_images['mx_graphics']['phpbb_icons']; // phpBB graphics template // // Define the icon css style // $mx_images['mx_graphics']['icon_style'] = ''; /********************************************************************************\ | Page Navigation Images | 1. If you want to control the overall_header.tpl images from this *.cfg file, make defintions below | 2. Or if not, use hardcoded image paths in overall_header.tpl, just like in the phpBB standard subSilver overall_header.tpl. \********************************************************************************/ // // Use MX-Publisher graphics - normally the menu_icons bundle // $mx_images['mx_nav_home'] = "$current_template_menu_images/icon_home.gif"; // {NAV_IMAGES_HOME} $mx_images['mx_nav_forum'] = "$current_template_menu_images/icon_forum.gif"; // {NAV_IMAGES_FORUM} $mx_images['mx_nav_profile'] = "$current_template_menu_images/icon_profile.gif"; // {NAV_IMAGES_PROFILE} $mx_images['mx_nav_faq'] = "$current_template_menu_images/icon_faq.gif"; // {NAV_IMAGES_FAQ} $mx_images['mx_nav_search'] = "$current_template_menu_images/icon_search.gif"; // {NAV_IMAGES_SEARCH} $mx_images['mx_nav_members'] = "$current_template_menu_images/icon_members.gif"; // {NAV_IMAGES_MEMBERS} $mx_images['mx_nav_groups'] = "$current_template_menu_images/icon_groups.gif"; // {NAV_IMAGES_GROUPS} $mx_images['mx_nav_mail'] = "$current_template_menu_images/icon_mail.gif"; // {NAV_IMAGES_PRIVMSG} $mx_images['mx_nav_login'] = "$current_template_menu_images/icon_login.gif"; // {NAV_IMAGES_LOGIN_LOGOUT} $mx_images['mx_nav_register'] = "$current_template_menu_images/icon_register.gif"; // {NAV_IMAGES_REGISTER} // // Use standard phpBB graphics // /* $mx_images['mx_nav_home'] = "$current_template_phpbb_images/icon_minipost.gif"; $mx_images['mx_nav_forum'] = "$current_template_phpbb_images/icon_minipost.gif"; $mx_images['mx_nav_profile'] = "$current_template_phpbb_images/icon_mini_profile.gif"; $mx_images['mx_nav_faq'] = "$current_template_phpbb_images/icon_mini_faq.gif"; $mx_images['mx_nav_search'] = "$current_template_phpbb_images/icon_mini_search.gif"; $mx_images['mx_nav_members'] = "$current_template_phpbb_images/icon_mini_members.gif"; $mx_images['mx_nav_groups'] = "$current_template_phpbb_images/icon_mini_groups.gif"; $mx_images['mx_nav_mail'] = "$current_template_phpbb_images/icon_mini_message.gif"; $mx_images['mx_nav_login'] = "$current_template_phpbb_images/icon_mini_login.gif"; $mx_images['mx_nav_register'] = "$current_template_phpbb_images/icon_mini_register.gif"; */ /********************************************************************************\ | Block Images | - these images are used for the block editCP buttons and controls \********************************************************************************/ $mx_images['mx_contract'] = "$current_template_block_images/contract.gif"; $mx_images['mx_expand'] = "$current_template_block_images/expand.gif"; $mx_images['mx_block_edit_admin'] = "$current_template_block_images/block_edit_admin.gif"; $mx_images['mx_block_edit_split'] = "$current_template_block_images/block_edit_split.gif"; $mx_images['mx_block_edit'] = "$current_template_block_images/block_edit.gif"; $mx_images['mx_block_hidden'] = "$current_template_block_images/block_hidden.gif"; /********************************************************************************\ | adminCP/editCP Images | - these images are used for the adminCP & block editCP \********************************************************************************/ $mx_images['mx_spacer'] = "$current_template_phpbb_images/spacer.gif"; // // phpBB Graphics - for standalone MX-Publisher installation /* $images['icon_quote'] = "$current_template_phpbb_images/{LANG}/icon_quote.gif"; $images['icon_edit'] = "$current_template_phpbb_images/{LANG}/icon_edit.gif"; $images['icon_search'] = "$current_template_phpbb_images/{LANG}/icon_search.gif"; $images['icon_profile'] = "$current_template_phpbb_images/{LANG}/icon_profile.gif"; $images['icon_pm'] = "$current_template_phpbb_images/{LANG}/icon_pm.gif"; $images['icon_email'] = "$current_template_phpbb_images/{LANG}/icon_email.gif"; $images['icon_delpost'] = "$current_template_phpbb_images/icon_delete.gif"; $images['icon_ip'] = "$current_template_phpbb_images/{LANG}/icon_ip.gif"; $images['icon_www'] = "$current_template_phpbb_images/{LANG}/icon_www.gif"; $images['icon_icq'] = "$current_template_phpbb_images/{LANG}/icon_icq_add.gif"; $images['icon_aim'] = "$current_template_phpbb_images/{LANG}/icon_aim.gif"; $images['icon_yim'] = "$current_template_phpbb_images/{LANG}/icon_yim.gif"; $images['icon_msnm'] = "$current_template_phpbb_images/{LANG}/icon_msnm.gif"; $images['icon_minipost'] = "$current_template_phpbb_images/icon_minipost.gif"; $images['icon_gotopost'] = "$current_template_phpbb_images/icon_minipost.gif"; $images['icon_minipost_new'] = "$current_template_phpbb_images/icon_minipost_new.gif"; $images['icon_latest_reply'] = "$current_template_phpbb_images/icon_latest_reply.gif"; $images['icon_newest_reply'] = "$current_template_phpbb_images/icon_newest_reply.gif"; $images['forum'] = "$current_template_phpbb_images/folder_big.gif"; $images['forum_new'] = "$current_template_phpbb_images/folder_new_big.gif"; $images['forum_locked'] = "$current_template_phpbb_images/folder_locked_big.gif"; $images['folder'] = "$current_template_phpbb_images/folder.gif"; $images['folder_new'] = "$current_template_phpbb_images/folder_new.gif"; $images['folder_hot'] = "$current_template_phpbb_images/folder_hot.gif"; $images['folder_hot_new'] = "$current_template_phpbb_images/folder_new_hot.gif"; $images['folder_locked'] = "$current_template_phpbb_images/folder_lock.gif"; $images['folder_locked_new'] = "$current_template_phpbb_images/folder_lock_new.gif"; $images['folder_sticky'] = "$current_template_phpbb_images/folder_sticky.gif"; $images['folder_sticky_new'] = "$current_template_phpbb_images/folder_sticky_new.gif"; $images['folder_announce'] = "$current_template_phpbb_images/folder_announce.gif"; $images['folder_announce_new'] = "$current_template_phpbb_images/folder_announce_new.gif"; $images['post_new'] = "$current_template_phpbb_images/{LANG}/post.gif"; $images['post_locked'] = "$current_template_phpbb_images/{LANG}/reply-locked.gif"; $images['reply_new'] = "$current_template_phpbb_images/{LANG}/reply.gif"; $images['reply_locked'] = "$current_template_phpbb_images/{LANG}/reply-locked.gif"; $images['pm_inbox'] = "$current_template_phpbb_images/msg_inbox.gif"; $images['pm_outbox'] = "$current_template_phpbb_images/msg_outbox.gif"; $images['pm_savebox'] = "$current_template_phpbb_images/msg_savebox.gif"; $images['pm_sentbox'] = "$current_template_phpbb_images/msg_sentbox.gif"; $images['pm_readmsg'] = "$current_template_phpbb_images/folder.gif"; $images['pm_unreadmsg'] = "$current_template_phpbb_images/folder_new.gif"; $images['pm_replymsg'] = "$current_template_phpbb_images/{LANG}/reply.gif"; $images['pm_postmsg'] = "$current_template_phpbb_images/{LANG}/msg_newpost.gif"; $images['pm_quotemsg'] = "$current_template_phpbb_images/{LANG}/icon_quote.gif"; $images['pm_editmsg'] = "$current_template_phpbb_images/{LANG}/icon_edit.gif"; $images['pm_new_msg'] = ""; $images['pm_no_new_msg'] = ""; $images['Topic_watch'] = ""; $images['topic_un_watch'] = ""; $images['topic_mod_lock'] = "$current_template_phpbb_images/topic_lock.gif"; $images['topic_mod_unlock'] = "$current_template_phpbb_images/topic_unlock.gif"; $images['topic_mod_split'] = "$current_template_phpbb_images/topic_split.gif"; $images['topic_mod_move'] = "$current_template_phpbb_images/topic_move.gif"; $images['topic_mod_delete'] = "$current_template_phpbb_images/topic_delete.gif"; $images['voting_graphic'][0] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][1] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][2] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][3] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][4] = "$current_template_phpbb_images/voting_bar.gif"; */ $images['voting_graphic'][0] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][1] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][2] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][3] = "$current_template_phpbb_images/voting_bar.gif"; $images['voting_graphic'][4] = "$current_template_phpbb_images/voting_bar.gif"; // // Define common theme colors (if not present in db) // $template_config_row['body_bgcolor'] = "FFFFFF"; $template_config_row['body_text'] = "383B3F"; $template_config_row['body_link'] = "006699"; $template_config_row['body_vlink'] = "006699"; $template_config_row['body_alink'] = "006699"; $template_config_row['body_hlink'] = "f3a625"; $template_config_row['tr_color1'] = "F7EEEE"; // row1 $template_config_row['tr_color2'] = "FBF4F4"; // row2 $template_config_row['tr_color3'] = "f1f1f1"; // row3 $template_config_row['th_color1'] = "FFA34F"; // bodyline border color $template_config_row['th_color2'] = "333333"; // forumline border color $template_config_row['th_color3'] = "d1d7dc"; // boxes border color $template_config_row['td_color1'] = "F7EEEE"; // code/quote boxes background $template_config_row['td_color2'] = "FBF4F4"; // post box background $template_config_row['fontface1'] = "Verdana,Arial,Helvetica,sans-serif"; $template_config_row['fontface2'] = "Trebuchet MS"; $template_config_row['fontface3'] = "Courier, \'Courier New\', sans-serif"; $template_config_row['fontsize3'] = "12"; $template_config_row['fontcolor1'] = "383B3F"; // Main font color $template_config_row['fontcolor2'] = "726363"; $template_config_row['fontcolor3'] = "FFA34F"; /********************************************************************************\ | CORE Images \********************************************************************************/ // // Logo // $mx_images['mx_logo'] = "$current_template_theme_images/logo.gif"; // // SiteLog // $mx_images['mx_dot'] = $images['folder']; // // Online Block // $mx_images['mx_who_is_online'] = "$current_template_theme_images/whosonline.gif"; ?> templates/SwiftBlue/SwiftBlue.css0000755000000000000000000021071614533311156014300 0ustar /* phpBB3 Style Sheet -------------------------------------------------------------- Style name: SwiftBlue BeitDina.NET Based on style: SwiftBlue Theme for phpBB2 by BitByBit, http://www.bitbybit.f2s.com Original author: OryNider, using subsilver2 Theme as a base. This is an alternative subsilver2 style with purple-blue colors. -------------------------------------------------------------- */ /* Layout ------------ */ * { /* Reset browsers default margin, padding and font sizes */ margin: 0; padding: 0; } abbr { text-decoration: none; } html { font-size: 100%; } /* General page style. The scroll bar colours only visible in IE5.5+ */ body { background-color: #E3F0FB; scrollbar-face-color: #BADBF5; scrollbar-highlight-color: #E3F0FB; scrollbar-shadow-color: #BADBF5; scrollbar-3dlight-color: #80BBEC; scrollbar-arrow-color: #072978; scrollbar-track-color: #DAECFA; scrollbar-darkshadow-color: #4B8DF1; padding-right: 0px; padding-left: 0px; background: url("./images/backgroundbluelight.gif"); padding-bottom: 0px; margin: 5px 10px 10px; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; padding-top: 0px; font-size: 89.5%; margin: 0; } #wrapheader { min-height: 120px; height: auto !important; height: 120px; /* background-image: url('./images/background.gif'); background-repeat: repeat-x;*/ /* padding: 0 25px 15px 25px;*/ padding: 0; } #wrapcentre { margin: 15px 25px 0 25px; } #wrapfooter { text-align: center; clear: both; } #wrapnav { width: 100%; margin: 0; background-color: #DAECFA; border-width: 1px; border-style: solid; border-color: #A9B8C2; } #logodesc { margin-bottom: 5px; padding: 5px 25px; background: transparent none 0 0 no-repeat; border-bottom: 1px solid #D9DFE4; } #menubar { margin: 0 25px; } #datebar { margin: 10px 25px 0 25px; } #findbar { width: 100%; margin: 0; padding: 0; border: 0; } .rules { background-color: #F9CC79; border-width: 1px; border-style: solid; border-color: #BB9860; padding: 4px; font-weight: normal; font-size: 1.1em; font-family: -apple-system, BlinkMacSystemFont, Roboto, "Lucida Grande", "Segoe UI", Arial, Helvetica, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; } .rules h3 { color: red; } #pageheader { } #pagecontent { } #pagefooter { } #poll { } #postrow { } #postdata { } /* Text --------------------- */ h1 { color: black; font-family: -apple-system, BlinkMacSystemFont, Roboto, "Lucida Grande", "Segoe UI", Arial, Helvetica, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-weight: bold; font-size: 1.8em; text-decoration: none; } h2 { font-family: -apple-system, BlinkMacSystemFont, Roboto, "Lucida Grande", "Segoe UI", Arial, Helvetica, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-weight: bold; font-size: 1.5em; text-decoration: none; line-height: 120%; } h3 { font-size: 1.3em; font-weight: bold; font-family: -apple-system, BlinkMacSystemFont, Roboto, "Lucida Grande", "Segoe UI", Arial, Helvetica, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; line-height: 120%; } h4 { margin: 0; font-size: 1.1em; font-weight: bold; } p { font-size: 1.1em; } p.moderators { margin: 0; float: left; color: black; font-weight: bold; } .rtl p.moderators { float: right; } p.linkmcp { margin: 0; float: right; white-space: nowrap; } .rtl p.linkmcp { float: left; } p.breadcrumbs { margin: 0; float: left; color: black; font-weight: bold; white-space: normal; font-size: 1em; } .rtl p.breadcrumbs { float: right; } p.datetime { margin: 0; float: right; white-space: nowrap; font-size: 1em; } .rtl p.datetime { float: left; } p.searchbar { padding: 2px 0; white-space: nowrap; } p.searchbarreg { margin: 0; float: right; white-space: nowrap; } .rtl p.searchbarreg { float: left; } p.forumdesc { padding-bottom: 4px; } p.topicauthor { margin: 1px 0; } p.topicdetails { margin: 1px 0; } .postreported, .postreported a:visited, .postreported a:hover, .postreported a:link, .postreported a:active { margin: 1px 0; color: red; font-weight:bold; } .postapprove, .postapprove a:visited, .postapprove a:hover, .postapprove a:link, .postapprove a:active { color: green; font-weight:bold; } .postapprove img, .postreported img { vertical-align: bottom; } .postauthor { color: #000000; } .postdetails { color: #000000; } /* The content of the posts (body of text) */ .postbody { font-size : 15px; line-height: 14px; font-family: -apple-system, BlinkMacSystemFont, Roboto, "Lucida Grande", "Segoe UI", Arial, Helvetica, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; } .postbody li, ol, ul { margin: 0 0 0 1.5em; } .rtl .postbody li, .rtl ol, .rtl ul { margin: 0 1.5em 0 0; } .posthilit { background-color: yellow; } .nav { color: black; font-weight: bold; } /* Action-bars (container for post/reply buttons, pagination, etc.) ---------------------------------------- */ fa-fw { width: 1.28571429em; text-align: center; } .action-bar { font-size: 11px; margin: 4px 0; } .forabg + .action-bar { margin-top: 2em; } .action-bar .button { margin-right: 5px; float: left; } .action-bar .button-search { margin-right: 0; } .action-bar .newtopic, .action-bar .postreply { border-color: #1C0046; background-color: #AB95CB; /* Old browsers */ /* FF3.6+ */ background-image: -webkit-linear-gradient(top, #AB95CB 0%, #1A0040 100%); background-image: linear-gradient(to bottom, #AB95CB 0%,#1A0040 100%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#AB95CB', endColorstr='#1A0040',GradientType=0 ); /* IE6-9 */ } .action-bar .newtopic:hover, .action-bar .postreply:hover { background-color: #1A0040; /* Old browsers */ /* FF3.6+ */ background-image: -webkit-linear-gradient(top, #1A0040 0%, #AB95CB 100%); background-image: linear-gradient(to bottom, #1A0040 0%,#AB95CB 100%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1A0040', endColorstr='#AB95CB',GradientType=0 ); /* IE6-9 */ } .pagination { padding: 4px; color: black; font-size: 1em; font-weight: bold; } .cattitle { } /* General text */ .gen { margin: 1px 1px; font-size: 15px; } .genmed { margin: 1px 1px; font-size: 14px; } .gensmall { margin: 1px 1px; font-size: 11px; } .gen,.genmed,.gensmall { color : #000000; } a.gen,a.genmed,a.gensmall { color: #072978; text-decoration: none; } a.gen:hover,a.genmed:hover,a.gensmall:hover { color: #041642; text-decoration: underline; } /* The register, login, search etc links at the top of the page */ .mainmenu { font-size : 11px; color : #000000 } a.mainmenu { text-decoration: none; color : #072978; } a.mainmenu:hover{ text-decoration: underline; color : #041642; } /* Forum category titles */ .cattitle { font-weight: bold; font-size: 12px ; letter-spacing: 1px; color : #072978} a.cattitle { text-decoration: none; color : #072978; } a.cattitle:hover{ text-decoration: underline; } /* Forum title: Text and link to the forums used in: index.php */ .forumlink { font-weight: bold; font-size: 12px; color : #072978; } a.forumlink { text-decoration: none; color : #072978; } a.forumlink:hover{ text-decoration: underline; color : #041642; } /* Used for the navigation text, (Page 1,2,3 etc) and the navigation bar when in a forum */ .nav { font-weight: bold; font-size: 11px; color : #000000;} a.nav { text-decoration: none; color : #072978; } a.nav:hover { text-decoration: underline; } /* titles for the topics: could specify viewed link colour too */ .topictitle,h1,h2 { font-weight: bold; font-size: 11px; color : #000000; } a.topictitle:link { text-decoration: none; color : #072978; } a.topictitle:visited { text-decoration: none; color : #072978; } a.topictitle:hover { text-decoration: underline; color : #041642; } /* Name of poster in viewmsg.php and viewtopic.php and other places */ .name { font-size : 11px; color : #000000;} /* Location, number of posts, post date etc */ .postdetails { font-size : 10px; color : #000000; } a.postlink:link { text-decoration: none; color : #072978 } a.postlink:visited { text-decoration: none; color : #072978; } a.postlink:hover { text-decoration: underline; color : #041642} /* Quote & Code blocks */ .code { font-family: Courier, 'Courier New', sans-serif; font-size: 11px; color: #006600; background-color: #FAFAFA; border: #80BBEC; border-style: solid; border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px } .quote { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #444444; line-height: 125%; background-color: #FAFAFA; border: #80BBEC; border-style: solid; border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px } /* Copyright and bottom info */ .copyright { font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #444444; letter-spacing: -1px;} a.copyright { color: #444444; text-decoration: none;} a.copyright:hover { color: #000000; text-decoration: underline;} .copyright { color: #444; font-weight: normal; font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; } .titles { font-family: "Lucida Grande", Helvetica, Arial, sans-serif; font-weight: bold; font-size: 1.3em; text-decoration: none; } .error { color: red; } /* Horizontal lists ----------------------------------------*/ .navbar ul.linklist { padding: 2px 0; list-style-type: none; } ul.linklist { display: block; margin: 0; } .cp-main .panel { padding: 5px 10px; } ul.linklist > li { float: left; font-size: 1.1em; line-height: 2.2em; list-style-type: none; margin-right: 7px; width: auto; } ul.linklist > li.rightside, p.rightside, a.rightside { float: right; margin-right: 0; margin-left: 7px; text-align: right; } ul.navlinks { border-top: 1px solid transparent; } ul.leftside { float: left; margin-left: 0; margin-right: 5px; text-align: left; } ul.rightside { float: right; margin-left: 5px; margin-right: -5px; text-align: right; } ul.linklist li.responsive-menu { position: relative; margin: 0 5px 0 0; } .hasjs ul.linklist.leftside, .hasjs ul.linklist.rightside { max-width: 48%; } .hasjs ul.linklist.fullwidth { max-width: none; } li.responsive-menu.dropdown-right .dropdown { left: -9px; } li.responsive-menu.dropdown-left .dropdown { right: -6px; } ul.linklist .dropdown { top: 22px; } ul.linklist .dropdown-up .dropdown { bottom: 18px; top: auto; } /* Bulletin icons for list items ----------------------------------------*/ ul.linklist.bulletin > li:before { display: inline-block; content: "\2022"; font-size: inherit; line-height: inherit; padding-right: 4px; } ul.linklist.bulletin > li:first-child:before, ul.linklist.bulletin > li.rightside:last-child:before { content: none; } ul.linklist.bulletin > li.no-bulletin:before { content: none; } .responsive-menu:before { display: none !important; } /* Profile in overall_header.html */ .header-profile { display: inline-block; vertical-align: top; } a.header-avatar, a.header-avatar:hover { text-decoration: none; } a.header-avatar img { margin-bottom: 2px; max-height: 20px; vertical-align: middle; width: auto; } a.header-avatar span:after { content: '\f0dd'; display: inline-block; font: normal normal normal 14px/1 FontAwesome; padding-left: 6px; padding-top: 2px; vertical-align: top; } /** * The default CSS stylesheet used for all templates. * @package AutoIndex * @link http://autoindex.sourceforge.net */ /* Body */ .autoindex_body, html { background-color: #E3F0FB; scrollbar-face-color: #BADBF5; scrollbar-highlight-color: #E3F0FB; scrollbar-shadow-color: #BADBF5; scrollbar-3dlight-color: #80BBEC; scrollbar-arrow-color: #072978; scrollbar-track-color: #DAECFA; scrollbar-darkshadow-color: #4B8DF1; padding-right: 0px; padding-left: 0px; padding-bottom: 0px; font-family: -apple-system, BlinkMacSystemFont, Roboto, "Lucida Grande", "Segoe UI", Arial, Helvetica, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; padding-top: 0px; font-size: 89.5%; } /* Images */ .autoindex_body img { border: none; } /* Tables */ .autoindex_table.table2 { border: none; border-spacing: 0px; } .autoindex_table.table2 { padding: 2px; } .autoindex_table.table2 thead th { font-weight: normal; text-transform: uppercase; line-height: 1.3em; font-size: 1em; padding: 0 0 4px 3px; } .light_row { background-color: #F2F6FC; border: 0.1em solid #E3E3F04A; padding: 2px; } .dark_row { background-color: #BADBF5; border: 0.1em solid #E3E3F04A; padding: 2px; } .autoindex_td { background-color: #E3F0FB; /* font-family: verdana, lucidia, sans-serif; */ border: 0.1em solid #FFE3F04A; padding: 2px; } .autoindex_td_left { /* font-family: verdana, lucidia, sans-serif; */ border: 0.1em solid #E3E3F04A; padding: 2px; text-align: left; } .autoindex_td_right { /* font-family: verdana, lucidia, sans-serif; */ border: 0.1em solid #E3E3F04A; padding: 2px; text-align: right; } .autoindex_th { font-weight: bold; background-color: #80BBEC; border: 0.28em solid #FF01033; padding: 2px; } /* Links */ .plain_link { background-color: #FFE3F052; } .autoindex_a:visited, .autoindex_a:active { text-decoration: none; background-color: #FFFFE324; } .autoindex_a:link { background-color: #FFE3F04A; } .autoindex_a:hover { text-decoration: overline underline; } /* Buttons */ .button { color: #707070; background-color : #F0F2F485; text-align: left; vertical-align: middle; font-weight: bold; cursor: pointer; border-color: #1C0046; padding: 3px 10px 3px 10px; } /* Misc. */ .paragraph { background: #006F2F6FC; } .autoindex_hr { background-color: #006E3F020; width: 75%; } .autoindex_small { font-size: 9px; } /* -------------------------------------------------------------- /* $Icons /* -------------------------------------------------------------- */ /* Global module setup ---------------------------------------- */ /* Renamed version of .fa class for agnostic usage of icon fonts. * Just change the name of the font after the 14/1 to the name of * the font you wish to use. */ .icon, .button .icon, blockquote cite:before, .uncited:before { font-family: FontAwesome; font-size: 14px; font-weight: normal; font-style: normal; font-variant: normal; line-height: 1; display: inline-block; /* stylelint-disable order/declaration-block-properties-specified-order */ -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; /* stylelint-enable order/declaration-block-properties-specified-order */ text-rendering: auto; /* optimizelegibility throws things off #1094 */ } .icon:before { padding-right: 2px; } .button .icon:before { padding-right: 0; } /* Icon size classes - Default size is 14px, use these for small variations */ .icon.icon-xl { font-size: 20px; } .icon.icon-lg { font-size: 18px; } .icon.icon-md { font-size: 12px; } .icon.icon-sm { font-size: 10px; } /* icon modifiers */ .icon-tiny { font-size: 16px; vertical-align: text-bottom; width: 12px; -webkit-transform: scale(0.65, 0.75); transform: scale(0.65, 0.75); } .arrow-right .icon { float: right; } .arrow-left:hover .icon { margin-right: 5px; margin-left: -5px; } .arrow-left .icon { float: left; } .arrow-right:hover .icon { margin-right: -5px; margin-left: 5px; } .post-buttons .dropdown-contents .icon { float: right; margin-left: 5px; } .alert_close .icon:before { border-radius: 50%; display: block; width: 11px; height: 12px; padding: 0; } blockquote cite:before, .uncited:before { content: "\f10d"; /* Font Awesome quote-left */ } .rtl blockquote cite:before, .rtl .uncited:before { content: "\f10e"; /* Font Awesome quote-right */ } /* Dropdown menu ----------------------------------------*/ .dropdown-container { position: relative; } .dropdown-container-right { float: right; } .dropdown-container-left { float: left; } .nojs .dropdown-container:hover .dropdown { display: block !important; } .dropdown { display: none; position: absolute; left: 0; top: 1.2em; z-index: 2; border: 1px solid transparent; border-radius: 5px; padding: 9px 0 0; margin-right: -500px; } .dropdown.live-search { top: auto; } .dropdown-container.topic-tools { float: left; } .dropdown-up .dropdown { top: auto; bottom: 1.2em; padding: 0 0 9px; } .dropdown-left .dropdown, .nojs .rightside .dropdown { left: auto; right: 0; margin-left: -500px; margin-right: 0; } .dropdown-button-control .dropdown { top: 24px; } .dropdown-button-control.dropdown-up .dropdown { top: auto; bottom: 24px; } .dropdown .pointer, .dropdown .pointer-inner { position: absolute; width: 0; height: 0; border-top-width: 0; border-bottom: 10px solid transparent; border-left: 10px dashed transparent; border-right: 10px dashed transparent; -webkit-transform: rotate(360deg); /* better anti-aliasing in webkit */ display: block; } .dropdown-up .pointer, .dropdown-up .pointer-inner { border-bottom-width: 0; border-top: 10px solid transparent; } .dropdown .pointer { right: auto; left: 10px; top: -1px; z-index: 3; } .dropdown-up .pointer { bottom: -1px; top: auto; } .dropdown-left .dropdown .pointer, .nojs .rightside .dropdown .pointer { left: auto; right: 10px; } .dropdown .pointer-inner { top: auto; bottom: -11px; left: -10px; } .dropdown-up .pointer-inner { bottom: auto; top: -11px; } .dropdown .dropdown-contents { z-index: 2; overflow: hidden; overflow-y: auto; border: 1px solid transparent; border-radius: 5px; padding: 5px; position: relative; max-height: 300px; } .dropdown-contents a { display: block; padding: 5px; } .jumpbox { margin: 5px 0; } .jumpbox .dropdown li { border-top: 1px solid transparent; } .jumpbox .dropdown-select { margin: 0; } .jumpbox .dropdown-contents { padding: 0; text-decoration: none; } .jumpbox .dropdown-contents li { padding: 0; } .jumpbox .dropdown-contents a { margin-right: 20px; padding: 5px 10px; text-decoration: none; width: 100%; } .jumpbox .spacer { display: inline-block; width: 0px; } .jumpbox .spacer + .spacer { width: 20px; } .dropdown-contents a { display: block; padding: 5px; } .jumpbox .dropdown-select { margin: 0; } .jumpbox .dropdown-contents a { text-decoration: none; } .dropdown li { display: list-item; border-top: 1px dotted transparent; float: none !important; line-height: normal !important; font-size: 1em !important; list-style: none; margin: 0; white-space: nowrap; text-align: left; } .dropdown-contents > li { padding-right: 15px; } .dropdown-nonscroll > li { padding-right: 0; } .dropdown li:first-child, .dropdown li.separator + li, .dropdown li li { border-top: 0; } .dropdown li li:first-child { margin-top: 4px; } .dropdown li li:last-child { padding-bottom: 0; } .dropdown li li { border-top: 1px dotted transparent; padding-left: 18px; } .wrap .dropdown li, .dropdown.wrap li, .dropdown-extended li { white-space: normal; } .dropdown li.separator { border-top: 1px solid transparent; padding: 0; } .dropdown li.separator:first-child, .dropdown li.separator:last-child { display: none !important; } /* jQuery popups ---------------------------------------- */ .phpbb_alert { background-color: #FFFFFF; border-color: #999999; } .darken { background-color: #000000; } .loading_indicator { background-color: #000000; background-image: url("./images/loading.gif"); } .dropdown-extended ul li { border-top-color: #B9B9B9; } .dropdown-extended ul li:hover { background-color: #cfd1f6; color: #000000; } .dropdown-extended .header, .dropdown-extended .footer { border-color: #B9B9B9; color: #000000; } .dropdown-extended .footer { border-top-style: solid; border-top-width: 1px; } .dropdown-extended .header { background-color: #f1f2ff; /* Old browsers */ /* FF3.6+ */ background-image: -webkit-linear-gradient(top, #f1f2ff 0%, #caceeb 100%); background-image: linear-gradient(to bottom, #f1f2ff 0%,#caceeb 100%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f1f2ff', endColorstr='#caceeb',GradientType=0 ); /* IE6-9 */ } .dropdown .pointer { border-color: #B9B9B9 transparent; } .dropdown .pointer-inner { border-color: #FFF transparent; } .dropdown-extended .pointer-inner { border-color: #f1f2ff transparent; } .dropdown .dropdown-contents { background: #fff; border-color: #B9B9B9; box-shadow: 1px 3px 5px rgba(0, 0, 0, 0.2); } .dropdown-up .dropdown-contents { box-shadow: 1px 0 5px rgba(0, 0, 0, 0.2); } .dropdown li, .dropdown li li { border-color: #DCDCDC; } .dropdown li.separator { border-color: #DCDCDC; } /* Notifications ---------------------------------------- */ .notification_list p.notification-time { color: #4d4d77; } li.notification-reported strong, li.notification-disapproved strong { color: #0d5aa2; } .badge { background-color: #0d5aa2; color: #ffffff; } /* Responsive breadcrumbs ----------------------------------------*/ .breadcrumbs .crumb { float: left; font-weight: bold; word-wrap: normal; } .breadcrumbs .crumb:before { content: '\2039'; font-weight: bold; padding: 0 0.5em; } .breadcrumbs .crumb:first-child:before { content: none; } .breadcrumbs .crumb a { white-space: nowrap; text-overflow: ellipsis; vertical-align: bottom; overflow: hidden; } .breadcrumbs.wrapped .crumb a { letter-spacing: -.3px; } .breadcrumbs.wrapped .crumb.wrapped-medium a { letter-spacing: -.4px; } .breadcrumbs.wrapped .crumb.wrapped-tiny a { letter-spacing: -.5px; } .breadcrumbs .crumb.wrapped-max a { max-width: 120px; } .breadcrumbs .crumb.wrapped-wide a { max-width: 100px; } .breadcrumbs .crumb.wrapped-medium a { max-width: 80px; } .breadcrumbs .crumb.wrapped-small a { max-width: 60px; } .breadcrumbs .crumb.wrapped-tiny a { max-width: 40px; } /* Tables ------------ */ /* General font families for common tags */ font,th,td,p { font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; } a:link,a:active,a:visited { color : #006699; } a:hover { text-decoration: underline; color : #DD6900; } hr { height: 0px; border: solid #80BBEC 0px; border-top-width: 1px;} /* This is the border line & background colour round the entire page */ .bodyline { background-color: #E3F0FB; background-image: url("./images/bodyline.jpg"); padding-bottom: 40px; border: 1px #4B8DF1 solid; } /* This is the outline round the main forum tables */ .forumline { background-color: #E3F0FB; border: 2px #006699 solid; } .profile { padding: 4px; } .tablebg { background-color: #A9B8C2; } /* Main table cell colours and backgrounds */ .row1 { background-color: #DAECFA; padding: 4px; } .row2 { background-color: #BADBF5; padding: 4px; } .row3 { background-color: #80BBEC; padding: 4px; } .row4 { background-color: #E4E8EB; padding: 4px; } .col1 { background-color: #BADBF5; padding: 4px; } .col2 { background-color: #DAECFA; padding: 4px; } /* This is for the table cell above the Topics, Post & Last posts on the index.php page By default this is the fading out gradiated silver background. However, you could replace this with a bitmap specific for each forum */ .rowpic { background-color: #E3F0FB; background-image: url('./images/cellpic2.jpg'); background-repeat: repeat-y; } .catdiv { height: 28px; background: white url('./images/cellpic2.jpg') repeat-y scroll top left; } .rtl .catdiv { background: white url('./images/cellpic2_rtl.jpg') repeat-y scroll top right; } /* Header cells - the blue and silver gradient backgrounds */ th { color: #FFA34F; font-size: 11px; font-weight : bold; background-color: #006699; height: 25px; background-image: url('./images/cellpic3.gif'); } .cat { height: 28px; background-color: #C7D0D7; text-indent: 4px; } .cat,.catHead,.catSides,.catLeft,.catRight,.catBottom { background-image: url('./images/cellpic1.gif'); background-color:#80BBEC; border: #E3F0FB; border-style: solid; height: 28px; } /* Setting additional nice inner borders for the main table cells. The names indicate which sides the border will be on. Don't worry if you don't understand this, just ignore it :-) */ td.cat,td.catHead,td.catBottom { height: 29px; border-width: 0px 0px 0px 0px; } th.thHead,th.thSides,th.thTop,th.thLeft,th.thRight,th.thBottom,th.thCornerL,th.thCornerR { font-weight: bold; border: #E3F0FB; border-style: solid; height: 28px; } td.row3Right,td.spaceRow { background-color: #80BBEC; border: #E3F0FB; border-style: solid; } th.thHead,td.catHead { font-size: 12px; border-width: 1px 1px 0px 1px; } th.thSides,td.catSides,td.spaceRow { border-width: 0px 1px 0px 1px; } th.thRight,td.catRight,td.row3Right { border-width: 0px 1px 0px 0px; } th.thLeft,td.catLeft { border-width: 0px 0px 0px 1px; } th.thBottom,td.catBottom { border-width: 0px 1px 1px 1px; } th.thTop { border-width: 1px 0px 0px 0px; } th.thCornerL { border-width: 1px 0px 0px 1px; } th.thCornerR { border-width: 1px 1px 0px 0px; } .spacer { background-color: #80BBEC; } hr { height: 1px; border-width: 0; background-color: #80BBEC; color: #80BBEC; } .legend { text-align:center; margin: 0 auto; } /* Links ------------ */ a:link { color: #006597; text-decoration: none; } a:active, a:visited { color: #005784; text-decoration: none; } a:hover { color: #D46400; text-decoration: underline; } a.forumlink { color: #069; font-weight: bold; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; font-size: 13px; } a.topictitle { margin: 1px 0; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; font-weight: bold; font-size: 13px; } a.topictitle:visited { color: #5493B4; text-decoration: none; } th a, th a:visited { color: #EC9443CF !important; text-decoration: none; } th a:hover { text-decoration: underline; } /* Form Elements ------------ */ form { margin: 0; padding: 0; border: 0; } input { color: #333333; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; font-size: 12px; font-weight: normal; padding: 1px; border: 1px solid #A9B8C2; background-color: #FAFAFA; } textarea { background-color: #FAFAFA; color: #333333; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; font-size: 14px; line-height: 15px; font-weight: normal; border: 1px solid #A9B8C2; padding: 2px; } select { color: #333333; background-color: #FAFAFA; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; font-size: 1.1em; font-weight: normal; border: 1px solid #A9B8C2; padding: 1px; } option { padding: 0 1em 0 0; } option.disabled-option { color: graytext; } .rtl option { padding: 0 0 0 1em; } input.radio { border: none; background-color: transparent; } .post { background-color: #DAECFA; border-style: solid; border-width: 1px; } .btnbbcode { color: #000000; font-weight: normal; font-size: 0.8em; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; background-color: #DAECFA; border: 1px solid #666666; } .btnmain { font-weight: bold; background-color: #DAECFA; border: 1px solid #A9B8C2; cursor: pointer; padding: 1px 3px; font-size: 0.8em; } .btnlite { font-weight: normal; background-color: #DAECFA; border: 1px solid #A9B8C2; cursor: pointer; padding: 1px 3px; font-size: 0.8em; } .btnfile { font-weight: normal; background-color: #DAECFA; border: 1px solid #A9B8C2; padding: 1px 3px; font-size: 0.8em; } .helpline { background-color: #BADBF5; border-style: none; } /* BBCode ------------ */ .quotetitle, .attachtitle { margin: 10px 5px 0 5px; padding: 4px; border-width: 1px 1px 0 1px; border-style: solid; border-color: #A9B8C2; color: #333333; background-color: #A9B8C2; font-size: 0.85em; font-weight: bold; } .quotetitle .quotetitle { font-size: 1em; } .quotecontent, .attachcontent { margin: 0 5px 10px 5px; padding: 5px; border-color: #A9B8C2; border-width: 0 1px 1px 1px; border-style: solid; font-weight: normal; font-size: 1em; line-height: 1.4em; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; background-color: #FAFAFA; color: #4B5C77; } .attachcontent { font-size: 0.85em; } .codetitle { margin: 10px 5px 0 5px; padding: 2px 4px; border-width: 1px 1px 0 1px; border-style: solid; border-color: #A9B8C2; color: #333333; background-color: #A9B8C2; font-family: Verdana, Geneva, 'Lucida Grande', Arial, Helvetica, sans-serif, droid-serif; font-size: 0.8em; } .codecontent { direction: ltr; margin: 0 5px 10px 5px; padding: 5px; border-color: #A9B8C2; border-width: 0 1px 1px 1px; border-style: solid; font-weight: normal; color: #006600; font-size: 0.85em; font-family: Monaco, 'Courier New', monospace; background-color: #FAFAFA; } .postimage { max-width: 100%; } .syntaxbg { color: #E3F0FB; } .syntaxcomment { color: #FF8000; } .syntaxdefault { color: #0000BB; } .syntaxhtml { color: #000000; } .syntaxkeyword { color: #007700; } .syntaxstring { color: #DD0000; } /* Private messages ------------------ */ .pm_marked_colour { background-color: #000000; } .pm_replied_colour { background-color: #A9B8C2; } .pm_friend_colour { background-color: #007700; } .pm_foe_colour { background-color: #DD0000; } /* Misc ------------ */ img { border: none; } .sep { color: black; background-color: #FFA34F; } table.colortable td { padding: 0; } pre { font-size: 1.1em; font-family: Monaco, 'Courier New', monospace; } .nowrap { white-space: nowrap; } .username-coloured { font-weight: bold; } .emoji { min-height: 18px; min-width: 18px; height: 1em; width: 1em; } /* The largest text used in the index page title and toptic title etc. */ .maintitle,h1,h2 { font-weight: bold; font-size: 22px; font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 120%; color : #000000; } /* Form elements */ input,textarea, select { color : #000000; border-color : #000000; } /* The text input fields background colour */ input.post, textarea.post, select { background-color : #E3F0FB; } input { text-indent : 2px; } /* The buttons used for bbCode styling in message post */ input.button { background-color : #F0F2F485; color : #000000 !important; } /* The main submit button option */ input.mainoption { background-color : #FAFAFA; font-weight : bold; } /* None-bold submit button */ input.liteoption { background-color : #FAFAFA; font-weight : normal; } /* This is the line in the posting page which shows the rollover help line. This is actually a text box, but if set to be the same colour as the background no one will know ;) */ .helpline { background-color: #BADBF5; border-style: none; } /* Former imageset */ span.imageset { display: inline-block; background: transparent none 0 0 no-repeat; margin: 0; padding: 0; width: 0; height: 0; overflow: hidden; } a.imageset { text-decoration: none !important; } /* Global imageset items */ .imageset.site_logo { background-image: url("./images/site_logo.png"); padding-top: 0px; padding-left: 240px; padding-right: 0px; padding-bottom: 100px; } .imageset.upload_bar { background-image: url("./images/upload_bar.gif"); padding-left: 280px; padding-top: 16px; } .imageset.poll_left { background-image: url("./images/poll_left.gif"); padding-left: 4px; padding-top: 12px; } .imageset.poll_center { background-image: url("./images/poll_center.gif"); padding-left: 1px; padding-top: 12px; } .imageset.poll_right { background-image: url("./images/poll_right.gif"); padding-left: 4px; padding-top: 12px; } .imageset.forum_link { background-image: url("./images/forum_link.gif"); padding-left: 46px; padding-top: 25px; } .imageset.forum_read { padding-left: 46px; padding-top: 25px; } .imageset.forum_read_locked { padding-left: 46px; padding-top: 25px; } .imageset.forum_read_subforum { padding-left: 46px; padding-top: 25px; } .imageset.forum_unread { padding-left: 46px; padding-top: 25px; } .imageset.forum_unread_locked { padding-left: 46px; padding-top: 25px; } .imageset.forum_unread_subforum { padding-left: 46px; padding-top: 25px; } .imageset.topic_moved { padding-left: 19px; padding-top: 18px; } .imageset.topic_read { padding-left: 19px; padding-top: 18px; } .imageset.topic_read_mine { padding-left: 19px; padding-top: 18px; } .imageset.topic_read_hot { padding-left: 19px; padding-top: 18px; } .imageset.topic_read_hot_mine { padding-left: 19px; padding-top: 18px; } .imageset.topic_read_locked { padding-left: 19px; padding-top: 18px; } .imageset.topic_read_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.topic_unread { padding-left: 19px; padding-top: 18px; } .imageset.topic_unread_mine { padding-left: 19px; padding-top: 18px; } .imageset.topic_unread_hot { padding-left: 19px; padding-top: 18px; } .imageset.topic_unread_hot_mine { padding-left: 19px; padding-top: 18px; } .imageset.topic_unread_locked { padding-left: 19px; padding-top: 18px; } .imageset.topic_unread_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.sticky_read { padding-left: 19px; padding-top: 18px; } .imageset.sticky_read_mine { padding-left: 19px; padding-top: 18px; } .imageset.sticky_read_locked { padding-left: 19px; padding-top: 18px; } .imageset.sticky_read_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.sticky_unread { padding-left: 19px; padding-top: 18px; } .imageset.sticky_unread_mine { padding-left: 19px; padding-top: 18px; } .imageset.sticky_unread_locked { padding-left: 19px; padding-top: 18px; } .imageset.sticky_unread_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.announce_read { padding-left: 19px; padding-top: 18px; } .imageset.announce_read_mine { padding-left: 19px; padding-top: 18px; } .imageset.announce_read_locked { padding-left: 19px; padding-top: 18px; } .imageset.announce_read_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.announce_unread { padding-left: 19px; padding-top: 18px; } .imageset.announce_unread_mine { padding-left: 19px; padding-top: 18px; } .imageset.announce_unread_locked { padding-left: 19px; padding-top: 18px; } .imageset.announce_unread_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.global_read { padding-left: 19px; padding-top: 18px; } .imageset.global_read_mine { padding-left: 19px; padding-top: 18px; } .imageset.global_read_locked { padding-left: 19px; padding-top: 18px; } .imageset.global_read_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.global_unread {; padding-left: 19px; padding-top: 18px; } .imageset.global_unread_mine { padding-left: 19px; padding-top: 18px; } .imageset.global_unread_locked { padding-left: 19px; padding-top: 18px; } .imageset.global_unread_locked_mine { padding-left: 19px; padding-top: 18px; } .imageset.pm_read { padding-left: 19px; padding-top: 18px; } .imageset.pm_unread { padding-left: 19px; padding-top: 18px; } .imageset.icon_post_target { padding-left: 12px; padding-top: 9px; } .imageset.icon_post_target_unread { padding-left: 12px; padding-top: 9px; } .imageset.icon_topic_attach { padding-left: 14px; padding-top: 18px; } .imageset.icon_topic_latest { padding-left: 18px; padding-top: 9px; } .imageset.icon_topic_newest { padding-left: 18px; padding-top: 9px; } .imageset.icon_topic_reported { padding-left: 19px; padding-top: 18px; } .imageset.icon_topic_unapproved { padding-left: 19px; padding-top: 18px; } .imageset.icon_topic_deleted { padding-left: 14px; padding-top: 14px; } /* English images for fallback */ .imageset.phpbb_aol-icon, .imageset.icon_contact_aim { padding-left: 72px; padding-top: 20px; } .imageset.icon_contact_email { padding-left: 72px; padding-top: 20px; } .imageset.phpbb_icq-icon, .imageset.icon_contact_icq { padding-left: 72px; padding-top: 20px; } .imageset.icon_contact_jabber { padding-left: 72px; padding-top: 20px; } .imageset.phpbb_wlm-icon, .imageset.icon_contact_msnm { padding-left: 72px; padding-top: 20px; } .imageset.icon_contact_pm { padding-left: 72px; padding-top: 20px; } .imageset.phpbb_yahoo-icon, .imageset.icon_contact_yahoo { padding-left: 72px; padding-top: 20px; } .imageset.phpbb_website-icon, .imageset.icon_contact_www { padding-left: 72px; padding-top: 20px; } .imageset.icon_post_delete { padding-left: 20px; padding-top: 20px; } .imageset.icon_post_edit { padding-left: 90px; padding-top: 20px; } .imageset.icon_post_info { padding-left: 20px; padding-top: 20px; } .imageset.icon_post_quote { padding-left: 90px; padding-top: 20px; } .imageset.icon_post_report { padding-left: 20px; padding-top: 20px; } .imageset.icon_user_online { padding-left: 72px; padding-top: 20px; } .imageset.icon_user_offline { padding-left: 72px; padding-top: 20px; } .imageset.icon_user_profile { padding-left: 72px; padding-top: 20px; } .imageset.icon_user_search { padding-left: 72px; padding-top: 20px; } .imageset.icon_user_warn { padding-left: 20px; padding-top: 20px; } .imageset.button_pm_new { padding-left: 97px; padding-top: 27px; } .imageset.button_pm_reply { padding-left: 90px; padding-top: 20px; } .imageset.button_topic_locked { padding-left: 97px; padding-top: 27px; } .imageset.button_topic_new { padding-left: 97px; padding-top: 27px; } .imageset.button_topic_reply { padding-left: 97px; padding-top: 27px; } /* Responsive breadcrumbs ----------------------------------------*/ .rtl .breadcrumbs .crumb { float: right; } /* Table styles ----------------------------------------*/ table.table1 { width: 100%; } .ucp-main table.table1 { padding: 2px; } table.table1 thead th { font-weight: normal; text-transform: uppercase; line-height: 1.3em; font-size: 1em; padding: 0 0 4px 3px; } table.table1 thead th span { padding-left: 7px; } table.table1 tbody tr { border: 1px solid transparent; } table.table1 td { font-size: 1.1em; } table.table1 tbody td { padding: 5px; border-top: 1px solid transparent; } table.table1 tbody th { padding: 5px; border-bottom: 1px solid transparent; text-align: left; } /* Specific column styles */ table.table1 .name { text-align: left; } table.table1 .center { text-align: center; } table.table1 .reportby { width: 15%; } table.table1 .posts { text-align: center; width: 7%; } table.table1 .joined { text-align: left; width: 15%; } table.table1 .active { text-align: left; width: 15%; } table.table1 .mark { text-align: center; width: 7%; } table.table1 .info { text-align: left; width: 30%; } table.table1 .info div { width: 100%; white-space: normal; overflow: hidden; } table.table1 .autocol { line-height: 2em; white-space: nowrap; } table.table1 thead .autocol { padding-left: 1em; } table.table1 span.rank-img { float: right; width: auto; } table.info td { padding: 3px; } table.info tbody th { padding: 3px; text-align: right; vertical-align: top; font-weight: normal; } table.table1 thead th { color: #FFFFFF; } table.table1 tbody tr { border-color: #BFC1CF; } table.table1 tbody tr:hover, table.table1 tbody tr.hover { background-color: #CFE1F6; color: #000; } table.table1 td { color: #536482; } table.table1 tbody td { border-top-color: #FAFAFA; } table.table1 tbody th { border-bottom-color: #000000; color: #333333; background-color: #FFFFFF; } table.info tbody th { color: #000000; } table.table1 td { color: #536482; } table.table1 td { font-size: 1.1em; } table.fixed-width-table { table-layout: fixed; } .rtl table.table1 thead th { padding: 0 3px 4px 0; } .rtl table.table1 thead th span { padding-left: 0; padding-right: 7px; } .rtl table.table1 tbody th { text-align: right; } /* Specific column styles */ .rtl table.table1 .name { text-align: right; } .rtl table.table1 .joined { text-align: right; } .rtl table.table1 .active { text-align: right; } .rtl table.table1 .info { text-align: right; } .rtl table.table1 thead .autocol { padding-left: 0; padding-right: 1em; } /* Specific column styles */ .ltr table.table1 .name { text-align: left; } .ltr table.table1 .joined { text-align: left; } .ltr table.table1 .active { text-align: left; } .ltr table.table1 .info { text-align: left; } .ltr table.table1 thead .autocol { padding-right: 0; padding-left: 1em; } .rtl table.table1 span.rank-img { float: left; } .rtl table.info tbody th { text-align: left; } .rtl .forumbg table.table1 { margin: 0 -1px -1px -2px; } .forumbg table.table1 { margin: 0; } .forumbg-table > .inner { margin: 0 -1px; } .color_palette_placeholder table { border-collapse: separate; border-spacing: 1px; } /* Control Panel Styles ---------------------------------------- */ /* Main CP box ----------------------------------------*/ .cp-menu { float:left; width: 19%; margin-top: 1em; margin-bottom: 5px; } .cp-main { float: left; width: 81%; } .cp-main .content { padding: 0; } .panel-container .panel p { font-size: 1.1em; } .panel-container .panel ol { margin-left: 2em; font-size: 1.1em; } .panel-container .panel li.row { border-bottom: 1px solid transparent; border-top: 1px solid transparent; } ul.cplist { margin-bottom: 5px; border-top: 1px solid transparent; } .panel-container .panel li.header dd, .panel-container .panel li.header dt { margin-bottom: 2px; } .panel-container table.table1 { margin-bottom: 1em; } .panel-container table.table1 thead th { font-weight: bold; border-bottom: 1px solid transparent; padding: 5px; } .panel-container table.table1 tbody th { font-style: italic; background-color: transparent !important; border-bottom: none; } .cp-main .pm-message { border: 1px solid transparent; margin: 10px 0; width: auto; float: none; } .pm-message h2 { padding-bottom: 5px; } .cp-main .postbody h3, .cp-main .box2 h3 { margin-top: 0; } .panel-container .postbody p.author { font-size: 1.1em; } .cp-main .buttons { margin-left: 0; } .cp-main ul.linklist { margin: 0; } /* MCP Specific tweaks */ .mcp-main .postbody { width: 100%; } .tabs-container h2 { float: left; margin-bottom: 0px; } /* CP tabs shared ----------------------------------------*/ .tabs, .minitabs { line-height: normal; } .tabs > ul, .minitabs > ul { list-style: none; margin: 0; padding: 0; position: relative; } .tabs .tab, .minitabs .tab { display: block; float: left; font-size: 1em; font-weight: bold; line-height: 1.4em; } .tabs .tab > a, .minitabs .tab > a { display: block; padding: 5px 9px; position: relative; text-decoration: none; white-space: nowrap; cursor: pointer; } /* CP tabbed menu ----------------------------------------*/ .tabs { margin: 20px 0 0 7px; } .tabs .tab > a { border: 1px solid transparent; border-radius: 4px 4px 0 0; margin: 1px 1px 0 0; } .tabs .activetab > a { margin-top: 0; padding-bottom: 7px; } /* Mini tabbed menu used in MCP ----------------------------------------*/ .minitabs { float: right; margin: 15px 7px 0 0; max-width: 50%; } .minitabs .tab { float: right; } .minitabs .tab > a { border-radius: 5px 5px 0 0; margin-left: 2px; } .minitabs .tab > a:hover { text-decoration: none; } /* Responsive tabs ----------------------------------------*/ .responsive-tab { position: relative; } .responsive-tab > a.responsive-tab-link { display: block; font-size: 1.6em; position: relative; width: 16px; line-height: 0.9em; text-decoration: none; } .responsive-tab .responsive-tab-link:before { content: ''; position: absolute; left: 10px; top: 7px; height: .125em; width: 14px; border-bottom: 0.125em solid transparent; border-top: 0.375em double transparent; } .tabs .dropdown, .minitabs .dropdown { top: 20px; margin-right: -2px; font-size: 1.1em; font-weight: normal; } .minitabs .dropdown { margin-right: -4px; } .tabs .dropdown-up .dropdown, .minitabs .dropdown-up .dropdown { bottom: 20px; top: auto; } .tabs .dropdown li { text-align: right; } .minitabs .dropdown li { text-align: left; } /* UCP navigation menu ----------------------------------------*/ /* Container for sub-navigation list */ .navigation { width: 100%; padding-top: 36px; } .navigation ul { list-style: none; } /* Default list state */ .navigation li { display: inline; font-weight: bold; margin: 1px 0; padding: 0; } /* Link styles for the sub-section links */ .navigation a { display: block; padding: 5px; margin: 1px 0; text-decoration: none; } .navigation a:hover { text-decoration: none; } /* Preferences pane layout ----------------------------------------*/ .cp-main h2 { border-bottom: none; padding: 0; margin-left: 10px; } /* Friends list */ .cp-mini { margin: 10px 15px 10px 5px; max-height: 200px; overflow-y: auto; padding: 5px 10px; border-radius: 7px; } dl.mini dt { font-weight: bold; } dl.mini dd { padding-top: 4px; } .friend-online { font-weight: bold; } .friend-offline { font-style: italic; } /* PM Styles ----------------------------------------*/ /* Defined rules list for PM options */ ol.def-rules { padding-left: 0; } ol.def-rules li { line-height: 180%; padding: 1px; } /* PM marking colours */ .pmlist li.bg1 { padding: 0 3px; } .pmlist li.bg2 { padding: 0 3px; } .pmlist li.pm_message_reported_colour, .pm_message_reported_colour { border-left-color: transparent; border-right-color: transparent; } .pmlist li.pm_marked_colour, .pm_marked_colour, .pmlist li.pm_replied_colour, .pm_replied_colour, .pmlist li.pm_friend_colour, .pm_friend_colour, .pmlist li.pm_foe_colour, .pm_foe_colour { padding: 0; border: solid 3px transparent; border-width: 0 3px; } .pm-legend { border-left-width: 10px; border-left-style: solid; border-right-width: 0; margin-bottom: 3px; padding-left: 3px; } /* Avatar gallery */ .gallery label { position: relative; float: left; margin: 10px; padding: 5px; width: auto; border: 1px solid transparent; text-align: center; } /* Responsive *CP navigation ----------------------------------------*/ @media only screen and (max-width: 900px), only screen and (max-device-width: 900px) { .nojs .tabs a span, .nojs .minitabs a span { max-width: 40px; overflow: hidden; text-overflow: ellipsis; letter-spacing: -.5px; } .cp-menu, .navigation, .cp-main { float: none; width: auto; margin: 0; } .navigation { padding: 0; margin: 0 auto; max-width: 320px; } .navigation a { background-image: none; } .navigation li:first-child a { border-top-left-radius: 5px; border-top-right-radius: 5px; } .navigation li:last-child a { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; } } /* Misc layout styles ---------------------------------------- */ /* column[1-2] styles are containers for two column layouts */ .rtl .column1 { float: right; clear: right; } .rtl .column2 { float: left; clear: left; } /* General classes for placing floating blocks */ .rtl .left-box { float: right; text-align: right; } .rtl .right-box { float: left; text-align: left; } .rtl dl.details dt { float: right; clear: right; text-align: left; } .rtl dl.details dd { margin-right: 0; margin-left: 0; padding-right: 5px; padding-left: 0; float: right; } *:first-child+html dl.details dd { margin-right: 30%; float: none; } * html dl.details dd { margin-right: 30%; float: none; } /* RTL imageset entries */ .rtl .imageset.site_logo { padding-right: 170px; padding-left: 0; } .rtl .imageset.upload_bar { padding-right: 280px; padding-left: 0; } .rtl .imageset.poll_left, .rtl .imageset.poll_right { padding-right: 4px; padding-left: 0; } .rtl .imageset.poll_center { padding-right: 1px; padding-left: 0; } .rtl .imageset.forum_link, .rtl .imageset.forum_read, .rtl .imageset.forum_read_locked, .rtl .imageset.forum_read_subforum, .rtl .imageset.forum_unread, .rtl .imageset.forum_unread_locked, .rtl .imageset.forum_unread_subforum { padding-right: 46px; padding-left: 0; } .rtl .imageset.topic_moved, .rtl .imageset.topic_read, .rtl .imageset.topic_read_mine, .rtl .imageset.topic_read_hot, .rtl .imageset.topic_read_hot_mine, .rtl .imageset.topic_read_locked, .rtl .imageset.topic_read_locked_mine, .rtl .imageset.topic_unread, .rtl .imageset.topic_unread_mine, .rtl .imageset.topic_unread_hot, .rtl .imageset.topic_unread_hot_mine, .rtl .imageset.topic_unread_locked, .rtl .imageset.topic_unread_locked_mine, .rtl .imageset.sticky_read, .rtl .imageset.sticky_read_mine, .rtl .imageset.sticky_read_locked, .rtl .imageset.sticky_read_locked_mine, .rtl .imageset.sticky_unread, .rtl .imageset.sticky_unread_mine, .rtl .imageset.sticky_unread_locked, .rtl .imageset.sticky_unread_locked_mine, .rtl .imageset.announce_read, .rtl .imageset.announce_read_mine, .rtl .imageset.announce_read_locked, .rtl .imageset.announce_read_locked_mine, .rtl .imageset.announce_unread, .rtl .imageset.announce_unread_mine, .rtl .imageset.announce_unread_locked, .rtl .imageset.announce_unread_locked_mine, .rtl .imageset.global_read, .rtl .imageset.global_read_mine, .rtl .imageset.global_read_locked, .rtl .imageset.global_read_locked_mine, .rtl .imageset.global_unread, .rtl .imageset.global_unread_mine, .rtl .imageset.global_unread_locked, .rtl .imageset.global_unread_locked_mine, .rtl .imageset.pm_read, .rtl .imageset.pm_unread, .rtl .imageset.icon_topic_reported, .rtl .imageset.icon_topic_unapproved { padding-right: 19px; padding-left: 0; } .rtl .imageset.icon_post_target, .rtl .imageset.icon_post_target_unread { padding-right: 12px; padding-left: 0; } .rtl .imageset.icon_topic_attach { padding-right: 14px; padding-left: 0; } .rtl .imageset.icon_topic_latest, .rtl .imageset.icon_topic_newest { padding-right: 18px; padding-left: 0; } #notification_list { display: none; position: absolute; width: 310px; z-index: 1; box-shadow: 3px 3px 5px darkgray; } #notification_list .notification_scroll { max-height: 350px; overflow-y: auto; overflow-x: hidden; } #notification_list table { width: 100%; } #notification_list .notification_title { padding: 3px; } #notification_list .notification_title:after { clear: both; content: ''; display: block; } #notification_list .header { padding: 5px; font-weight: bold; border: 1px solid #A9B8C2; border-bottom: 0; } #notification_list > .header > .header_settings { float: right; font-weight: normal; text-transform: none; } #notification_list .header:after { content: ''; display: table; clear: both; } #notification_list .footer { text-align: center; font-size: 1.2em; border: 1px solid #A9B8C2; border-top: 0; } .notification_list img { max-width: 50px; max-height: 50px; } #notification_list .footer > a { display: block; } #notification_list .notification-time { font-size: 0.9em; float: right; } .notification_list .notifications_time { font-size: 0.8em; } /* Responsive Design ---------------------------------------- */ @media (max-width: 320px) { select, .inputbox { max-width: 240px; } } /* Notifications list ----------------------------------------*/ @media (max-width: 350px) { .dropdown-extended .dropdown-contents { width: auto; } } @media (max-width: 430px) { .action-bar .search-box .inputbox { width: 120px; } .section-viewtopic .search-box .inputbox { width: 57px; } .action-bar .search-box .inputbox ::-moz-placeholder { content: "Search..."; } .action-bar .search-box .inputbox :-ms-input-placeholder { content: "Search..."; } .action-bar .search-box .inputbox ::-webkit-input-placeholder { content: "Search..."; } } @media (max-width: 500px) { dd label { white-space: normal; } select, .inputbox { max-width: 260px; } .captcha-panel dd.captcha { margin-left: 0; } .captcha-panel dd.captcha-image img { width: 100%; } dl.details dt, dl.details dd { width: auto; float: none; text-align: left; } dl.details dd { margin-left: 20px; } p.responsive-center { float: none; text-align: center; margin-bottom: 5px; } .action-bar > div { margin-bottom: 5px; } .action-bar > .pagination { float: none; clear: both; padding-bottom: 1px; text-align: center; } .action-bar > .pagination li.page-jump { margin: 0 2px; } p.jumpbox-return { display: none; } .display-options > label:nth-child(1) { display: block; margin-bottom: 5px; } .attach-controls { margin-top: 5px; width: 100%; } .quick-links .dropdown-trigger span { display: none; } } @media (max-width: 550px) { ul.topiclist.forums dt { margin-right: 0; } ul.topiclist.forums dt .list-inner { margin-right: 0; } ul.topiclist.forums dd.lastpost { display: none; } } @media (max-width: 700px) { .responsive-hide { display: none !important; } .responsive-show { display: block !important; } .responsive-show-inline { display: inline !important; } .responsive-show-inline-block { display: inline-block !important; } /* Content wrappers ----------------------------------------*/ html { height: auto; } body { padding: 0; } .wrap { border: none; border-radius: 0; margin: 0; min-width: 290px; padding: 0 5px; } /* Common block wrappers ----------------------------------------*/ .headerbar, .navbar, .forabg, .forumbg, .post, .panel { border-radius: 0; margin-left: -5px; margin-right: -5px; } .cp-main .forabg, .cp-main .forumdb, .cp-main .post, .cp-main .panel { border-radius: 7px; } /* Logo block ----------------------------------------*/ .site-description { float: none; width: auto; text-align: center; } .logo { /* change display value to inline-block to show logo */ display: none; float: none; padding: 10px; } .site-description h1, .site-description p { text-align: inherit; float: none; margin: 5px; line-height: 1.2em; overflow: hidden; text-overflow: ellipsis; } .site-description p, .search-header { display: none; } /* Navigation ----------------------------------------*/ .headerbar + .navbar { margin-top: -5px; } /* Search ----------------------------------------*/ .responsive-search { display: block !important; } /* .topiclist lists ----------------------------------------*/ li.header dt { text-align: center; text-transform: none; line-height: 1em; font-size: 1.2em; padding-bottom: 4px; } ul.topiclist li.header dt, ul.topiclist li.header dt .list-inner { margin-right: 0 !important; padding-right: 0; } ul.topiclist li.header dd { display: none !important; } ul.topiclist dt, ul.topiclist dt .list-inner, ul.topiclist.missing-column dt, ul.topiclist.missing-column dt .list-inner, ul.topiclist.two-long-columns dt, ul.topiclist.two-long-columns dt .list-inner, ul.topiclist.two-columns dt, ul.topiclist.two-columns dt .list-inner { margin-right: 0; } ul.topiclist dt .list-inner.with-mark { padding-right: 34px; } ul.topiclist dt .list-inner { min-height: 28px; } ul.topiclist li.header dt .list-inner { min-height: 0; } ul.topiclist dd { display: none; } ul.topiclist dd.mark { display: block; } /* Forums and topics lists ----------------------------------------*/ ul.topiclist.forums dt { margin-right: -250px; } ul.topiclist dd.mark { display: block; position: absolute; right: 5px; top: 0; margin: 0; width: auto; min-width: 0; text-align: left; } ul.topiclist.forums dd.topics dfn, ul.topiclist.topics dd.posts dfn { position: relative; left: 0; width: auto; display: inline; font-weight: normal; } li.row .responsive-show strong { font-weight: bold; color: inherit; } ul.topiclist li.row dt a.subforum { vertical-align: bottom; overflow: hidden; text-overflow: ellipsis; max-width: 100px; } /* Forums and topics lists ----------------------------------------*/ dd.cat-title { width: 50px; min-width: 20px; overflow: hidden; text-align: left; line-height: 2.2em; font-size: 1.1em; } dd.catdiv { min-width: 20px; overflow: hidden; text-align: center; line-height: 2.2em; font-size: 1.1em; } dd.topicdetails { width: 50px; overflow: hidden; margin-left: 2px; margin-right: 2px; text-align: left; line-height: 1.2em; font-size: 1.1em; } dd.forumdesc { margin-left: 2px; margin-right: 2px; text-align: left; line-height: 1.2em; font-size: 1.1em; } dd.nav { overflow: hidden; text-align: center; font-size: 1.1em; } dd.views { min-width: 100px; overflow: hidden; text-align: center; font-size: 1.1em; } dd.answers { min-width: 60px; overflow: hidden; text-align: center; line-height: 1.2em; font-size: 1.1em; } dd.forumlink { min-width: 60px; text-align: center; font-size: 1.1em; } dd.lastpost { width: 50px; min-width: 10px; text-align: left; font-size: 1.1em; } div.legend { text-align: center; vertical-align: middle; line-height: 1.2em; font-size: 1.1em; } /* Responsive breadcrumbs ----------------------------------------*/ .rtl .breadcrumbs .crumb { float: right; } /* Table styles ----------------------------------------*/ .rtl table.table1 thead th { padding: 0 3px 4px 0; } .rtl table.table1 thead th span { padding-left: 0; padding-right: 7px; } .rtl table.table1 tbody th { text-align: right; } /* Specific column styles */ .rtl table.table1 .name { text-align: right; } .rtl table.table1 .joined { text-align: right; } .rtl table.table1 .active { text-align: right; } .rtl table.table1 .info { text-align: right; } .rtl table.table1 thead .autocol { padding-left: 0; padding-right: 1em; } .rtl table.table1 span.rank-img { float: left; } .rtl table.info tbody th { text-align: left; } .rtl .forumbg table.table1 { margin: 0 -1px -1px -2px; } /* Misc layout styles ---------------------------------------- */ /* column[1-2] styles are containers for two column layouts */ .rtl .column1 { float: right; clear: right; } .rtl .column2 { float: left; clear: left; } /* General classes for placing floating blocks */ .rtl .left-box { float: right; text-align: right; } .rtl .right-box { float: left; text-align: left; } .rtl dl.details dt { float: right; clear: right; text-align: left; } .rtl dl.details dd { margin-right: 0; margin-left: 0; padding-right: 5px; padding-left: 0; float: right; } *:first-child+html dl.details dd { margin-right: 30%; float: none; } * html dl.details dd { margin-right: 30%; float: none; } /* Pagination ----------------------------------------*/ .pagination > ul { margin: 5px 0 0; } .row .pagination .ellipsis + li { display: none !important; } /* Responsive tables ----------------------------------------*/ table { border-collapse: collapse; border-spacing: 0; } table.responsive, table.responsive tbody, table.responsive tr, table.responsive td { display: block; } table.responsive thead, table.responsive th { display: none; } table.responsive.show-header thead, table.responsive.show-header th:first-child { display: block; width: auto !important; text-align: left !important; } table.responsive.show-header th:first-child span.rank-img { display: none; } table.responsive tr { margin: 2px 0; } table.responsive td { width: auto !important; text-align: left !important; padding: 4px; } table.responsive td.empty { display: none !important; } table.responsive td > dfn { display: inline-block !important; } table.responsive td > dfn:after { content: ':'; padding-right: 5px; } table.responsive span.rank-img { float: none; padding-right: 5px; } table.responsive.memberlist td:first-child input[type="checkbox"] { float: right; } /* Tabbed menu Based on: http://www.alistapart.com/articles/slidingdoors2/ ----------------------------------------*/ #tabs { line-height: normal; margin: 0 0 -6px 7px; min-width: 600px; } .rtl #tabs { margin: 0 7px -6px 0; } #tabs ul { margin:0; padding: 0; list-style: none; } #tabs li { display: inline; margin: 0; padding: 0; font-size: 0.85em; font-weight: bold; } #tabs a { float: left; background:url("images/bg_tabs1.gif") no-repeat 0% -34px; margin: 0 1px 0 0; padding: 0 0 0 7px; text-decoration: none; position: relative; } .rtl #tabs a { float: right; } #tabs a span { float: left; display: block; background: url("images/bg_tabs2.gif") no-repeat 100% -34px; padding: 7px 10px 4px 4px; color: #767676; white-space: nowrap; font-family: Arial, Helvetica, sans-serif; text-transform: uppercase; font-weight: bold; } .rtl #tabs a span { float: right; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ #tabs a span, .rtl #tabs a span { float:none;} /* End hack */ #tabs a:hover span { color: #BC2A4D; } #tabs #activetab a { background-position: 0 0; border-bottom: 1px solid #DCDEE2; } #tabs #activetab a span { background-position: 100% 0; padding-bottom: 5px; color: #23649F; } #tabs a:hover { background-position: 0 -69px; } #tabs a:hover span { background-position: 100% -69px; } #tabs #activetab a:hover span { color: #115098; } /* Forms ----------------------------------------*/ fieldset dt, fieldset.fields1 dt, fieldset.fields2 dt { width: auto; float: none; } fieldset dd, fieldset.fields1 dd, fieldset.fields2 dd { margin-left: 0px; } textarea, dd textarea, .message-box textarea { width: 100%; -moz-box-sizing: border-box; box-sizing: border-box; } dl.pmlist dt { width: auto !important; margin-bottom: 5px; } dl.pmlist dd { display: inline-block; margin-left: 0 !important; } dl.pmlist dd:first-of-type { padding-left: 20px; } .smiley-box, .message-box { float: none; width: auto; } .smiley-box { margin-top: 5px; } .bbcode-status { display: none; } .colour-palette, .colour-palette tbody, .colour-palette tr { display: block; } .colour-palette td { display: inline-block; margin-right: 2px; } .horizontal-palette td:nth-child(2n), .vertical-palette tr:nth-child(2n) { display: none; } fieldset.quick-login label { display: block; margin-bottom: 5px; white-space: normal; } fieldset.quick-login label > span { display: inline-block; min-width: 100px; } fieldset.quick-login input.inputbox { width: 85%; max-width: 300px; margin-left: 20px; } fieldset.quick-login label[for="autologin"] { display: inline-block; text-align: right; min-width: 50%; } /* User profile ----------------------------------------*/ .column1, .column2, .left-box.profile-details { float: none; width: auto; } /* Polls ----------------------------------------*/ fieldset.polls dt { width: 90%; } fieldset.polls dd.resultbar { padding-left: 20px; } fieldset.polls dd.poll_option_percent { width: 20%; } fieldset.polls dd.resultbar, fieldset.polls dd.poll_option_percent { margin-top: 5px; } /* Post ----------------------------------------*/ .postbody { position: inherit; } .postprofile, .postbody, .search .postbody { display: block; width: auto; float: none; padding: 0; min-height: 0; } .post .postprofile { width: auto; border-width: 0 0 1px 0; padding-bottom: 5px; margin: 0; margin-bottom: 5px; min-height: 40px; overflow: hidden; } .postprofile dd { display: none; } .postprofile dt, .postprofile dd.profile-rank, .search .postprofile dd { display: block; margin: 0; } .postprofile .has-avatar .avatar-container { margin: 0; overflow: inherit; } .postprofile .avatar-container:after { clear: none; } .postprofile .avatar { margin-right: 5px; } .postprofile .avatar img { width: auto !important; height: auto !important; max-height: 32px; } .has-profile .postbody h3 { margin-left: 0 !important; margin-right: 0 !important; } .has-profile .post-buttons { right: 30px; top: 15px; } .online { background-size: 40px; } /* Misc stuff ----------------------------------------*/ h2 { margin-top: .5em; } p { margin-bottom: .5em; overflow: hidden; } p.rightside { margin-bottom: 0; } fieldset.display-options label { display: block; clear: both; margin-bottom: 5px; } dl.mini dd.pm-legend { float: left; min-width: 200px; } .topicreview { margin: 0 -5px; padding: 0 5px; } fieldset.display-actions { white-space: normal; } .phpbb_alert { width: auto; margin: 0 5px; } .attach-comment dfn { width: 100%; } } @media (min-width: 700px) { .postbody { width: 70%; } } @media (min-width: 850px) { .postbody { width: 76%; } } @media (max-width: 850px) { .postprofile { width: 28%; } } @media (min-width: 701px) and (max-width: 950px) { ul.topiclist dt { margin-right: -410px; } ul.topiclist dt .list-inner { margin-right: 410px; } dd.posts, dd.topics, dd.views { width: 80px; } } /* Show scrollbars for items with overflow on iOS devices ----------------------------------------*/ .postbody .content::-webkit-scrollbar, .topicreview::-webkit-scrollbar, .post_details::-webkit-scrollbar, .codebox code::-webkit-scrollbar, .attachbox dd::-webkit-scrollbar, .attach-image::-webkit-scrollbar, .dropdown-extended ul::-webkit-scrollbar { width: 8px; height: 8px; -webkit-appearance: none; background: rgba(0, 0, 0, .1); border-radius: 3px; } .postbody .content::-webkit-scrollbar-thumb, .topicreview::-webkit-scrollbar-thumb, .post_details::-webkit-scrollbar-thumb, .codebox code::-webkit-scrollbar-thumb, .attachbox dd::-webkit-scrollbar-thumb, .attach-image::-webkit-scrollbar-thumb, .dropdown-extended ul::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, .3); border-radius: 3px; } #memberlist tr.inactive, #team tr.inactive { font-style: italic; } templates/SwiftBlue/admin0000755000000000000000000000000014571075317012671 5ustar templates/SwiftBlue/admin/SwiftBlue.css0000755000000000000000000000016014516425665015372 0ustar @CHARSET "UTF-8"; BODY { margin:5px; } TH, TD { font-size: 68.5%; } .gen { font-size: 1.1em; } templates/SwiftBlue/admin/admin.css0000755000000000000000000000154514516425665014566 0ustar fieldset { border: 0px; } div#admintabs { display:inline; } div#admintabs ul { margin: 0px; padding: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #000; line-height: 30px; white-space: nowrap; } div#admintabs li { margin: 2px; padding: 2px; list-style-type: none; display: inline; border: 1px solid #777; background-color: #fff; } div#admintabs li a { text-decoration: none; padding: 2px 10px; color: #000; } div#admintabs li a:link { color: #000: } div#admintabs li a:visited { color: #000; } div#admintabs li a:hover { color: #777; } div#admintabs li.activetab { border: 1px solid #777; background-color: #ddd; } div#admintabs li.activetab a, div#tabs li.activetab a:link, div#tabs li.activetab a:visited, div#tabs li.activetab a:hover { color: #777; }templates/SwiftBlue/admin/index.htm0000755000000000000000000000026314516425665014601 0ustar
BluePink BluePink
XHost
Oferim servicii de instalare, configurare si monitorizare servere linux (router, firewall, dns, web, email, baze de date, aplicatii, server de backup, domain controller, share de retea) de la 50 eur / instalare. Pentru detalii accesati site-ul BluePink.
templates/SwiftBlue/admin/mainpage_header.html0000755000000000000000000000302514516425665016736 0ustar {META} {SITENAME} - {L_MX_ADMIN} {MX_ADDITIONAL_CSS} {MX_ICON_CSS}
logo MX-Publisher

{ADMIN_TITLE}

{L_LOGGED_IN_AS} {USERNAME}{L_LOGOUT} ] {L_ADMIN_INDEX}{L_PORTAL_INDEX}

{L_SKIP}

templates/SwiftBlue/ajax.js0000755000000000000000000003013714516425665013154 0ustar /* global phpbb */ (function($) { // Avoid conflicts with other libraries 'use strict'; // This callback will mark all forum icons read phpbb.addAjaxCallback('mark_forums_read', function(res) { var readTitle = res.NO_UNREAD_POSTS; var unreadTitle = res.UNREAD_POSTS; var iconsArray = { forum_unread: 'forum_read', forum_unread_subforum: 'forum_read_subforum', forum_unread_locked: 'forum_read_locked' }; $('li.row').find('dl[class*="forum_unread"]').each(function() { var $this = $(this); $.each(iconsArray, function(unreadClass, readClass) { if ($this.hasClass(unreadClass)) { $this.removeClass(unreadClass).addClass(readClass); } }); $this.children('dt[title="' + unreadTitle + '"]').attr('title', readTitle); }); // Mark subforums read $('a.subforum[class*="unread"]').removeClass('unread').addClass('read').children('.icon.icon-red').removeClass('icon-red').addClass('icon-blue'); // Mark topics read if we are watching a category and showing active topics if ($('#active_topics').length) { phpbb.ajaxCallbacks.mark_topics_read.call(this, res, false); } // Update mark forums read links $('[data-ajax="mark_forums_read"]').attr('href', res.U_MARK_FORUMS); phpbb.closeDarkenWrapper(3000); }); /** * This callback will mark all topic icons read * * @param {bool} [update_topic_links=true] Whether "Mark topics read" links * should be updated. Defaults to true. */ phpbb.addAjaxCallback('mark_topics_read', function(res, updateTopicLinks) { var readTitle = res.NO_UNREAD_POSTS; var unreadTitle = res.UNREAD_POSTS; var iconsArray = { global_unread: 'global_read', announce_unread: 'announce_read', sticky_unread: 'sticky_read', topic_unread: 'topic_read' }; var iconsState = ['', '_hot', '_hot_mine', '_locked', '_locked_mine', '_mine']; var unreadClassSelectors; var classMap = {}; var classNames = []; if (typeof updateTopicLinks === 'undefined') { updateTopicLinks = true; } $.each(iconsArray, function(unreadClass, readClass) { $.each(iconsState, function(key, value) { // Only topics can be hot if ((value === '_hot' || value === '_hot_mine') && unreadClass !== 'topic_unread') { return true; } classMap[unreadClass + value] = readClass + value; classNames.push(unreadClass + value); }); }); unreadClassSelectors = '.' + classNames.join(',.'); $('li.row').find(unreadClassSelectors).each(function() { var $this = $(this); $.each(classMap, function(unreadClass, readClass) { if ($this.hasClass(unreadClass)) { $this.removeClass(unreadClass).addClass(readClass); } }); $this.children('dt[title="' + unreadTitle + '"]').attr('title', readTitle); }); // Remove link to first unread post $('a.unread').has('.icon-red').remove(); // Update mark topics read links if (updateTopicLinks) { $('[data-ajax="mark_topics_read"]').attr('href', res.U_MARK_TOPICS); } phpbb.closeDarkenWrapper(3000); }); // This callback will mark all notifications read phpbb.addAjaxCallback('notification.mark_all_read', function(res) { if (typeof res.success !== 'undefined') { phpbb.markNotifications($('[data-notification-unread="true"]'), 0); phpbb.closeDarkenWrapper(3000); } }); // This callback will mark a notification read phpbb.addAjaxCallback('notification.mark_read', function(res) { if (typeof res.success !== 'undefined') { var unreadCount = Number($('#notification-button strong').html()) - 1; phpbb.markNotifications($(this).parent('[data-notification-unread="true"]'), unreadCount); } }); /** * Mark notification popup rows as read. * * @param {jQuery} $popup jQuery object(s) to mark read. * @param {int} unreadCount The new unread notifications count. */ phpbb.markNotifications = function($popup, unreadCount) { // Remove the unread status. $popup.removeClass('bg2'); $popup.find('a.mark_read').remove(); // Update the notification link to the real URL. $popup.each(function() { var link = $(this).find('a'); link.attr('href', link.attr('data-real-url')); }); // Update the unread count. $('strong', '#notification-button').html(unreadCount); // Remove the Mark all read link and hide notification count if there are no unread notifications. if (!unreadCount) { $('#mark_all_notifications').remove(); $('#notification-button > strong').addClass('hidden'); } // Update page title var $title = $('title'); var originalTitle = $title.text().replace(/(\((\d+)\))/, ''); $title.text((unreadCount ? '(' + unreadCount + ')' : '') + originalTitle); }; // This callback finds the post from the delete link, and removes it. phpbb.addAjaxCallback('post_delete', function() { var $this = $(this), postId; if ($this.attr('data-refresh') === undefined) { postId = $this[0].href.split('&p=')[1]; var post = $this.parents('#p' + postId).css('pointer-events', 'none'); if (post.hasClass('bg1') || post.hasClass('bg2')) { var posts1 = post.nextAll('.bg1'); post.nextAll('.bg2').removeClass('bg2').addClass('bg1'); posts1.removeClass('bg1').addClass('bg2'); } post.fadeOut(function() { $(this).remove(); }); } }); // This callback removes the approve / disapprove div or link. phpbb.addAjaxCallback('post_visibility', function(res) { var remove = (res.visible) ? $(this) : $(this).parents('.post'); $(remove).css('pointer-events', 'none').fadeOut(function() { $(this).remove(); }); if (res.visible) { // Remove the "Deleted by" message from the post on restoring. remove.parents('.post').find('.post_deleted_msg').css('pointer-events', 'none').fadeOut(function() { $(this).remove(); }); } }); // This removes the parent row of the link or form that fired the callback. phpbb.addAjaxCallback('row_delete', function() { $(this).parents('tr').remove(); }); // This handles friend / foe additions removals. phpbb.addAjaxCallback('zebra', function(res) { var zebra; if (res.success) { zebra = $('.zebra'); zebra.first().html(res.MESSAGE_TEXT); zebra.not(':first').html(' ').prev().html(' '); } }); /** * This callback updates the poll results after voting. */ phpbb.addAjaxCallback('vote_poll', function(res) { if (typeof res.success !== 'undefined') { var poll = $(this).closest('.topic_poll'); var panel = poll.find('.panel'); var resultsVisible = poll.find('dl:first-child .resultbar').is(':visible'); var mostVotes = 0; // Set min-height to prevent the page from jumping when the content changes var updatePanelHeight = function (height) { height = (typeof height === 'undefined') ? panel.find('.inner').outerHeight() : height; panel.css('min-height', height); }; updatePanelHeight(); // Remove the View results link if (!resultsVisible) { poll.find('.poll_view_results').hide(500); } if (!res.can_vote) { poll.find('.polls, .poll_max_votes, .poll_vote, .poll_option_select').fadeOut(500, function () { poll.find('.resultbar, .poll_option_percent, .poll_total_votes').show(); }); } else { // If the user can still vote, simply slide down the results poll.find('.resultbar, .poll_option_percent, .poll_total_votes').show(500); } // Get the votes count of the highest poll option poll.find('[data-poll-option-id]').each(function() { var option = $(this); var optionId = option.attr('data-poll-option-id'); mostVotes = (res.vote_counts[optionId] >= mostVotes) ? res.vote_counts[optionId] : mostVotes; }); // Update the total votes count poll.find('.poll_total_vote_cnt').html(res.total_votes); // Update each option poll.find('[data-poll-option-id]').each(function() { var $this = $(this); var optionId = $this.attr('data-poll-option-id'); var voted = (typeof res.user_votes[optionId] !== 'undefined'); var mostVoted = (res.vote_counts[optionId] === mostVotes); var percent = (!res.total_votes) ? 0 : Math.round((res.vote_counts[optionId] / res.total_votes) * 100); var percentRel = (mostVotes === 0) ? 0 : Math.round((res.vote_counts[optionId] / mostVotes) * 100); var altText; altText = $this.attr('data-alt-text'); if (voted) { $this.attr('title', $.trim(altText)); } else { $this.attr('title', ''); }; $this.toggleClass('voted', voted); $this.toggleClass('most-votes', mostVoted); // Update the bars var bar = $this.find('.resultbar div'); var barTimeLapse = (res.can_vote) ? 500 : 1500; var newBarClass = (percent === 100) ? 'pollbar5' : 'pollbar' + (Math.floor(percent / 20) + 1); setTimeout(function () { bar.animate({ width: percentRel + '%' }, 500) .removeClass('pollbar1 pollbar2 pollbar3 pollbar4 pollbar5') .addClass(newBarClass) .html(res.vote_counts[optionId]); var percentText = percent ? percent + '%' : res.NO_VOTES; $this.find('.poll_option_percent').html(percentText); }, barTimeLapse); }); if (!res.can_vote) { poll.find('.polls').delay(400).fadeIn(500); } // Display "Your vote has been cast." message. Disappears after 5 seconds. var confirmationDelay = (res.can_vote) ? 300 : 900; poll.find('.vote-submitted').delay(confirmationDelay).slideDown(200, function() { if (resultsVisible) { updatePanelHeight(); } $(this).delay(5000).fadeOut(500, function() { resizePanel(300); }); }); // Remove the gap resulting from removing options setTimeout(function() { resizePanel(500); }, 1500); var resizePanel = function (time) { var panelHeight = panel.height(); var innerHeight = panel.find('.inner').outerHeight(); if (panelHeight !== innerHeight) { panel.css({ minHeight: '', height: panelHeight }) .animate({ height: innerHeight }, time, function () { panel.css({ minHeight: innerHeight, height: '' }); }); } }; } }); /** * Show poll results when clicking View results link. */ $('.poll_view_results a').click(function(e) { // Do not follow the link e.preventDefault(); var $poll = $(this).parents('.topic_poll'); $poll.find('.resultbar, .poll_option_percent, .poll_total_votes').show(500); $poll.find('.poll_view_results').hide(500); }); $('[data-ajax]').each(function() { var $this = $(this); var ajax = $this.attr('data-ajax'); var filter = $this.attr('data-filter'); if (ajax !== 'false') { var fn = (ajax !== 'true') ? ajax : null; filter = (filter !== undefined) ? phpbb.getFunctionByName(filter) : null; phpbb.ajaxify({ selector: this, refresh: $this.attr('data-refresh') !== undefined, filter: filter, callback: fn }); } }); /** * This simply appends #preview to the action of the * QR action when you click the Full Editor & Preview button */ $('#qr_full_editor').click(function() { $('#qr_postform').attr('action', function(i, val) { return val + '#preview'; }); }); /** * Make the display post links to use JS */ $('.display_post').click(function(e) { // Do not follow the link e.preventDefault(); var postId = $(this).attr('data-post-id'); $('#post_content' + postId).show(); $('#profile' + postId).show(); $('#post_hidden' + postId).hide(); }); /** * Toggle the member search panel in memberlist.php. * * If user returns to search page after viewing results the search panel is automatically displayed. * In any case the link will toggle the display status of the search panel and link text will be * appropriately changed based on the status of the search panel. */ $('#member_search').click(function () { var $memberlistSearch = $('#memberlist_search'); $memberlistSearch.slideToggle('fast'); phpbb.ajaxCallbacks.alt_text.call(this); // Focus on the username textbox if it's available and displayed if ($memberlistSearch.is(':visible')) { $('#username').focus(); } return false; }); /** * Automatically resize textarea */ $(function() { var $textarea = $('textarea:not(#message-box textarea, .no-auto-resize)'); phpbb.resizeTextArea($textarea, { minHeight: 75, maxHeight: 250 }); phpbb.resizeTextArea($('textarea', '#message-box')); }); })(jQuery); // Avoid conflicts with other libraries templates/SwiftBlue/alternate.css0000755000000000000000000000416614516425665014367 0ustar /** * An alternate stylesheet. * * @package AutoIndex * @author Justin Hagstrom * @version 1.0.0 (February 03, 2005) * * @copyright Copyright (C) 2002-2005 Justin Hagstrom * @license http://www.gnu.org/licenses/gpl.html GNU General Public License (GPL) * * @link http://autoindex.sourceforge.net */ /* Body */ .autoindex_body, html { font-family: verdana, lucidia, sans-serif; font-size: 13px; background-color: #FCFCFC; } /* Images */ .autoindex_body img { border: none; } /* Tables */ .autoindex_table { width: 100%; border: none; border-spacing: 2px; } .light_row { background-color: #FEFEFE; font-size: 12px; } .dark_row { background-color: #EEEEEE; font-size: 12px; } .light_row:hover, .dark_row:hover { background-color: #FFF2BF; } .autoindex_td { border: 1px solid #FAFAFA; font-size: 12px; padding: 1px; text-align: left; white-space: nowrap; } .autoindex_td_right { border: 1px solid #FAFAFA; font-size: 12px; padding: 1px; text-align: right; white-space: nowrap; } .autoindex_td:hover, .autoindex_td_right:hover { font-size: 12px; padding: 1px; border: 1px solid #FFCC00; } .autoindex_th { background-color: #FFCC00; border: 1px solid #AA9339; font-size: 12px; padding: 2px; } /* Links */ .plain_link { color: #000000; text-decoration: none; } .autoindex_a:visited, .autoindex_a:active { color: #00008F; text-decoration: none; } .autoindex_a:link { color: #0000FF; text-decoration: none; } .autoindex_a:hover { color: #392266; text-decoration: none; } /* Buttons */ .button { color: #707070; background-color: #F2F6FC; font-family: arial, sans-serif; font-size: 11px; text-align: left; vertical-align: middle; font-weight: bold; cursor: pointer; border: 0px outset #CBCBCB; padding: 3px 10px 3px 10px; } /* Misc. */ .paragraph { background: #F2F6FC; color: #000020; font-size: 13px; } .autoindex_hr { color: #000020; background-color: #000020; border: none; width: 75%; height: 1px; } .autoindex_small { font-size: 10px; }templates/SwiftBlue/bbcode.html0000755000000000000000000001265014516425665013777 0ustar
  • {if:download_count} {end if:download_count} {if:description_file} {end if:description_file} templates/SwiftBlue/editor.js0000755000000000000000000002225414516425665013520 0ustar /** * bbCode control by subBlue design [ www.subBlue.com ] * Includes unixsafe colour palette selector by SHS` */ // Startup variables var imageTag = false; var theSelection = false; // Check for Browser & Platform for PC & IE specific bits // More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html var clientPC = navigator.userAgent.toLowerCase(); // Get client info var clientVer = parseInt(navigator.appVersion); // Get browser version var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1)); var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1)); var baseHeight; onload_functions.push('initInsertions()'); /** * Shows the help messages in the helpline window */ function helpline(help) { document.forms[form_name].helpbox.value = help_line[help]; } /** * Fix a bug involving the TextRange object. From * http://www.frostjedi.com/terra/scripts/demo/caretBug.html */ function initInsertions() { var doc; if (document.forms[form_name]) { doc = document; } else { doc = opener.document; } var textarea = doc.forms[form_name].elements[text_name]; if (is_ie && typeof(baseHeight) != 'number') { textarea.focus(); baseHeight = doc.selection.createRange().duplicate().boundingHeight; if (!document.forms[form_name]) { document.body.focus(); } } } /** * bbstyle */ function bbstyle(bbnumber) { if (bbnumber != -1) { bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]); } else { insert_text('[*]'); document.forms[form_name].elements[text_name].focus(); } } /** * Apply bbcodes */ function bbfontstyle(bbopen, bbclose) { theSelection = false; var textarea = document.forms[form_name].elements[text_name]; textarea.focus(); if ((clientVer >= 4) && is_ie && is_win) { // Get text selection theSelection = document.selection.createRange().text; if (theSelection) { // Add tags around selection document.selection.createRange().text = bbopen + theSelection + bbclose; document.forms[form_name].elements[text_name].focus(); theSelection = ''; return; } } else if (document.forms[form_name].elements[text_name].selectionEnd && (document.forms[form_name].elements[text_name].selectionEnd - document.forms[form_name].elements[text_name].selectionStart > 0)) { mozWrap(document.forms[form_name].elements[text_name], bbopen, bbclose); document.forms[form_name].elements[text_name].focus(); theSelection = ''; return; } //The new position for the cursor after adding the bbcode var caret_pos = getCaretPosition(textarea).start; var new_pos = caret_pos + bbopen.length; // Open tag insert_text(bbopen + bbclose); // Center the cursor when we don't have a selection // Gecko and proper browsers if (!isNaN(textarea.selectionStart)) { textarea.selectionStart = new_pos; textarea.selectionEnd = new_pos; } // IE else if (document.selection) { var range = textarea.createTextRange(); range.move("character", new_pos); range.select(); storeCaret(textarea); } textarea.focus(); return; } /** * Insert text at position */ function insert_text(text, spaces, popup) { var textarea; if (!popup) { textarea = document.forms[form_name].elements[text_name]; } else { textarea = opener.document.forms[form_name].elements[text_name]; } if (spaces) { text = ' ' + text + ' '; } if (!isNaN(textarea.selectionStart)) { var sel_start = textarea.selectionStart; var sel_end = textarea.selectionEnd; mozWrap(textarea, text, '') textarea.selectionStart = sel_start + text.length; textarea.selectionEnd = sel_end + text.length; } else if (textarea.createTextRange && textarea.caretPos) { if (baseHeight != textarea.caretPos.boundingHeight) { textarea.focus(); storeCaret(textarea); } var caret_pos = textarea.caretPos; caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; } else { textarea.value = textarea.value + text; } if (!popup) { textarea.focus(); } } /** * Add inline attachment at position */ function attach_inline(index, filename) { insert_text('[attachment=' + index + ']' + filename + '[/attachment]'); document.forms[form_name].elements[text_name].focus(); } /** * Add quote text to message */ function addquote(post_id, username) { var message_name = 'message_' + post_id; var theSelection = ''; var divarea = false; if (document.all) { divarea = document.all[message_name]; } else { divarea = document.getElementById(message_name); } // Get text selection - not only the post content :( if (window.getSelection) { theSelection = window.getSelection().toString(); } else if (document.getSelection) { theSelection = document.getSelection(); } else if (document.selection) { theSelection = document.selection.createRange().text; } if (theSelection == '' || typeof theSelection == 'undefined' || theSelection == null) { if (divarea.innerHTML) { theSelection = divarea.innerHTML.replace(/
    /ig, '\n'); theSelection = theSelection.replace(//ig, '\n'); theSelection = theSelection.replace(/<\;/ig, '<'); theSelection = theSelection.replace(/>\;/ig, '>'); theSelection = theSelection.replace(/&\;/ig, '&'); theSelection = theSelection.replace(/ \;/ig, ' '); } else if (document.all) { theSelection = divarea.innerText; } else if (divarea.textContent) { theSelection = divarea.textContent; } else if (divarea.firstChild.nodeValue) { theSelection = divarea.firstChild.nodeValue; } } if (theSelection) { insert_text('[quote="' + username + '"]' + theSelection + '[/quote]'); } return; } /** * From http://www.massless.org/mozedit/ */ function mozWrap(txtarea, open, close) { var selLength = txtarea.textLength; var selStart = txtarea.selectionStart; var selEnd = txtarea.selectionEnd; var scrollTop = txtarea.scrollTop; if (selEnd == 1 || selEnd == 2) { selEnd = selLength; } var s1 = (txtarea.value).substring(0,selStart); var s2 = (txtarea.value).substring(selStart, selEnd) var s3 = (txtarea.value).substring(selEnd, selLength); txtarea.value = s1 + open + s2 + close + s3; txtarea.selectionStart = selEnd + open.length + close.length; txtarea.selectionEnd = txtarea.selectionStart; txtarea.focus(); txtarea.scrollTop = scrollTop; return; } /** * Insert at Caret position. Code from * http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130 */ function storeCaret(textEl) { if (textEl.createTextRange) { textEl.caretPos = document.selection.createRange().duplicate(); } } /** * Color pallette */ function colorPalette(dir, width, height) { var r = 0, g = 0, b = 0; var numberList = new Array(6); var color = ''; numberList[0] = '00'; numberList[1] = '40'; numberList[2] = '80'; numberList[3] = 'BF'; numberList[4] = 'FF'; document.writeln('
    {USERNAME} {L_WROTE}:
    {L_QUOTE}:
    {L_CODE}:
    {DESCRIPTION} {EMAIL}


    templates/SwiftBlue/biblia_online.js0000755000000000000000000000076414524237615015015 0ustar document.writeln(""); document.writeln("");templates/SwiftBlue/collapsiblecategories.js0000755000000000000000000000171514516425665016570 0ustar (function($) { // Avoid conflicts with other libraries 'use strict'; // Get the collapsible element (has class .topiclist.forums OR .collapsible) $.fn.getCollapsible = function() { return this.closest('.forabg').find('.topiclist.forums, .collapsible').eq(0); }; $('a.collapse-btn').each(function() { var $this = $(this), hidden = $this.attr('data-hidden'), $content = $this.getCollapsible(); // Return if no collapsible content could be found if (!$content.length) { return; } // Unhide the collapse buttons (makes them JS dependent) $this.show(); // Hide hidden forums on load if (hidden) { $content.hide(); } }); phpbb.addAjaxCallback('phpbb_collapse', function(res) { if (res.success) { $(this) .toggleClass('collapse-show collapse-hide') .getCollapsible() .stop(true, true) .slideToggle('fast') ; } }); })(jQuery); // Avoid conflicts with other libraries templates/SwiftBlue/cookieconsent.min.css0000755000000000000000000001154314524237615016025 0ustar .cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s} .cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1} .cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em} @media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}} .cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block} .cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}templates/SwiftBlue/cookieconsent.min.js0000755000000000000000000004720014524237615015650 0ustar !function(e){if(!e.hasInitialised){var t={escapeRegExp:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},hasClass:function(e,t){var i=" ";return 1===e.nodeType&&(i+e.className+i).replace(/[\n\t]/g,i).indexOf(i+t+i)>=0},addClass:function(e,t){e.className+=" "+t},removeClass:function(e,t){var i=new RegExp("\\b"+this.escapeRegExp(t)+"\\b");e.className=e.className.replace(i,"")},interpolateString:function(e,t){return e.replace(/{{([a-z][a-z0-9\-_]*)}}/gi,function(e){return t(arguments[1])||""})},getCookie:function(e){var t=("; "+document.cookie).split("; "+e+"=");return t.length<2?void 0:t.pop().split(";").shift()},setCookie:function(e,t,i,n,o,s){var r=new Date;r.setHours(r.getHours()+24*(i||365));var a=[e+"="+t,"expires="+r.toUTCString(),"path="+(o||"/")];n&&a.push("domain="+n),s&&a.push("secure"),document.cookie=a.join(";")},deepExtend:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(i in e&&this.isPlainObject(e[i])&&this.isPlainObject(t[i])?this.deepExtend(e[i],t[i]):e[i]=t[i]);return e},throttle:function(e,t){var i=!1;return function(){i||(e.apply(this,arguments),i=!0,setTimeout(function(){i=!1},t))}},hash:function(e){var t,i,n=0;if(0===e.length)return n;for(t=0,i=e.length;t=128?"#000":"#fff"},getLuminance:function(e){var t=parseInt(this.normaliseHex(e),16),i=38+(t>>16),n=38+(t>>8&255),o=38+(255&t);return"#"+(16777216+65536*(i<255?i<1?0:i:255)+256*(n<255?n<1?0:n:255)+(o<255?o<1?0:o:255)).toString(16).slice(1)},isMobile:function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},isPlainObject:function(e){return"object"==typeof e&&null!==e&&e.constructor==Object},traverseDOMPath:function(e,i){return e&&e.parentNode?t.hasClass(e,i)?e:this.traverseDOMPath(e.parentNode,i):null}};e.status={deny:"deny",allow:"allow",dismiss:"dismiss"},e.transitionEnd=function(){var e=document.createElement("div"),t={t:"transitionend",OT:"oTransitionEnd",msT:"MSTransitionEnd",MozT:"transitionend",WebkitT:"webkitTransitionEnd"};for(var i in t)if(t.hasOwnProperty(i)&&void 0!==e.style[i+"ransition"])return t[i];return""}(),e.hasTransition=!!e.transitionEnd;var i=Object.keys(e.status).map(t.escapeRegExp);e.customStyles={},e.Popup=function(){var n={enabled:!0,container:null,cookie:{name:"cookieconsent_status",path:"/",domain:"",expiryDays:365,secure:!1},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(e){},onStatusChange:function(e,t){},onRevokeChoice:function(){},onNoCookieLaw:function(e,t){},content:{header:"Cookies used on the website!",message:"This website uses cookies to ensure you get the best experience on our website.",dismiss:"Got it!",allow:"Allow cookies",deny:"Decline",link:"Learn more",href:"https://www.cookiesandyou.com",close:"❌",target:"_blank",policy:"Cookie Policy"},elements:{header:'{{header}} ',message:'{{message}}',messagelink:'{{message}} {{link}}',dismiss:'{{dismiss}}',allow:'{{allow}}',deny:'{{deny}}',link:'{{link}}',close:'{{close}}'},window:'',revokeBtn:'
    {{policy}}
    ',compliance:{info:'
    {{dismiss}}
    ',"opt-in":'
    {{deny}}{{allow}}
    ',"opt-out":'
    {{deny}}{{allow}}
    '},type:"info",layouts:{basic:"{{messagelink}}{{compliance}}","basic-close":"{{messagelink}}{{compliance}}{{close}}","basic-header":"{{header}}{{message}}{{link}}{{compliance}}"},layout:"basic",position:"bottom",theme:"block",static:!1,palette:null,revokable:!1,animateRevokable:!0,showLink:!0,dismissOnScroll:!1,dismissOnTimeout:!1,dismissOnWindowClick:!1,ignoreClicksFrom:["cc-revoke","cc-btn"],autoOpen:!0,autoAttach:!0,whitelistPage:[],blacklistPage:[],overrideHTML:null};function o(){this.initialise.apply(this,arguments)}function s(e){this.openingTimeout=null,t.removeClass(e,"cc-invisible")}function r(t){t.style.display="none",t.removeEventListener(e.transitionEnd,this.afterTransition),this.afterTransition=null}function a(){var e=this.options.position.split("-"),t=[];return e.forEach(function(e){t.push("cc-"+e)}),t}function c(n){var o=this.options,s=document.createElement("div"),r=o.container&&1===o.container.nodeType?o.container:document.body;s.innerHTML=n;var a=s.children[0];return a.style.display="none",t.hasClass(a,"cc-window")&&e.hasTransition&&t.addClass(a,"cc-invisible"),this.onButtonClick=function(n){var o=t.traverseDOMPath(n.target,"cc-btn")||n.target;if(t.hasClass(o,"cc-btn")){var s=o.className.match(new RegExp("\\bcc-("+i.join("|")+")\\b")),r=s&&s[1]||!1;r&&(this.setStatus(r),this.close(!0))}t.hasClass(o,"cc-close")&&(this.setStatus(e.status.dismiss),this.close(!0));t.hasClass(o,"cc-revoke")&&this.revokeChoice()}.bind(this),a.addEventListener("click",this.onButtonClick),o.autoAttach&&(r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a)),a}function l(e){return"000000"==(e=t.normaliseHex(e))?"#222":t.getLuminance(e)}function u(e,t){for(var i=0,n=e.length;i=0;o&&t(n);return o}.call(this)&&(this.options.enabled=!1),u(this.options.blacklistPage,location.pathname)&&(this.options.enabled=!1),u(this.options.whitelistPage,location.pathname)&&(this.options.enabled=!0);var o=this.options.window.replace("{{classes}}",function(){var i=this.options,n="top"==i.position||"bottom"==i.position?"banner":"floating";t.isMobile()&&(n="floating");var o=["cc-"+n,"cc-type-"+i.type,"cc-theme-"+i.theme];i.static&&o.push("cc-static");o.push.apply(o,a.call(this));(function(i){var n=t.hash(JSON.stringify(i)),o="cc-color-override-"+n,s=t.isPlainObject(i);this.customStyleSelector=s?o:null,s&&function(i,n,o){if(e.customStyles[i])return void++e.customStyles[i].references;var s={},r=n.popup,a=n.button,c=n.highlight;r&&(r.text=r.text?r.text:t.getContrast(r.background),r.link=r.link?r.link:r.text,s[o+".cc-window"]=["color: "+r.text,"background-color: "+r.background],s[o+".cc-revoke"]=["color: "+r.text,"background-color: "+r.background],s[o+" .cc-link,"+o+" .cc-link:active,"+o+" .cc-link:visited"]=["color: "+r.link],a&&(a.text=a.text?a.text:t.getContrast(a.background),a.border=a.border?a.border:"transparent",s[o+" .cc-btn"]=["color: "+a.text,"border-color: "+a.border,"background-color: "+a.background],a.padding&&s[o+" .cc-btn"].push("padding: "+a.padding),"transparent"!=a.background&&(s[o+" .cc-btn:hover, "+o+" .cc-btn:focus"]=["background-color: "+(a.hover||l(a.background))]),c?(c.text=c.text?c.text:t.getContrast(c.background),c.border=c.border?c.border:"transparent",s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+c.text,"border-color: "+c.border,"background-color: "+c.background]):s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+r.text]));var u=document.createElement("style");document.head.appendChild(u),e.customStyles[i]={references:1,element:u.sheet};var h=-1;for(var p in s)s.hasOwnProperty(p)&&u.sheet.insertRule(p+"{"+s[p].join(";")+"}",++h)}(n,i,"."+o);return s}).call(this,this.options.palette);this.customStyleSelector&&o.push(this.customStyleSelector);return o}.call(this).join(" ")).replace("{{children}}",function(){var e={},i=this.options;i.showLink||(i.elements.link="",i.elements.messagelink=i.elements.message);Object.keys(i.elements).forEach(function(n){e[n]=t.interpolateString(i.elements[n],function(e){var t=i.content[e];return e&&"string"==typeof t&&t.length?t:""})});var n=i.compliance[i.type];n||(n=i.compliance.info);e.compliance=t.interpolateString(n,function(t){return e[t]});var o=i.layouts[i.layout];o||(o=i.layouts.basic);return t.interpolateString(o,function(t){return e[t]})}.call(this)),s=this.options.overrideHTML;if("string"==typeof s&&s.length&&(o=s),this.options.static){var r=c.call(this,'
    '+o+"
    ");r.style.display="",this.element=r.firstChild,this.element.style.display="none",t.addClass(this.element,"cc-invisible")}else this.element=c.call(this,o);(function(){var i=this.setStatus.bind(this),n=this.close.bind(this),o=this.options.dismissOnTimeout;"number"==typeof o&&o>=0&&(this.dismissTimeout=window.setTimeout(function(){i(e.status.dismiss),n(!0)},Math.floor(o)));var s=this.options.dismissOnScroll;if("number"==typeof s&&s>=0){var r=function(t){window.pageYOffset>Math.floor(s)&&(i(e.status.dismiss),n(!0),window.removeEventListener("scroll",r),this.onWindowScroll=null)};this.options.enabled&&(this.onWindowScroll=r,window.addEventListener("scroll",r))}var a=this.options.dismissOnWindowClick,c=this.options.ignoreClicksFrom;if(a){var l=function(o){for(var s=!1,r=o.path.length,a=c.length,u=0;uo&&(i=!0),i?t.hasClass(n,"cc-active")||t.addClass(n,"cc-active"):t.hasClass(n,"cc-active")&&t.removeClass(n,"cc-active")},200);this.onMouseMove=o,window.addEventListener("mousemove",o)}}}.call(this),this.options.autoOpen&&this.autoOpen()},o.prototype.destroy=function(){this.onButtonClick&&this.element&&(this.element.removeEventListener("click",this.onButtonClick),this.onButtonClick=null),this.dismissTimeout&&(clearTimeout(this.dismissTimeout),this.dismissTimeout=null),this.onWindowScroll&&(window.removeEventListener("scroll",this.onWindowScroll),this.onWindowScroll=null),this.onWindowClick&&(window.removeEventListener("click",this.onWindowClick),this.onWindowClick=null),this.onMouseMove&&(window.removeEventListener("mousemove",this.onMouseMove),this.onMouseMove=null),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null,this.revokeBtn&&this.revokeBtn.parentNode&&this.revokeBtn.parentNode.removeChild(this.revokeBtn),this.revokeBtn=null,function(i){if(t.isPlainObject(i)){var n=t.hash(JSON.stringify(i)),o=e.customStyles[n];if(o&&!--o.references){var s=o.element.ownerNode;s&&s.parentNode&&s.parentNode.removeChild(s),e.customStyles[n]=null}}}(this.options.palette),this.options=null},o.prototype.open=function(t){if(this.element)return this.isOpen()||(e.hasTransition?this.fadeIn():this.element.style.display="",this.options.revokable&&this.toggleRevokeButton(),this.options.onPopupOpen.call(this)),this},o.prototype.close=function(t){if(this.element)return this.isOpen()&&(e.hasTransition?this.fadeOut():this.element.style.display="none",t&&this.options.revokable&&this.toggleRevokeButton(!0),this.options.onPopupClose.call(this)),this},o.prototype.fadeIn=function(){var i=this.element;if(e.hasTransition&&i&&(this.afterTransition&&r.call(this,i),t.hasClass(i,"cc-invisible"))){if(i.style.display="",this.options.static){var n=this.element.clientHeight;this.element.parentNode.style.maxHeight=n+"px"}this.openingTimeout=setTimeout(s.bind(this,i),20)}},o.prototype.fadeOut=function(){var i=this.element;e.hasTransition&&i&&(this.openingTimeout&&(clearTimeout(this.openingTimeout),s.bind(this,i)),t.hasClass(i,"cc-invisible")||(this.options.static&&(this.element.parentNode.style.maxHeight=""),this.afterTransition=r.bind(this,i),i.addEventListener(e.transitionEnd,this.afterTransition),t.addClass(i,"cc-invisible")))},o.prototype.isOpen=function(){return this.element&&""==this.element.style.display&&(!e.hasTransition||!t.hasClass(this.element,"cc-invisible"))},o.prototype.toggleRevokeButton=function(e){this.revokeBtn&&(this.revokeBtn.style.display=e?"":"none")},o.prototype.revokeChoice=function(e){this.options.enabled=!0,this.clearStatus(),this.options.onRevokeChoice.call(this),e||this.autoOpen()},o.prototype.hasAnswered=function(t){return Object.keys(e.status).indexOf(this.getStatus())>=0},o.prototype.hasConsented=function(t){var i=this.getStatus();return i==e.status.allow||i==e.status.dismiss},o.prototype.autoOpen=function(e){!this.hasAnswered()&&this.options.enabled?this.open():this.hasAnswered()&&this.options.revokable&&this.toggleRevokeButton(!0)},o.prototype.setStatus=function(i){var n=this.options.cookie,o=t.getCookie(n.name),s=Object.keys(e.status).indexOf(o)>=0;Object.keys(e.status).indexOf(i)>=0?(t.setCookie(n.name,i,n.expiryDays,n.domain,n.path,n.secure),this.options.onStatusChange.call(this,i,s)):this.clearStatus()},o.prototype.getStatus=function(){return t.getCookie(this.options.cookie.name)},o.prototype.clearStatus=function(){var e=this.options.cookie;t.setCookie(e.name,"",-1,e.domain,e.path)},o}(),e.Location=function(){var e={timeout:5e3,services:["ipinfo"],serviceDefinitions:{ipinfo:function(){return{url:"//ipinfo.io",headers:["Accept: application/json"],callback:function(e,t){try{var i=JSON.parse(t);return i.error?s(i):{code:i.country}}catch(e){return s({error:"Invalid response ("+e+")"})}}}},ipinfodb:function(e){return{url:"//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}",isScript:!0,callback:function(e,t){try{var i=JSON.parse(t);return"ERROR"==i.statusCode?s({error:i.statusMessage}):{code:i.countryCode}}catch(e){return s({error:"Invalid response ("+e+")"})}}}},maxmind:function(){return{url:"//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js",isScript:!0,callback:function(e){window.geoip2?geoip2.country(function(t){try{e({code:t.country.iso_code})}catch(t){e(s(t))}},function(t){e(s(t))}):e(new Error("Unexpected response format. The downloaded script should have exported `geoip2` to the global scope"))}}}}};function i(i){t.deepExtend(this.options={},e),t.isPlainObject(i)&&t.deepExtend(this.options,i),this.currentServiceIndex=-1}function n(e,t,i){var n,o=document.createElement("script");o.type="text/"+(e.type||"javascript"),o.src=e.src||e,o.async=!1,o.onreadystatechange=o.onload=function(){var e=o.readyState;clearTimeout(n),t.done||e&&!/loaded|complete/.test(e)||(t.done=!0,t(),o.onreadystatechange=o.onload=null)},document.body.appendChild(o),n=setTimeout(function(){t.done=!0,t(),o.onreadystatechange=o.onload=null},i)}function o(e,t,i,n,o){var s=new(window.XMLHttpRequest||window.ActiveXObject)("MSXML2.XMLHTTP.3.0");if(s.open(n?"POST":"GET",e,1),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),Array.isArray(o))for(var r=0,a=o.length;r3&&t(s)}),s.send(n)}function s(e){return new Error("Error ["+(e.code||"UNKNOWN")+"]: "+e.error)}return i.prototype.getNextService=function(){var e;do{e=this.getServiceByIdx(++this.currentServiceIndex)}while(this.currentServiceIndex=0,revokable:t.revokable.indexOf(e)>=0,explicitAction:t.explicitAction.indexOf(e)>=0}},i.prototype.applyLaw=function(e,t){var i=this.get(t);return i.hasLaw||(e.enabled=!1,"function"==typeof e.onNoCookieLaw&&e.onNoCookieLaw(t,i)),this.options.regionalLaw&&(i.revokable&&(e.revokable=!0),i.explicitAction&&(e.dismissOnScroll=!1,e.dismissOnTimeout=!1)),e},i}(),e.initialise=functitemplates/SwiftBlue/core.js0000755000000000000000000014317614516425665013171 0ustar /* global bbfontstyle */ var phpbb = {}; phpbb.alertTime = 100; (function($) { // Avoid conflicts with other libraries 'use strict'; // define a couple constants for keydown functions. var keymap = { TAB: 9, ENTER: 13, ESC: 27, ARROW_UP: 38, ARROW_DOWN: 40 }; var $dark = $('#darkenwrapper'); var $loadingIndicator; var phpbbAlertTimer = null; phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined'); // Add ajax pre-filter to prevent cross-domain script execution $.ajaxPrefilter(function(s) { if (s.crossDomain) { s.contents.script = false; } }); /** * Display a loading screen * * @returns {object} Returns loadingIndicator. */ phpbb.loadingIndicator = function() { if (!$loadingIndicator) { $loadingIndicator = $('#loading_indicator'); } if (!$loadingIndicator.is(':visible')) { $loadingIndicator.fadeIn(phpbb.alertTime); // Wait 60 seconds and display an error if nothing has been returned by then. phpbb.clearLoadingTimeout(); phpbbAlertTimer = setTimeout(function() { phpbb.showTimeoutMessage(); }, 60000); } return $loadingIndicator; }; /** * Show timeout message */ phpbb.showTimeoutMessage = function () { var $alert = $('#phpbb_alert'); if ($loadingIndicator.is(':visible')) { phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req')); } }; /** * Clear loading alert timeout */ phpbb.clearLoadingTimeout = function() { if (phpbbAlertTimer !== null) { clearTimeout(phpbbAlertTimer); phpbbAlertTimer = null; } }; /** * Close popup alert after a specified delay * * @param {int} delay Delay in ms until darkenwrapper's click event is triggered */ phpbb.closeDarkenWrapper = function(delay) { phpbbAlertTimer = setTimeout(function() { $('#darkenwrapper').trigger('click'); }, delay); }; /** * Display a simple alert similar to JSs native alert(). * * You can only call one alert or confirm box at any one time. * * @param {string} title Title of the message, eg "Information" (HTML). * @param {string} msg Message to display (HTML). * * @returns {object} Returns the div created. */ phpbb.alert = function(title, msg) { var $alert = $('#phpbb_alert'); $alert.find('.alert_title').html(title); $alert.find('.alert_text').html(msg); $(document).on('keydown.phpbb.alert', function(e) { if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) { phpbb.alert.close($alert, true); e.preventDefault(); e.stopPropagation(); } }); phpbb.alert.open($alert); return $alert; }; /** * Handler for opening an alert box. * * @param {jQuery} $alert jQuery object. */ phpbb.alert.open = function($alert) { if (!$dark.is(':visible')) { $dark.fadeIn(phpbb.alertTime); } if ($loadingIndicator && $loadingIndicator.is(':visible')) { $loadingIndicator.fadeOut(phpbb.alertTime, function() { $dark.append($alert); $alert.fadeIn(phpbb.alertTime); }); } else if ($dark.is(':visible')) { $dark.append($alert); $alert.fadeIn(phpbb.alertTime); } else { $dark.append($alert); $alert.show(); $dark.fadeIn(phpbb.alertTime); } $alert.on('click', function(e) { e.stopPropagation(); }); $dark.one('click', function(e) { phpbb.alert.close($alert, true); e.preventDefault(); e.stopPropagation(); }); $alert.find('.alert_close').one('click', function(e) { phpbb.alert.close($alert, true); e.preventDefault(); }); }; /** * Handler for closing an alert box. * * @param {jQuery} $alert jQuery object. * @param {bool} fadedark Whether to remove dark background. */ phpbb.alert.close = function($alert, fadedark) { var $fade = (fadedark) ? $dark : $alert; $fade.fadeOut(phpbb.alertTime, function() { $alert.hide(); }); $alert.find('.alert_close').off('click'); $(document).off('keydown.phpbb.alert'); }; /** * Display a simple yes / no box to the user. * * You can only call one alert or confirm box at any one time. * * @param {string} msg Message to display (HTML). * @param {function} callback Callback. Bool param, whether the user pressed * yes or no (or whatever their language is). * @param {bool} fadedark Remove the dark background when done? Defaults * to yes. * * @returns {object} Returns the div created. */ phpbb.confirm = function(msg, callback, fadedark) { var $confirmDiv = $('#phpbb_confirm'); $confirmDiv.find('.alert_text').html(msg); fadedark = typeof fadedark !== 'undefined' ? fadedark : true; $(document).on('keydown.phpbb.alert', function(e) { if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) { var name = (e.keyCode === keymap.ENTER) ? 'confirm' : 'cancel'; $('input[name="' + name + '"]').trigger('click'); e.preventDefault(); e.stopPropagation(); } }); $confirmDiv.find('input[type="button"]').one('click.phpbb.confirmbox', function(e) { var confirmed = this.name === 'confirm'; callback(confirmed); $confirmDiv.find('input[type="button"]').off('click.phpbb.confirmbox'); phpbb.alert.close($confirmDiv, fadedark || !confirmed); e.preventDefault(); e.stopPropagation(); }); phpbb.alert.open($confirmDiv); return $confirmDiv; }; /** * Turn a querystring into an array. * * @argument {string} string The querystring to parse. * @returns {object} The object created. */ phpbb.parseQuerystring = function(string) { var params = {}, i, split; string = string.split('&'); for (i = 0; i < string.length; i++) { split = string[i].split('='); params[split[0]] = decodeURIComponent(split[1]); } return params; }; /** * Makes a link use AJAX instead of loading an entire page. * * This function will work for links (both standard links and links which * invoke confirm_box) and forms. It will be called automatically for links * and forms with the data-ajax attribute set, and will call the necessary * callback. * * For more info, view the following page on the phpBB wiki: * http://wiki.phpbb.com/JavaScript_Function.phpbb.ajaxify * * @param {object} options Options. */ phpbb.ajaxify = function(options) { var $elements = $(options.selector), refresh = options.refresh, callback = options.callback, overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true, isForm = $elements.is('form'), isText = $elements.is('input[type="text"], textarea'), eventName; if (isForm) { eventName = 'submit'; } else if (isText) { eventName = 'keyup'; } else { eventName = 'click'; } $elements.on(eventName, function(event) { var action, method, data, submit, that = this, $this = $(this); if ($this.find('input[type="submit"][data-clicked]').attr('data-ajax') === 'false') { return; } /** * Handler for AJAX errors */ function errorHandler(jqXHR, textStatus, errorThrown) { if (typeof console !== 'undefined' && console.log) { console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown); } phpbb.clearLoadingTimeout(); var responseText, errorText = false; try { responseText = JSON.parse(jqXHR.responseText); responseText = responseText.message; } catch (e) {} if (typeof responseText === 'string' && responseText.length > 0) { errorText = responseText; } else if (typeof errorThrown === 'string' && errorThrown.length > 0) { errorText = errorThrown; } else { errorText = $dark.attr('data-ajax-error-text-' + textStatus); if (typeof errorText !== 'string' || !errorText.length) { errorText = $dark.attr('data-ajax-error-text'); } } phpbb.alert($dark.attr('data-ajax-error-title'), errorText); } /** * This is a private function used to handle the callbacks, refreshes * and alert. It calls the callback, refreshes the page if necessary, and * displays an alert to the user and removes it after an amount of time. * * It cannot be called from outside this function, and is purely here to * avoid repetition of code. * * @param {object} res The object sent back by the server. */ function returnHandler(res) { var alert; phpbb.clearLoadingTimeout(); // Is a confirmation required? if (typeof res.S_CONFIRM_ACTION === 'undefined') { // If a confirmation is not required, display an alert and call the // callbacks. if (typeof res.MESSAGE_TITLE !== 'undefined') { alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT); } else { $dark.fadeOut(phpbb.alertTime); if ($loadingIndicator) { $loadingIndicator.fadeOut(phpbb.alertTime); } } if (typeof phpbb.ajaxCallbacks[callback] === 'function') { phpbb.ajaxCallbacks[callback].call(that, res); } // If the server says to refresh the page, check whether the page should // be refreshed and refresh page after specified time if required. if (res.REFRESH_DATA) { if (typeof refresh === 'function') { refresh = refresh(res.REFRESH_DATA.url); } else if (typeof refresh !== 'boolean') { refresh = false; } phpbbAlertTimer = setTimeout(function() { if (refresh) { window.location = res.REFRESH_DATA.url; } // Hide the alert even if we refresh the page, in case the user // presses the back button. $dark.fadeOut(phpbb.alertTime, function() { if (typeof alert !== 'undefined') { alert.hide(); } }); }, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds } } else { // If confirmation is required, display a dialog to the user. phpbb.confirm(res.MESSAGE_BODY, function(del) { if (!del) { return; } phpbb.loadingIndicator(); data = $('
    ' + res.S_HIDDEN_FIELDS + '
    ').serialize(); $.ajax({ url: res.S_CONFIRM_ACTION, type: 'POST', data: data + '&confirm=' + res.YES_VALUE + '&' + $('form', '#phpbb_confirm').serialize(), success: returnHandler, error: errorHandler }); }, false); } } // If the element is a form, POST must be used and some extra data must // be taken from the form. var runFilter = (typeof options.filter === 'function'); data = {}; if (isForm) { action = $this.attr('action').replace('&', '&'); data = $this.serializeArray(); method = $this.attr('method') || 'GET'; if ($this.find('input[type="submit"][data-clicked]')) { submit = $this.find('input[type="submit"][data-clicked]'); data.push({ name: submit.attr('name'), value: submit.val() }); } } else if (isText) { var name = $this.attr('data-name') || this.name; action = $this.attr('data-url').replace('&', '&'); data[name] = this.value; method = 'POST'; } else { action = this.href; data = null; method = 'GET'; } var sendRequest = function() { var dataOverlay = $this.attr('data-overlay'); if (overlay && (typeof dataOverlay === 'undefined' || dataOverlay === 'true')) { phpbb.loadingIndicator(); } var request = $.ajax({ url: action, type: method, data: data, success: returnHandler, error: errorHandler, cache: false }); request.always(function() { if ($loadingIndicator && $loadingIndicator.is(':visible')) { $loadingIndicator.fadeOut(phpbb.alertTime); } }); }; // If filter function returns false, cancel the AJAX functionality, // and return true (meaning that the HTTP request will be sent normally). if (runFilter && !options.filter.call(this, data, event, sendRequest)) { return; } sendRequest(); event.preventDefault(); }); if (isForm) { $elements.find('input:submit').click(function () { var $this = $(this); // Remove data-clicked attribute from any submit button of form $this.parents('form:first').find('input:submit[data-clicked]').removeAttr('data-clicked'); $this.attr('data-clicked', 'true'); }); } return this; }; phpbb.search = { cache: { data: [] }, tpl: [], container: [] }; /** * Get cached search data. * * @param {string} id Search ID. * @returns {bool|object} Cached data object. Returns false if no data exists. */ phpbb.search.cache.get = function(id) { if (this.data[id]) { return this.data[id]; } return false; }; /** * Set search cache data value. * * @param {string} id Search ID. * @param {string} key Data key. * @param {string} value Data value. */ phpbb.search.cache.set = function(id, key, value) { if (!this.data[id]) { this.data[id] = { results: [] }; } this.data[id][key] = value; }; /** * Cache search result. * * @param {string} id Search ID. * @param {string} keyword Keyword. * @param {Array} results Search results. */ phpbb.search.cache.setResults = function(id, keyword, results) { this.data[id].results[keyword] = results; }; /** * Trim spaces from keyword and lower its case. * * @param {string} keyword Search keyword to clean. * @returns {string} Cleaned string. */ phpbb.search.cleanKeyword = function(keyword) { return $.trim(keyword).toLowerCase(); }; /** * Get clean version of search keyword. If textarea supports several keywords * (one per line), it fetches the current keyword based on the caret position. * * @param {jQuery} $input Search input|textarea. * @param {string} keyword Input|textarea value. * @param {bool} multiline Whether textarea supports multiple search keywords. * * @returns string Clean string. */ phpbb.search.getKeyword = function($input, keyword, multiline) { if (multiline) { var line = phpbb.search.getKeywordLine($input); keyword = keyword.split('\n').splice(line, 1); } return phpbb.search.cleanKeyword(keyword); }; /** * Get the textarea line number on which the keyword resides - for textareas * that support multiple keywords (one per line). * * @param {jQuery} $textarea Search textarea. * @returns {int} The line number. */ phpbb.search.getKeywordLine = function ($textarea) { var selectionStart = $textarea.get(0).selectionStart; return $textarea.val().substr(0, selectionStart).split('\n').length - 1; }; /** * Set the value on the input|textarea. If textarea supports multiple * keywords, only the active keyword is replaced. * * @param {jQuery} $input Search input|textarea. * @param {string} value Value to set. * @param {bool} multiline Whether textarea supports multiple search keywords. */ phpbb.search.setValue = function($input, value, multiline) { if (multiline) { var line = phpbb.search.getKeywordLine($input), lines = $input.val().split('\n'); lines[line] = value; value = lines.join('\n'); } $input.val(value); }; /** * Sets the onclick event to set the value on the input|textarea to the * selected search result. * * @param {jQuery} $input Search input|textarea. * @param {object} value Result object. * @param {jQuery} $row Result element. * @param {jQuery} $container jQuery object for the search container. */ phpbb.search.setValueOnClick = function($input, value, $row, $container) { $row.click(function() { phpbb.search.setValue($input, value.result, $input.attr('data-multiline')); phpbb.search.closeResults($input, $container); }); }; /** * Runs before the AJAX search request is sent and determines whether * there is a need to contact the server. If there are cached results * already, those are displayed instead. Executes the AJAX request function * itself due to the need to use a timeout to limit the number of requests. * * @param {Array} data Data to be sent to the server. * @param {object} event Onkeyup event object. * @param {function} sendRequest Function to execute AJAX request. * * @returns {boolean} Returns false. */ phpbb.search.filter = function(data, event, sendRequest) { var $this = $(this), dataName = ($this.attr('data-name') !== undefined) ? $this.attr('data-name') : $this.attr('name'), minLength = parseInt($this.attr('data-min-length'), 10), searchID = $this.attr('data-results'), keyword = phpbb.search.getKeyword($this, data[dataName], $this.attr('data-multiline')), cache = phpbb.search.cache.get(searchID), key = event.keyCode || event.which, proceed = true; data[dataName] = keyword; // No need to search if enter was pressed // for selecting a value from the results. if (key === keymap.ENTER) { return false; } if (cache.timeout) { clearTimeout(cache.timeout); } var timeout = setTimeout(function() { // Check min length and existence of cache. if (minLength > keyword.length) { proceed = false; } else if (cache.lastSearch) { // Has the keyword actually changed? if (cache.lastSearch === keyword) { proceed = false; } else { // Do we already have results for this? if (cache.results[keyword]) { var response = { keyword: keyword, results: cache.results[keyword] }; phpbb.search.handleResponse(response, $this, true); proceed = false; } // If the previous search didn't yield results and the string only had characters added to it, // then we won't bother sending a request. if (keyword.indexOf(cache.lastSearch) === 0 && cache.results[cache.lastSearch].length === 0) { phpbb.search.cache.set(searchID, 'lastSearch', keyword); phpbb.search.cache.setResults(searchID, keyword, []); proceed = false; } } } if (proceed) { sendRequest.call(this); } }, 350); phpbb.search.cache.set(searchID, 'timeout', timeout); return false; }; /** * Handle search result response. * * @param {object} res Data received from server. * @param {jQuery} $input Search input|textarea. * @param {bool} fromCache Whether the results are from the cache. * @param {function} callback Optional callback to run when assigning each search result. */ phpbb.search.handleResponse = function(res, $input, fromCache, callback) { if (typeof res !== 'object') { return; } var searchID = $input.attr('data-results'), $container = $(searchID); if (this.cache.get(searchID).callback) { callback = this.cache.get(searchID).callback; } else if (typeof callback === 'function') { this.cache.set(searchID, 'callback', callback); } if (!fromCache) { this.cache.setResults(searchID, res.keyword, res.results); } this.cache.set(searchID, 'lastSearch', res.keyword); this.showResults(res.results, $input, $container, callback); }; /** * Show search results. * * @param {Array} results Search results. * @param {jQuery} $input Search input|textarea. * @param {jQuery} $container Search results container element. * @param {function} callback Optional callback to run when assigning each search result. */ phpbb.search.showResults = function(results, $input, $container, callback) { var $resultContainer = $('.search-results', $container); this.clearResults($resultContainer); if (!results.length) { $container.hide(); return; } var searchID = $container.attr('id'), tpl, row; if (!this.tpl[searchID]) { tpl = $('.search-result-tpl', $container); this.tpl[searchID] = tpl.clone().removeClass('search-result-tpl'); tpl.remove(); } tpl = this.tpl[searchID]; $.each(results, function(i, item) { row = tpl.clone(); row.find('.search-result').html(item.display); if (typeof callback === 'function') { callback.call(this, $input, item, row, $container); } row.appendTo($resultContainer).show(); }); $container.show(); phpbb.search.navigateResults($input, $container, $resultContainer); }; /** * Clear search results. * * @param {jQuery} $container Search results container. */ phpbb.search.clearResults = function($container) { $container.children(':not(.search-result-tpl)').remove(); }; /** * Close search results. * * @param {jQuery} $input Search input|textarea. * @param {jQuery} $container Search results container. */ phpbb.search.closeResults = function($input, $container) { $input.off('.phpbb.search'); $container.hide(); }; /** * Navigate search results. * * @param {jQuery} $input Search input|textarea. * @param {jQuery} $container Search results container. * @param {jQuery} $resultContainer Search results list container. */ phpbb.search.navigateResults = function($input, $container, $resultContainer) { // Add a namespace to the event (.phpbb.search), // so it can be unbound specifically later on. // Rebind it, to ensure the event is 'dynamic'. $input.off('.phpbb.search'); $input.on('keydown.phpbb.search', function(event) { var key = event.keyCode || event.which, $active = $resultContainer.children('.active'); switch (key) { // Close the results case keymap.ESC: phpbb.search.closeResults($input, $container); break; // Set the value for the selected result case keymap.ENTER: if ($active.length) { var value = $active.find('.search-result > span').text(); phpbb.search.setValue($input, value, $input.attr('data-multiline')); } phpbb.search.closeResults($input, $container); // Do not submit the form event.preventDefault(); break; // Navigate the results case keymap.ARROW_DOWN: case keymap.ARROW_UP: var up = key === keymap.ARROW_UP, $children = $resultContainer.children(); if (!$active.length) { if (up) { $children.last().addClass('active'); } else { $children.first().addClass('active'); } } else if ($children.length > 1) { if (up) { if ($active.is(':first-child')) { $children.last().addClass('active'); } else { $active.prev().addClass('active'); } } else { if ($active.is(':last-child')) { $children.first().addClass('active'); } else { $active.next().addClass('active'); } } $active.removeClass('active'); } // Do not change cursor position in the input element event.preventDefault(); break; } }); }; $('#phpbb').click(function() { var $this = $(this); if (!$this.is('.live-search') && !$this.parents().is('.live-search')) { phpbb.search.closeResults($('input, textarea'), $('.live-search')); } }); phpbb.history = {}; /** * Check whether a method in the native history object is supported. * * @param {string} fn Method name. * @returns {bool} Returns true if the method is supported. */ phpbb.history.isSupported = function(fn) { return !(typeof history === 'undefined' || typeof history[fn] === 'undefined'); }; /** * Wrapper for the pushState and replaceState methods of the * native history object. * * @param {string} mode Mode. Either push or replace. * @param {string} url New URL. * @param {string} [title] Optional page title. * @param {object} [obj] Optional state object. */ phpbb.history.alterUrl = function(mode, url, title, obj) { var fn = mode + 'State'; if (!url || !phpbb.history.isSupported(fn)) { return; } if (!title) { title = document.title; } if (!obj) { obj = null; } history[fn](obj, title, url); }; /** * Wrapper for the native history.replaceState method. * * @param {string} url New URL. * @param {string} [title] Optional page title. * @param {object} [obj] Optional state object. */ phpbb.history.replaceUrl = function(url, title, obj) { phpbb.history.alterUrl('replace', url, title, obj); }; /** * Wrapper for the native history.pushState method. * * @param {string} url New URL. * @param {string} [title] Optional page title. * @param {object} [obj] Optional state object. */ phpbb.history.pushUrl = function(url, title, obj) { phpbb.history.alterUrl('push', url, title, obj); }; /** * Hide the optgroups that are not the selected timezone * * @param {bool} keepSelection Shall we keep the value selected, or shall the * user be forced to repick one. */ phpbb.timezoneSwitchDate = function(keepSelection) { var $timezoneCopy = $('#timezone_copy'); var $timezone = $('#timezone'); var $tzDate = $('#tz_date'); var $tzSelectDateSuggest = $('#tz_select_date_suggest'); if ($timezoneCopy.length === 0) { // We make a backup of the original dropdown, so we can remove optgroups // instead of setting display to none, because IE and chrome will not // hide options inside of optgroups and selects via css $timezone.clone() .attr('id', 'timezone_copy') .css('display', 'none') .attr('name', 'tz_copy') .insertAfter('#timezone'); } else { // Copy the content of our backup, so we can remove all unneeded options $timezone.html($timezoneCopy.html()); } if ($tzDate.val() !== '') { $timezone.children('optgroup').remove(':not([data-tz-value="' + $tzDate.val() + '"])'); } if ($tzDate.val() === $tzSelectDateSuggest.attr('data-suggested-tz')) { $tzSelectDateSuggest.css('display', 'none'); } else { $tzSelectDateSuggest.css('display', 'inline'); } var $tzOptions = $timezone.children('optgroup[data-tz-value="' + $tzDate.val() + '"]').children('option'); if ($tzOptions.length === 1) { // If there is only one timezone for the selected date, we just select that automatically. $tzOptions.prop('selected', true); keepSelection = true; } if (typeof keepSelection !== 'undefined' && !keepSelection) { var $timezoneOptions = $timezone.find('optgroup option'); if ($timezoneOptions.filter(':selected').length <= 0) { $timezoneOptions.filter(':first').prop('selected', true); } } }; /** * Display the date/time select */ phpbb.timezoneEnableDateSelection = function() { $('#tz_select_date').css('display', 'block'); }; /** * Preselect a date/time or suggest one, if it is not picked. * * @param {bool} forceSelector Shall we select the suggestion? */ phpbb.timezonePreselectSelect = function(forceSelector) { // The offset returned here is in minutes and negated. var offset = (new Date()).getTimezoneOffset(); var sign = '-'; if (offset < 0) { sign = '+'; offset = -offset; } var minutes = offset % 60; var hours = (offset - minutes) / 60; if (hours < 10) { hours = '0' + hours.toString(); } else { hours = hours.toString(); } if (minutes < 10) { minutes = '0' + minutes.toString(); } else { minutes = minutes.toString(); } var prefix = 'UTC' + sign + hours + ':' + minutes; var prefixLength = prefix.length; var selectorOptions = $('option', '#tz_date'); var i; var $tzSelectDateSuggest = $('#tz_select_date_suggest'); for (i = 0; i < selectorOptions.length; ++i) { var option = selectorOptions[i]; if (option.value.substring(0, prefixLength) === prefix) { if ($('#tz_date').val() !== option.value && !forceSelector) { // We do not select the option for the user, but notify him, // that we would suggest a different setting. phpbb.timezoneSwitchDate(true); $tzSelectDateSuggest.css('display', 'inline'); } else { option.selected = true; phpbb.timezoneSwitchDate(!forceSelector); $tzSelectDateSuggest.css('display', 'none'); } var suggestion = $tzSelectDateSuggest.attr('data-l-suggestion'); $tzSelectDateSuggest.attr('title', suggestion.replace('%s', option.innerHTML)); $tzSelectDateSuggest.attr('value', suggestion.replace('%s', option.innerHTML.substring(0, 9))); $tzSelectDateSuggest.attr('data-suggested-tz', option.innerHTML); // Found the suggestion, there cannot be more, so return from here. return; } } }; phpbb.ajaxCallbacks = {}; /** * Adds an AJAX callback to be used by phpbb.ajaxify. * * See the phpbb.ajaxify comments for information on stuff like parameters. * * @param {string} id The name of the callback. * @param {function} callback The callback to be called. */ phpbb.addAjaxCallback = function(id, callback) { if (typeof callback === 'function') { phpbb.ajaxCallbacks[id] = callback; } return this; }; /** * This callback handles live member searches. */ phpbb.addAjaxCallback('member_search', function(res) { phpbb.search.handleResponse(res, $(this), false, phpbb.getFunctionByName('phpbb.search.setValueOnClick')); }); /** * This callback alternates text - it replaces the current text with the text in * the alt-text data attribute, and replaces the text in the attribute with the * current text so that the process can be repeated. */ phpbb.addAjaxCallback('alt_text', function() { var $anchor, updateAll = $(this).data('update-all'), altText; if (updateAll !== undefined && updateAll.length) { $anchor = $(updateAll); } else { $anchor = $(this); } $anchor.each(function() { var $this = $(this); altText = $this.attr('data-alt-text'); $this.attr('data-alt-text', $.trim($this.text())); $this.attr('title', altText); $this.children('span').text(altText); }); }); /** * This callback is based on the alt_text callback. * * It replaces the current text with the text in the alt-text data attribute, * and replaces the text in the attribute with the current text so that the * process can be repeated. * Additionally it replaces the class of the link's parent * and changes the link itself. */ phpbb.addAjaxCallback('toggle_link', function() { var $anchor, updateAll = $(this).data('update-all') , toggleText, toggleUrl, toggleClass; if (updateAll !== undefined && updateAll.length) { $anchor = $(updateAll); } else { $anchor = $(this); } $anchor.each(function() { var $this = $(this); // Toggle link url toggleUrl = $this.attr('data-toggle-url'); $this.attr('data-toggle-url', $this.attr('href')); $this.attr('href', toggleUrl); // Toggle class of link parent toggleClass = $this.attr('data-toggle-class'); $this.attr('data-toggle-class', $this.children().attr('class')); $this.children('.icon').attr('class', toggleClass); // Toggle link text toggleText = $this.attr('data-toggle-text'); $this.attr('data-toggle-text', $this.children('span').text()); $this.attr('title', $.trim(toggleText)); $this.children('span').text(toggleText); }); }); /** * Automatically resize textarea * * This function automatically resizes textarea elements when user * types text. * * @param {jQuery} $items jQuery object(s) to resize * @param {object} [options] Optional parameter that adjusts default * configuration. See configuration variable * * Optional parameters: * minWindowHeight {number} Minimum browser window height when textareas are resized. Default = 500 * minHeight {number} Minimum height of textarea. Default = 200 * maxHeight {number} Maximum height of textarea. Default = 500 * heightDiff {number} Minimum difference between window and textarea height. Default = 200 * resizeCallback {function} Function to call after resizing textarea * resetCallback {function} Function to call when resize has been canceled * Callback function format: function(item) {} * this points to DOM object * item is a jQuery object, same as this */ phpbb.resizeTextArea = function($items, options) { // Configuration var configuration = { minWindowHeight: 500, minHeight: 200, maxHeight: 500, heightDiff: 200, resizeCallback: function() {}, resetCallback: function() {} }; if (phpbb.isTouch) { return; } if (arguments.length > 1) { configuration = $.extend(configuration, options); } function resetAutoResize(item) { var $item = $(item); if ($item.hasClass('auto-resized')) { $(item) .css({ height: '', resize: '' }) .removeClass('auto-resized'); configuration.resetCallback.call(item, $item); } } function autoResize(item) { function setHeight(height) { height += parseInt($item.css('height'), 10) - $item.innerHeight(); $item .css({ height: height + 'px', resize: 'none' }) .addClass('auto-resized'); configuration.resizeCallback.call(item, $item); } var windowHeight = $(window).height(); if (windowHeight < configuration.minWindowHeight) { resetAutoResize(item); return; } var maxHeight = Math.min( Math.max(windowHeight - configuration.heightDiff, configuration.minHeight), configuration.maxHeight ), $item = $(item), height = parseInt($item.innerHeight(), 10), scrollHeight = (item.scrollHeight) ? item.scrollHeight : 0; if (height < 0) { return; } if (height > maxHeight) { setHeight(maxHeight); } else if (scrollHeight > (height + 5)) { setHeight(Math.min(maxHeight, scrollHeight)); } } $items.on('focus change keyup', function() { $(this).each(function() { autoResize(this); }); }).change(); $(window).resize(function() { $items.each(function() { if ($(this).hasClass('auto-resized')) { autoResize(this); } }); }); }; /** * Check if cursor in textarea is currently inside a bbcode tag * * @param {object} textarea Textarea DOM object * @param {Array} startTags List of start tags to look for * For example, Array('[code]', '[code=') * @param {Array} endTags List of end tags to look for * For example, Array('[/code]') * * @returns {boolean} True if cursor is in bbcode tag */ phpbb.inBBCodeTag = function(textarea, startTags, endTags) { var start = textarea.selectionStart, lastEnd = -1, lastStart = -1, i, index, value; if (typeof start !== 'number') { return false; } value = textarea.value.toLowerCase(); for (i = 0; i < startTags.length; i++) { var tagLength = startTags[i].length; if (start >= tagLength) { index = value.lastIndexOf(startTags[i], start - tagLength); lastStart = Math.max(lastStart, index); } } if (lastStart === -1) { return false; } if (start > 0) { for (i = 0; i < endTags.length; i++) { index = value.lastIndexOf(endTags[i], start - 1); lastEnd = Math.max(lastEnd, index); } } return (lastEnd < lastStart); }; /** * Adjust textarea to manage code bbcode * * This function allows to use tab characters when typing code * and keeps indentation of previous line of code when adding new * line while typing code. * * Editor's functionality is changed only when cursor is between * [code] and [/code] bbcode tags. * * @param {object} textarea Textarea DOM object to apply editor to */ phpbb.applyCodeEditor = function(textarea) { // list of allowed start and end bbcode code tags, in lower case var startTags = ['[code]', '[code='], startTagsEnd = ']', endTags = ['[/code]']; if (!textarea || typeof textarea.selectionStart !== 'number') { return; } if ($(textarea).data('code-editor') === true) { return; } function inTag() { return phpbb.inBBCodeTag(textarea, startTags, endTags); } /** * Get line of text before cursor * * @param {boolean} stripCodeStart If true, only part of line * after [code] tag will be returned. * * @returns {string} Line of text */ function getLastLine(stripCodeStart) { var start = textarea.selectionStart, value = textarea.value, index = value.lastIndexOf('\n', start - 1); value = value.substring(index + 1, start); if (stripCodeStart) { for (var i = 0; i < startTags.length; i++) { index = value.lastIndexOf(startTags[i]); if (index >= 0) { var tagLength = startTags[i].length; value = value.substring(index + tagLength); if (startTags[i].lastIndexOf(startTagsEnd) !== tagLength) { index = value.indexOf(startTagsEnd); if (index >= 0) { value = value.substr(index + 1); } } } } } return value; } /** * Append text at cursor position * * @param {string} text Text to append */ function appendText(text) { var start = textarea.selectionStart, end = textarea.selectionEnd, value = textarea.value; textarea.value = value.substr(0, start) + text + value.substr(end); textarea.selectionStart = textarea.selectionEnd = start + text.length; } $(textarea).data('code-editor', true).on('keydown', function(event) { var key = event.keyCode || event.which; // intercept tabs if (key === keymap.TAB && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { if (inTag()) { appendText('\t'); event.preventDefault(); return; } } // intercept new line characters if (key === keymap.ENTER) { if (inTag()) { var lastLine = getLastLine(true), code = '' + /^\s*/g.exec(lastLine); if (code.length > 0) { appendText('\n' + code); event.preventDefault(); } } } }); }; /** * Show drag and drop animation when textarea is present * * This function will enable the drag and drop animation for a specified * textarea. * * @param {HTMLElement} textarea Textarea DOM object to apply editor to */ phpbb.showDragNDrop = function(textarea) { if (!textarea) { return; } $('body').on('dragenter dragover', function () { $(textarea).addClass('drag-n-drop'); }).on('dragleave dragout dragend drop', function() { $(textarea).removeClass('drag-n-drop'); }); $(textarea).on('dragenter dragover', function () { $(textarea).addClass('drag-n-drop-highlight'); }).on('dragleave dragout dragend drop', function() { $(textarea).removeClass('drag-n-drop-highlight'); }); }; /** * List of classes that toggle dropdown menu, * list of classes that contain visible dropdown menu * * Add your own classes to strings with comma (probably you * will never need to do that) */ phpbb.dropdownHandles = '.dropdown-container.dropdown-visible .dropdown-toggle'; phpbb.dropdownVisibleContainers = '.dropdown-container.dropdown-visible'; /** * Dropdown toggle event handler * This handler is used by phpBB.registerDropdown() and other functions */ phpbb.toggleDropdown = function() { var $this = $(this), options = $this.data('dropdown-options'), parent = options.parent, visible = parent.hasClass('dropdown-visible'), direction; if (!visible) { // Hide other dropdown menus $(phpbb.dropdownHandles).each(phpbb.toggleDropdown); // Figure out direction of dropdown direction = options.direction; var verticalDirection = options.verticalDirection, offset = $this.offset(); if (direction === 'auto') { if (($(window).width() - $this.outerWidth(true)) / 2 > offset.left) { direction = 'right'; } else { direction = 'left'; } } parent.toggleClass(options.leftClass, direction === 'left') .toggleClass(options.rightClass, direction === 'right'); if (verticalDirection === 'auto') { var height = $(window).height(), top = offset.top - $(window).scrollTop(); verticalDirection = (top < height * 0.7) ? 'down' : 'up'; } parent.toggleClass(options.upClass, verticalDirection === 'up') .toggleClass(options.downClass, verticalDirection === 'down'); } options.dropdown.toggle(); parent.toggleClass(options.visibleClass, !visible) .toggleClass('dropdown-visible', !visible); // Check dimensions when showing dropdown // !visible because variable shows state of dropdown before it was toggled if (!visible) { var windowWidth = $(window).width(); options.dropdown.find('.dropdown-contents').each(function() { var $this = $(this); $this.css({ marginLeft: 0, left: 0, marginRight: 0, maxWidth: (windowWidth - 4) + 'px' }); var offset = $this.offset().left, width = $this.outerWidth(true); if (offset < 2) { $this.css('left', (2 - offset) + 'px'); } else if ((offset + width + 2) > windowWidth) { $this.css('margin-left', (windowWidth - offset - width - 2) + 'px'); } // Check whether the vertical scrollbar is present. $this.toggleClass('dropdown-nonscroll', this.scrollHeight === $this.innerHeight()); }); var freeSpace = parent.offset().left - 4; if (direction === 'left') { options.dropdown.css('margin-left', '-' + freeSpace + 'px'); // Try to position the notification dropdown correctly in RTL-responsive mode if (options.dropdown.hasClass('dropdown-extended')) { var contentWidth, fullFreeSpace = freeSpace + parent.outerWidth(); options.dropdown.find('.dropdown-contents').each(function() { contentWidth = parseInt($(this).outerWidth(), 10); $(this).css({ marginLeft: 0, left: 0 }); }); var maxOffset = Math.min(contentWidth, fullFreeSpace) + 'px'; options.dropdown.css({ width: maxOffset, marginLeft: -maxOffset }); } } else { options.dropdown.css('margin-right', '-' + (windowWidth + freeSpace) + 'px'); } } // Prevent event propagation if (arguments.length > 0) { try { var e = arguments[0]; e.preventDefault(); e.stopPropagation(); } catch (error) { } } return false; }; /** * Toggle dropdown submenu */ phpbb.toggleSubmenu = function(e) { $(this).siblings('.dropdown-submenu').toggle(); e.preventDefault(); }; /** * Register dropdown menu * Shows/hides dropdown, decides which side to open to * * @param {jQuery} toggle Link that toggles dropdown. * @param {jQuery} dropdown Dropdown menu. * @param {Object} options List of options. Optional. */ phpbb.registerDropdown = function(toggle, dropdown, options) { var ops = { parent: toggle.parent(), // Parent item to add classes to direction: 'auto', // Direction of dropdown menu. Possible values: auto, left, right verticalDirection: 'auto', // Vertical direction. Possible values: auto, up, down visibleClass: 'visible', // Class to add to parent item when dropdown is visible leftClass: 'dropdown-left', // Class to add to parent item when dropdown opens to left side rightClass: 'dropdown-right', // Class to add to parent item when dropdown opens to right side upClass: 'dropdown-up', // Class to add to parent item when dropdown opens above menu item downClass: 'dropdown-down' // Class to add to parent item when dropdown opens below menu item }; if (options) { ops = $.extend(ops, options); } ops.dropdown = dropdown; ops.parent.addClass('dropdown-container'); toggle.addClass('dropdown-toggle'); toggle.data('dropdown-options', ops); toggle.click(phpbb.toggleDropdown); $('.dropdown-toggle-submenu', ops.parent).click(phpbb.toggleSubmenu); }; /** * Get the HTML for a color palette table. * * @param {string} dir Palette direction - either v or h * @param {int} width Palette cell width. * @param {int} height Palette cell height. */ phpbb.colorPalette = function(dir, width, height) { var r, g, b, numberList = new Array(6), color = '', html = ''; numberList[0] = '00'; numberList[1] = '40'; numberList[2] = '80'; numberList[3] = 'BF'; numberList[4] = 'FF'; var tableClass = (dir === 'h') ? 'horizontal-palette' : 'vertical-palette'; html += ''; for (r = 0; r < 5; r++) { if (dir === 'h') { html += ''; } for (g = 0; g < 5; g++) { if (dir === 'v') { html += ''; } for (b = 0; b < 5; b++) { color = '' + numberList[r] + numberList[g] + numberList[b]; html += ''; } if (dir === 'v') { html += ''; } } if (dir === 'h') { html += ''; } } html += '
    '; html += '
    '; return html; }; /** * Register a color palette. * * @param {jQuery} el jQuery object for the palette container. */ phpbb.registerPalette = function(el) { var orientation = el.attr('data-color-palette') || el.attr('data-orientation'), // data-orientation kept for backwards compat. height = el.attr('data-height'), width = el.attr('data-width'), target = el.attr('data-target'), bbcode = el.attr('data-bbcode'); // Insert the palette HTML into the container. el.html(phpbb.colorPalette(orientation, width, height)); // Add toggle control. $('#color_palette_toggle').click(function(e) { el.toggle(); e.preventDefault(); }); // Attach event handler when a palette cell is clicked. $(el).on('click', 'a', function(e) { var color = $(this).attr('data-color'); if (bbcode) { bbfontstyle('[color=#' + color + ']', '[/color]'); } else { $(target).val(color); } e.preventDefault(); }); }; /** * Set display of page element * * @param {string} id The ID of the element to change * @param {int} action Set to 0 if element display should be toggled, -1 for * hiding the element, and 1 for showing it. * @param {string} type Display type that should be used, e.g. inline, block or * other CSS "display" types */ phpbb.toggleDisplay = function(id, action, type) { if (!type) { type = 'block'; } var $element = $('#' + id); var display = $element.css('display'); if (!action) { action = (display === '' || display === type) ? -1 : 1; } $element.css('display', ((action === 1) ? type : 'none')); }; /** * Toggle additional settings based on the selected * option of select element. * * @param {jQuery} el jQuery select element object. */ phpbb.toggleSelectSettings = function(el) { el.children().each(function() { var $this = $(this), $setting = $($this.data('toggle-setting')); $setting.toggle($this.is(':selected')); // Disable any input elements that are not visible right now if ($this.is(':selected')) { $($this.data('toggle-setting') + ' input').prop('disabled', false); } else { $($this.data('toggle-setting') + ' input').prop('disabled', true); } }); }; /** * Get function from name. * Based on http://stackoverflow.com/a/359910 * * @param {string} functionName Function to get. * @returns function */ phpbb.getFunctionByName = function (functionName) { var namespaces = functionName.split('.'), func = namespaces.pop(), context = window; for (var i = 0; i < namespaces.length; i++) { context = context[namespaces[i]]; } return context[func]; }; /** * Register page dropdowns. */ phpbb.registerPageDropdowns = function() { var $body = $('body'); $body.find('.dropdown-container').each(function() { var $this = $(this), $trigger = $this.find('.dropdown-trigger:first'), $contents = $this.find('.dropdown'), options = { direction: 'auto', verticalDirection: 'auto' }, data; if (!$trigger.length) { data = $this.attr('data-dropdown-trigger'); $trigger = data ? $this.children(data) : $this.children('a:first'); } if (!$contents.length) { data = $this.attr('data-dropdown-contents'); $contents = data ? $this.children(data) : $this.children('div:first'); } if (!$trigger.length || !$contents.length) { return; } if ($this.hasClass('dropdown-up')) { options.verticalDirection = 'up'; } if ($this.hasClass('dropdown-down')) { options.verticalDirection = 'down'; } if ($this.hasClass('dropdown-left')) { options.direction = 'left'; } if ($this.hasClass('dropdown-right')) { options.direction = 'right'; } phpbb.registerDropdown($trigger, $contents, options); }); // Hide active dropdowns when click event happens outside $body.click(function(e) { var $parents = $(e.target).parents(); if (!$parents.is(phpbb.dropdownVisibleContainers)) { $(phpbb.dropdownHandles).each(phpbb.toggleDropdown); } }); }; /** * Handle avatars to be lazy loaded. */ phpbb.lazyLoadAvatars = function loadAvatars() { $('.avatar[data-src]').each(function () { var $avatar = $(this); $avatar .attr('src', $avatar.data('src')) .removeAttr('data-src'); }); }; var recaptchaForm = $('.g-recaptcha').parents('form'); var submitButton = null; var programaticallySubmitted = false; phpbb.recaptchaOnLoad = function () { // Listen to submit buttons in order to know which one was pressed $('input[type="submit"]').each(function () { $(this).on('click', function () { submitButton = this; }); }); recaptchaForm.on('submit', function (e) { if (!programaticallySubmitted) { grecaptcha.execute(); e.preventDefault(); } }); } phpbb.recaptchaOnSubmit = function () { programaticallySubmitted = true; // If concrete button was clicked (e.g. preview instead of submit), // let's trigger the same action if (submitButton) { submitButton.click(); } else { // Rename input[name="submit"] so that we can submit the form if (typeof recaptchaForm.submit !== 'function') { recaptchaForm.submit.name = 'submit_btn'; } recaptchaForm.submit(); } } // reCAPTCHA doesn't accept callback functions nested inside objects // so we need to make this helper functions here window.phpbbRecaptchaOnLoad = function() { phpbb.recaptchaOnLoad(); } window.phpbbRecaptchaOnSubmit = function() { phpbb.recaptchaOnSubmit(); } $(window).on('load', phpbb.lazyLoadAvatars); /** * Apply code editor to all textarea elements with data-bbcode attribute */ $(function() { $('textarea[data-bbcode]').each(function() { phpbb.applyCodeEditor(this); }); phpbb.registerPageDropdowns(); $('[data-color-palette], [data-orientation]').each(function() { phpbb.registerPalette($(this)); }); // Update browser history URL to point to specific post in viewtopic.php // when using view=unread#unread link. phpbb.history.replaceUrl($('#unread[data-url]').data('url')); // Hide settings that are not selected via select element. $('select[data-togglable-settings]').each(function() { var $this = $(this); $this.change(function() { phpbb.toggleSelectSettings($this); }); phpbb.toggleSelectSettings($this); }); }); })(jQuery); // Avoid conflicts with other libraries templates/SwiftBlue/default.css0000755000000000000000000000412414516425665014026 0ustar /** * The default CSS stylesheet used for all templates. * * @package AutoIndex * @author Justin Hagstrom * @version 1.0.2 (February 05, 2004) * * @copyright Copyright (C) 2002-2004 Justin Hagstrom * @license http://www.gnu.org/licenses/gpl.html GNU General Public License (GPL) * * @link http://autoindex.sourceforge.net */ /* Body */ .autoindex_body, html { font-family: verdana, lucidia, sans-serif; font-size: 13px; background-color: #F0F0F0; } /* Images */ .autoindex_body img { border: none; } /* Tables */ .autoindex_table { width: 100%; border: none; border-spacing: 2px; } .light_row { background-color: #F2F6FC; font-size: 13px; } .dark_row { background-color: #DADEEE; font-size: 13px; } .autoindex_td { font-size: 13px; font-family: verdana, lucidia, sans-serif; vertical-align: top; border: 1px solid #7F8FA9; padding: 0px; text-align: left; white-space: nowrap; } .autoindex_td_right { font-size: 13px; font-family: verdana, lucidia, sans-serif; vertical-align: top; border: 1px solid #7F8FA9; padding: 0px; text-align: right; white-space: nowrap; } .autoindex_th { font-size: 13px; background-color: #7F8FAD; border: 1px solid #000010; padding: 0px; } /* Links */ .plain_link { color: #000000; text-decoration: none; } .autoindex_a:visited, .autoindex_a:active { color: #00008F; text-decoration: none; } .autoindex_a:link { color: #0000FF; text-decoration: none; } .autoindex_a:hover { color: #0000FF; text-decoration: overline underline; } /* Buttons */ .button { color: #707070; background-color: #F2F6FC; font-family: sans-serif; font-size: 11px; text-align: left; vertical-align: middle; font-weight: bold; cursor: pointer; border: none; padding: 3px 10px 3px 10px; } /* Misc. */ .paragraph { background: #F2F6FC; font-size: 13px; color: #000020; } .autoindex_hr { color: #000020; background-color: #000020; border: none; width: 75%; height: 1px; } .autoindex_small { font-size: 10px; }templates/SwiftBlue/documente.js0000755000000000000000000000115414516425665014211 0ustar var displaymode=0 var iframecode='' if (displaymode==0) document.write(iframecode) function gone(){ var selectedurl=document.jumpy.example.options[document.jumpy.example.selectedIndex].value if (document.getElementById&&displaymode==0) document.getElementById("external").src=selectedurl else if (document.all&&displaymode==0) document.all.external.src=selectedurl else{ if (!window.win2||win2.closed) win2=window.open(selectedurl) //else if win2 already exists else{ win2.location=selectedurl win2.focus() } } }templates/SwiftBlue/dynifs.js0000755000000000000000000000623114516425665013523 0ustar /*************************************************************\ * DYNIFS - Dynamic IFrame Auto Size v1.0.0 * * Copyright (C) 2006, Markus (phpMiX) * This script is released under GPL License. * Feel free to use this script (or part of it) wherever you need * it ...but please, give credit to original author. Thank you. :-) * We will also appreciate any links you could give us. * http://www.phpmix.org * * Enjoy! ;-) \*************************************************************/ var DYNIFS = { // Storage for known IFrames. iframes: {}, // Here we save any previously installed onresize handler. oldresize: null, // Flag that tell us if we have already installed our onresize handler. ready: false, // The document dimensions last time onresize was executed. dim: [-1,-1], // Timer ID used to defer the actual resize action. timerID: 0, // Obtain the dimensions (width,height) of the given document. getDim: function(d) { var w=480, h=580, scr_h, off_h; if( d.height ) { return [d.width,d.height]; } with( d.body ) { if( scrollHeight ) { h=scr_h=scrollHeight; w=scrollWidth; } if( offsetHeight ) { h=off_h=offsetHeight; w=offsetWidth; } if( scr_h && off_h ) h=Math.max(scr_h, off_h); } return [w,h]; }, // This is our window.onresize handler. onresize: function() { // Invoke any previously installed onresize handler. if( typeof this.oldresize == 'function' ) { this.oldresize(); } // Check if the document dimensions really changed. var dim = this.getDim(document); if( this.dim[0] == dim[0] && this.dim[1] == dim[1] ) return; // Defer the resize action to prevent endless loop in quirksmode. if( this.timerID ) return; this.timerID = setTimeout('DYNIFS.deferred_resize();', 10); }, // This is where the actual IFrame resize is invoked. deferred_resize: function() { // Walk the list of known IFrames to see if they need to be resized. for( var id in this.iframes ) this.resize(id); // Store resulting document dimensions. this.dim = this.getDim(document); // Clear the timer flag. this.timerID = 0; }, // This is invoked when the IFrame is loaded or when the main window is resized. resize: function(id) { // Browser compatibility check. if( !window.frames || !window.frames[id] || !document.getElementById || !document.body ) return; // Get references to the IFrame window and layer. var iframe = window.frames[id]; var div = document.getElementById(id); if( !div ) return; // Save the IFrame id for later use in our onresize handler. if( !this.iframes[id] ) { this.iframes[id] = true; } // Should we inject our onresize event handler? if( !this.ready ) { this.ready = true; this.oldresize = window.onresize; window.onresize = new Function('DYNIFS.onresize();'); } // This appears to be necessary in MSIE to compute the height // when the IFrame'd document is in quirksmode. // OTOH, it doesn't seem to break anything in standards mode, so... if( document.all ) div.style.height = '0px'; // Resize the IFrame container. var dim = this.getDim(iframe.document); div.style.height = (dim[1]+30) + 'px'; } };templates/SwiftBlue/each_file.tpl0000755000000000000000000000222414542335616014302 0ustar
    {file:if:is_file} /* if it is a file, make a direct link */ {end if} {file:if:is_dir} /* otherwise, for directories, display the folder with autoindex */ {end if} {if:icon_path}[{file:file_ext}]{end if:icon_path} {file:filename} {file:thumbnail}{file:new_icon}{file:md5_link}{file:delete_link}{file:rename_link}{file:edit_description_link}{file:ftp_upload_link} {file:downloads} {file:size} {file:date} {file:description}
    '); for (r = 0; r < 5; r++) { if (dir == 'h') { document.writeln(''); } for (g = 0; g < 5; g++) { if (dir == 'v') { document.writeln(''); } for (b = 0; b < 5; b++) { color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]); document.write(''); } if (dir == 'v') { document.writeln(''); } } if (dir == 'h') { document.writeln(''); } } document.writeln('
    '); document.write('#' + color + ''); document.writeln('
    '); } /** * Caret Position object */ function caretPosition() { var start = null; var end = null; } /** * Get the caret position in an textarea */ function getCaretPosition(txtarea) { var caretPos = new caretPosition(); // simple Gecko/Opera way if(txtarea.selectionStart || txtarea.selectionStart == 0) { caretPos.start = txtarea.selectionStart; caretPos.end = txtarea.selectionEnd; } // dirty and slow IE way else if(document.selection) { // get current selection var range = document.selection.createRange(); // a new selection of the whole textarea var range_all = document.body.createTextRange(); range_all.moveToElementText(txtarea); // calculate selection start point by moving beginning of range_all to beginning of range var sel_start; for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++) { range_all.moveStart('character', 1); } txtarea.sel_start = sel_start; // we ignore the end value for IE, this is already dirty enough and we don't need it caretPos.start = txtarea.sel_start; caretPos.end = txtarea.sel_start; } return caretPos; }templates/SwiftBlue/en0000755000000000000000000000000014571077035012202 5ustar templates/SwiftBlue/en/button_pm_new.gif0000755000000000000000000000405614516425665015645 0ustar GIF89aaw!,ahؠИذ萰ȼp 8Ь,0hHHHx8lȨXظx000PPP xP$$$(xxxx @@@H(H888`ȸPȰdȤȸ,,,(ਨLLL<<KӨ7&Q CYB ȑl@˷߿ FKum "0(@.LYK1LrXQ5hS-\p0Jxƍ0 ͻ{?2\mX  aC7-ͽË_`T2PHKHp剃p|!a!P~ށ!!-H BbBl#>0s\A#kAoj@01 @L$?( B!0X%T!JCf!`(\,t!h`BXna0! [`@ UPHb֖Cs@ X h @BH2+>6uC!B^ +a%tW@L"F*r}r|" ,1vhB!GRL*OIIN$& & dWP 0IbpP|+-9D0a+_jZ̦6IPBONܦ:lv}8 N\h#̧>b quH?;templates/SwiftBlue/en/button_pm_reply.gif0000755000000000000000000000320514516425665016202 0ustar GIF89aZw!,Zf̘Ȝ0ФܠԸ(| l|̔؈,HHHD@@@t,d(|䈠ܐ$$$`htttx888\\\ xPPPdddzzzĔ444`ȲVVVddlXXP`lp@T222`TbbbRRR000X`d0PTXDHLd\Z^`ht|L(((䌌LLL$|x@`nhhhȜdJJJ`|~~~lll،𤤤xx<@D8 8@DDDDܘppp\Ī쬬,,,`hlp0h<Ɛ8P4" ȰÇ#J8 VDǏ hX\$0s*YRN`ɳϟ@ Pزe GBJJ5KS8H@g0 9 ]˶۷pʥc vuh:Yۦ'!_bBE^ԝL˘3g~H "H`&[DD=v$ Jy||@ UPb M61Aѥ?щ׈9O1""\z菂=&З8*-WB|\P\G |a7>XN.TJ'"$ q 'a (< ⊧X7ְb,L::`xPN$9fH 2 E! \&}_%<$9䀅 &$\tP: N)F)!á27HPF*`y\0J)`j8P A8{VgFTK !~QY0!@4@N-ZKDR[}.0 :2v$ @ nd, B^`KA` $L0p/KxJ!m@$!IBa l8307-4pP"B ;D-@ F!HnAB%ha lT-t=NjbaC4|Bu'7xD.bCDб~ p䤗n騧VBQDFQ@NT*$P@;templates/SwiftBlue/en/button_topic_locked.gif0000755000000000000000000000376014516425665017020 0ustar GIF89aaw! ,ahИȼ8ظxH|(Ȱph8иx` xиhȸȸXذp````xHpxȸبx@@@444ȘXTTTؠXXXXȸ0xd`000 PPP@0X888,,,8hHHHP`xhȠT萠tx|XX8Ph$|@$$$pPPxd࠰pppXHhlPxLLLȘ(((hp(xxxxش*\ȰÇ*pBb3jТ6<0@ɓ(S\ɲ0 U6 xpb JѣH`PJ$jʵRN \R  IIDS;c JݻxꥋӱDc#/< ";~vLr]$}, J!HGךk `Q%+X s>;& KAOa u@x_ cG0A. .8F,9r8dȓ Ywbx^Wyb]I`h|B Sgg,_8( ۝lQHepA+Dx *Ba{ %MG=Р% "< OXL`hNb#o(f P^ c*)$?Lpfhu82i 1 XQ P1X9gt0g"Ё?Đ1r0렲v@ 6Qj4;ic푅Fx-` !+]? kn f@();<Ȼn1 G#4A L XԪȷ_x&s|v[Jf1oRhA 'dG 6@lb$drBxfXgq`A(JCQ (2;Fy@`Du 8K XB>t ސ7ơ @ >p9hěsP| B$ۆ+@Ky 4CZ "0/ BRc"PCϞ@ 4Bhl4 B AP F(L B`( l( )P v(="5(͆H"HLbm;(# .pAmG2hL>'>H 7^ TB L* h IBLd݈Fb 8 O R>oa QH!t(GIRt$:L-8?̥.wyJGpE@D1‘f:#y3IMx$ ;templates/SwiftBlue/en/button_topic_new.gif0000755000000000000000000000401514516425665016342 0ustar GIF89aaw! ,ahؘРȼ쐰Ȱ80xаxp xlظx000ȸ(|PPPP@@@d$|pHHHȰxxxȸHhX8$$$ذؠ䤤 XTTT؀`888,,,И<<`v3`AG0Z`>2cF ^D`SC A0BkTda?AXh,$ hv&Шۉ(h`CPFB]F,- j 1xQ 9`&!8`xȚ/bPvvx2PCQ8lGŤFy_4 EĐE,Pn`l m+n/3+ڰ' Zgh]2dp ;pt@l-2.3AAvD0# |4!fpmX#`=Bs07=$lOPl\*C<}+CG J. p d l ȟ}G pFO {sDt Bp2B{0)o {h0d% h sIL8BzB+bPH*R,`Pu( RQ-% H @+L w2G:x̣|(Z.] ~T# x$'IJV X !!"uF *WV򕰌*3 H 28 O bElςc-iIbLf-mZLenz%jZʴ%N u" 8TL'F<;templates/SwiftBlue/en/button_topic_reply.gif0000755000000000000000000000412014516425665016701 0ustar GIF89aaw!,ahРؘȰPPP08HHHHx(000 аxxxp؈舸ؘȸhȸ x$$$XX@@@T(((888dxhȰؘ,,,dȸpظxLLLppp8H8l̈pxx$|8Ȑ@(`ĘXXXX`Ȑ```XxhhhPุ@HH|xب`쀐tx|X@ذpt̴ȸhȸ<<<Шhиhаpx܈PXXذxhpx@Pxp`hph*\ȰÇ"@b3jТ>80@ɓ(S\ɲ0 1>!x0VJѣH*)@9sI-~`Ê˔S <@JN2bK RH˷߿-j"L1OC8H"E[3kܷ ag'#!E%DaB )zMmn]CPѪM,ᅃ8}u`AdYk]*wO@{;pp tbE:䡅y&zT{A~%tQP 1# TQ*@04B]\{pq n졣At@<|H}xFAxÂTP:e-d`f )ɄAU |`NX{`$a \p¢ `y @ee4 :1p( Y"b9gpG%<b8abJh@ah=  B\$P[2 hY D1' ?LHA7x/ {ƽNAr搀 Zh _p/( Xy %{yCЁ ~0D ' h )|` P2"A7K7k@MX1 O'@T,y7Gh h# oh(Hq@9Aa l('Al0@ hVlJ A^7{6 Fhr'L`yz{W +]q}ҋ; DZɶ !}^ z5X'b6hU^r\ QAH | | 0> pKO0h 2`!(-ɀz dP\*d;@8 lg ?`Om8wP! Vok@l8Xَ1B̰ , d&hBF2h<#'А4 hD%61 5+HA7 d`"8F:򑐌$$G: pE%,@"C ` %0DЀ򕰌,gIYВ%:@.E-`!2!Ќ4IjZ󙸬#K\'{wI ǬA3vg.IVP,"-Ma cX<JЂZ4i HD'TF<;templates/SwiftBlue/en/icon_contact_aim.gif0000755000000000000000000000274714516425665016263 0ustar GIF89aHw!,HfмجФܔȠtĤ䈸d l0h`,T|̐p̈ D|P< xl̤Tܾ(|<@$XxThLdHhtPܼDxĤ@`Pl|\xTĜԬ|쌼4 HX|XdllTH,ظ,l8TdXHĸ`\Ālp|HLXhL648ppt~ĔP$@T@  $\8<(|H8($lbD,@2@~@,`Fhx6 DTdDX@d̒xfjFNr~f0@HTjTX4X\h|8Ђ *\ȰÇLX/ 3jaȱɆRB啬cI͛8s x3VUVuJѣ4P#!B)r&Ihʵׯ`k@&3jܸGY46hȲ˗0c$RQDeb$4d J@.81৓@z2H#G ;0ׯ`Ê-@~Lt0%F]SsЁ5̋a LҘEpCBtBFM`თ'#dHftpf'PpZ6 IN E +Xll Av/.jGvh@{ȣ1(Юo+a ;/"T,ju `$ tǠu`ЁVp,pC-ql1:&QG2T؏9@Aw1d!tqL%S`Ȓxѵh}vי̠d^؊o˗ȏaɊ썴iF2›Σ]v„ξ͙ʇ剢imˏhbTRPShaTœH*\Ȱ #JP{, HǁB"B\ɲ˗0a2^I''2ϟ@Y piM+ HJիXba@GČ4@5:ZdQr-x˷/-tpŖ `xhb"(Xm1ӹXP*Ϡ=@Ƒ#7@2u)\FYbڐ]"&4ZɁН<S8 &G>9B^̅`t1BI Q)By &x` ,m@ Ch0D 02 *Ĩe:8x#v0`H:V@8F2$HR X(bA I(\| x @aQSVSPgAwO;templates/SwiftBlue/en/icon_contact_jabber.gif0000755000000000000000000000316514516425665016735 0ustar GIF89aHw!,HfȜКx[Y8wP֞T l2`ܘ̦ܠ xʰtjȲ݌ǹܥ,dh lx&|^X>¾VΖB\dڶ0Ҕƴ*~fZtfȤ|Բ∢rZvœlFh̞Ҍ4b|(|䢾Բ|r̪䌾DИֲℸئҾZƲnʪК̖>jȐt̔JR’^ڣTin\^dlvζشpʔМVLdڤ"|\tZPۤ(|DΌn®茦C)R#JH"ł1lؠ%CYSɗ0+8U`‐% JѣH>:*40pSIjjT  pu*ժ)(۷pm@P=@΢}n]"+H2˗< H]*/zPЏK1*IB'\TMLmL~ AO@"C5`[7>"EHccHlVCgzL5HX`>:ϰ$?z HC!1C q Um "tk.p\@"|a @ v8A3@CmX(UyuK.0jD邆S uQ +%-0P&#PA5U#x @.p}DV8ğ. @ r@D ̐C 1P鰂*=!5AU h_n%K}Hop@^ &BJ=|is'`,7 0v1n9 *&X4 T#EJ1cЄE88P؂G&퀯 <@0U@jAfAL4]y=p 6, .p xC^7d| .v&(cH WtxQD0P΀0(d*A Rp1x0>"@HZ!HA!(`BJh0 {0@8  G!(@ r:gFh`J j:q p檀,(X,H'! *>րC̙f0BI"x&42 )H@5)J:o'` G($! # 2J),Ђ + , +p(<)!#4`!<>D2)$&0тD5PXg\g ZBF20h]Ml 倯t=9X|;templates/SwiftBlue/en/icon_contact_pm.gif0000755000000000000000000000310314516425665016114 0ustar GIF89aHw!,HhȘؠи`(0p X`Ȉ880(H0(x(А`xؐPpx@؈hpx XphP00888h8X`(xP`@xPPxxH`X xp xpx`@ (`P hȀp``xxp``xhh``xP(ؠxhhh0(0 Xp((`pxxx hhxXxp x(pxph@hp8xȰ0H8@@x0PHPPPXP𨨨PxXxX(Xx8H8( xиؘؘx 08x(hȰ@pHpx 踸H?Z@B 0Pŋ3.a)\,#ę/`AQ˗ GRa 3DdϣH*]* ^D7< e0a aJ,Sa!af\MdaA] ՐaE] LX ԠT&Ay]sC68w{VU ra=2|؍! xH!vqpyb t ؂_]tBA$o!al s{<7<+QF-w2~ƒ\8$ga=G rMs ("T4  :CQP"5& D`C Lt 0"\"s I"lJ Nbx1eAݝx2Ђ -IC @_ e$, x8A/!ʏ(`l`Ac+@**j@ @!8`@0ʥ>S T"C!2K0oP (BHG +^^ॸЫ˓:`I$Aa$ P4B : (%pp@n 80` *`r(k4p\JU$@k8ߌ33DA D $t|BD-u XgM\w=DcP K@? 0 =K7tmwϛ| @L F)fn87θ/$䔻;templates/SwiftBlue/en/icon_contact_www.gif0000755000000000000000000000306514516425665016333 0ustar GIF89aHw!,HhȘР xppH(Јp`d08@lȨhȘXhxP PD`(@phlp萰@xXx`p (H0H0xh PhphpXp0x0xp@ X|d|pČt8T|x$|@HP8`pXxH`HpH`Ȑ`xpppP`xhp X(X8(8`08XhЀ쐨`pȘĄ0dX4xdtLpv kQZ!"ՐA!dB(IT@0\ 5/܁G\w=`IuP ̚ wAL-tm780S6mL1)%8D.P@;templates/SwiftBlue/en/icon_contact_yahoo.gif0000755000000000000000000000305714516425665016627 0ustar GIF89aHw!,HhИبdЈp0ؐ08dXxh4``x`(P(8LhȈ0`|X xpP((耸8XpH(LИXx@`PlЈ@ 8x0XHh$D$L(H DpxP0Xp HxHP8@ H H(P(`hD\@h$L࠸иPphh|@X8`P(h`xH`08Xp<\P` d@d8`x@`d0lHXШ(XpАpȌXpXtР@lظXh0\Ȑظ\xXpPp@hPhpHpX@h@hxH*\P #Bŋ Bi$ɦ3Nʼn(OVȒeQBȏ8z ROF JѣH }&&;T\<<<HP*\ȰÇ#(EЬ"HȱF A*rdIn}ɲ˗0cʜ`L K/@  @ 5NId B Xjʵׯ `A'6B(GVbա?@C La2(@E*`(GJf-;|aҫSF,XvR  WXaeY<q\I=$䱂 K=u @HH$};;<&F/Ȗ!$QJ'XpPOp D(GM m`p7cpŒ!l!op@ d0Bi@xEqdFpG""id\@~,$K. Ep9Bx a Gr']4@Bzy!yg@Y"e^H|vn8sѣH` 2>A:꓌Xjʵׯ``0f~` H^Xs@ *+,$jM"*`"-ଁHxJR6T`T@ӨS:.e1-164Fxj^]5@q*W k߾ 6$;'ڟȾCU@z1hp$$0a*7@ s4(cfd  Nf #nh (fh q^@Y F0Z0! 1@L@͒R*\dp(J C d0 @ &`/anF00X $ 蠄 @>3_z90^H3x @t6AhK3 đ5t`㭸@ %hGDxq+*,k jnA(Khr`@$eLb$0B+S{dWp8P#V@zT`R* BR7f[j hJ%CPR,>t D \bl!D\D@]в,DL ! @@ h|pqP2hR pwTQ 0bm RW]Tw7G.㭷dމ ,BARD ݗk嬷.;'n–RH'Q@;templates/SwiftBlue/en/icon_post_report.gif0000755000000000000000000000211014516425665016342 0ustar GIF89aw!,fڗɸћϲ嘴˯ҡ֠fߧ޽㜹ЬؙtƷn7PW!+b>r}P#k$Դ,$w~%HTu! *SBJCPsaC)R<4˛PB(OPBQ@c? l!@ t;8BEx^OP@b8` `  hQ ȡ z(0$!@#h-ٸ@ %pxD 4٤A8d& `#r̡K(R>(0{`G8h BEp@q *(@q : T*h!""@":@) 8"tʈ8@vL#TDTGC Nx Z+&\bN!\х"_dPL0B2)B#0UXD$w@od lP.B=x,^ c fB % "jH8%B2CA HByf9$@@A4iߦI7P`/ @[óBLr"H$SBB"@ N|pN4 EX˯.˓A. ,@+l%,`@-DH#-KEO ,xՙ\$`-6Lm{]!  Zx ,L!x|]zY nx(@EW5PG.@;templates/SwiftBlue/en/icon_user_search.gif0000755000000000000000000000313014516425665016270 0ustar GIF89aHw!,HhȘ0P( lh,Ѐ$|tp\İ耴ԠdP`Hx xhPȤpЈа􈨸`xhXpD`DhpȈ@X`hxؔ08(x8hdȤԐ8tАX؈ph@hаH@`x@`lАtԀ؀ؠ``ȘĨXР@pX(`x؈ȈԜ䨰 templates/SwiftBlue/en/stylesheet.css0000755000000000000000000000362314516425665015200 0ustar /* Online image */ .imageset.icon_contact_aim { background-image: url("./icon_contact_aim.gif"); } .imageset.icon_contact_email { background-image: url("./icon_contact_email.gif"); } .imageset.icon_contact_icq { background-image: url("./icon_contact_icq.gif"); } .imageset.icon_contact_jabber { background-image: url("./icon_contact_jabber.gif"); } .imageset.icon_contact_msnm { background-image: url("./icon_contact_msnm.gif"); } .imageset.icon_contact_pm { background-image: url("./icon_contact_pm.gif"); } .imageset.icon_contact_yahoo { background-image: url("./icon_contact_yahoo.gif"); } .imageset.icon_contact_www { background-image: url("./icon_contact_www.gif"); } .imageset.icon_post_delete { background-image: url("./icon_post_delete.gif"); } .imageset.icon_post_edit { background-image: url("./icon_post_edit.gif"); } .imageset.icon_post_info { background-image: url("./icon_post_info.gif"); } .imageset.icon_post_quote { background-image: url("./icon_post_quote.gif"); } .imageset.icon_post_report { background-image: url("./icon_post_report.gif"); } .imageset.icon_user_online { background-image: url("./icon_user_online.gif"); } .imageset.icon_user_offline { background-image: url("./icon_user_offline.gif"); } .imageset.icon_user_profile { background-image: url("./icon_user_profile.gif"); } .imageset.icon_user_search { background-image: url("./icon_user_search.gif"); padding-left: 72px; padding-top: 20px; } .imageset.icon_user_warn { background-image: url("./icon_user_warn.gif"); } .imageset.button_pm_new { background-image: url("./button_pm_new.gif"); } .imageset.button_pm_reply { background-image: url("./button_pm_reply.gif"); } .imageset.button_topic_locked { background-image: url("./button_topic_locked.gif"); } .imageset.button_topic_new { background-image: url("./button_topic_new.gif"); } .imageset.button_topic_reply { background-image: url("./button_topic_reply.gif"); }templates/SwiftBlue/error_body.html0000755000000000000000000000061214516425665014722 0ustar
     
    {ERROR_MESSAGE}
     

    templates/SwiftBlue/formIE.css0000755000000000000000000000056514516425665013570 0ustar /* Fancy form styles for IE */ input, textarea, select { border-top-width : 1px; border-right-width : 1px; border-bottom-width : 1px; border-left-width : 1px; } input { text-indent : 2px; } input.button { border-top-width : 1px; border-right-width : 1px; border-bottom-width : 1px; border-left-width : 1px; } .postbody { line-height: 18px} templates/SwiftBlue/forum_fn.js0000755000000000000000000005742014516425665014050 0ustar /* global phpbb */ /** * phpBB3 forum functions */ /** * Find a member */ function find_username(url) { 'use strict'; popup(url, 760, 570, '_usersearch'); return false; } /** * Window popup */ function popup(url, width, height, name) { 'use strict'; if (!name) { name = '_popup'; } window.open(url.replace(/&/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes, width=' + width); return false; } /** * Jump to page */ function pageJump(item) { 'use strict'; var page = parseInt(item.val(), 10), perPage = item.attr('data-per-page'), baseUrl = item.attr('data-base-url'), startName = item.attr('data-start-name'); if (page !== null && !isNaN(page) && page === Math.floor(page) && page > 0) { if (baseUrl.indexOf('?') === -1) { document.location.href = baseUrl + '?' + startName + '=' + ((page - 1) * perPage); } else { document.location.href = baseUrl.replace(/&/g, '&') + '&' + startName + '=' + ((page - 1) * perPage); } } } /** * Mark/unmark checklist * id = ID of parent container, name = name prefix, state = state [true/false] */ function marklist(id, name, state) { 'use strict'; jQuery('#' + id + ' input[type=checkbox][name]').each(function() { var $this = jQuery(this); if ($this.attr('name').substr(0, name.length) === name && !$this.prop('disabled')) { $this.prop('checked', state); } }); } /** * Resize viewable area for attached image or topic review panel (possibly others to come) * e = element */ function viewableArea(e, itself) { 'use strict'; if (!e) { return; } if (!itself) { e = e.parentNode; } if (!e.vaHeight) { // Store viewable area height before changing style to auto e.vaHeight = e.offsetHeight; e.vaMaxHeight = e.style.maxHeight; e.style.height = 'auto'; e.style.maxHeight = 'none'; e.style.overflow = 'visible'; } else { // Restore viewable area height to the default e.style.height = e.vaHeight + 'px'; e.style.overflow = 'auto'; e.style.maxHeight = e.vaMaxHeight; e.vaHeight = false; } } /** * Alternate display of subPanels */ jQuery(function($) { 'use strict'; $('.sub-panels').each(function() { var $childNodes = $('a[data-subpanel]', this), panels = $childNodes.map(function () { return this.getAttribute('data-subpanel'); }), showPanel = this.getAttribute('data-show-panel'); if (panels.length) { activateSubPanel(showPanel, panels); $childNodes.click(function () { activateSubPanel(this.getAttribute('data-subpanel'), panels); return false; }); } }); }); /** * Activate specific subPanel */ function activateSubPanel(p, panels) { 'use strict'; var i, showPanel; if (typeof p === 'string') { showPanel = p; } $('input[name="show_panel"]').val(showPanel); if (typeof panels === 'undefined') { panels = jQuery('.sub-panels a[data-subpanel]').map(function() { return this.getAttribute('data-subpanel'); }); } for (i = 0; i < panels.length; i++) { jQuery('#' + panels[i]).css('display', panels[i] === showPanel ? 'block' : 'none'); jQuery('#' + panels[i] + '-tab').toggleClass('activetab', panels[i] === showPanel); } } function selectCode(a) { 'use strict'; // Get ID of code block var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0]; var s, r; // Not IE and IE9+ if (window.getSelection) { s = window.getSelection(); // Safari and Chrome if (s.setBaseAndExtent) { var l = (e.innerText.length > 1) ? e.innerText.length - 1 : 1; try { s.setBaseAndExtent(e, 0, e, l); } catch (error) { r = document.createRange(); r.selectNodeContents(e); s.removeAllRanges(); s.addRange(r); } } // Firefox and Opera else { // workaround for bug # 42885 if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) === '
    ') { e.innerHTML = e.innerHTML + ' '; } r = document.createRange(); r.selectNodeContents(e); s.removeAllRanges(); s.addRange(r); } } // Some older browsers else if (document.getSelection) { s = document.getSelection(); r = document.createRange(); r.selectNodeContents(e); s.removeAllRanges(); s.addRange(r); } // IE else if (document.selection) { r = document.body.createTextRange(); r.moveToElementText(e); r.select(); } } var inAutocomplete = false; var lastKeyEntered = ''; /** * Check event key */ function phpbbCheckKey(event) { 'use strict'; // Keycode is array down or up? if (event.keyCode && (event.keyCode === 40 || event.keyCode === 38)) { inAutocomplete = true; } // Make sure we are not within an "autocompletion" field if (inAutocomplete) { // If return pressed and key changed we reset the autocompletion if (!lastKeyEntered || lastKeyEntered === event.which) { inAutocomplete = false; return true; } } // Keycode is not return, then return. ;) if (event.which !== 13) { lastKeyEntered = event.which; return true; } return false; } /** * Apply onkeypress event for forcing default submit button on ENTER key press */ jQuery(function($) { 'use strict'; $('form input[type=text], form input[type=password]').on('keypress', function (e) { var defaultButton = $(this).parents('form').find('input[type=submit].default-submit-action'); if (!defaultButton || defaultButton.length <= 0) { return true; } if (phpbbCheckKey(e)) { return true; } if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { defaultButton.click(); return false; } return true; }); }); /** * Functions for user search popup */ function insertUser(formId, value) { 'use strict'; var $form = jQuery(formId), formName = $form.attr('data-form-name'), fieldName = $form.attr('data-field-name'), item = opener.document.forms[formName][fieldName]; if (item.value.length && item.type === 'textarea') { value = item.value + '\n' + value; } item.value = value; } function insert_marked_users(formId, users) { 'use strict'; $(users).filter(':checked').each(function() { insertUser(formId, this.value); }); window.close(); } function insert_single_user(formId, user) { 'use strict'; insertUser(formId, user); window.close(); } /** * Parse document block */ function parseDocument($container) { 'use strict'; var test = document.createElement('div'), oldBrowser = (typeof test.style.borderRadius === 'undefined'), $body = $('body'); /** * Reset avatar dimensions when changing URL or EMAIL */ $container.find('input[data-reset-on-edit]').on('keyup', function() { $(this.getAttribute('data-reset-on-edit')).val(''); }); /** * Pagination */ $container.find('.pagination .page-jump-form :button').click(function() { var $input = $(this).siblings('input.inputbox'); pageJump($input); }); $container.find('.pagination .page-jump-form input.inputbox').on('keypress', function(event) { if (event.which === 13 || event.keyCode === 13) { event.preventDefault(); pageJump($(this)); } }); $container.find('.pagination .dropdown-trigger').click(function() { var $dropdownContainer = $(this).parent(); // Wait a little bit to make sure the dropdown has activated setTimeout(function() { if ($dropdownContainer.hasClass('dropdown-visible')) { $dropdownContainer.find('input.inputbox').focus(); } }, 100); }); /** * Adjust HTML code for IE8 and older versions */ // if (oldBrowser) { // // Fix .linklist.bulletin lists // $container // .find('ul.linklist.bulletin > li') // .filter(':first-child, .rightside:last-child') // .addClass('no-bulletin'); // } /** * Resize navigation (breadcrumbs) block to keep all links on same line */ $container.find('.navlinks').each(function() { var $this = $(this), $left = $this.children().not('.rightside'), $right = $this.children('.rightside'); if ($left.length !== 1 || !$right.length) { return; } function resize() { var width = 0, diff = $left.outerWidth(true) - $left.width(), minWidth = Math.max($this.width() / 3, 240), maxWidth; $right.each(function() { var $this = $(this); if ($this.is(':visible')) { width += $this.outerWidth(true); } }); maxWidth = $this.width() - width - diff; $left.css('max-width', Math.floor(Math.max(maxWidth, minWidth)) + 'px'); } resize(); $(window).resize(resize); }); /** * Makes breadcrumbs responsive */ $container.find('.breadcrumbs:not([data-skip-responsive])').each(function() { var $this = $(this), $links = $this.find('.crumb'), length = $links.length, classes = ['wrapped-max', 'wrapped-wide', 'wrapped-medium', 'wrapped-small', 'wrapped-tiny'], classesLength = classes.length, maxHeight = 0, lastWidth = false, wrapped = false; // Set tooltips $this.find('a').each(function() { var $link = $(this); $link.attr('title', $link.text()); }); // Function that checks breadcrumbs function check() { var height = $this.height(), width; // Test max-width set in code for .navlinks above width = parseInt($this.css('max-width'), 10); if (!width) { width = $body.width(); } maxHeight = parseInt($this.css('line-height'), 10); $links.each(function() { if ($(this).height() > 0) { maxHeight = Math.max(maxHeight, $(this).outerHeight(true)); } }); if (height <= maxHeight) { if (!wrapped || lastWidth === false || lastWidth >= width) { return; } } lastWidth = width; if (wrapped) { $this.removeClass('wrapped').find('.crumb.wrapped').removeClass('wrapped ' + classes.join(' ')); if ($this.height() <= maxHeight) { return; } } wrapped = true; $this.addClass('wrapped'); if ($this.height() <= maxHeight) { return; } for (var i = 0; i < classesLength; i++) { for (var j = length - 1; j >= 0; j--) { $links.eq(j).addClass('wrapped ' + classes[i]); if ($this.height() <= maxHeight) { return; } } } } // Run function and set event check(); $(window).resize(check); }); /** * Responsive link lists */ var selector = '.linklist:not(.navlinks, [data-skip-responsive]),' + '.postbody .post-buttons:not([data-skip-responsive])'; $container.find(selector).each(function() { var $this = $(this), filterSkip = '.breadcrumbs, [data-skip-responsive]', filterLast = '.edit-icon, .quote-icon, [data-last-responsive]', $linksAll = $this.children(), $linksNotSkip = $linksAll.not(filterSkip), // All items that can potentially be hidden $linksFirst = $linksNotSkip.not(filterLast), // The items that will be hidden first $linksLast = $linksNotSkip.filter(filterLast), // The items that will be hidden last persistent = $this.attr('id') === 'nav-main', // Does this list already have a menu (such as quick-links)? html = '
  • ', slack = 3; // Vertical slack space (in pixels). Determines how sensitive the script is in determining whether a line-break has occurred. // Add a hidden drop-down menu to each links list (except those that already have one) if (!persistent) { if ($linksNotSkip.is('.rightside')) { $linksNotSkip.filter('.rightside:first').before(html); $this.children('.responsive-menu').addClass('rightside'); } else { $this.append(html); } } // Set some object references and initial states var $menu = $this.children('.responsive-menu'), $menuContents = $menu.find('.dropdown-contents'), persistentContent = $menuContents.find('li:not(.separator)').length, lastWidth = false, compact = false, responsive1 = false, responsive2 = false, copied1 = false, copied2 = false, maxHeight = 0; // Find the tallest element in the list (we assume that all elements are roughly the same height) $linksAll.each(function() { if (!$(this).height()) { return; } maxHeight = Math.max(maxHeight, $(this).outerHeight(true)); }); if (maxHeight < 1) { return; // Shouldn't be possible, but just in case, abort } else { maxHeight = maxHeight + slack; } function check() { var width = $body.width(); // We can't make it any smaller than this, so just skip if (responsive2 && compact && (width <= lastWidth)) { return; } lastWidth = width; // Reset responsive and compact layout if (responsive1 || responsive2) { $linksNotSkip.removeClass('hidden'); $menuContents.children('.clone').addClass('hidden'); responsive1 = responsive2 = false; } if (compact) { $this.removeClass('compact'); compact = false; } // Unhide the quick-links menu if it has "persistent" content if (persistent && persistentContent) { $menu.removeClass('hidden'); } else { $menu.addClass('hidden'); } // Nothing to resize if block's height is not bigger than tallest element's height if ($this.height() <= maxHeight) { return; } // STEP 1: Compact if (!compact) { $this.addClass('compact'); compact = true; } if ($this.height() <= maxHeight) { return; } // STEP 2: First responsive set - compact if (compact) { $this.removeClass('compact'); compact = false; } // Copy the list items to the dropdown if (!copied1) { var $clones1 = $linksFirst.clone(); $menuContents.prepend($clones1.addClass('clone clone-first').removeClass('leftside rightside')); if ($this.hasClass('post-buttons')) { $('.button', $menuContents).removeClass('button'); $('.sr-only', $menuContents).removeClass('sr-only'); $('.js-responsive-menu-link').addClass('button').addClass('button-icon-only'); $('.js-responsive-menu-link .icon').removeClass('fa-bars').addClass('fa-ellipsis-h'); } copied1 = true; } if (!responsive1) { $linksFirst.addClass('hidden'); responsive1 = true; $menuContents.children('.clone-first').removeClass('hidden'); $menu.removeClass('hidden'); } if ($this.height() <= maxHeight) { return; } // STEP 3: First responsive set + compact if (!compact) { $this.addClass('compact'); compact = true; } if ($this.height() <= maxHeight) { return; } // STEP 4: Last responsive set - compact if (!$linksLast.length) { return; // No other links to hide, can't do more } if (compact) { $this.removeClass('compact'); compact = false; } // Copy the list items to the dropdown if (!copied2) { var $clones2 = $linksLast.clone(); $menuContents.prepend($clones2.addClass('clone clone-last').removeClass('leftside rightside')); copied2 = true; } if (!responsive2) { $linksLast.addClass('hidden'); responsive2 = true; $menuContents.children('.clone-last').removeClass('hidden'); } if ($this.height() <= maxHeight) { return; } // STEP 5: Last responsive set + compact if (!compact) { $this.addClass('compact'); compact = true; } } if (!persistent) { phpbb.registerDropdown($menu.find('a.js-responsive-menu-link'), $menu.find('.dropdown'), false); } // If there are any images in the links list, run the check again after they have loaded $linksAll.find('img').each(function() { $(this).on('load', function() { check(); }); }); check(); $(window).resize(check); }); /** * Do not run functions below for old browsers */ if (oldBrowser) { return; } /** * Adjust topiclist lists with check boxes */ $container.find('ul.topiclist dd.mark').siblings('dt').children('.list-inner').addClass('with-mark'); /** * Appends contents of all extra columns to first column in * .topiclist lists for mobile devices. Copies contents as is. * * To add that functionality to .topiclist list simply add * responsive-show-all to list of classes */ $container.find('.topiclist.responsive-show-all > li > dl').each(function() { var $this = $(this), $block = $this.find('dt .responsive-show:last-child'), first = true; // Create block that is visible only on mobile devices if (!$block.length) { $this.find('dt > .list-inner').append('