Jump to content
  • 0
Sign in to follow this  
TeeZ

Pierwsza aplikacja, na start problemy.

Question

Hej,

 

Próbuję coś wykombinować na podstawie -> http://www.invisionpower.com/support/guides/_/advanced-and-developers/application/start-here-creating-an-application-r145

 

I mam kilka pytań:

 

Gdzie mam dokładniej wrzucić skin_helloworld.php? Gdy wrzucam do cache/skin_cache/skin_(np)1 to nie odnajduje go w szablonie o ID 1 na liście. Mam inny układ niż na screenie, ale to pewnie wina starszej wersji skryptu na screenach.

To samo mam z lang, może mam to jakość zainicjować w skrypcie? Nie rozumiem.

Skoro pliki od szablonu daję tam ( do skin_cache[...] ) to po co folder skin_cp?

 

Tutaj mój mysection.php

 

<?php

class public_helloworld_example_mysection extends ipsCommand
{
    public function doExecute( ipsRegistry $registry )
    {
        $this->lang->loadLanguageFile( array( 'public_lang' ), 'helloworld' );

        $this->registry->output->setTitle( $this->lang->words['hello_world_title'] );
        $this->registry->output->addNavigation( $this->lang->words['hello_world_title'], NULL );
        $this->registry->output->addContent( $this->registry->output->getTemplate('helloworld')->helloWorld() ); //GDY TAK JEST, TO WYŚWIETLA BŁĄD. GDY USUNĘ TĄ LINIJKĘ TO BŁĘDU NIE MA, BO WŁAŚNIE NIE POBIERA TEGO BITU.
        $this->registry->output->sendOutput();
    }
}

 

 

Kolejne, z którym od zawsze mam problem. Gdy ustawię DEV na 1 mam błędy np.

 

 

Fatal error: Call to a member function userHoverCard() on a non-object in C:\xampp\htdocs\f\admin\sources\base\ipsMember.php on line 169

 

Na stronie głównej, w panelu admina jest ok.

 

W jaki sposób dodać menu? Dla przykładu chcę cos podobnego jak było w przypadku tworzenia hooków, bo potrzebuję umieścić tam pola typu 'Host', 'Haslo', aby to później wyświetlić w kodzie, podczas łączenia z bazą.

Edited by TeeZ

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

1. skiny tworzymy przez acp tak jak zasoby. nie ma sensu tworzyć ręcznie żadnych plików :)

2. skin_cp to katalog dla panelu admina tam umieszczasz szablon dla sekcji w acp i obrazek apki

3. Ja mam dev tylko dla ACP i pracuje się wyśmienicie. Zamień w conf_global.php 

define('IN_DEV', 0);

na coś takiego:

if( IN_ACP )
{
    define('IN_DEV', 1);
}
else
{
    define('IN_DEV', 0);
}

Ja takie coś używam i wszystko szybko śmiga. Jakie menu chcesz utworzyć bo nie rozumiem. Jeśli chcesz zrobić ustawienia dla aplikacji tak jak dla hooka to robisz tak samo, tylko podczas dodawania grupy ustawień wybierasz z menu rozwijanego swoją apkę, żeby to połączyć :)

Share this post


Link to post
Share on other sites
  • 0

Nie zawsze, jak zrobisz zgodnie z dokumentacją na stronie IPS'u to nie będziesz miał, tylko za dużo z tym zabawy jak dla mnie, żeby się w to bawić...

Share this post


Link to post
Share on other sites
  • 0
1. skiny tworzymy przez acp tak jak zasoby. nie ma sensu tworzyć ręcznie żadnych plików 


 

Co z większa ilością zmiennych? Dajmy, że w mysection.php będę miał 123123 zmiennych typu "$Nick" itp, które chcę później dać w szablonie, to musze wszystkie wypisywać? Czy jest jakieś inne wyjście?

Edited by TeeZ

Share this post


Link to post
Share on other sites
  • 0

Z górą sobie poradziłem, ale dalej te ustawienia aplikacji.

 

Jeśli chcesz zrobić ustawienia dla aplikacji tak jak dla hooka to robisz tak samo, tylko podczas dodawania grupy ustawień wybierasz z menu rozwijanego swoją apkę, żeby to połączyć 

 

Wybieram Hello World i nic. Dodaje tak, jak normalnie hooka. Co robię źle?

Share this post


Link to post
Share on other sites
  • 0

W jaki sposób dodać ustawienia, abym mógł je edytować w :

 

ACP -> Aplikacje -> Moja aplikacja -> Tutaj.

 

Tak jak jest np. w IP.Shoutbox.

 

ORAZ

 

W jaki sposób mogę je odczytać ( tak jak w przypadku hooka : np $this->settings[ 'key_hook' ] )

Edited by TeeZ

Share this post


Link to post
Share on other sites
  • 0

To:

71939370013235602381.png

 

Prościej już wytłumaczyć nie potrafię.

Share this post


Link to post
Share on other sites
  • 0

