Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Pasek thead dziwnie skrócony dla gości

Założony przez  ColinZ.

Adres forum:
otsroleplay.cba.pl

Wersja silnika:
1.8.x

Opis problemu:
Cześć. Potrzebuję szybkiej pomocy odnośnie paska #thead. Nie rozumiem co się zadziało. Mianowicie: będąc jako użytkownik zalogowany pasek jest normalnej długości. W momencie, gdy się wyloguję i pozostanę na forum jako gość pasek jest dziwnie skrócony i nie mam pojęcia jak do tego doszło. Pomocy! :)

       

Po lewej jako zalogowany, po prawej nie.
Tabelka się rozjeżdża, ponieważ skrypt domyślnie dostosowuje sobie wartość colspan (rozpiętość nagłówka tabeli thead) w zależności od tego czy przeglądający ma uprawnienia moderatora czy nie. Chodzi tu o narzędzia moderacji wątków (checkboxy).

Jak wyglądają Twoje szablony forumdisplay_threadlist oraz forumdisplay_thread? Widzę, że nie masz checkboxa w nagłówku tabeli do masowego zaznaczania wątków.
Żadna sprawa nie jest przegrana dopóki choć jeden szaleniec o nią walczy. Tylko wariaci są coś warci.
(12.05.2019, 21:09)Adrian napisał(a): Jak wyglądają Twoje szablony forumdisplay_threadlist oraz forumdisplay_thread? Widzę, że nie masz checkboxa w nagłówku tabeli do masowego zaznaczania wątków.

Proszę.

forumdisplay_thread

<tr class="inline_row">
<td align="center" class="{$bgcolor}{$thread_type_class}" width="1%"><span class="thread_status {$folder}" title="{$folder_label}">&nbsp;{$icon}</span></td>
<td class="{$bgcolor}{$thread_type_class}" style="width: 40%;" colspan="2">
<div>
          <span>{$prefix} {$gotounread}{$thread['threadprefix']}<span class="{$inline_edit_class} {$new_class}" id="tid_{$inline_edit_tid}"><a href="{$thread['threadlink']}">{$thread['subject']}</a></span>{$thread['multipage']}</span>
<div class="grayp" style="text-align: left;">stworzony przez {$thread['profilelink']} dnia {$thread_date}</div>
</div>
</td>

<td align="right" class="{$bgcolor}{$thread_type_class} fd_replies" colspan="2" style="text-align: right; width: 40%; padding-right: 1%;"><a href="{$mybb->settings['bburl']}/misc.php?action=whoposted&tid={$thread['tid']}" onclick="MyBB.whoPosted({$thread['tid']}); return false;">{$thread['replies']} odpowiedzi</a>{$unapproved_posts}<br /> <span class="grayp">{$thread['views']} wyświetleń</span></td>
<td align="right" class="{$bgcolor}{$thread_type_class} fd_replies" colspan="2" style="text-align: right; width: 3%; padding-right: 1%;">
<td class="{$bgcolor}{$thread_type_class}" style="width: 10%; text-align: left;">
<span style="position:relative; float: left; margin: 15px 15px 15px -35px;">{+}forumdisplay_thread_lastpost|{$thread['lastposteruid']}{-}<avatarep_uid_[{$thread['lastposteruid']}]></span>
<span class="lastpost smalltext" style="position:relative; float: middle; margin: 0px 22px 0px 0px; padding: 0px;"><span class="fd_replies">{$avbr}{$lastposterlink}<i class="fa fa-angle-right fa-fw icon"></i><br><span class="grayp">{$lastpostdate}<a href="{$thread['lastpostlink']}" title="{$lang->lastpost}"></a>
</span></span>
<span class="{$bgcolor}{$thread_type_class}" style="position: relative; margin: 0px 15px 0px 0px; padding: 0px;">{$modbit}</span>
</td
</tr>
forumdisplay_threadlist
<div style="float: left;">
<span class="forum_title">{$foruminfo['name']}</span><br />
<span class="forum_desc">{$foruminfo['description']}</span>
</div>
<div class="nowy_temat" style="float: right;">{$newthread}</div>
<div class="subs_button" style="float: right;">
<a href="usercp.php?action={$add_remove_subscription}subscription&amp;type=forum&amp;fid={$fid}&amp;my_post_key={$mybb->post_code}">{$add_remove_subscription_text}</a>{$clearstoredpass}</div>
<div class="subs_button2" style="float: right;"><span class="forum_markread"><a href="misc.php?action=markread&amp;fid={$fid}{$post_code_string}"><i class="fa fa-check fa-fw"></i> {$lang->markforum_read}</a></span>
</div>




<div style="float: right;">

</div>

<br class="clear" /><br />

<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder clear">
<tr>
<td class="thead" colspan="{$colspan}">
<span style="float: left; width: 45.5%;"><a href="{$sorturl}&amp;sortby=subject&amp;order=asc">Nazwa tematu i jego autor</a></span>
<span style="float: right; width: 10%;"><a href="{$sorturl}&amp;sortby=lastpost&amp;order=desc">Ostatni post</a></span>
<span style="float: right; width: 8%;"><a href="{$sorturl}&amp;sortby=replies&amp;order=desc">Statystyki</a></span>

