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

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

Modal się nie wyświetla

JS  Założony przez  Kacper Wojciechowski.

Witam, dziś wróciłem do skryptu MyBB i zacząłem pisać aplikacje. Zrobiłem ajax:modal wg. tego "poradnika": https://github.com/kylefox/jquery-modal 


Szablon panel_playersonline:
<table border="0" cellspacing="0" cellpadding="5" class="tborder">
    <thead>
        <tr>
            <td class="thead" colspan="4">
                <div><strong>Gracze Online ({$aInformation['players']})</strong></div>
            </td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td class="tcat" align="center">ID</td>
            <td class="tcat" align="center">Nick</td>
            <td class="tcat" align="center">Punktów</td>
            <td class="tcat" align="center">Poziom</td>    
        </tr>
        {$panel_playersonline_row}
    </tbody>
</table>

<script>$('a[rel="ajax:modal"]').click(function(event) {

 $.ajax({

   url: $(this).attr('href'),

   success: function(newHTML, textStatus, jqXHR) {
     $(newHTML).appendTo('body').modal();
   },

   error: function(jqXHR, textStatus, errorThrown) {
   }

 });

 return false;
});</script>
panel_playersonline_row:

<tr>
    <td class="trow1" align="center">{$player['playerid']}</td>
    <td class="trow1" align="center"><a href="{$mybb->settings['bburl']}/panel.php?module=main&controller=player&nick={$player['nickname']}" rel="ajax:modal">{$player['nickname']}</td>
    <td class="trow1" align="center">{$player['score']}</td>
    <td class="trow1" align="center">XXX</td>    
</tr>
Oraz zawartość tej podstrony z hrefa:

<div class='modal'>fsdfdsafds</div>
Proszę o pomoc
Nie korzystałem z tego liba, więc nie wypowiem się z czego może to wynikać, ale jeżeli chcesz je robić w ramach linków, to warto zastanowić się nad użyciem fancyboxa - też można i też się dobrze spisuje.
(16.07.2016, 22:44)Łukasz Tkacz napisał(a): Nie korzystałem z tego liba, więc nie wypowiem się z czego może to wynikać, ale jeżeli chcesz je robić w ramach linków, to warto zastanowić się nad użyciem fancyboxa - też można i też się dobrze spisuje.
Tutaj było napisane:
https://webboard.pl/thread-67696.html

