wBB3 MesageSidebar?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • wBB3 MesageSidebar?

    Hallo ich bin gerade dabei das Plugin Programmieren zu lernen mir selber bei zu bringen,ich möchte in einem Plugin in schon vorhandenen php und Template Dateien die masageSidebar.tpl anzeigen lassen.

    Leider sind meine Programmier kenntniss noch sehr beschrenkt,das ich nicht weiss wie genau ich das umsetzen kann und hoffe das mir jemand dabei helfen kann?

    @Stricted
    Hat gesagt ich soll es mal hier versuchen. :D
  • NurPech schrieb:

    Dazu arbeitest du dann im PHP-Teil mit der Klasse MessageSidebarFactory (includieren, instanziieren und arbeiten lassen :D)
    Der erste Teil ist verständlich und auch kein Problem,mein Problem fängt nun genau bei diesem teil an den meine php Kenntnisse stehen noch Fast am anfang,ich habe schon Kleine Plugins mit EL erstellt diese haben aber als Inhalt nur Template anweissungen enthalten.

    Mir würde eventuell schon reichen wenn ich wüsste wo ich Teile von includieren, instanziieren und arbeiten lassen finden würde es müssen ja schon Dateien mit dem Inhalt vorhanden sein.

    Das ich MessageSidebarFactory.php includen muss ist mir auch schon bekannt,allerdings weiss ich da nicht ob alle oder nur ein Paar bestimmte.

    Um es mal kurz zu machen was mir fehlt ist das wissen was in den php Dateien stehen müsste und wie ich weiss oder heraus bekomme was rein müsste.
  • Danke habe sie mir mal angeschaut,würde es da reichen z.b. nur diese Teile zu Include.

    PHP-Quellcode

    1. require_once(WCF_DIR.'lib/data/message/sidebar/MessageSidebarFactory.class.php');
    2. /**
    3. * sidebar factory object
    4. *
    5. * @var MessageSidebarFactory
    6. */
    7. public $sidebarFactory = null;
    8. // init sidebars
    9. $this->sidebarFactory = new MessageSidebarFactory($this);
    10. foreach ($this->postList->posts as $post) {
    11. $this->sidebarFactory->create($post);
    12. }
    13. $this->sidebarFactory->init();
    14. 'sidebarFactory' => $this->sidebarFactory,
    Alles anzeigen

    Weil dieser Teil 'sidebarFactory' => $this->sidebarFactory steht z.b. in der besagten Datei ja in.

    PHP-Quellcode

    1. public function assignVariables() {
    2. parent::assignVariables();
    3. WCF::getTPL()->assign(array(
    4. 'permissions' => $this->board->getModeratorPermissions(),
    5. 'markedPosts' => $this->markedPosts,
    6. 'markedThreads' => $this->markedThreads,
    7. 'board' => $this->board,
    8. 'thread' => $this->thread,
    9. 'threadID' => $this->threadID,
    10. 'postID' => $this->postID,
    11. 'boardQuickJumpOptions' => Board::getBoardSelect(),
    12. 'similarThreads' => $this->similarThreads,
    13. 'showAvatar' => (!WCF::getUser()->userID || WCF::getUser()->showAvatar),
    14. 'highlight' => $this->highlight,
    15. 'quotes' => $this->quotes,
    16. 'posts' => $this->postList->posts,
    17. 'polls' => $this->postList->polls,
    18. 'sidebarFactory' => $this->sidebarFactory,
    19. 'attachments' => $this->postList->attachments,
    20. 'allowSpidersToIndexThisPage' => true,
    21. 'enableRating' => $this->enableRating,
    22. 'tags' => $this->tags,
    23. 'sortOrder' => $this->sortOrder
    24. ));
    25. if (WCF::getSession()->spiderID) {
    26. @header('Last-Modified: '.gmdate('D, d M Y H:i:s', $this->thread->lastPostTime).' GMT');
    27. }
    28. }
    Alles anzeigen
  • PHP-Quellcode

    1. <?php
    2. // wcf imports
    3. require_once(WCF_DIR.'lib/data/message/sidebar/MessageSidebar.class.php');
    4. require_once(WCF_DIR.'lib/data/message/sidebar/MessageSidebarObject.class.php');
    5. require_once(WCF_DIR.'lib/system/event/EventHandler.class.php');
    6. /**
    7. * Manages the message sidebars.
    8. *
    9. * @author Marcel Werk
    10. * @copyright 2001-2009 WoltLab GmbH
    11. * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
    12. * @package com.woltlab.wcf.message.sidebar
    13. * @subpackage data.message.sidebar
    14. * @category Community Framework
    15. */
    16. class MessageSidebarFactory {
    17. /**
    18. * sidebar container.
    19. *
    20. * @var Page
    21. */
    22. public $container = null;
    23. /**
    24. * list of sidebar objects.
    25. *
    26. * @var array<MessageSidebar>
    27. */
    28. public $messageSidebars = array();
    29. /**
    30. * Creates a new MessageSidebarFactory.
    31. *
    32. * @param Page $container
    33. */
    34. public function __construct($container = null) {
    35. $this->container = $container;
    36. }
    37. /**
    38. * Creates the sidebar object for given user.
    39. *
    40. * @param MessageSidebarObject $user
    41. */
    42. public function create(MessageSidebarObject $object) {
    43. if (!isset($this->messageSidebars[$object->getMessageType().'-'.$object->getMessageID()])) {
    44. // create sidebar
    45. $sidebar = new MessageSidebar($object);
    46. $this->messageSidebars[$object->getMessageType().'-'.$object->getMessageID()] = $sidebar;
    47. }
    48. }
    49. /**
    50. * Returns the sidebar object for given user.
    51. *
    52. * @param string $messageType
    53. * @param integer $messageID
    54. * @return MessageSidebar
    55. */
    56. public function get($messageType, $messageID) {
    57. return $this->messageSidebars[$messageType.'-'.$messageID];
    58. }
    59. /**
    60. * Initializes the sidebars.
    61. */
    62. public function init() {
    63. // call init event
    64. EventHandler::fireAction($this, 'init');
    65. }
    66. }
    67. ?>
    Alles anzeigen
  • Ich habe nun mal einen Versuch gestartet und habe diesen Code mal in die Plugin .php gepackt.

    Quellcode

    1. <div class="{if !$sidebar->getUser()->userID}{/if}">
    2. {include file='messageSidebar'}
    3. </div>

    bekomme nun das.

    Quellcode

    1. Fatal error: PHP notice in file
    2. /var/www/vhosts/wbb-support.eu/httpdocs/wcf/templates/compiled/555_0_1_tutorialSystemTutorial.php
    3. (540): Undefined index: sidebar
    4. Information:
    5. error message: PHP notice in file
    6. /var/www/vhosts/wbb-support.eu/httpdocs/wcf/templates/compiled/555_0_1_tutorialSystemTutorial.php
    7. (540): Undefined index: sidebar
    8. error code: 0
    9. file: /var/www/vhosts/wbb-support.eu/httpdocs/wcf/lib/system/WCF.class.php (281)
    10. php version: 5.3.3-7+squeeze15
    11. wcf version: 1.1.9 (Tempest)
    12. date: Tue, 02 Apr 2013 14:28:43 +0000
    13. request: /wBB-bbX-Strukturen.html
    14. referer: http://www.wbb-support.eu/tutorial.html
    15. Stacktrace:
    16. #0 /var/www/vhosts/wbb-support.eu/httpdocs/wcf/templates/compiled/555_0_1_tutorialSystemTutorial.php(540): WCF::handleError(8, 'Undefined index...', '/var/www/vhosts...', 540, Array)
    17. #1 /var/www/vhosts/wbb-support.eu/httpdocs/wcf/lib/system/template/Template.class.php(267): include('/var/www/vhosts...')
    18. #2 /var/www/vhosts/wbb-support.eu/httpdocs/wcf/lib/page/AbstractPage.class.php(100): Template->display('tutorialSystemT...')
    19. #3 /var/www/vhosts/wbb-support.eu/httpdocs/wcf/lib/page/TutorialSystemTutorialPage.class.php(398): AbstractPage->show()
    20. #4 /var/www/vhosts/wbb-support.eu/httpdocs/wcf/lib/page/AbstractPage.class.php(46): TutorialSystemTutorialPage->show()
    21. #5 /var/www/vhosts/wbb-support.eu/httpdocs/wcf/lib/util/RequestHandler.class.php(64): AbstractPage->__construct()
    22. #6 /var/www/vhosts/wbb-support.eu/httpdocs/wcf/lib/util/RequestHandler.class.php(92): RequestHandler->__construct('TutorialSystemT...', Array, 'page')
    23. #7 /var/www/vhosts/wbb-support.eu/httpdocs/index.php(8): RequestHandler::handle(Array)
    24. #8 {main}
    Alles anzeigen

    Also die Fehlerausgabe kann ich Lesen das Undefined index: sidebar aber wie Definiere ich das sidebar nun?

    Ich habe es schon mit Codes aus deinem Beispiel versucht,aber ergebniss Los.