</td>
</tr>

<tr>
<td class="lightblue" colspan="8">
<span style="float: left;">{$multipage}</span>
</td>
</tr>

{$selectall}
{$announcementlist}
{$threads}

</table>
<div class="lightblue clearfix">
<span style="float: left;">{$multipage}</span>
<span style="float: right; padding: 5px 8px;">
<form action="forumdisplay.php" method="get">
<input type="hidden" name="fid" value="{$fid}" />
<select name="sortby">
<option value="subject"{$sortsel['subject']}>{$lang->sort_by_subject}</option>
<option value="lastpost"{$sortsel['lastpost']}>{$lang->sort_by_lastpost}</option>
<option value="starter"{$sortsel['starter']}>{$lang->sort_by_starter}</option>
<option value="started"{$sortsel['started']}>{$lang->sort_by_started}</option>
{$ratingsort}
<option value="replies"{$sortsel['replies']}>{$lang->sort_by_replies}</option>
<option value="views"{$sortsel['views']}>{$lang->sort_by_views}</option>
</select>
<select name="order">
<option value="asc"{$ordersel['asc']}>{$lang->sort_order_asc}</option>
<option value="desc"{$ordersel['desc']}>{$lang->sort_order_desc}</option>
</select>
<select name="datecut">
<option value="1"{$datecutsel['1']}>{$lang->datelimit_1day}</option>
<option value="5"{$datecutsel['5']}>{$lang->datelimit_5days}</option>
<option value="10"{$datecutsel['10']}>{$lang->datelimit_10days}</option>
<option value="20"{$datecutsel['20']}>{$lang->datelimit_20days}</option>
<option value="50"{$datecutsel['50']}>{$lang->datelimit_50days}</option>
<option value="75"{$datecutsel['75']}>{$lang->datelimit_75days}</option>
<option value="100"{$datecutsel['100']}>{$lang->datelimit_100days}</option>
<option value="365"{$datecutsel['365']}>{$lang->datelimit_lastyear}</option>
<option value="9999"{$datecutsel['9999']}>{$lang->datelimit_beginning}</option>
</select>
{$prefixselect}
{$gobutton}
</form>
</span>
</div>
<br class="clear" />
<br />
<div class="float_left">
<div class="float_left">
<dl class="thread_legend smalltext">
<dd><span class="thread_status newfolder" title="{$lang->new_thread}">&nbsp;</span> {$lang->new_thread}</dd>
<dd><span class="thread_status newhotfolder" title="{$lang->new_hot_thread}">&nbsp;</span> {$lang->new_hot_thread}</dd>
<dd><span class="thread_status hotfolder" title="{$lang->hot_thread}">&nbsp;</span> {$lang->hot_thread}</dd>
</dl>
</div>
<div class="float_left">
<dl class="thread_legend smalltext">
<dd><span class="thread_status folder" title="{$lang->no_new_thread}">&nbsp;</span> {$lang->no_new_thread}</dd>
<dd><span class="thread_status dot_folder" title="{$lang->posts_by_you}">&nbsp;</span> {$lang->posts_by_you}</dd>
<dd><span class="thread_status closefolder" title="{$lang->closed_thread}">&nbsp;</span> {$lang->closed_thread}</dd>
</dl>
</div>
<br class="clear" />
</div>
<div class="float_right" style="text-align: right;">
{$inlinemod}
{$searchforum}
{$forumjump}
</div>
<br class="clear" />
{$inline_edit_js}
Widzę tu kilka problemów:

- w nagłówku tabeli nie ma komórek <td> a jedynie znaczniki <span>, które mają je imitować - to świadomy zabieg? W mojej ocenie to komplikuje sprawę.
- w szablonie forumdisplay_threadlist brakuje zmiennej {$inlinemodcol} (checkbox masowej moderacji)
- w forumdisplay_thread jest o jedną komórkę za dużo (przedostatnia)
- znalazłem co najmniej dwa niedomknięte znaczniki

Pytanie czy chcesz to naprawić szybko czy dobrze. Jeśli szybko to wystarczy usunąć tę komórkę i na nowo wystylizować sobie wyświetlanie ostatniego avatara. Polecam jednak opcję #2.
Żadna sprawa nie jest przegrana dopóki choć jeden szaleniec o nią walczy. Tylko wariaci są coś warci.
Z racji tego, że dopiero jak gdyby uczę się najpewniej popełniłem kilka błędów przy ustalaniu pozycji ostatniego awatara. :) Jednak nie wydaje mi się, abym cokolwiek usuwał. Postaram się zerknąć na kod raz jeszcze w oparciu o Twoje sugestie. Podpowiesz mi jakie konkretnie miejsce wypełnić komórkami <td> i tą zmienną o której wspomniałeś?
1. Tabela w szablonie forumdisplay_threadlist:

