pozicování
05. říj 2015 16:07 - 05. říj 2015 16:12 #123758
od Ernst
Odpověď od Ernst
díky tomu již rozumím.
Ale mám tady věc, kterou hledám již dva dny a asi jsem se ztratil.
Využil jsem funkcí modulu a udělal nové menu, které do popup okna dá formulář, ten se vyplní (jedná se o user_id a text)
Až sem to plně ovládám, zadávám si pole, názvy polí atd.
Teď ale někde ty vyplněné hodnoty potřebuji použít a nemohu najít, kde je modul čte.
Stačilo by mi, abych si ty hodnoty poslal do nějakého php, kdy už bych si je zpracoval.
Nevím, zda následující kódy budou stačit
PHP:
tpl
quickpoznamka.tpl
javascript
jinak ještě tlačítko poznamka odešle
(zkopírováno z developer tool)
Ale mám tady věc, kterou hledám již dva dny a asi jsem se ztratil.
Využil jsem funkcí modulu a udělal nové menu, které do popup okna dá formulář, ten se vyplní (jedná se o user_id a text)
Až sem to plně ovládám, zadávám si pole, názvy polí atd.
Teď ale někde ty vyplněné hodnoty potřebuji použít a nemohu najít, kde je modul čte.
Stačilo by mi, abych si ty hodnoty poslal do nějakého php, kdy už bych si je zpracoval.
Nevím, zda následující kódy budou stačit
PHP:
Code:
public static function Quickpoznamka($userId, $text)
{
static $framework_loaded = false;
if ($userId === JFactory::getUser()->id) {
return false;
}
// Check if messages are enabled.
// if (!LoveFactoryApplication::getInstance()->getSettings('enable_messages')) {
// return false;
// }
// Check if framework has been loaded.
if (!$framework_loaded) {
$document = JFactory::getDocument();
$document->addScriptDeclaration('jQuery(document).ready(function ($) { $(".lovefactory-quick-poznamka").loveFactoryQuickpoznamka(); });');
// $test=('jQuery(document).ready(function ($) { $(".lovefactory-quick-poznamka").loveFactoryQuickpoznamka() });
// var_dump($test);
FactoryHtml::script('lovefactory');
$framework_loaded = true;
}
$html = array();
$html[] = '<a href="' . FactoryRoute::view('dialog&layout=quickpoznamka&format=raw&user_id='.$userId) . '" class="lovefactory-quick-poznamka" id="lovefactory-quickpoznamka-user-'.$userId.'"><i class="factory-icon icon-poznamka"></i>' . FactoryText::_('POZNAMKA_BUTTON_TITLE') .'</a>';
return implode("\n", $html);
}
tpl
Code:
<!-- poznamka button -->
<li>{jhtml _='LoveFactory.Quickpoznamka' userId=$profile->user_id}</li>
quickpoznamka.tpl
Code:
<div id="lovefactory-dialog" title="{jtext _='dialog_quickpoznamka_dialog_title'}">
<div class="lovefactory-dialog-quickpoznamka lovefactory-view">
<div class="lovefactory-dialog-content">
<form action="{jroute task='message.send'}" method="post">
<table>
<tr>
<th><label>{jtext _='dialog_quickpoznamka_label_to'}</label></th>
<td>{$username}</td>
</tr>
<tr>
<th><label for="text">{jtext _='dialog_quickpoznamka_label_message'}</label></th>
<td><textarea rows="5" cols="10" id="text" name="message[text]" >{$text}</textarea></td>
</tr>
</table>
<input type="hidden" name="message[user_id]" value="{$userId}">
</form>
</div>
<div class="lovefactory-dialog-buttons">
<a href="#" class="dialog-button dialog-button-submit ui-state-hover"><i class="factory-icon icon-poznamka"></i>{jtext _='dialog_quickpoznamka_button_submit'}</a>
<a href="#" class="dialog-button dialog-button-close"><i class="factory-icon icon-cross-button"></i>{jtext _='dialog_button_cancel'}</a>
</div>
</div>
</div>
javascript
Code:
loveFactoryQuickpoznamka: function () {
return this.each(function() {
$(this).click(function (event) {
event.preventDefault();
var elem = $(this);
var url = elem.attr('href');
$.LoveFactoryDialog(url, { elem: elem });
});
});
},
jinak ještě tlačítko poznamka odešle
Code:
<a href="/index.php/cs/mista-2/dialog?layout=quickpoznamka&format=raw&user_id=22" class="lovefactory-quick-poznamka" id="lovefactory-quickpoznamka-user-22"><i class="factory-icon icon-poznamka"></i>Privátní poznámka</a>
Pro možnost přispívání do fóra se přihlaste.
06. říj 2015 20:54 - 06. říj 2015 21:00 #123806
od Ernst
Odpověď od Ernst
už jsem postoupil hodně daleko.
Vytvořil jsem si nové menu, tpl soubor kde se vstupní pole zobrazí v frame, upravil javascript
V podstatě jsem dohlodával běh menu poslat zprávu a z něj duplikoval a upravovalo nové menu poslat poznámku.
poslední věc, kterou nemohu zatím dohledat.
Když dám tlačítko odeslat zavolá se
a tem se předpokládám ten vstup zpracovává.
U poslat poznámku tam mám
to je natefinováno v quickpoznhamka.tpl
Já ale nikde nemohu najít řetězec "send-message" a pak neví co to "/index.php/cs/lide-hledat-2/send-message" vlastně hledá. Nemohu ani najít název tabulky databáze.
Poradíte někdo, kde to může být?
menu poslat zprávu zapisuje do dat báze do tabulky lovefactory_messages, ale já z menu poslat poznámku potřebuji zapisovat do tabulky _lovefactory_poznamka, která může mít dokonce identiská pole
Vytvořil jsem si nové menu, tpl soubor kde se vstupní pole zobrazí v frame, upravil javascript
V podstatě jsem dohlodával běh menu poslat zprávu a z něj duplikoval a upravovalo nové menu poslat poznámku.
poslední věc, kterou nemohu zatím dohledat.
Když dám tlačítko odeslat zavolá se
Code:
form action="/index.php/cs/lide-hledat-2/send-message"
U poslat poznámku tam mám
Code:
form action="/index.php/cs/lide-hledat-2/send-poznamka"
to je natefinováno v quickpoznhamka.tpl
Code:
<form action="{jroute task='poznamka.send'}" method="post">
Já ale nikde nemohu najít řetězec "send-message" a pak neví co to "/index.php/cs/lide-hledat-2/send-message" vlastně hledá. Nemohu ani najít název tabulky databáze.
Poradíte někdo, kde to může být?
menu poslat zprávu zapisuje do dat báze do tabulky lovefactory_messages, ale já z menu poslat poznámku potřebuji zapisovat do tabulky _lovefactory_poznamka, která může mít dokonce identiská pole
Pro možnost přispívání do fóra se přihlaste.
06. říj 2015 22:40 #123810
od Cony
Odpověď od Cony
Uff, tak v tom jsem se úplně ztratil. Formulář se Vám odesílá na jiné URL než chcete? Nebo jak?
Toto není standard Joomly:
LoveFactory používá template systém Smarty, nevím tedy přesně co to znamená, ale odhaduji, že se jedná o analogii volání PHP
Pak by to znamenalo že při vytváření URL se použije ID menu položky a komponenta, kde je zrovna modul zobrazen. Není to úplně šťastné, protože na stránkách s jinou komponentou by Vám to vyhodilo nesmysl.
Dál by to mělo znamenat, že akce bude zpracována controllerem poznamka a funkcí send. Vytvořil jste si takový Controller?
Toto není standard Joomly:
Code:
{jroute task='poznamka.send'}
Code:
JRoute::_('index.php?task=poznamka.send');
Dál by to mělo znamenat, že akce bude zpracována controllerem poznamka a funkcí send. Vytvořil jste si takový Controller?
Pro možnost přispívání do fóra se přihlaste.
06. říj 2015 22:44 - 06. říj 2015 22:45 #123811
od Ernst
Odpověď od Ernst
já jsem na to založil raději nové téma, tram už je to snad popsáno srozumitelněji. -
www.joomlaportal.cz/forum/71-joomla-3-0-...i/118504-form-action
pokud to chápu dobře, tak je to Controller, jdu si ho projít.
pokud to chápu dobře, tak je to Controller, jdu si ho projít.
Pro možnost přispívání do fóra se přihlaste.
06. říj 2015 23:02 #123813
od Ernst
Odpověď od Ernst
ano je to controller
Když dám form action="/index.php/cs/lide-hledat-2/send-message" vše proběhne OK a zapíše se to do databáze.
Já to ale potřebuji zapsat do databáze jinak, tak si volám form action="/index.php/cs/lide-hledat-2/send-poznamka" a to se neděje nic (nic se nikam nezapíše).
Chápu to tak, že akci pro send-poznamka musím dodat do controlleru? Ale jak?
Když dám form action="/index.php/cs/lide-hledat-2/send-message" vše proběhne OK a zapíše se to do databáze.
Já to ale potřebuji zapsat do databáze jinak, tak si volám form action="/index.php/cs/lide-hledat-2/send-poznamka" a to se neděje nic (nic se nikam nezapíše).
Chápu to tak, že akci pro send-poznamka musím dodat do controlleru? Ale jak?
Pro možnost přispívání do fóra se přihlaste.
06. říj 2015 23:46 - 06. říj 2015 23:49 #123815
od Ernst
Odpověď od Ernst
Tak už jsem to asi pochopil
v \components\com_lovefactory\controllers
jsem message.php zkopíroval do poznamka.php, upravil zde název třídy na class FrontendControllerPoznamka extends FrontendController a teď to běží tudy. obsah zatím nechápu a var_dump nemohu použít.
Musím pochopit jak to funguje nebo místo toho udělat vlastní zápis do databáze.
poznámka.php:
Pochopil jsem to správně?
v \components\com_lovefactory\controllers
jsem message.php zkopíroval do poznamka.php, upravil zde název třídy na class FrontendControllerPoznamka extends FrontendController a teď to běží tudy. obsah zatím nechápu a var_dump nemohu použít.
Musím pochopit jak to funguje nebo místo toho udělat vlastní zápis do databáze.
poznámka.php:
Code:
<?php
/**
-------------------------------------------------------------------------
lovefactory - Love Factory 4.3.5
-------------------------------------------------------------------------
* @author thePHPfactory
* @copyright Copyright (C) 2011 SKEPSIS Consult SRL. All Rights Reserved.
* @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* Websites: http://www.thePHPfactory.com
* Technical Support: Forum - http://www.thePHPfactory.com/forum/
-------------------------------------------------------------------------
*/
defined('_JEXEC') or die;
class FrontendControllerPoznamka extends FrontendController
{
public function send()
{
$settings = LoveFactoryApplication::getInstance()->getSettings();
$model = $this->getModel('Message');
$data = JFactory::getApplication()->input->get('message', array(), 'array');
$response = array();
var_dump($data);
if ($model->send($data)) {
$response['status'] = 1;
$response['message'] = FactoryText::plural('message_task_send_success', $settings->approval_messages);
} else {
$response['status'] = 0;
$response['message'] = FactoryText::_('message_task_send_error');
$response['error'] = $model->getError();
}
$this->checkMembershipRestrictionRedirection($model, $response);
// Check if it's Ajax request.
if ($this->isAjaxRequest()) {
$this->renderJson($response);
return true;
}
if ($response['status']) {
if (!isset($response['redirect'])) {
$response['redirect'] = FactoryRoute::view('outbox');
}
} else {
if (!isset($response['redirect'])) {
$response['redirect'] = FactoryRoute::view('compose');
}
JFactory::getApplication()->enqueueMessage($response['error'], 'error');
}
$this->setRedirect($response['redirect'], $response['message']);
return true;
}
public function delete()
{
$id = JFactory::getApplication()->input->getInt('id', 0);
$model = $this->getModel('Message');
if ($model->delete($id)) {
$msg = FactoryText::_('message_task_delete_success');
$url = FactoryRoute::view($model->getState('redirect'));
} else {
$msg = FactoryText::_('message_task_delete_error');
$url = FactoryRoute::view('message&id=' . $id);
JFactory::getApplication()->enqueueMessage($model->getError(), 'error');
}
$this->setRedirect($url, $msg);
}
public function searchUser()
{
$model = $this->getModel('Message');
$term = JFactory::getApplication()->input->getString('q', '');
$results = $model->searchUser($term);
$this->renderJson($results);
return true;
}
}
Pochopil jsem to správně?
Pro možnost přispívání do fóra se přihlaste.