Jump to content

Hosting dHosting.pl - 10% rabat!

Sign in to follow this  
kodif

API kontrolki daty (kalendarza)

Recommended Posts

Posted (edited)

Witam,

 

chciałbym w skrypcie wykorzystać kontrolkę daty w formularzach, takich jak na obrazku

Jak dobrać się do tego? Wartości z tego pola są pewnie przekazywane w sesjach, ale jak to umieścić w swoim skrypcie?

API IPSu to dla mnie nieznane wody :)

 

Bez tytułu.png

Edited by kodif

Share this post


Link to post
Share on other sites
6 minut temu, kodif napisał:

chciałbym w skrypcie wykorzystać kontrolkę daty w formularzach, takich jak na obrazku

Jak dobrać się do tego? Wartości z tego pola są pewnie przekazywane w sesjach, ale jak to umieścić w swoim skrypcie?

Napisz co Ty dokładnie chcesz zrobić bo nie zrozumiałem. :)


intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Share this post


Link to post
Share on other sites
<li>
    <i class='fa fa-calendar'></i>
    <input type="date" name="{$input->name}" id="elInput_{$input->name}" class="ipsField_short" data-control="date" placeholder='{expression="str_replace( array( 'YYYY', 'MM', 'DD' ), array( \IPS\Member::loggedIn()->language()->addToStack('_date_format_yyyy'), \IPS\Member::loggedIn()->language()->addToStack('_date_format_mm'), \IPS\Member::loggedIn()->language()->addToStack('_date_format_dd') ), str_replace( 'Y', 'YY', \IPS\Member::loggedIn()->language()->preferredDateFormat() ) )"}' value="{{if $input->value instanceof \IPS\DateTime}}{$input->value->format('Y-m-d')}{{else}}{$input->value}{{endif}}" data-preferredFormat="{{if $input->value instanceof \IPS\DateTime}}{$input->value->localeDate()}{{else}}{$input->value}{{endif}}">
</li>

 

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)

Może rzeczywiście trochę zagmatwałem.

 Na forum będzie podany link do skryptu, np data.php, a w skrypcie użytkownicy forum będą podawać datę (i inne dane), która potem będzie zapisywana do bazy, do wybranej tabeli.

W skrypcie data.php mogę wstawić formularze z polami input do podania daty, ale myślałem że mógłbym wykorzystać do tego API forum, z ładnym kalendarzykiem. :)

Tylko nie do końca wiem jak w zewnętrznym skrypcie to zrobić :)

Edited by kodif

Share this post


Link to post
Share on other sites

To nie będzie żadne api kalendarza, a kod na wyświetlenie formularza na zewnętrznej stronie. :)

 

<?php

define('IPB_PATH', 'C:/wamp/www/44');

if( ! file_exists( IPB_PATH . '/init.php' ) )
{
	echo 'Błędny path';
	exit;
}

require_once( IPB_PATH.'/init.php' );

\IPS\Dispatcher\External::i();

                           
$form = new \IPS\Helpers\Form;
$form->add( new \IPS\Helpers\Form\Date( 'form_key', \IPS\DateTime::create(), TRUE, array(), NULL, NULL, NULL, 'form_key' ) );

if( $values = $form->values() )
{
    #cos tam
}

echo $form;

Oczywiście to nie cały kod, a zaczątek.

 

Masz może aplikację Pages? :)

Wtedy to bajka i jeden kod:

<script type='text/javascript' src='http://localhost/44/applications/cms/interface/external/external.js' id='ipsWidgetLoader'></script>
<div id='block_fbf35d2ba508c077fa55ae4e220d2815' data-blockID='ext_code' class='ipsExternalWidget' data-inheritStyle='true'></div>

Efekt:

image.png

 

image.png

 

image.png

  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Share this post


Link to post
Share on other sites
Posted (edited)

Niestety nie mam Pages.

 

Zacząłem to testować, ale zamiast ładnego formularza mam coś takiego

screenshot-localhost-2019_07.05-19-06-43.png.27d28dc9b97895622e00f4963730ca4e.png

 

kod:

$form = new \IPS\Helpers\Form;
$form->add( new \IPS\Helpers\Form\Date( 'form_date_from', \IPS\DateTime::create(), TRUE, array(), NULL, NULL, NULL, 'form_date_from' ) );
$form->add( new \IPS\Helpers\Form\Date( 'form_date_to', \IPS\DateTime::create(), TRUE, array(), NULL, NULL, null, 'form_date_to' ) );

$form->add( new \IPS\Helpers\Form\Select( 'my_select_box', NULL, TRUE, array( 'options' => array( 0 => 'Raz', 1 => 'Dwa', 2=> 'Trzy' ), 'multiple' => TRUE ) ) );

if( $values = $form->values() )
{
    print(' Wysłane prawidłowo');
}

echo $form;

Nawet opcje [Raz, Dwa, Trzy] gdzieś znikają.

 

 

 

Edited by kodif

Share this post


Link to post
Share on other sites

Znikają, bo tam się podaje klucze fraz językowych jeśli nie ma spacji to tak je właśnie traktuje. :)

 

system/Lang/Lang.php:

	/**
	 * Parse output and replace language keys
	 *
	 * @param	string	$output	Unparsed
	 * @return	void
	 */
	public function parseOutputForDisplay( &$output )
	{

 


intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Share this post


Link to post
Share on other sites

W opcjach klucze fraz? Jaka spacja?

Nic nie rozumiem :)

 

Share this post


Link to post
Share on other sites

Daj "Raz raz" i "dwa_dwa" to zobaczysz. :)


intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Share this post


Link to post
Share on other sites

Dałem. Kompletnie nic się nie zmieniło.

Zaczynam podejrzewać że z powodu pages, u Ciebie ten sam kod wykonuje się zupełnie inaczej niż u mnie.

U mnie nie ma ani css, ani zrozumiałego języka, tylko jakiś generowany hash.

Chyba muszę założyć nowe wątki o css i języku zalogowanego użytkownika w zewnętrznym pliku

Share this post


Link to post
Share on other sites

Hashe jak mówiłem:

$elo = (string) $form;
\IPS\Member::loggedIn()->language()->parseOutputForDisplay( $elo );
echo $elo;

image.png

  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Share this post


Link to post
Share on other sites
Posted (edited)

Tego mi brakowało. :)

A jak wyświetlić w zewnętrznym skrypcie, dowolną frazę językową w języku aktualnie zalogowanego użytkownika?

 

Próbowałem trochę na ślepo tak

$dd = '__api_core_messages';
echo \IPS\Member::loggedIn()->language()->parseOutputForDisplay( $dd );

ale to nie to :)

Edited by kodif

Share this post


Link to post
Share on other sites

Metoda get( zamiast addToStack( spróbuj. :)

  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Share this post


Link to post
Share on other sites

Wszystko działa. Dziękuję za pomoc.

Share this post


Link to post
Share on other sites

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.


intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.