Foren als gelesen markieren bei Unread Posts

Hier gibt es kleinere Snippets zu phpBB 3.0.x.
Snippets sind kleine Codeänderungen die zu klein sind, um richtige Mods zu sein.
Benutzeravatar
reyno41
Administrator
Administrator
Offline
Beiträge: 265
Registriert: Sa 19. Jun 2010, 20:12
Quad/ATV: Can Am
Skype: canam800er
Wohnort: Bayern
Kontaktdaten:

Foren als gelesen markieren bei Unread Posts

Beitragvon reyno41 » Fr 24. Mai 2013, 11:56


Beschreibung: Zeigt unterhalb der Liste der Ungelesenen Beiträge die Option "Foren als gelesen markieren" an.
Anmerkung: Die Option "Foren als gelesen markieren" wird nur angezeigt, wenn es Ungelesene Beiträge gibt.

Öffne: root/includes/functions.php

Finde:

Code: Alles auswählen

      'U_MEMBERLIST'         => append_sid("{$phpbb_root_path}memberlist.$phpEx"),

Zuvor einfügen:

Code: Alles auswählen

        'U_MARK_FORUMS'         => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&mark=forums') : '',


Für prosilver basierende Styles!

Öffne: root/styles/[stylename]/template/search_results.html

Finde:

Code: Alles auswählen

<!-- IF PAGINATION or .searchresults or PAGE_NUMBER -->
   <ul class="linklist">
      <li class="rightside pagination">
         {SEARCH_MATCHES}<!-- IF PAGINATION --> &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF -->
      </li>
   </ul>
<!-- ENDIF -->

Ersetzen mit:

Code: Alles auswählen

<!-- IF PAGINATION or .searchresults or PAGE_NUMBER -->
   <ul class="linklist">
      <li class="rightside pagination">
         {SEARCH_MATCHES}<!-- IF PAGINATION --> &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF -->
      </li>
<!-- IF searchresults.S_UNREAD_TOPIC -->
      <li class="leftside"><a href="{U_MARK_FORUMS}" accesskey="m"><span>{L_MARK_FORUMS_READ}</span></a></li>   
<!-- ENDIF -->
   </ul>
<!-- ENDIF -->


Mit Button
Finde:

Code: Alles auswählen

<li class="leftside"><a href="{U_MARK_FORUMS}" accesskey="m"><span>{L_MARK_FORUMS_READ}</span></a></li>

Ersetzen mit:

Code: Alles auswählen

<li class="leftside"><a href="{U_MARK_FORUMS}" accesskey="m" class="button2"><span>{L_MARK_FORUMS_READ}</span></a></li>


Für subsilver2 basierende Styles!

Öffne: root/styles/[stylename]/template/search_results.html

Finde:

Code: Alles auswählen

<div class="nav" style="float: {S_CONTENT_FLOW_END};"><!-- INCLUDE pagination.html --></div>

Danach einfügen:

Code: Alles auswählen

<br clear="all" />
<!-- IF searchresults.S_UNREAD_TOPIC -->
<a class="nav" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a>
<!-- ENDIF -->


Mit Button
Finde:

Code: Alles auswählen

<a class="nav" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a>

Erstetzen mit:

Code: Alles auswählen

<a class="btnmain" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a>


Aktualisiere deine Styles:
"Administrations-Bereich" (ACP) > "Styles" > "Templates" > jedes > "Aktualisieren"

Leere den Cache im "Administrations-Bereich" (ACP) > "Allgemein" > "Den Cache leeren"


Screenshots
prosilver:


subsilver2:
Schön ist es auf der Welt zu sein

Benutzeravatar
reyno41
Administrator
Administrator
Offline
Beiträge: 265
Registriert: Sa 19. Jun 2010, 20:12
Quad/ATV: Can Am
Skype: canam800er
Wohnort: Bayern
Kontaktdaten:

Foren als gelesen markieren bei Unread Posts

Beitragvon reyno41 » Fr 29. Nov 2013, 18:23


Beschreibung: Zeigt oberhalb der Liste der Ungelesenen Beiträge die Option "Foren als gelesen markieren" an.
Anmerkung: Die Option "Foren als gelesen markieren" wird nur angezeigt, wenn es Ungelesene Beiträge gibt.