<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder clear">
<tr>
<td class="thead" colspan="2"><a href="{$sorturl}&amp;sortby=subject&amp;order=asc">Nazwa tematu i jego autor</a></td>
<td class="thead" width="200" align="right"><a href="{$sorturl}&amp;sortby=replies&amp;order=desc">Statystyki</a></td>
<td class="thead" width="200"><a href="{$sorturl}&amp;sortby=lastpost&amp;order=desc">Ostatni post</a></td>
{$inlinemodcol}
</tr>

<tr>
<td class="lightblue" colspan="5">
{$multipage}
</td>
</tr>

{$selectall}
{$announcementlist}
{$threads}

</table>
  • - zamieniłem elementy <span> na komórki tabeli <td>
  • - ustaliłem szerokości (width) - pierwsza nie ma ustalonej wartości i rozciąga się automatycznie, pozostałe mają stałą wartość (200)
  • - dodałem brakującą zmienną {$inlinemodcol} (jako czwartą komórkę)
  • - pierwsza komórka ma rozpiętość ustawioną na 2 (colspan) - dzięki temu będzie nachodzić na dwie komórki poniżej: tę z ikonką i tę z nazwą/autorem wątku. Zasada jest taka, że liczba komórek w nagłówku tabeli musi się zgadzać z resztą wierszy tabeli. Jeśli w nagłówku chciałbyś mieć tylko jedną komórkę, wtedy ustalasz colspan równy liczbie komórek w pozostałych wierszach.
  • - pod nagłówkiem jest wiersz z jedną komórką (dla paginacji) więc ustaliłem colspan=5, ponieważ w tabeli (razem z komórką z checkboxem do moderacji) mamy w sumie 5 komórek
2. Wyświetlanie wątku w szablonie forumdisplay_thread:

<tr class="inline_row">
<td align="center" class="{$bgcolor}{$thread_type_class}">
<span class="thread_status {$folder}" title="{$folder_label}">{$icon}</span>
</td>
<td class="{$bgcolor}{$thread_type_class}">
<span>{$prefix} {$gotounread}{$thread['threadprefix']}<span class="{$inline_edit_class} {$new_class}" id="tid_{$inline_edit_tid}"><a href="{$thread['threadlink']}">{$thread['subject']}</a></span>{$thread['multipage']}</span>
<div class="grayp" style="text-align: left;">stworzony przez {$thread['profilelink']} dnia {$thread_date}</div>
</td>
<td align="right" class="{$bgcolor}{$thread_type_class} fd_replies">
<a href="{$mybb->settings['bburl']}/misc.php?action=whoposted&tid={$thread['tid']}" onclick="MyBB.whoPosted({$thread['tid']}); return false;">{$thread['replies']} odpowiedzi</a>{$unapproved_posts}<br /> <span class="grayp">{$thread['views']} wyświetleń</span>
</td>
<td class="{$bgcolor}{$thread_type_class}">
<div class="display:inline-block;vertical-align:middle;">{+}forumdisplay_thread_lastpost|{$thread['lastposteruid']}{-}
</div>
<div class="display:inline-block;vertical-align:middle;">{$lastposterlink}<i class="fa fa-angle-right fa-fw icon"></i>
<span class="grayp">{$lastpostdate}<a href="{$thread['lastpostlink']}" title="{$lang->lastpost}"></a>
</span>
</div>
</td>
{$modbit}
</tr>
  • - domknąłem niedomknięty znacznik <td>
  • - usunąłem dodatkowe stylowanie komórek, colspany oraz inne zbędne elementy
  • - usunąłem zbędne zmienne po innych wtyczkach do wyświetlania avatarów
  • - w przedostatniej komórce dodałem dwa bloki, jeden dla avatara, drugi dla autora i daty ostatniego posta. Dzięki temu oba elementy będą wyświetlał się obok siebie i wyrównywały w pionie (proponuję rozważyć usunięcie lub zmniejszenie rozmiaru tej ikonki strzałki):
<div class="display:inline-block;vertical-align:middle;">

Nie testowałem powyższego, ale powinno działać. No, chyba, że edytowałeś też szablony checkboxów moderacji - wtedy możesz je przywrócić do oryginału.
Żadna sprawa nie jest przegrana dopóki choć jeden szaleniec o nią walczy. Tylko wariaci są coś warci.
Znacznie lepiej, jednak trochę rozjechało się po lewej stronie. 

   

Również ten kwadracik od moderacji powinien znajdować się równo między datą a autorem ostatniego posta.
Strzałkę usunąłem. Faktycznie zawadzała :)
W komórce w ikonką możesz dodać width="1":


<td align="center" class="{$bgcolor}{$thread_type_class}" width="1">
<span class="thread_status {$folder}" title="{$folder_label}">{$icon}</span>
</td>

Co do checkboxa:
Cytat:Nie testowałem powyższego, ale powinno działać. No, chyba, że edytowałeś też szablony checkboxów moderacji - wtedy możesz je przywrócić do oryginału.
Myślę, że tu leży problem.
Żadna sprawa nie jest przegrana dopóki choć jeden szaleniec o nią walczy. Tylko wariaci są coś warci.



Użytkownicy przeglądający ten wątek:

1 gości