Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Dodawanie bloku do aplikacji?


Rekomendowane odpowiedzi

  • Manager

Też tego nie mogę znaleźć, ale na takie coś zawsze mam jedną radę - zajrzeć już w istniejące dodatki i niestety/stety uczyć się samemu.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Dodałem plik tabela.php do "Widgets" z zawartością:

<?php

namespace IPS\monitor\widgets;

if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

class _tabela extends \IPS\Widget\PermissionCache
{
	public $key = 'tabela';
	
	public $app = 'monitor';
		
	public $plugin = '';
	

	public function __construct( $uniqueKey, array $configuration, $access=null, $orientation=null )
	{
		try
		{
			if (  isset( $configuration['monitor_widget_custom_block'] ) )
			{
				$block = \IPS\monitor\tabela\Block::load( $configuration['monitor_widget_custom_block'], 'block_key' );
				if ( $block->type === 'custom' AND ! $block->cache )
				{
					$this->neverCache = TRUE;
				}
			}
		}
		catch( \Exception $e ) { }
		
		parent::__construct( $uniqueKey, $configuration, $access, $orientation );
	}
	
	public function configuration( &$form=null )
 	{
	    if ( $form === null )
	    {
		    $form = new \IPS\Helpers\Form;
	    }

	    $form->add( new \IPS\Helpers\Form\Node( 'monitor_widget_custom_block', ( isset( $this->configuration['monitor_widget_custom_block'] ) ? \IPS\monitor\tabela\Block::load( $this->configuration['monitor_widget_custom_block'], 'block_key' ) : NULL ), FALSE, array(
            'class' => '\IPS\monitor\tabela\Container',
            'permissionCheck' => function( $node )
                {
	                if ( $node instanceof \IPS\monitor\tabela\Container )
	                {
		                return FALSE;
	                }

	                return TRUE;
                }
        ) ) );

	    return $form;
 	}

	public function preConfig( $values )
	{
		$newValues = array();

		if ( isset( $values['monitor_widget_custom_block'] ) )
		{
			$newValues['monitor_widget_custom_block'] = $values['monitor_widget_custom_block']->key;
		}

		return $newValues;
	}

	public function render()
	{
		if ( isset( $this->configuration['monitor_widget_custom_block'] ) )
		{
			return (string) \IPS\monitor\tabela\Block::display( $this->configuration['monitor_widget_custom_block'], $this->orientation );
		}

		return '';
	}
}

Lecz coś nie działa, tzn nie wyświetla się w blokach

Odnośnik do komentarza
Udostępnij na innych stronach

edit:

<?php

namespace IPS\monitor\widgets;

if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

class _tabela extends \IPS\Widget\StaticCache
{
	/**
	 * @brief	Widget Key
	 */
	public $key = 'tabela';
	
	/**
	 * @brief	App
	 */
	public $app = 'monitor';
		
	/**
	 * @brief	Plugin
	 */
	public $plugin = '';
	
	/**
	 * Initialise this widget
	 *
	 * @return void
	 */ 
	public function init()
	{

		\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'widget.css', 'monitor', 'widgets' ) );
		parent::init();
	}
	
 	public function preConfig( $values )
 	{
 		return $values;
 	}

	public function render()
	{

			return $this->output(
			require 'IPS\monitor\sources\table.php';
			);

	}
}
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Masz włączony tryb IN_DEV na forum gdzie robisz te dodatki? Pewnie masz.

No to teraz w menu rozwijanym przy aplikacji przejdź do trybu dev i tam dodaj ten widget. :)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

To tam mam, kod widgetu:

<?php
namespace IPS\monitor\widgets;
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}
class _lgslmon extends \IPS\Widget
{
	public $key = 'lgslmon';
	public $app = 'monitor';
	public $plugin = '';
	public function init()
	{
		parent::init();
	}
 
 	public function preConfig( $values )
 	{
 		return $values;
 	}
	public function render()
	{
		
			return $this->output(
			require 'IPS\monitor\sources\table.php';
			);
}

A tu w ACP:

http://imgur.com/a/8CItW

Odnośnik do komentarza
Udostępnij na innych stronach

A to kod widgetu:

<?php
namespace IPS\monitor\widgets;
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}
class _lgslmon extends \IPS\Widget
{
	public $key = 'lgslmon';
	public $app = 'monitor';
	public $plugin = '';
	public function init()
	{
		parent::init();
	}
 
	public function render()
	{
		require 'IPS\monitor\sources\table.php';
	}
}
Odnośnik do komentarza
Udostępnij na innych stronach

 

Włączyłem wyświetlanie errorów PHP i coś z tym, że nie ma szablonów

Aha. To zrób coś żeby rozwiązać problem.

PS: Wydaje mi się że nie za bardzo rozumiesz istotę przestrzeni nazw. Coś takiego:

require 'IPS\monitor\sources\table.php';

Nie ma prawa działać.

 

To w jaki sposób zrobić require z aplikacji z katalogu sources?

Odnośnik do komentarza
Udostępnij na innych stronach

Sama część statyczna powinna być w szablonach a nie plikach php w folderze aplikacji.
Jak już będziesz miał szablon, zwracasz sobie w metodzie render():

\IPS\Theme::i()->getTemplate('group', 'app')

Natomiast, jeżeli już chcesz robić tak jak się nie powinno:

\IPS\ROOT_PATH . '/applications/monitor/sources/table.php'
  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

	public function render()
	{
		return $this->output(\IPS\ROOT_PATH . '/applications/monitor/sources/table.php');
	}

Tak zrobiłem i znowu:

BadMethodCallException thrown with message "NO_TEMPLATE_FILE - "

Stacktrace:
#14 BadMethodCallException in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Dev/Template.php:88
#13 IPS\Theme\Dev\_Template:__call in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Theme.php:3968
#12 IPS\Theme\Dev\Template:clearNotificationsLink in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Theme.php:3968
#11 IPS\Theme\theme_core_front_global_userBar in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Dev/Template.php:163
#10 call_user_func_array in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Dev/Template.php:163
#9 IPS\Theme\Dev\_Template:__call in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Theme.php:3968
#8 IPS\Theme\Dev\hook54:userBar in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Theme.php:3968
#7 IPS\Theme\theme_core_front_global_globalTemplate in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Dev/Template.php:163
#6 call_user_func_array in /home/samppsrd/domains/psr-serv.pl/public_html/system/Theme/Dev/Template.php:163
#5 IPS\Theme\Dev\_Template:__call in /home/samppsrd/domains/psr-serv.pl/public_html/system/Dispatcher/Dispatcher.php:149
#4 IPS\Theme\Dev\hook54:globalTemplate in /home/samppsrd/domains/psr-serv.pl/public_html/system/Dispatcher/Dispatcher.php:149
#3 IPS\_Dispatcher:finish in /home/samppsrd/domains/psr-serv.pl/public_html/system/Dispatcher/Standard.php:101
#2 IPS\Dispatcher\_Standard:finish in /home/samppsrd/domains/psr-serv.pl/public_html/system/Dispatcher/Front.php:483
#1 IPS\Dispatcher\_Front:finish in /home/samppsrd/domains/psr-serv.pl/public_html/system/Dispatcher/Dispatcher.php:131
#0 IPS\_Dispatcher:run in /home/samppsrd/domains/psr-serv.pl/public_html/index.php:18

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

I ten błąd powyżej jest najnowszym? Najlepiej usuń wszystkie błędy, a potem wywołaj i podaj najnowszy.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.