Ja już rozumiem. Chodzi o to, żeby ustawienia danej aplikacji były nie w acp -> ustawienia systemowe, tylko bezpośrednio w zakładce inne aplikacje -> moja aplikacja.

 

W jednej z akcji dla ACP musisz umieścić taki kod:

$this->html->form_code    = $this->form_code	= 'module=overview&amp;section=overview&amp;do=settings';
		$this->html->form_code_js = $this->form_code_js	= 'module=overview&section=overview&do=settings';
		
		/* Get settings library */
		$classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir('core').'/modules_admin/settings/settings.php', 'admin_core_settings_settings' );
		$settings    = new $classToLoad();
		$settings->makeRegistryShortcuts( $this->registry );
		
		ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );
		
		$settings->html			= $this->registry->output->loadTemplate( 'cp_skin_settings', 'core' );		
		$settings->form_code	= $settings->html->form_code    = 'module=settings&amp;section=settings&amp;';
		$settings->form_code_js	= $settings->html->form_code_js = 'module=settings&section=settings&';

		$this->request['conf_title_keyword'] = 'XXXX';
		$settings->return_after_save         = $this->settings['base_url'] . $this->form_code;
		$settings->_viewSettings();
		
		$this->registry->output->html .= $this->html->footer();
		
		$this->registry->getClass('output')->html_main .= $this->registry->getClass('output')->global_template->global_frame_wrapper();
		$this->registry->getClass('output')->sendOutput();		

gdzie XXXX to klucz, który podałeś przy tworzeniu grupy ustawień.

 

Jeśli zabierasz się za pisanie apek, to polecam zapoznać się z jakąś prostą apką od środka i na jej podstawie dochodzić co i jak działa. Taką dość prostą apką jest np. (SD32) Vehicles System

Share this post


Link to post
Share on other sites
  • 0

Ok, na koniec jak zajmę się ustawieniami, to przejżę.

 

A teraz mam kolejną sprawę, chcę w taki sposob:

                $true['plrid'] = $row['plrid'];
                $wynik[] = $true;

Później próbuję wywołać w szablonie {$wynik['plrid']} i zero reakcji.. Wcześniej nie miałem tego problemu, bo ciągle robiłem foreach [..] $wynik as $row, co teraz sprawdziłem na tym przykładzie i działa! Ale nie chcę tego foreacha, bo jest to pojedynczy rekord. Co robię źle? Wiem, że mógłbym zrobić w taki sposób:

 

$wynik1 = $row['plrid'];

$wynik2 = $row['name']; [..]

 

Ale tych zmiennych by końca  widać nie było. :P

Edited by TeeZ

Share this post


Link to post
Share on other sites
  • 0

Nie rozumiem po co robić takie coś:

$true['plrid'] = $row['plrid'];
                $wynik[] = $true;

Nie możesz do szablonu przekazać $row skoro to pojedynczy rekord i wtedy w szablonie zrobisz

{$zmienna[ 'plrid' ]}
i po problemie. Z Tego co Ty napisałeś przy jednym rekordzie jeśli nie zrobisz foreach to musisz zrobić
{$wynik[0][ 'plrid' ]}

Share this post


Link to post
Share on other sites
  • 0
				
//20 INNYCH TRUE['[...]']
$true['plrid'] = $row['plrid'];
				$true['nick'] = $row['uniqueid'];
				$wynik[] = $true;

 

                $this->registry->output->addContent($this->registry->output->getTemplate('HLStats')->player($wynik, $pages));

 

I próbuję wywołać na przykład {$wynik['plrid']} i zero reakcji.

 

Robię to, bo bedę miał z 30-40 zmiennych, które chcę później umieścić w taki sposób ( za pomocą 1 zmiennej ) w szablonie.

 

$row to wynik mysql_fetch_array

Edited by TeeZ

Share this post


Link to post
Share on other sites
  • 0

A jest jakieś inne wyjście? Czyli w tej sytuacji musze używać dla każdego wyniku inną zmienną, tak?

Share this post


Link to post
Share on other sites
  • 0

Jeśli chcesz $wynik używać bez [0] to nie przypisuj tego w kodzie, tylko zrób tak:

//20 INNYCH TRUE['[...]']
$true['plrid'] = $row['plrid'];
				$true['nick'] = $row['uniqueid'];

 

                $this->registry->output->addContent($this->registry->output->getTemplate('HLStats')->player($true, $pages));

ale nie wiem czy jest ok, bo tak w sumie wszystko po omacku Ci pisze :P

Share this post


Link to post
Share on other sites
  • 0

Nie kombinowałem, przypisałem xx zmiennych ( sami zobaczycie jak to wyszło, gdy wydam ją do pobrania ).

 

Teraz powracam znowu do ustawień. :P Czytałem

http://www.invisionpower.com/support/guides/_/advanced-and-developers/application/settings-r199

 

Doszedłem do tego, że wyexportowałem ustawienia i.. dalej nie wiem co zrobić..

 

 

// You can use settings by accessing the array directly
print ipsRegistry::$settings['SETTING_KEY'];