Öffne: root/includes/functions.php

Finde:

Code: Alles auswählen

if (!defined('IN_PHPBB'))
{
   exit;
}

Danach einfügen:

Code: Alles auswählen

function check_unread_posts()
{
   global $db, $user, $auth, $exists_unreads;

   // The next block of code skips the check if the user is a guest (since prosilver and subsilver hide the unread link from guests)
   // or if the user is a a bot.  If you use a template that shows the link to unread posts for guests, you may want to get rid of the first part of the if
   // clause so that the text of the link to unread posts will toggle rather than always reading 'View unread posts'.
   if (($user->data['user_id'] == ANONYMOUS) || $user->data['is_bot'])
   {
      return true;
   }

   // if the user is on the index and functions_display has already checked for unreads, we skip unnecessary queries and return true or false
   if ($exists_unreads == 1)
   {
      return true;
   }
   if ($exists_unreads == -1)
   {
      return false;
   }

   // user not on index so we need to check whether there are unreads

   // find forums where last post time is greater than the forum's mark time (or, if there is none, the user's lastmark time)
   $sql = 'SELECT f.forum_id
      FROM ' . FORUMS_TABLE . ' f
      LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft
      ON (f.forum_id = ft.forum_id AND ft.user_id = ' . $user->data['user_id'] . ')
      WHERE f.forum_last_post_time > ft.mark_time
         OR (ft.mark_time IS NULL AND f.forum_last_post_time > ' . $user->data['user_lastmark'] . ')';
   $result = $db->sql_query($sql);

   // cycle through the results and return true if we hit one the user is authorized to read
   while($row = $db->sql_fetchrow($result))
   {
      if ($auth->acl_get('f_read', $row['forum_id']))
      {
         return true;
      }
   }
   $db->sql_freeresult($result);

   // last step: check to see if any global topics are unread, since the preceding test only checks regular forums
   // (this code is copied from the test for global unreads that appears in display_forums()
   $unread_ga_list = get_unread_topics($user->data['user_id'], 'AND t.forum_id = 0', '', 1);
   if (!empty($unread_ga_list))
   {
      return true;
   }

   // user has no unreads, so return false
   return false;
}


Finde:

Code: Alles auswählen

             t.topic_last_post_time > $last_mark AND
            (
            (tt.mark_time IS NOT NULL AND t.topic_last_post_time > tt.mark_time) OR
            (tt.mark_time IS NULL AND ft.mark_time IS NOT NULL AND t.topic_last_post_time > ft.mark_time) OR
            (tt.mark_time IS NULL AND ft.mark_time IS NULL)
            )
            $sql_extra
            $sql_sort",
      );

Ersetzen mit:

Code: Alles auswählen

            (
            (tt.mark_time IS NOT NULL AND t.topic_last_post_time > tt.mark_time) OR
            (tt.mark_time IS NULL AND ft.mark_time IS NOT NULL AND t.topic_last_post_time > ft.mark_time) OR
            (tt.mark_time IS NULL AND ft.mark_time IS NULL AND t.topic_last_post_time > $last_mark)
            )
            $sql_extra
            $sql_sort",
      );


Finde:

Code: Alles auswählen

// The following assigns all _common_ variables that may be used at any point in a template.


Zuvor einfügen:

Code: Alles auswählen

   $s_exists_unreads = check_unread_posts();


Finde:

Code: Alles auswählen

      'U_MEMBERLIST'         => append_sid("{$phpbb_root_path}memberlist.$phpEx"),

Zuvor einfügen:

Code: Alles auswählen

        'U_MARK_FORUMS'         => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&amp;mark=forums') : '',


Finde:

Code: Alles auswählen

'U_SEARCH_UNREAD'      => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts')

Zuvor einfügen:

Code: Alles auswählen

        'S_EXISTS_UNREADS'      => $s_exists_unreads,


Für prosilver basierende Styles!

Öffne: root/styles/[stylename]/template/search_results.html

Finde:

Code: Alles auswählen

<div class="rightside pagination">
         {SEARCH_MATCHES}<!-- IF PAGINATION --> &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF -->
      </div>

Danach einfügen:

Code: Alles auswählen

