Php Script schlägt Quer (Dropdown Menü)

  • PHP

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Piew-Keks.

    Php Script schlägt Quer (Dropdown Menü)

    Hallo, ich habe mir ein Drop Down menü erstellt mit css und es in ein "social Media" script eingefügt in einer Template.

    Wie folgt :
    Spoiler anzeigen

    PHP-Quellcode

    1. <div id="netlog_account_menu">
    2. {literal}
    3. <script type="text/javascript">
    4. $(document).ready(function(){
    5. updateStatus('{/literal}{$aGlobalUser.status}{literal}');
    6. });
    7. function toggleStatusMenu(){
    8. if(document.getElementById('userStatusMenu').style.display == 'block'){
    9. document.getElementById('userStatusMenu').style.display = 'none';
    10. }else{
    11. document.getElementById('userStatusMenu').style.display = 'block';
    12. }
    13. }
    14. function changeUserStatus(rel){
    15. $(window).ajaxCall('netlogtemplate.updateStatus', 'status='+rel, true);
    16. }
    17. function updateStatus(rel){
    18. var translate = {
    19. 'online':'{/literal}{phrase var="netlogtemplate.online"}{literal}',
    20. 'away':'{/literal}{phrase var="netlogtemplate.away"}{literal}',
    21. 'busy':'{/literal}{phrase var="netlogtemplate.busy"}{literal}',
    22. 'out to lunch':'{/literal}{phrase var="netlogtemplate.out_to_lunch"}{literal}',
    23. 'unavailable':'{/literal}{phrase var="netlogtemplate.unavailable"}{literal}',
    24. 'invisible':'{/literal}{phrase var="netlogtemplate.invisible"}{literal}'
    25. };
    26. document.getElementById('userStatusMenu').style.display = 'none';
    27. $("#btnChangeStatus").html(translate[rel]);
    28. if( rel=='online' ) {
    29. $('#btnChangeStatus').removeClass().addClass('user_status user_online');
    30. } else if ( rel=='away' || rel=='out to lunch' ) {
    31. $('#btnChangeStatus').removeClass().addClass('user_status user_away');
    32. } else if ( rel=='busy' || rel=='unavailable' ) {
    33. $('#btnChangeStatus').removeClass().addClass('user_status user_busy');
    34. } else if ( rel=='invisible' ) {
    35. $('#btnChangeStatus').removeClass().addClass('user_status user_offline');
    36. }
    37. }
    38. </script>
    39. {/literal}
    40. <div class="netlog_account_menu_left">
    41. <div id="holder_notify">
    42. {notification}
    43. <div style="clear: both;"></div>
    44. </div>
    45. <div style="clear: both;"></div>
    46. </div>
    47. <div class="netlog_account_menu_right">
    48. <div class="netlog_account_menu_userinfo">
    49. <div style="float:left">{$aGlobalUser|user:'':'':20:10}</div>
    50. <div class="userStatusContainer">
    51. <div class="userstatus_arrow" onclick='toggleStatusMenu()'><a href="javascript:void(0)" class="user_status user_online" id="btnChangeStatus" title="Change your status">online</a></div>
    52. <ul id="userStatusMenu" style="display:none;">
    53. <li><a rel="online" href="javascript:void(0)" onclick="$(this).ajaxCall('netlogtemplate.updateStatus', 'status=online', true); return false;">{phrase var="netlogtemplate.online"}</a></li>
    54. <li><a rel="away" href="javascript:void(0)" onclick="$(this).ajaxCall('netlogtemplate.updateStatus', 'status=away', true);return false;">{phrase var="netlogtemplate.away"}</a></li>
    55. <li><a rel="busy" href="javascript:void(0)" onclick="$(this).ajaxCall('netlogtemplate.updateStatus', 'status=busy', true);return false;">{phrase var="netlogtemplate.busy"}</a></li>
    56. <li><a rel="out to lunch" href="javascript:void(0)" onclick="$(this).ajaxCall('netlogtemplate.updateStatus', 'status=out to lunch', true);return false;">{phrase var="netlogtemplate.out_to_lunch"}</a></li>
    57. <li><a rel="unavailable" href="javascript:void(0)" onclick="$(this).ajaxCall('netlogtemplate.updateStatus', 'status=unavailable', true);return false;">{phrase var="netlogtemplate.unavailable"}</a></li>
    58. <li><a rel="invisible" href="javascript:void(0)" onclick="$(this).ajaxCall('netlogtemplate.updateStatus', 'status=invisible', true);return false;">{phrase var="netlogtemplate.invisible"}</a></li>
    59. </ul>
    60. </div>
    61. <div class="topmenu_user_links">
    62. <div id='cssmenu'>
    63. <ul>
    64. <li class='has-sub last'><a><span>Einstellungen</span></a>
    65. <ul>
    66. <li><a href='index.php?do=/user/profile/'><span>Profil bearbeiten</span></a></li>
    67. <li><a href='index.php?do=/user/privacy'><span>Privatsphäre</span></a></li>
    68. <li><a href='index.php?do=/user/setting/'><span>Kontoeinstellungen</span></a></li>
    69. <li class='last'><a href='index.php?do=/user/logout'><span>Logout</span></a></li>
    70. </ul>
    71. </li>
    72. </ul>
    73. </div>
    74. </div>
    75. </div>
    76. <div class="netlog_account_menu_photo">
    77. {img user=$aGlobalUser suffix='_50_square' max_width=40 max_height=40}
    78. </div>
    79. </div>
    80. <div style="clear: both;"></div>
    81. </div>


    Unzwar diese Zeile :

    PHP-Quellcode

    1. <div id='cssmenu'>
    2. <ul>
    3. <li class='has-sub last'><a><span>Einstellungen</span></a>
    4. <ul>
    5. <li><a href='index.php?do=/user/profile/'><span>Profil bearbeiten</span></a></li>
    6. <li><a href='index.php?do=/user/privacy'><span>Privatsphäre</span></a></li>
    7. <li><a href='index.php?do=/user/setting/'><span>Kontoeinstellungen</span></a></li>
    8. <li class='last'><a href='index.php?do=/user/logout'><span>Logout</span></a></li>
    9. </ul>
    10. </li>
    11. </ul>
    12. </div>


    Mein Problem ist :

    Auf einigen Seiten läuft das Script aber auf einigen ist es verbugt und nicht mehr an seinem Platz...

    Habe ich etwas übersehn? Oder wie kann ich das ändern?
    Hi,

    erstmal hat das o.g. Thema entgegen des Threadtitels nix mit PHP zu tun ;)

    Wenn es zu Darstellungsfehlern kommt, vermute ich erstmal ein CSS Problem.
    Hast du eine Seite auf der wir das auch sehen können? So könnte man dir viel einfacher helfen.

    Verwendest du Ajax? Wenn einer der übergeordneten Container in dem dein Dropdown enthalten ist via AjAX refreshed wird, kann's durchaus sein dass das Javascript dann nicht mehr funzt. Je nachdem, ich kenne halt nich den ganzen Code.

    Ansonsten noch folgende Anmerkungen unabhängig davon:
    - theoretisch kannst du dir die CSS-Klasse "last" sparen, weil es in CSS einen Selektor dafür gibt
    - wenn du ne .htaccess-Datei erstellst und mit mod_rewrite arbeitest, könntest du hübschere URLs erzeugen (RewriteRule ^(.+)$ /index.php?do=$1 [L,QSA])

    Link :thumbup:
    Hello World
    Ok, ich dachte das es an der Template liegt. die css File habe ich mit im Template drin ganz am ende eingefügt.

    Oder kann ich das dropdown anderster darstellen wie oben dieses "busy" "online" usw... das es eine andere möglichkeit gibt.

    Zeigen könnt ich es, nur ist es mit Anmeldung benutzbar die Seite.

    Ajax benutze ich dazu eigentlich nicht.
    Sicher, es gibt 1.000 verschiedene Möglichkeiten ein DropDown zu basteln.

    Dass die Seite nur mit Anmeldung benutzbar ist macht ja nix wenn es deine Seite ist. Dann erstell doch nen Dummy User und gib uns die Daten.

    Link :thumbup:
    Hello World