Że MyBB korzysta z tego natywnie ;v
A konsola js cokolwiek wypluwa?
No właśnie nie, dodaje tylko szablon na sam dół (http://gamingserver.pl/panel.php) (Naciśnij na nick)
Ale po co kombinować? Skoro MyBB już robi coś takiego to wzoruj się na tym. Okienko dostrzeżeń, reputacji, gotowe rozwiązania, kopiuj - wklej.
No to zrobiłem kopiuj wklej,
panel.js
var panel = {
    init: function()
    {
        $(document).ready(function(){
        });
    },

    show_stats: function(pid)
    {
        MyBB.popupWindow("/panel.php?module=main&controller=player&nick="+pid);
    }
};

panel.init();

<a href="javascript:panel.show_stats({$player['nickname']});">{$player['nickname']}</a>

Muszę przekazać nick gracza ale czasem mają w nicku [] itp a przez to jest error
SyntaxError: Unexpected identifier 'DRivER'. Expected ')' to end a argument list.
<a href="javascript:panel.show_stats('{$player['nickname']}');">{$player['nickname']}</a>

Bo to ciąg znaków a nie wartość liczbowa.
No i tak samo jak z tamtym Ajax-modalem.
pokaz panel.php
<?php
/* MyBB 1.8 */
define("IN_MYBB", 1);
define('THIS_SCRIPT', 'panel.php');
require_once "./global.php";
add_breadcrumb('Panel Gracza', "panel.php");
/* Active Menu */
$controller = $_GET['controller'];
if (empty($controller)) {
    $controller = "main";
}
$do = $_GET['do'];
if (empty($do)) {
    $do = "main";
}
$panel = '<script>$( "#game_'.$controller.'" ).addClass( "active" );</script><script>$( "#do_'.$do.'" ).addClass( "active" );</script>';
/* Panel */
switch ($controller) {
    case 'player':
        eval("\$popup = \"".$templates->get("panel_modalplayer")."\";");
        echo $popup;
        break;

    case 'groups':
        $menu_bok = '<li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=main" id="do_main">
                <i class="fa fa-users"></i> Lista Gangów
            </a>
        </li>
        <li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=stats" id="do_stats">
                <i class="fa fa-area-chart"></i> Statystyki Gangów
            </a>
        </li>';
        break;

    case 'players':
        $menu_bok = '<li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=main" id="do_main">
                <i class="fa fa-users"></i> Szukaj gracza
            </a>
        </li>
        <li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=lists" id="do_lists">
                <i class="fa fa-male"></i> Toplisty
            </a>
        </li>
        <li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=arena" id="do_arena">
                <i class="fa fa-ship"></i> Areny DM
            </a>
        </li>
        <li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=bans" id="do_bans">
                <i class="fa fa-ban"></i> Lista banów
            </a>
        </li>';
        break;
    
    default:
        $menu_bok = '<li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=main" id="do_main">
                <i class="fa fa-users"></i> Gracze Online
            </a>
        </li>
        <li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=areachart" id="do_areachart">
                <i class="fa fa-area-chart"></i> Statystyki Serwera
            </a>
        </li>
        <li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=globe" id="do_globe">
                <i class="fa fa-globe"></i> Mapa Świata
            </a>
        </li>
        <li>
            <a href="'.$mybb->settings['bburl'].'/panel.php?module=main&controller='.$controller.'&do=chart" id="do_chart">
                <i class="fa fa-line-chart"></i> Wykres Graczy
            </a>
        </li>';

        switch ($do) {
            case 'chart':
                $panel .= 'xdddggffsdfgfgd';
                break;

            case 'globe':
                $panel .= 'xdfsdasdffgddfsddd';
                break;

            case 'areachart':
                $panel .= 'dfsfadssdaf';
                break;
            
            default:
                require MYBB_ROOT."/panel/libs/SampQueryAPI.php";
                $query = new SampQueryAPI('185.73.228.158', '7756');
                if ($query->isOnline()) {
                    $aInformation = $query->getInfo();
                    $aPlayers = $query->getDetailedPlayers();

                    if (!is_array($aPlayers) || count($aPlayers) == 0) {
                        $error_code .= 'Brak graczy na serwerze.';
                        eval("\$panel .= \"".$templates->get("panel_error")."\";");
                    } else {
                        foreach($aPlayers as $player) {
                            eval("\$panel_playersonline_row .= \"".$templates->get("panel_playersonline_row")."\";");
                        }
                        eval("\$panel .= \"".$templates->get("panel_playersonline")."\";");
                    }
                } else {
                    $error_code .= 'Brak odpowiedzi od serwera.';
                    eval("\$panel .= \"".$templates->get("panel_error")."\";");
                }
                break;
        }

        break;
}
/* Output */
eval("\$page = \"".$templates->get("panel_index")."\";");
output_page($page);
?>
Źle to zrobiles, zresztą sam zobacz
http://gamingserver.pl/panel.php?module=...nick=Zbyss.
a normalnie wypluwa

zobacz sobie najpierw jako osobny plik, później lacz, bo chyba sam się gubisz w swoim kodzie

ps. mamy system zalaczników
.modal jest tam ale atrybut stylu go ukrywa
no i wlasnie dlatego mosisz miec to w innym ifie z
eval("\$page = \"".$templates->get("panel_index")."\";");
output_page($page);
No to mam teraz tak:
    case 'player':
        eval("\$popup = \"".$templates->get("panel_modalplayer")."\";");
        break;
if ($controller != 'player') {
    eval("\$page = \"".$templates->get("panel_index")."\";");
    output_page($page);
} else {
    output_page($popup);
}
Ale modal nadal się nie pojawia



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

2 gości