<!-- IF S_EXISTS_UNREADS and S_SHOW_TOPICS -->
       <ul class="linklist">
          <li class="leftside"><a href="{U_MARK_FORUMS}" accesskey="m"><span>{L_MARK_FORUMS_READ}</span></a></li>
       </ul>
<!-- ENDIF -->

Mit Button:

Code: Alles auswählen

<!-- IF S_EXISTS_UNREADS and S_SHOW_TOPICS  -->
       <ul class="linklist">
          <li class="leftside"><a href="{U_MARK_FORUMS}" accesskey="m" class="button2"><span>{L_MARK_FORUMS_READ}</span></a></li>
       </ul>
<!-- ENDIF -->


Für subsilver2 basierende Styles!

Öffne: root/styles/[stylename]/template/search_results.html

Finde:

Code: Alles auswählen

<!-- IF S_SHOW_TOPICS -->

Danach einfügen:

Code: Alles auswählen

<!-- IF S_EXISTS_UNREADS -->
<a class="nav" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a><br clear="all" /><br clear="all" />
<!-- ENDIF -->


Mit Button:

Code: Alles auswählen

<!-- IF S_EXISTS_UNREADS -->
<a class="btnmain" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a>
<br clear="all" /><br clear="all" />
<!-- ENDIF -->


Aktualisiere deine Styles:
"Administrations-Bereich" (ACP) > "Styles" > "Templates" > jedes > "Aktualisieren"

Leere den Cache im "Administrations-Bereich" (ACP) > "Allgemein" > "Den Cache leeren"
Schön ist es auf der Welt zu sein

Benutzeravatar
reyno41
Administrator
Administrator
Offline
Beiträge: 265
Registriert: Sa 19. Jun 2010, 20:12
Quad/ATV: Can Am
Skype: canam800er
Wohnort: Bayern
Kontaktdaten:

Foren als gelesen markieren bei Unread Posts

Beitragvon reyno41 » Sa 30. Nov 2013, 18:11


Es gibt noch eine einfache Variante, da wird die Funktion "Foren als gelesen markieren" immer eingblendet,
egal ob es Ungelesene Beiträge gibt oder nicht.

Öffne: root/includes/functions.php

Finde:

Code: Alles auswählen

      'U_MEMBERLIST'         => append_sid("{$phpbb_root_path}memberlist.$phpEx"),

Zuvor einfügen:

Code: Alles auswählen

        'U_MARK_FORUMS'         => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&amp;mark=forums') : '',


Für prosilver basierende Styles!

Öffne: root/styles/[stylename]/template/search_results.html

Finde:

Code: Alles auswählen

          <div class="rightside pagination">
             {SEARCH_MATCHES}<!-- IF PAGINATION --> &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF -->
          </div>

Danach einfügen:

Code: Alles auswählen

    <!-- IF S_SHOW_TOPICS -->
           <ul class="linklist">
              <li class="leftside"><a href="{U_MARK_FORUMS}" accesskey="m"><span>{L_MARK_FORUMS_READ}</span></a></li>
           </ul>
    <!-- ENDIF -->


Mit Button

Code: Alles auswählen

    <!-- IF S_SHOW_TOPICS -->
           <ul class="linklist">
<li class="leftside"><a href="{U_MARK_FORUMS}" accesskey="m" class="button2"><span>{L_MARK_FORUMS_READ}</span></a></li>
           </ul>
    <!-- ENDIF -->


Für subsilver2 basierende Styles!

Öffne: root/styles/[stylename]/template/search_results.html

Finde:

Code: Alles auswählen

<!-- IF S_SHOW_TOPICS -->

Danach einfügen:

Code: Alles auswählen

<a class="nav" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a><br clear="all" /><br clear="all" />


Mit Button

Code: Alles auswählen

<a class="btnmain" href="{U_MARK_FORUMS}">{L_MARK_FORUMS_READ}</a>
<br clear="all" /><br clear="all" />


Aktualisiere deine Styles:
"Administrations-Bereich" (ACP) > "Styles" > "Templates" > jedes > "Aktualisieren"

Leere den Cache im "Administrations-Bereich" (ACP) > "Allgemein" > "Den Cache leeren"
Schön ist es auf der Welt zu sein