// Additionally, most files have a $this->settings shortcut setup, and it is customary to access settings through this shortcut
print $this->settings['SETTING_KEY'];

// If you need to set up this shortcut in your own files, you can do so like so.  Note that you assign the value as a reference
// so that changes to the ipsRegistry::$settings array are automatically reflected in your object, even if made after this call is done
$this->settings        =& $this->registry->fetchSettings();
 

Rozumiem, że w tym chodzi o to, że mogęsprawdzić jakie mam ustawienia? Coś typu print_r($member)?

 

 

 

Przejdę dalej, wyeksportowałem te ustawienia, utworzyłem w modules_admin/general/general.php i defaultSection

 

W general.php

<?php

// This would correlate to admin_applications/other/myapp/modules_admin/mymodule/mysection.php

class admin_hlstats_general_general extends ipsCommand
{
	public function doExecute( ipsRegistry $registry )
	{
		//-----------------------------------------
		// Set up some shortcuts for our urls
		//-----------------------------------------

		$this->form_code	= 'module=hlstats&amp;section=general';
		$this->form_code_js	= 'module=hlstats&section=general';

		//-------------------------------
		// Grab the settings controller, instantiate and set up shortcuts
		//-------------------------------

		$classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir('core') . '/modules_admin/settings/settings.php', 'admin_core_settings_settings' );

		$settings	= new $classToLoad();
		$settings->makeRegistryShortcuts( $this->registry );

		//-------------------------------
		// Load language file that will be needed
		//-------------------------------

		ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );

		//-------------------------------
		// Load the skin file the settings file will need and pass shortcuts
		//-------------------------------

		$settings->html		= $this->registry->output->loadTemplate( 'cp_skin_settings', 'core' );
		$settings->form_code	= $settings->html->form_code	= 'module=settings&amp;section=settings';
		$settings->form_code_js	= $settings->html->form_code_js = 'module=settings&section=settings';

		//-------------------------------
		// Here we specify the setting group key
		//-------------------------------

		$this->request['conf_title_keyword'] = 'tz34_hlstats_on';

		//-------------------------------
		// Here we specify where to send the admin after submitting the form
		//-------------------------------

		$settings->return_after_save		 = $this->settings['base_url'] . $this->form_code;

		//-------------------------------
		// View the settings configuration page
		//-------------------------------

		$settings->_viewSettings();

		//-----------------------------------------
		// And finally, output
		//-----------------------------------------

		$this->registry->getClass('output')->html_main .= $this->registry->getClass('output')->global_template->global_frame_wrapper();
		$this->registry->getClass('output')->sendOutput();
	}
}

I nic, próbowałem wywołać w admin/index.php?module=[..] i błędy url.

 

Nic czyli nie pojawiają się te ustawienia.

Share this post


Link to post
Share on other sites
  • 0

A dodałeś jeszcze moduł admina do aplikacji ? :)

 

co do pierwszego print... to tak printując $this->settings zobaczysz wszystkie ustawienia

Share this post


Link to post
Share on other sites
  • 0

Dodałem, dodałem.

 

03729037930108011270.png

Edited by TeeZ

Share this post


Link to post
Share on other sites
  • 0

Ok, cofam. Zły conf_title_keyword wpisałem. :P

Share this post


Link to post
Share on other sites
  • 0

69888829215222742329.png

 

I nie mam pojęcia jak dalej mam dodać resztę ustawień ( aby po lewej stronie był ich spis ). Przejżałem ten Vehicle System, skopiowałem na próbę plik ze skin_cp, ale jak go zainicjować? W jaki sposób mogę uzyskać taki efekt jak w każdej aplikacji ( tj -> Aplikacja -> Ustawienia -> Spis ustawień po lewej stronie ), probowałem tak:

 

        $this->html             = $this->registry->output->loadTemplate( 'cp_skin_sdvehicles');

 

Ale nic. :P

Edited by TeeZ

Share this post


Link to post
Share on other sites
  • 0

Ustawienia po lewej to już zależne jest od menu. plik menu.xml w katalogu modules_admin/XXX/xml.

np.

<?xml version="1.0" encoding="UTF-8"?>
<menu>
	<tabitems>
		<item>
			<title>Overview</title>
			<subitems>
				<subitem>
					<subitemtitle>Overview</subitemtitle>
					<subsection>overview</subsection>
					<subitemurl>do=overview</subitemurl>
					<subitemrolekey></subitemrolekey>
					<subisredirect>0</subisredirect>
				</subitem>
			</subitems>
		</item>	
		<item>
			<title>Settings</title>
			<subitems>
				<subitem>
					<subitemtitle>Settings</subitemtitle>
					<subsection>overview</subsection>
					<subitemurl>do=settings</subitemurl>
					<subitemrolekey></subitemrolekey>
					<subisredirect>0</subisredirect>
				</subitem>
			</subitems>
		</item>	
	</tabitems>

</menu>

Share this post


Link to post
Share on other sites
  • 0

Nie pokazuje się, wkleiłem menu.xml z w/w zawartością do modules_admin/general/xml/ i nic..

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.