[[PageOutline(2-5,Contents,pullout)]]
= Developer eDokumenty =
Dostęp do modelu obiektowego systemu eDokumenty:
== Przykładowe wywołanie obiektu Bean dokumentu ==
Przykład pokazuje sposób zmiany statusu (tpstid) oraz oznaczenie dokumentu jako załatwiony:
{{{
#!php
include_once(MOD_PATH.'ADocuments/beans/Document.inc');
$doc_id = 123;
$document = Document::getInstance($doc_id);
if ($document->isReferenced()) {
$document->set('tpstid', 2);
$document->set('is_fix', TRUE);
$document->save();
}
}}}
== Wywołanie formularza do potwierdzenie wykonania czynności ==
Chodzi o formularz typu confir, który można wykorzystać w mechanizmie CustomWidget:
{{{
#!php
require_once(LIB_PATH.'widgets/ConfirmBox.inc');
// identyfikator sprawdzenia
$hwnd = Application::getShortName(__CLASS__.__LINE__);
// sprawdzenie czy przyszło potwierdzenie i jeśli jest i jest na Nie CONFIRM_NO
if (($confirmation = ConfirmBox::getConfirmation($hwnd)) AND ($confirmation == ConfirmBox::CONFIRM_NO)) {
// tutaj możesz coś zrobić jak users kliknął Nie
return FALSE;
}
// to samo się wywołuje i sprawdza
if (ConfirmBox::confirm($hwnd, Translator::translate('Treść pytania'), NULL, ConfirmBox::CONFIRM_YES|ConfirmBox::CONFIRM_NO, 'question.gif', NULL, NULL, 360, 150) == ConfirmBox::CONFIRM_YES) {
// tutaj możesz coś zrobić jak user dał Tak CONFIRM_YES
}
}}}
{{{
#!php
include_once(MOD_PATH.'ADocuments/beans/Document.inc');
$doc_id = 123;
$document = Document::getInstance($doc_id);
if ($document->isReferenced()) {
$document->set('tpstid', 2);
$document->set('is_fix', TRUE);
$document->save();
}
}}}
== Wywołanie komendy ze skryptu ==
{{{
require_once('./commands/AddCommentCommand.inc');
$command = new AddCommentCommand();
$command->execute($bean, array('dscrpt' => 'test'.mktime(), 'notify' => 0));
}}}
== Jak odświeżyć formatkę po wykonaniu komendy ==
Kod który należy dodać do komendy, by po jej wykonaniu odświeżyła się formatka.
{{{
JScript::add('App.DOCUMENTdlg'.$doc_id.'.refresh();');
}}}
== Wywołanie "dymka" ==
Jak wywołać "dymek" informacyjny:
{{{
JScript::add('NewFrame.showInfo(\'Moja wiadomość\')');
// jeśli ma się pojawić nad konkretnym elementem
JScript::add('BalloonHint.showAbove($(\'id elementu\'), \'Powiadomienie\', \'Treść powiadomienia\',220,null,BHS_LCLOSE,null,null,null,BHM_INFO)');
// jeśli nie zadziała metoda add należy użyć
JScript::registerOnLoad('...');
}}}
== Wykorzystanie liczników ==
Liczniki można wykorzystywać albo do samego generowania numeru, albo do generowania całego złożonego symbolu.
== Jak załatwić etap workflow ==
Metody API można wywołać również na lokalnym systemie: [http://support.edokumenty.eu/trac/wiki/DeployerGuide/Others/eDokumentyApi/CompleteStage]
{{{
require_once('./classes/eDokumentyApi/EDokApiClient.inc')
$api = new EDokApi();
$api->completeStage(1,2);
}}}
== Komponent ModernSelect ==
{{{
#!php
/** Konstruktor
* Przygotowuje nazwę dla tagu HTML, źródło requestów,
* możliwość wielokrotnego wyboru i ustawia tryb pamiętania zawartości.
* Przywraca ostatnio wybrane pozycje ze schowka.
* Gdy wybrano tryb pamiętania zawartości przywraca zawartość ze schowka.
* @param $name nazwa dla tagu HTML
* @param $source źródło pętli zwrotnej, domyślnie $_POST
* @param $multiple flaga wielokrotnego wyboru, domyślnie FALSE
* @param $rememberList tryb pamiętania zawartości, domyślnie FALSE
*/
public function __construct($name, $source = NULL, $multiple = FALSE, $rememberList = NULL);
/** Dodaje parę klucz-etykietę do listy
* Klucz znajdzie się w tagu option
, etykieta
* będzie wyświetlana jako element listy.
* @param $k klucz
* @param $v etykieta
*/
public function addItem($k, $v, $grpDsc = NULL);
/** Dodaje pary klucz-etykieta z tablicy
* @param $a tablica asocjacyjna
* @return boolean sukces/porażka
*/
public function addArray($a);
/** Dodaje pary klucz-etykieta z tablicy tablic asocjacyjnych
* Tablice tablic asocjacyjnych mają postać
* array(
* array(klucz => etykieta),
* array(klucz => etykieta) [...]
* );
* @param &$a referencja do tablicy
* @param $keyName nazwa pola z kluczem
* @param $valName nazwa pola z etykietą
* @return boolean sukces/porażka
* @since 0.12.0
*/
public function addAssocArray($a, $keyName, $valName, $grpDsc = NULL);
/** Usuwa z listy element o podanym kluczu
* @param $k klucz
*/
public function removeItem($k);
/** Usuwa z listy wszystkie elementy i natychmiast uaktualnia schowek*/
public function removeAllItems();
/** Reset */
public function reset();
/** Clear */
public function clear();
/** Zaznacza element listy jako wybrany
* Gdy nie jest dozwolony wybór wielokrotny czyści tablicę wybranych elementów.
* @param $k klucz wybranego elementu
*/
public function selectItem($k);
/** Zaznacza wszystkie elementy listy jako wybrane */
public function selectAllItems();
/** Zaznacza element listy jako niewybrany
* @param $k klucz
*/
public function deselectItem($k);
/** Zaznacza wszystkie elementy listy jako niewybrane */
public function deselectAllItems();
/** Przełącza element listy wybrany - niewybrany
* Elementy wybrane stają sie niewybrane i vice versa.
* @param $k klucz
*/
public function toggleItem($k);
/** Zaznacza element listy jako wybrana zgodnie z requestem */
public function selectItemOnEvent();
/** Zwraca wartość, która przyszła w requeście
* @return klucz tagu SELECT
*/
public function getCurrentItem();
/** Set value*/
public function setValue($value);
/** Get value */
public function getValue();
/** Get text*/
public function getText();
/** Zwraca listę wybranych kluczy */
public function getSelectedKeys();
/** Zwraca referencję do tablicy klucz-etykieta z wybranymi elementami */
public function &getSelectedItems();
/** Zwraca referencję do tablicy klucz-etykieta ze wszystkimi elementami */
public function &getAllItems();
/** Ustawia źródło requestów
* @param $source nazwa źródła
*/
public function setSource(&$source);
/** Ustawia parametry formatujące HTML tagu SELECT
* @param $key nazwa parametru
* @param $value wartość parametru
*/
public function setHtmlFormatting($k, $v);
/** Ustawia parametry CLASS i STYLE tagu HTML
* @param $class klasa CSS, domyślnie NULL
* @param $style styl CSS inline, domyślnie NULL
*/
public function setCSSFormatting($class = NULL, $style = NULL);
/** Zaraz po wyborze wysyła formularz javascriptem */
public function autoSubmit();
/** Zaraz po wyborze wysyła formularz gdy wartosc nie pusta */
public function autoSubmitNotNUll();
/** Sprawdza poprawność requestu
* Sprawdza czy źródło requestów istnieje, znajduje się w nim dana
* i czy dana jest w liście combo boksa.
* @return boolean
*/
public function isRequestValid();
/** Ustawia rozmiar dla multi-selecta
* @param $size wiadomo
*/
public function setSize($size);
/** Set read only */
public function setReadOnly($ro);
/** Enable */
public function enable();
/** Disable */
public function disable();
/** Zwraca flagę read-only całego formularza
* @return boolean dostępny do zapisu
*/
public function isEnabled();
/** Serializuje widget do HTML i zapamiętuje sesję */
public function toHtml();
}}}
Przykład tworzenia obiektu
{{{
$select = new ModernSelect('myselect');
$select->setCSSFormatting(NULL, 'width:200px; left:10px; top:10px; position:absolute;');
$select->setHTMLFormatting('onchange', 'App.mySelectOnChange(this.value);');
// Napełnianie ręczne
$select->addItem(1, Translator::translate('One'));
$select->addItem(2, Translator::translate('Two'));
$select->addItem(3, Translator::translate('Three'));
// Napełnianie z bazy
$db = PgManager::getInstance();
$rows = $db->select('my_table', 'id____, text__', 'NOT is_del', false, PGSQL_ASSOC);
if (is_array($rows) && !empty($rows)) {
$select->addAssocArray($rows, 'id____', 'text__');
}
$select->selectItem(2);
$selest->selectItemOnEvent();
}}}
== Klasa ProjectsDataSet ==
{{{
#!php
/**
* __construct
* Wymagany konstruktor aby lista domyslnych
* parametrow nie byla za dluga dla samej funkcji
*
* Uwaga parametr $setAllLabel i $choiceItem musza miec przemienne wartosci w
* innym przypadku gdy oba beda mialy TRUE priorytet ma $choiceItem
*
* @param boolean $setAllLabel czy ma dodac label -- wszyscy -- z wszystkimi id
* @param boolean $choiceItem czy ma byc label -- wybierz -- z NULL jako id
* @param boolean $unique czy gdzy sie powtorza to ma wywalac
* @return void
*/
public function __construct($setAllLabel = TRUE, $choiceItem = FALSE, $unique = FALSE, $allLabelText = NULL, $choiceItemText = NULL);
/**
* getDefaultData
*
* @access protected
* @return void
*/
protected function getDefaultData();
/**
* getKeyColumn
* Zwraca nazwe kolumny ktora jest aktualnie wykorzystywania przy
* pobieraniu danych i odpowiada kluczowi.
*
* Kolumna ta nie jest jednoznaczna z ta ktora jest w tablicy wynikowej
* i odpowiada za wartosc klucza (jest nia zawsze id____)
*
* @return string
*/
public function getKeyColumn();
/**
* getLabelColumn
* Zwraca nazwe kolumny ktora jest odpowiedzialna za wyswietlany
* opis. Kolumny moga byc inne dla kazdej metody zdefiniowanej
* w odpowiedniej klasie.
*
* Kolumna ta nie jest jednoznaczna z ta ktora jest w tablicy wynikowej
* i odpowiada za wartosc labela (jest nia zawsze text__)
*
* @return string
*/
public function getLabelColumn();
/**
* getAllData
* Pobiera dane wedlug standardowej konfiguracji klasy
* Zobacz metode getDefaultData tam sa dane
*
* @access public
* @return array
*/
public function getAllData();
/**
* getCustomData
* Metoda pobiera dane wedlug danej konfiguracji
* Jednak tabela pozostaje taka jaka zdefiniujemy w metodzie getDefaultData
* Zalecane jest aby jednak dopisywac odpowiednia metode do odpowiedniej klasy
* aby nie powielac kodu
*
* @param string $columns kolumny jakie zostana uzyte z zapytaniu
* @param string $keyColumn nazwa kolumny ktora bedzie kluczem w selecie
* @param string $textColumn nazwa kolumny ktora bedzie labelem w selecie
* @param string $statement warunek po jakim ma selectowac jesli wszystko to 1=1
* @param string $orderBy lista kolumn po ktorych nedzie sortowal np usrnam, firnam
* @return array
*/
public function getCustomData($columns, $keyColumn, $textColumn, $statement, $orderBy, $groupBy = FALSE);
/**
* getSQLQuery
* Zwraca wyłącznie jak wygląda zapytanie o listę danych.
* Przydatne w przypadku komponentu DBSelect.
*
* Data set konfiguruje zapytanie a DBSelect wyświetla ;)
*
* @access public
* @return void
*/
public function getSQLQuery();
}}}
== Klasa TextInput ==
{{{
#!php
/** Konstruktor
* Nadaje wartość domyślną, przywraca wartość ze schowka, przechwytuje wartość
* formularza HTML. Na żądanie waliduje czy pole puste.
* @param $name nazwa tagu INPUT
* @param $defaultValue domyślna wartość pola
* @param $mandatory flaga kontroli obowiązkowego wypełnienia
*/
function TextInput($name, $defaultValue = NULL, $mandatory = FALSE, $maxLength = NULL, $password = FALSE);
/** Set placeholder */
public function setPlaceholder($text) ;
/** Ustawia maksymalną długość treści pola */
function setMaxLength($maxLength);
/** Ustawia walidator z warunkiem niepustości */
function makeMandatory();
/** Pokazuje element HTML */
function show();
/** Ukrywa element HTML */
function hide();
/** Zwraca stan widoczności elementu HTML */
function isVisible();
/** Ustawia tryb tylko do odczytu elementu HTML
* przywrocone by tswienty potrzebne do disablowania formularzy
* @param $ro flaga read-only
*/
function setReadOnly($ro);
/** Ustawia element HTML do zapisu */
function enable();
/** Ustawia element HTML tylko do odczytu */
function disable();
/** Zwraca stan ustawienia do zapisu
* @return boolean dostępny do zapisu
*/
function isEnabled();
/** Zapamiętuje stan elementu */
function store();
/** Przywraca stan elementu */
function restore();
/** Ustawia wartość pola tagu
* @param $v wartość pola
*/
function setValue($v);
/** Zwraca zawartość pola tagu */
function getValue();
/** Czyści wartość pola tagu i ustawia flagę wyczyszczenia */
function reset();
/** Clear */
function clear();
/** Ustawia klasę i styl CSS tagu HTML
* @param $class string, klasa CSS
* @param $style string, styl inline CSS
*/
function setCSSFormatting($class = NULL, $style = NULL);
/** Ustawia parametry formatujące tag HTML
* Przykład: setHtmlFormatting('width', '100%')
* @param $k klucz tagu
* @param $v wartość klucza
*/
function setHtmlFormatting($k, $v);
/** Zwraca string formatujący tag HTML */
function getHtmlFormatting();
/** Ustawia fokus na elemencie, gdy user przesunie nad nim wskaźnik myszy
* @since 0.21.5
*/
function setHoverFocus();
/** Ustawia element, który będzie kliknięty po naciśnięciu Enter
* @since 0.21.5
*/
function setAutoSubmit($buttonName);
/** Ustawia warunek walidacji
* @param $regExp wyrażenie regularne walidujące
* @param $errorMsg komunikat błędu, domyślnie symbol wykrzyknika
*/
function setValidator($regExp, $errorMsg);
/** Waliduje
* @return boolean, wynik walidacji
*/
function isRequestValid();
/** Zwraca komunikat walidatora */
function getErrorMessage();
/** Ustawia komunikat błędu
* @param $errorMessage komunikat z błędem, domyślnie błąd z walidatora
* @since 0.21.4
*/
function setErrorMessage($errorMessage = TRUE);
/** Usuwa komunikat błędu
* @since 0.21.4
*/
function clearErrorMessage();
/** Get name */
function getName();
/** Serializuje do HTML */
function onEnterGoTo($domElement);
/** To HTML */
function toHtml();
}}}
== Dodanie pola status na pozycji zapotrzebowania ==
{{{
#!php
require_once(LIB_PATH.'forms/DBSelect.inc');
$tpstid = new DBSelect('yourTpstidSelectName');
$tpstid->top = '10px';
$tpstid->left = '70px';
$tpstid->width = '200px';
$tpstid->query = 'SELECT tpstid, dscrpt FROM types_of_processes_states WHERE clsnam = \'FKDEMANDELEMENT\' ORDER BY dscrpt';
$tpstid->update();
}}}
== Pole daty (CalendarInput) ==
{{{
#!php
require_once(LIB_PATH.'forms/CalendarInput.inc');
/* Wartość domyślna - bieżący czas */
$defaultValue = date('Y-m-d', time());
$adddat = new CalendarInput('yourInputName', $defaultValue);
$adddat->top = '10px';
$adddat->left = '10px';
$adddat->width = '90px';
/* Wersja tylko z datą */
$adddat->dateFormat = 'y-m-d';
/* Wersja z datą i godziną */
$adddat->dateFormat = 'y-m-d h:i';
}}}