Ir para conteúdo
Fórum Script Brasil

Chico Gois

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Sobre Chico Gois

  • Data de Nascimento 25/11/1959

Perfil

  • Gender
    Male

Chico Gois's Achievements

0

Reputação

  1. Ola Frank, Obrigado por atender este tópico. Consegui contactar o desenvolvedor e ele atualizou a extensão. Obrigado pela atenção Chico
  2. Olá a todos! Antes de contiunuar devo informar que não sou programador e sim um entusiasta. Tenho um forum em phpBB onde utilizo extensões pagas, infelizmente o autor anda ausente depois da pandemia. No php 8.0 recebo este erro: [phpBB Debug] PHP Warning: in file [ROOT]/ext/sitesplat/badge/event/listener.php on line 141: Trying to access array offset on value of type bool Se alguém puder me indicar um caminho, agradeço. Arquivo completo <?php /** * * Badge Award extension for the phpBB Forum Software package. * * @copyright (c) 2015 SiteSplat All rights reserved * @license Proprietary * */ namespace sitesplat\badge\event; use sitesplat\badge\conditions\manager; use phpbb\controller\helper; use phpbb\template\template; use phpbb\db\driver\driver_interface; use phpbb\config\config; use phpbb\user; use phpbb\path_helper; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * Event listener */ class listener implements EventSubscriberInterface { /** @var \sitesplat\badge\conditions\manager */ protected $manager; /** @var \phpbb\controller\helper */ protected $controller_helper; /** @var \phpbb\template\template */ protected $template; /** @var \phpbb\db\driver\driver_interface */ protected $db; protected $config; /** @var \phpbb\user */ protected $user; protected $phpbb_root_path; protected $path_helper; /** @var string The database table the badge rules are stored in */ protected $badge_rules_table; /** @var string The database table the badge types are stored in */ protected $badge_types_table; /** @var string The database table the badge events are stored in */ protected $badge_events_table; /** @var string The database table the badges are stored in */ protected $badge_badges_table; public function __construct(manager $manager, helper $controller_helper, template $template, driver_interface $db, config $config, user $user, $phpbb_root_path, path_helper $path_helper, $badge_rules_table, $badge_types_table, $badge_events_table, $badge_badges_table) { $this->manager = $manager; $this->controller_helper = $controller_helper; $this->template = $template; $this->db = $db; $this->config = $config; $this->user = $user; $this->root_path = $phpbb_root_path; $this->path_helper = $path_helper; $this->badge_rules_table = $badge_rules_table; $this->badge_types_table = $badge_types_table; $this->badge_events_table = $badge_events_table; $this->badge_badges_table = $badge_badges_table; $this->type_ids = array(); } /** * Assign functions defined in this class to event listeners in the core * * @return array * @static * @access public */ static public function getSubscribedEvents() { return array( 'core.user_setup' => 'add_page_header_link', // 'core.user_setup' => 'load_language_on_setup', 'core.viewtopic_modify_post_row' => 'modify_post_row', 'core.memberlist_view_profile' => 'modify_profile', 'core.user_add_modify_data' => 'insert_user_data', 'core.update_username' => 'modify_user_data', 'core.delete_user_after' => 'delete_user_badges', // Badge Award "Posts" listeners 'core.submit_post_end' => 'submit_post_check', 'core.delete_posts_after' => 'delete_post_check', // Badge Award "Warnings" listeners 'core.mcp_warn_post_after' => 'add_warning_check', 'core.mcp_warn_user_after' => 'add_warning_check', 'core.submit_likedd_end' => 'submit_likedd_check', 'core.submit_donation_end' => 'submit_donation_check', ); } /** * Add page header link during user setup * * @param object $event The event object * @return null * @access public */ public function add_page_header_link($event) { $this->user->add_lang_ext('sitesplat/badge', 'badge_common'); $this->template->assign_vars(array( 'U_BADGE_PAGE' => $this->controller_helper->route('badge_award_controller', array('route' => 'index.html')), 'U_RECENT' => $this->controller_helper->route('badge_award_controller', array('route' => 'recent.html')), )); $this->type_ids = $this->manager->get_rule_type_ids(); array_walk($this->type_ids, function(&$value, $key, $return) { $value = $value[$return]; }, 'id'); $sql = 'SELECT n.user_id, n.notification_id, n.notification_data, r.rule_name, r.rule_description, b.badge FROM ' . NOTIFICATIONS_TABLE . ' n INNER JOIN ' . NOTIFICATION_TYPES_TABLE . ' t ON t.notification_type_id = n.notification_type_id LEFT JOIN ' . $this->badge_rules_table . ' r ON r.rule_id = n.item_id LEFT JOIN ' . $this->badge_badges_table . ' b ON b.badge_id = r.badge_id WHERE t.notification_type_name = "sitesplat.badge.notification.type.award_added" AND r.rule_type_id IN (' . implode(',', $this->type_ids) . ') AND n.user_id = ' . $event['user_data']['user_id'] . ' AND n.notification_read = 0 LIMIT 1'; $result = $this->db->sql_query($sql); $row = $this->db->sql_fetchrow($result); $this->db->sql_freeresult($result); if (!defined('ADMIN_START') && $row['user_id']) { $notification_data = unserialize($row['notification_data']); $this->template->assign_vars(array( 'NOTIFY_NEW_BADGE' => true, 'NEW_BADGE' => $this->path_helper->update_web_root_path($this->root_path . 'ext/sitesplat/badge/badges/' . $row['badge']), 'RULE_NAME' => addslashes($row['rule_name']), 'RULE_DESCR' => addslashes($row['rule_description']), 'BADGE_WHOHOO' => sprintf($this->user->lang['BADGE_WHOHOO'], $this->controller_helper->route('badge_award_controller', array('route' => 'index.html', 'u' => $row['user_id']))) )); $sql = 'UPDATE ' . NOTIFICATIONS_TABLE . ' SET notification_read = 1 WHERE notification_id = ' . $row['notification_id']; $this->db->sql_query($sql); } } /** * Load common language files during user setup * * @param object $event The event object * @return null * @access public */ public function load_language_on_setup($event) { $lang_set_ext = $event['lang_set_ext']; $lang_set_ext[] = array( 'ext_name' => 'sitesplat/badge', 'lang_set' => 'badge_common', ); $event['lang_set_ext'] = $lang_set_ext; } public function delete_user_badges($event) { $sql = "DELETE FROM {$this->badge_events_table} WHERE " . $this->db->sql_in_set('user_id', $event['user_ids']); $this->db->sql_query($sql); } public function modify_post_row($event) { $badges = ''; $sql = 'SELECT r.rule_id, r.rule_type_id, r.rule_name, rule_min_value, rule_max_value, e.date, b.badge, t.rule_type_name, u.badge_route FROM ' . $this->badge_rules_table . ' r LEFT OUTER JOIN ' . $this->badge_events_table . ' e ON e.rule_id = r.rule_id LEFT JOIN ' . USERS_TABLE . ' u ON u.user_id = e.user_id LEFT JOIN ' . $this->badge_types_table . ' t ON t.rule_type_id = r.rule_type_id LEFT JOIN ' . $this->badge_badges_table . ' b ON b.badge_id = r.badge_id WHERE e.user_id = ' . $event['row']['user_id'] . ' AND r.rule_type_id IN (' . implode(',', $this->type_ids) . ') ORDER BY ' . (($this->config['badgeaward_random']) ? 'RAND()' : 'r.rule_type_id, r.rule_id'); $result = $this->db->sql_query($sql); $i = 0; while ($row = $this->db->sql_fetchrow($result)) { if ($i < $this->config['badgeaward_amount']) { $badges .= '<a href="' . $this->root_path . 'badge/' . (($row['badge_route'] != '') ? $row['badge_route'] . '.html' : 'index.html?u=' . $event['row']['user_id']) . '"><img alt="' . $this->manager->get_condition_lang($row['rule_type_name']) . '" title="' . (($row['rule_type_name'] != 'sitesplat.badge.type.custom') ? $this->manager->get_condition_lang($row['rule_type_name']) . $this->manager->get_condition_type_lang($row['rule_min_value'], $row['rule_max_value'], $row['rule_type_name']) : $row['rule_name']) . '" style="vertical-align:middle;width:16px;height:16px;" src="' . $this->path_helper->update_web_root_path($this->root_path . 'ext/sitesplat/badge/badges/' . $row['badge']) . '"></a> '; } $i++; } $this->db->sql_freeresult($result); if ($event['row']['user_id'] != ANONYMOUS) { $post_row = $event['post_row']; $post_row['BADGES'] = $badges . (($i > $this->config['badgeaward_amount']) ? $this->user->lang('MORE_BADGES', $this->root_path . 'badge/index.html?u=' . $event['row']['user_id'], ($i - $this->config['badgeaward_amount'])) : ''); $event['post_row'] = $post_row; } } public function modify_profile($event) { $this->user->add_lang_ext('sitesplat/badge', 'badge_acp'); $badges = ''; $sql = 'SELECT r.rule_id, r.rule_type_id, r.rule_name, r.rule_description, rule_min_value, rule_max_value, e.date, b.badge, t.rule_type_name FROM ' . $this->badge_rules_table . ' r LEFT OUTER JOIN ' . $this->badge_events_table . ' e ON e.rule_id = r.rule_id LEFT JOIN ' . $this->badge_types_table . ' t ON t.rule_type_id = r.rule_type_id LEFT JOIN ' . $this->badge_badges_table . ' b ON b.badge_id = r.badge_id WHERE e.user_id = ' . $event['member']['user_id'] . ' AND r.rule_type_id IN (' . implode(',', $this->type_ids) . ') ORDER BY r.rule_type_id, r.rule_id'; $result = $this->db->sql_query($sql); while ($row = $this->db->sql_fetchrow($result)) { $this->template->assign_block_vars('badges', array( 'NAME' => $this->manager->get_condition_lang($row['rule_type_name']), 'BADGE' => $this->path_helper->update_web_root_path($this->root_path . 'ext/sitesplat/badge/badges/' . $row['badge']), 'TITLE' => ($row['rule_type_name'] != 'sitesplat.badge.type.custom') ? $this->manager->get_condition_lang($row['rule_type_name']) . $this->manager->get_condition_type_lang($row['rule_min_value'], $row['rule_max_value'], $row['rule_type_name']) : $row['rule_name'], 'DESCRIPTION' => $row['rule_description'], 'DATE' => $this->user->format_date($row['date'], 'j M Y') )); } $this->db->sql_freeresult($result); } public function insert_user_data($event) { $user_row = $event['user_row']; $sql_ary = $event['sql_ary']; $sql_ary['badge_route'] = $this->Slug($user_row['username']); $event['sql_ary'] = $sql_ary; } public function modify_user_data($event) { $new_name = $this->Slug($event['new_name']); $sql = 'UPDATE ' . USERS_TABLE . ' SET badge_route = "' . $new_name . '" WHERE username = "' . $event['new_name'] . '"'; $this->db->sql_query($sql); } protected function var_display($i) { echo '<pre>'; print_r($i); echo '</pre>'; return true; } /** * Check user's post count after submitting a post for badge award * * @param object $event The event object * @return null * @access public */ public function submit_post_check($event) { $sql = 'SELECT rule_id FROM ' . $this->badge_rules_table . ' r LEFT JOIN ' . $this->badge_types_table . ' t ON t.rule_type_id = r.rule_type_id where t.rule_type_name = "sitesplat.badge.type.posts"'; $result = $this->db->sql_query($sql, 3600); $rows = $this->db->sql_fetchrowset($result); $this->db->sql_freeresult($result); foreach($rows as $rule) { $this->manager->check_condition('sitesplat.badge.type.posts', $rule['rule_id'], array( 'users' => $event['data']['poster_id'], 'action' => 'nosync', )); } } /** * Check user's post count after deleting a post for badge award * * @param object $event The event object * @return null * @access public */ public function delete_post_check($event) { $sql = 'SELECT rule_id FROM ' . $this->badge_rules_table . ' r LEFT JOIN ' . $this->badge_types_table . ' t ON t.rule_type_id = r.rule_type_id where t.rule_type_name = "sitesplat.badge.type.posts"'; $result = $this->db->sql_query($sql, 3600); $rows = $this->db->sql_fetchrowset($result); $this->db->sql_freeresult($result); foreach($rows as $rule) { $this->manager->check_condition('sitesplat.badge.type.posts', $rule['rule_id'], array( 'action' => 'delete', 'users' => $event['poster_ids'], )); } } /** * Check user's warnings count after receiving a warning for badge award * * @param object $event The event object * @return null * @access public */ public function add_warning_check($event) { $sql = 'SELECT rule_id FROM ' . $this->badge_rules_table . ' r LEFT JOIN ' . $this->badge_types_table . ' t ON t.rule_type_id = r.rule_type_id where t.rule_type_name = "sitesplat.badge.type.warnings"'; $result = $this->db->sql_query($sql, 3600); $rows = $this->db->sql_fetchrowset($result); $this->db->sql_freeresult($result); foreach($rows as $rule) { $this->manager->check_condition('sitesplat.badge.type.warnings', $rule['rule_id'], array( 'users' => $event['user_row']['user_id'], 'action' => 'nosync', )); } } /** * Check user's likedd after submitting a likedd for badge award * * @param object $event The event object * @return null * @access public */ public function submit_likedd_check($event) { $sql = 'SELECT rule_id, options FROM ' . $this->badge_rules_table . ' r LEFT JOIN ' . $this->badge_types_table . ' t ON t.rule_type_id = r.rule_type_id where t.rule_type_name = "sitesplat.badge.type.likedd" AND (options = ' . bindec(sprintf( "%02d", (string) !$event['ld'] . '0')) . ' OR options = ' . bindec(sprintf( "%02d", (string) !$event['ld'] . '1')) . ')'; $result = $this->db->sql_query($sql, 3600); $rows = $this->db->sql_fetchrowset($result); $this->db->sql_freeresult($result); foreach($rows as $rule) { $this->manager->check_condition('sitesplat.badge.type.likedd', $rule['rule_id'], array( 'users' => $event['user_id'], 'action' => 'nosync', 'option' => $rule['options'] )); } } public function submit_donation_check($event) { $sql = 'SELECT rule_id FROM ' . $this->badge_rules_table . ' r LEFT JOIN ' . $this->badge_types_table . ' t ON t.rule_type_id = r.rule_type_id where t.rule_type_name = "sitesplat.badge.type.donations"'; $result = $this->db->sql_query($sql, 3600); $rows = $this->db->sql_fetchrowset($result); $this->db->sql_freeresult($result); foreach($rows as $rule) { $this->manager->check_condition('sitesplat.badge.type.donations', $rule['rule_id'], array( 'users' => $event['user_id'], 'action' => 'nosync', )); } } protected function Slug($string) { return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-')); } }
  3. Eu consegui o que queria, porem a sidebar agora cria barra de rolagem quando o conteúdo é pequeno. Este é o CSS @charset "UTF-8"; @import url(//fonts.googleapis.com/css?family=Montserrat:400|Muli:300,400|Inconsolata); #top-github-link, #body #breadcrumbs { position: relative; top: 50%; -webkit-transform: translateY(-50%); -moz-transform: translateY(-50%); -o-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .button, .button-secondary { display: inline-block; padding: 7px 12px; } .button:active, .button-secondary:active { margin: 2px 0 -2px 0; } body { background: #fff; color: #555; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a { color: #1694CA; } a:hover { color: #0e6185; } pre { position: relative; } .bg { background: #fff; border: 1px solid #eaeaea; } b, strong, label, th { font-weight: 600; } .default-animation, #header #logo-svg, #header #logo-svg path, #sidebar, #sidebar ul, #body, #body .padding, #body .nav { -webkit-transition: all 0.5s ease; -moz-transition: all 0.5s ease; transition: all 0.5s ease; } fieldset { border: 1px solid #ddd; } textarea, input[type="email"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="url"], input[type="color"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"], select[multiple=multiple] { background-color: white; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.06); } textarea:hover, input[type="email"]:hover, input[type="number"]:hover, input[type="password"]:hover, input[type="search"]:hover, input[type="tel"]:hover, input[type="text"]:hover, input[type="url"]:hover, input[type="color"]:hover, input[type="date"]:hover, input[type="datetime"]:hover, input[type="datetime-local"]:hover, input[type="month"]:hover, input[type="time"]:hover, input[type="week"]:hover, select[multiple=multiple]:hover { border-color: #c4c4c4; } textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { border-color: #1694CA; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.06), 0 0 5px rgba(19, 131, 179, 0.7); } #header { background: #1694CA; color: #fff; text-align: center; padding: 1rem; } #header a { display: inline-block; } #header #logo-svg { width: 8rem; height: 2rem; } #header #logo-svg path { fill: #fff; } .searchbox { margin-top: 0.5rem; position: relative; border: 1px solid #19a5e1; background: #1383b3; border-radius: 4px; } .searchbox label { color: rgba(255, 255, 255, 0.8); position: absolute; left: 10px; top: 3px; } .searchbox span { color: rgba(255, 255, 255, 0.6); position: absolute; right: 10px; top: 3px; cursor: pointer; } .searchbox span:hover { color: rgba(255, 255, 255, 0.9); } .searchbox input { display: inline-block; color: #fff; width: 100%; height: 30px; background: transparent; border: 0; padding: 0 25px 0 30px; margin: 0; font-weight: 400; } .searchbox input::-webkit-input-placeholder { color: rgba(255, 255, 255, 0.6); } .searchbox input::-moz-placeholder { color: rgba(255, 255, 255, 0.6); } .searchbox input:-moz-placeholder { color: rgba(255, 255, 255, 0.6); } .searchbox input:-ms-input-placeholder { color: rgba(255, 255, 255, 0.6); } #sidebar-toggle { display: none; } @media only all and (max-width: 47.938em) { #sidebar-toggle { display: inline-block; } } #sidebar { background-color: #38424D; position: absolute; top: 0; width: 300px; bottom: 0; left: auto; font-weight: 500; font-size: 15px; } #sidebar a { color: #bbbbbb; } #sidebar a:hover { color: #d5d5d5; } #sidebar a.subtitle { color: rgba(187, 187, 187, 0.6); } #sidebar hr { border-bottom: 1px solid #323a44; } #sidebar a.padding { padding: 0 1rem; } #sidebar h5 { margin: 2rem 0 0; position: relative; line-height: 2; } #sidebar h5 a { display: block; margin-left: 0; margin-right: 0; padding-left: 1rem; padding-right: 1rem; } #sidebar h5 i { color: rgba(187, 187, 187, 0.6); position: absolute; right: 0.6rem; top: 0.7rem; font-size: 80%; } #sidebar h5.parent a { background: #293038; color: #c8c8c8 !important; } #sidebar h5.active a { background: #fff; color: #555 !important; } #sidebar h5.active i { color: #555 !important; } #sidebar h5 + ul.topics { display: none; margin-top: 0; } #sidebar h5.parent + ul.topics, #sidebar h5.active + ul.topics { display: block; } #sidebar ul { list-style: none; padding: 0; margin: 0; } #sidebar ul.searched a { color: #888888; } #sidebar ul.searched .search-match a { color: #d5d5d5; } #sidebar ul.searched .search-match a:hover { color: #eeeeee; } #sidebar ul.topics { margin: 0 1rem; } #sidebar ul.topics.searched ul { display: block; } #sidebar ul.topics ul { display: none; padding-bottom: 1rem; } #sidebar ul.topics ul ul { padding-bottom: 0; } #sidebar ul.topics li.parent ul, #sidebar ul.topics > li.active ul { display: block; } #sidebar ul.topics > li > a { line-height: 2rem; font-size: 1.1rem; } #sidebar ul.topics > li > a b { opacity: 0.5; font-weight: normal; } #sidebar ul.topics > li > a .fa { margin-top: 9px; } #sidebar ul.topics > li.parent, #sidebar ul.topics > li.active { background: #2d353e; margin-left: -1rem; margin-right: -1rem; padding-left: 1rem; padding-right: 1rem; } #sidebar ul li.active > a { background: #fff; color: #555 !important; margin-left: -1rem; margin-right: -1rem; padding-left: 1rem; padding-right: 1rem; } #sidebar ul li { padding: 0; } #sidebar ul li.visited + span { margin-right: 16px; } #sidebar ul li a { display: block; padding: 2px 0; } #sidebar ul li a span { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; display: block; } #sidebar ul li > a { padding: 4px 0; } #sidebar ul li .fa { display: none; float: right; font-size: 13px; min-width: 16px; margin: 4px 0 0 0; text-align: right; } #sidebar ul li.visited > a .read-icon { color: #1694CA; display: inline; } #sidebar ul li li { padding-left: 1rem; text-indent: 0.2rem; } #main { background: #f7f7f7; margin: 0 0 1.563rem 0; } #body { position: relative; margin-left: 300px; min-height: 100%; } #body img, #body .video-container { margin: 3rem auto; display: block; text-align: center; } #body img.border, #body .video-container.border { border: 2px solid #e6e6e6 !important; padding: 2px; } #body img.shadow, #body .video-container.shadow { box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); } #body .bordered { border: 1px solid #ccc; } #body .padding { padding: 3rem 6rem; } @media only all and (max-width: 59.938em) { #body .padding { position: static; padding: 15px 3rem; } } @media only all and (max-width: 47.938em) { #body .padding { padding: 5px 1rem; } } #body h1 + hr { margin-top: -1.7rem; margin-bottom: 3rem; } @media only all and (max-width: 59.938em) { #body #navigation { position: static; margin-right: 0 !important; width: 100%; display: table; } } #body .nav { position: absolute; top: 0; bottom: 0; width: 4rem; font-size: 50px; height: 100%; cursor: pointer; display: table; text-align: center; } #body .nav > i { display: table-cell; vertical-align: middle; text-align: center; } @media only all and (max-width: 59.938em) { #body .nav { display: table-cell; position: static; top: auto; width: 50%; text-align: center; height: 100px; line-height: 100px; padding-top: 0; } #body .nav > i { display: inline-block; } } #body .nav:hover { background: #F6F6F6; } #body .nav.nav-pref { left: 0; } #body .nav.nav-next { right: 0; } #body-inner { margin-bottom: 5rem; } #chapter { display: flex; align-items: center; justify-content: center; height: 100%; padding: 2rem 0; } #chapter #body-inner { padding-bottom: 3rem; max-width: 80%; } #chapter h3 { font-family: "Muli", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight: 400; text-align: center; } #chapter h1 { font-size: 5rem; border-bottom: 4px solid #F0F2F4; } #chapter p { text-align: center; font-size: 1.2rem; } #footer { padding: 3rem 1rem; color: #a2a2a2; font-size: 13px; } #footer p { margin: 0; } body { font-family: "Muli", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; letter-spacing: -0.03rem; font-weight: 400; } h1, h2, h3, h4, h5, h6 { font-family: "Montserrat", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight: 400; text-rendering: optimizeLegibility; line-height: 150%; letter-spacing: -0px; } h1 { text-align: center; letter-spacing: -3px; } h2 { letter-spacing: -2px; } h3 { letter-spacing: -1px; } blockquote { border-left: 10px solid #F0F2F4; } blockquote p { font-size: 1.1rem; color: #999; } blockquote cite { display: block; text-align: right; color: #666; font-size: 1.2rem; } blockquote { position: relative; } blockquote blockquote { position: static; } blockquote > blockquote > blockquote { margin: 0; } blockquote > blockquote > blockquote p { padding: 15px; display: block; font-size: 1rem; margin-top: 0rem; margin-bottom: 0rem; color: #666; } blockquote > blockquote > blockquote p:first-child:before { position: absolute; top: 2px; color: #fff; font-family: FontAwesome; content: ''; left: 10px; } blockquote > blockquote > blockquote p:first-child:after { position: absolute; top: 2px; color: #fff; left: 2rem; font-weight: bold; content: 'Info'; } blockquote > blockquote > blockquote > p { margin-left: -71px; border-top: 30px solid #F0B37E; background: #FFF2DB; } blockquote > blockquote > blockquote > blockquote > p { margin-left: -94px; border-top: 30px solid rgba(217, 83, 79, 0.8); background: #FAE2E2; } blockquote > blockquote > blockquote > blockquote > p:first-child:after { content: 'Warning'; } blockquote > blockquote > blockquote > blockquote > blockquote > p { margin-left: -118px; border-top: 30px solid #6AB0DE; background: #E7F2FA; } blockquote > blockquote > blockquote > blockquote > blockquote > p:first-child:after { content: 'Note'; } blockquote > blockquote > blockquote > blockquote > blockquote > blockquote > p { margin-left: -142px; border-top: 30px solid rgba(92, 184, 92, 0.8); background: #E6F9E6; } blockquote > blockquote > blockquote > blockquote > blockquote > blockquote > p:first-child:after { content: 'Tip'; } code, kbd, pre, samp { font-family: "Inconsolata", monospace; } code { background: #f9f2f4; color: #9c1d3d; padding: .2rem .4rem; border-radius: 3px; } pre { padding: 1rem; margin: 2rem 0; background: #f6f6f6; border: 1px solid #ddd; border-radius: 2px; line-height: 1.15; font-size: 1rem; } pre code { color: #237794; background: inherit; font-size: 1rem; } hr { border-bottom: 4px solid #F0F2F4; } .page-title { margin-top: -25px; padding: 25px; float: left; clear: both; background: #1694CA; color: #fff; } #body a.anchor-link { color: #ccc; } #body a.anchor-link:hover { color: #1694CA; } .scrollbar-inner > .scroll-element .scroll-element_track { background-color: rgba(255, 255, 255, 0.3); } .scrollbar-inner > .scroll-element .scroll-bar { background-color: #b5d1eb; } .scrollbar-inner > .scroll-element:hover .scroll-bar { background-color: #ccc; } .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar { background-color: #ccc; } table { border: 1px solid #eaeaea; table-layout: auto; } th { background: #f7f7f7; padding: 0.5rem; } td { padding: 0.5rem; border: 1px solid #eaeaea; } .button { background: #1694CA; color: #fff; box-shadow: 0 3px 0 #1380ae; } .button:hover { background: #1380ae; box-shadow: 0 3px 0 #106c93; color: #fff; } .button:active { box-shadow: 0 1px 0 #106c93; } .button-secondary { background: #F8B450; color: #fff; box-shadow: 0 3px 0 #f7a733; } .button-secondary:hover { background: #f7a733; box-shadow: 0 3px 0 #f69b15; color: #fff; } .button-secondary:active { box-shadow: 0 1px 0 #f69b15; } .bullets { margin: 1.7rem 0; margin-left: -0.85rem; margin-right: -0.85rem; overflow: auto; } .bullet { float: left; padding: 0 0.85rem; } .two-column-bullet { width: 50%; } @media only all and (max-width: 47.938em) { .two-column-bullet { width: 100%; } } .three-column-bullet { width: 33.33333%; } @media only all and (max-width: 47.938em) { .three-column-bullet { width: 100%; } } .four-column-bullet { width: 25%; } @media only all and (max-width: 47.938em) { .four-column-bullet { width: 100%; } } .bullet-icon { float: left; background: #1694CA; padding: 0.875rem; width: 3.5rem; height: 3.5rem; border-radius: 50%; color: #fff; font-size: 1.75rem; text-align: center; } .bullet-icon-1 { background: #1694CA; } .bullet-icon-2 { background: #16cac4; } .bullet-icon-3 { background: #b2ca16; } .bullet-content { margin-left: 4.55rem; } .tooltipped { position: relative; } .tooltipped:after { position: absolute; z-index: 1000000; display: none; padding: 5px 8px; font: normal normal 11px/1.5 "Muli", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; color: #fff; text-align: center; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-wrap: break-word; white-space: pre; pointer-events: none; content: attr(aria-label); background: rgba(0, 0, 0, 0.8); border-radius: 3px; -webkit-font-smoothing: subpixel-antialiased; } .tooltipped:before { position: absolute; z-index: 1000001; display: none; width: 0; height: 0; color: rgba(0, 0, 0, 0.8); pointer-events: none; content: ""; border: 5px solid transparent; } .tooltipped:hover:before, .tooltipped:hover:after, .tooltipped:active:before, .tooltipped:active:after, .tooltipped:focus:before, .tooltipped:focus:after { display: inline-block; text-decoration: none; } .tooltipped-s:after, .tooltipped-se:after, .tooltipped-sw:after { top: 100%; right: 50%; margin-top: 5px; } .tooltipped-s:before, .tooltipped-se:before, .tooltipped-sw:before { top: auto; right: 50%; bottom: -5px; margin-right: -5px; border-bottom-color: rgba(0, 0, 0, 0.8); } .tooltipped-se:after { right: auto; left: 50%; margin-left: -15px; } .tooltipped-sw:after { margin-right: -15px; } .tooltipped-n:after, .tooltipped-ne:after, .tooltipped-nw:after { right: 50%; bottom: 100%; margin-bottom: 5px; } .tooltipped-n:before, .tooltipped-ne:before, .tooltipped-nw:before { top: -5px; right: 50%; bottom: auto; margin-right: -5px; border-top-color: rgba(0, 0, 0, 0.8); } .tooltipped-ne:after { right: auto; left: 50%; margin-left: -15px; } .tooltipped-nw:after { margin-right: -15px; } .tooltipped-s:after, .tooltipped-n:after { transform: translateX(50%); } .tooltipped-w:after { right: 100%; bottom: 50%; margin-right: 5px; transform: translateY(50%); } .tooltipped-w:before { top: 50%; bottom: 50%; left: -5px; margin-top: -5px; border-left-color: rgba(0, 0, 0, 0.8); } .tooltipped-e:after { bottom: 50%; left: 100%; margin-left: 5px; transform: translateY(50%); } .tooltipped-e:before { top: 50%; right: -5px; bottom: 50%; margin-top: -5px; border-right-color: rgba(0, 0, 0, 0.8); } /*************** SCROLLBAR BASE CSS ***************/ .highlightable { padding: 25px 0 15px; } .scroll-wrapper { overflow: hidden !important; padding: 0 !important; position: relative; } .scroll-wrapper > .scroll-content { border: none !important; box-sizing: content-box !important; height: auto; left: 0; margin: 0; max-height: none; max-width: none !important; overflow: scroll !important; padding: 0; position: relative !important; top: 0; width: auto !important; } .scroll-wrapper > .scroll-content::-webkit-scrollbar { height: 0; width: 0; } .scroll-element { display: none; } .scroll-element, .scroll-element div { box-sizing: content-box; } .scroll-element.scroll-x.scroll-scrollx_visible, .scroll-element.scroll-y.scroll-scrolly_visible { display: block; } .scroll-element .scroll-bar, .scroll-element .scroll-arrow { cursor: default; } .scroll-textarea > .scroll-content { overflow: hidden !important; } .scroll-textarea > .scroll-content > textarea { border: none !important; box-sizing: border-box; height: 100% !important; margin: 0; max-height: none !important; max-width: none !important; overflow: scroll !important; outline: none; padding: 2px; position: relative !important; top: 0; width: 100% !important; } .scroll-textarea > .scroll-content > textarea::-webkit-scrollbar { height: 0; width: 0; } /*************** SIMPLE INNER SCROLLBAR ***************/ .scrollbar-inner > .scroll-element, .scrollbar-inner > .scroll-element div { border: none; margin: 0; padding: 0; position: absolute; z-index: 10; } .scrollbar-inner > .scroll-element div { display: block; height: 100%; left: 0; top: 0; width: 100%; } .scrollbar-inner > .scroll-element.scroll-x { bottom: 2px; height: 8px; left: 0; width: 100%; } .scrollbar-inner > .scroll-element.scroll-y { height: 100%; right: 2px; top: 0; width: 8px; } .scrollbar-inner > .scroll-element .scroll-element_outer { overflow: hidden; } .scrollbar-inner > .scroll-element .scroll-element_outer, .scrollbar-inner > .scroll-element .scroll-element_track, .scrollbar-inner > .scroll-element .scroll-bar { -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; } .scrollbar-inner > .scroll-element .scroll-element_track, .scrollbar-inner > .scroll-element .scroll-bar { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter: alpha(opacity=30); opacity: 0.3; } /* update scrollbar offset if both scrolls are visible */ .scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { left: -12px; } .scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { top: -12px; } .scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size { left: -12px; } .scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size { top: -12px; } .lightbox-active #body { overflow: visible; } .lightbox-active #body .padding { overflow: visible; } #github-contrib i { vertical-align: middle; } .featherlight img { margin: 0 !important; } .lifecycle #body-inner ul { list-style: none; margin: 0; padding: 2rem 0 0; position: relative; } .lifecycle #body-inner ol { margin: 1rem 0 1rem 0; padding: 2rem; position: relative; } .lifecycle #body-inner ol li { margin-left: 1rem; } .lifecycle #body-inner ol strong, .lifecycle #body-inner ol label, .lifecycle #body-inner ol th { text-decoration: underline; } .lifecycle #body-inner ol ol { margin-left: -1rem; } .lifecycle #body-inner h3[class*='level'] { font-size: 20px; position: absolute; margin: 0; padding: 4px 10px; right: 0; z-index: 1000; color: #fff; background: #1ABC9C; } .lifecycle #body-inner ol h3 { margin-top: 1rem !important; right: 2rem !important; } .lifecycle #body-inner .level-1 + ol { background: #f6fefc; border: 4px solid #1ABC9C; color: #16A085; } .lifecycle #body-inner .level-1 + ol h3 { background: #2ECC71; } .lifecycle #body-inner .level-2 + ol { background: #f7fdf9; border: 4px solid #2ECC71; color: #27AE60; } .lifecycle #body-inner .level-2 + ol h3 { background: #3498DB; } .lifecycle #body-inner .level-3 + ol { background: #f3f9fd; border: 4px solid #3498DB; color: #2980B9; } .lifecycle #body-inner .level-3 + ol h3 { background: #34495E; } .lifecycle #body-inner .level-4 + ol { background: #e4eaf0; border: 4px solid #34495E; color: #2C3E50; } .lifecycle #body-inner .level-4 + ol h3 { background: #34495E; } #top-bar { background: #F6F6F6; border-radius: 2px; margin: 0rem -1rem 2rem; padding: 0 1rem; height: 0; min-height: 3rem; } #top-github-link { position: relative; z-index: 1; float: right; display: block; } #body #breadcrumbs { height: auto; display: block; margin-bottom: 0; padding-left: 0; line-height: 1.4; } #body #breadcrumbs span { padding: 0 0.1rem; } @media only all and (max-width: 59.938em) { #sidebar { width: 230px; } #body { margin-left: 230px; } } @media only all and (max-width: 47.938em) { #sidebar { width: 230px; left: -230px; } #body { margin-left: 0; width: 100%; } .sidebar-hidden { overflow: hidden; } .sidebar-hidden #sidebar { left: 0; } .sidebar-hidden #body { margin-left: 230px; overflow: hidden; } .sidebar-hidden #overlay { position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 10; background: rgba(255, 255, 255, 0.5); cursor: pointer; } } .copy-to-clipboard { background-image: url(../images/clippy.svg); background-position: 50% 50%; background-size: 16px 16px; background-repeat: no-repeat; width: 27px; height: 1.45rem; top: -1px; display: inline-block; vertical-align: middle; position: relative; color: #3c3c3c; background-color: #f9f2f4; margin-left: -.2rem; cursor: pointer; border-radius: 0 2px 2px 0; } .copy-to-clipboard:hover { background-color: #f1e1e5; } pre .copy-to-clipboard { position: absolute; right: 4px; top: 4px; background-color: #eee; border-color: #ddd; border-radius: 2px; } pre .copy-to-clipboard:hover { background-color: #d9d9d9; } .parent-element { -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; transform-style: preserve-3d; } /*# sourceMappingURL=theme.css.map */
  4. Olá a todos. Estou fazendo a documentação de alguns produtos e encontrei este site https://getgrav.org/ e estou usando tema LEARN2 https://demo.hibbittsdesign.org/grav-learn2-git-sync/ que satisfaz minha necessidade. O que vou fazer é integrar visual com o restante do site. Pensei em usar IFRAME mas não é nada elegante. Como no demo acima o Sidebar é fixo e o conteúdo é que rola, comentei esta linha no CSS #sidebar { background-color: #38424D; /* position: fixed; */ Só que não estou conseguindo trazer o lado do conteúdo para o topo conforme este link https://www.mundophpbb.com.br/docs/teste/ Agradeço a quem puder ajudar. Ps.: Quanto a integração visual não tenho problema. Obrigado
×
×
  • Criar Novo...