Несколько поисков

10 года 9 мес. назад - 10 года 9 мес. назад #3836 от Maxim
Добрый вечер.
Мучаясь и познавая сий компонент добрел-таки до такой стадии :S . Нужно реализовать афишу театра. вывод спектаклей на текущий месяц и на следующий.

Отфильтровать по дате и с помощью плагинов Live Value я в конечном итоге сумел (в Live в первое поле подставляет начало текущего месяца, во второе поле начало следующего, ну и > <)... набросал плагин на +2 месяца и тут подумал и обломался вывод то возможен только на те Live которые стоят... и через МЕНЮ и Advanced Options ( CCK ) их уже не изменить как это было при тестовом прогоне с подстановкой в ручную дат...
Может можно организовать ещё один поиск привязать к пункту меню "Следующий месяц" и там уже отфильтровать по след месяц?
Или в плагине лайв задать условие что если лайв валуе заполнено, то текущий месяц иначе следующий, но каким образом задавать программно лайв валуе и как связать с Advanced Options ( CCK )? Может просто сделать еще одно поле и при настройке Advanced Options ( CCK ) передавать значение этого поля в лайв валуе даты... но как организовать передачу?

В поисках набрел на такую тему www.seblod.com/support/forum/Content-Types--Forms/30950-Solved-Calendar-today--7-days.html но запустить так и не получилось ни на одном шаблоне...
Помогите!!!
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

10 года 9 мес. назад #3840 от Wedal
Maxim, не понял, а почему вы решили, что через меню не изменить Live? В настройках пункта меню можно задать собственные Live для всех полей, по которым происходит поиск.
Спасибо сказали: Maxim

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

10 года 9 мес. назад - 10 года 9 мес. назад #3846 от Maxim
Не получается... видно чего-то не-то сделал ...
public function onCCK_Field_LivePrepareForm( &$field, &$value = '', &$config = array() )
	{
		if ( self::$type != $field->live ) {
			return;
		}
 
		$live='';
 
		if ( $field->live_value ) {
			$P	= intval($field->live_value);
			$data_nachmes1 = strtotime(date('Y').'-'.date('m').'-01');
			$data_nachmes = strtotime(date('Y-m-d', $data_nachmes1).' +'.$P.' month'); //Получаем начало следующего месяца или в зависимости от заданного числа начало последующих месяцев. 
 
		} else {
			$data_nachmes = strtotime('1 '.date('M').' '.date('Y')); //Получаем начало текущего месяца
		}
 
		$live	=	date( 'Y-m-d', $data_nachmes);
		$value	=	$live;
	}

В конструкторе работает, а вот из меню не хочет. Скорее всего я не так значение $P получаю, не оттуда...

Вот этот файлик генерит настройки в меню... может как-то это поможет? Совсем я запутался... по идее надо взять значение инпутбокса и оправить в плагин... но как это сделать?
**administrator/components/com_cck/helpers/scripts/list_live.php
 
// No Direct Access
defined( '_JEXEC' ) or die;
 
// getOptions
function getOptions( $string )
{
	$options	=	'';
	if ( $string ) {
		$string	=	explode( '||', $string );
		foreach( $string as $str ) {
			if ( $str != '' ) {
				$s				=	explode( '=', $str );
				$options[$s[0]]	=	$s[1];
			}
		}
	}
 
	return $options;
}
 
// Init
$elem	=	JRequest::getString( 'elem', '' );
$name	=	JRequest::getString( 'e_name', '' );
$form	=	JCck::getConfig_Param( 'live_value_input', 'text' );
$html	=	'';
if ( ! $elem ) {
	return;
}
 
$item			=	new stdClass;
$item->client	=	( $elem == 'type' ) ? 'site' : 'search';
$item->id		=	JCckDatabase::loadResult( 'SELECT id FROM #__cck_core_'.$elem.'s WHERE name = "'.(string)$name.'"' 
 
);
if ( ! $item->id ) {
	return;
}
 
$live			=	JRequest::getString( 'live', '' );
$variat			=	JRequest::getString( 'variat', '' );
$values			=	getOptions( $live );
$variations		=	getOptions( $variat );
 
// Variations
$opts			=	array( JHtml::_( 'select.option', '', '- '.JText::_( 'COM_CCK_INHERITED' ).' -' ),
						   JHtml::_( 'select.option', 'clear', JText::_( 'COM_CCK_CLEAR' ) ),
						   JHtml::_( 'select.option', '<OPTGROUP>', JText::_( 'COM_CCK_VARIATION' ) ),
						   JHtml::_( 'select.option', 'form', JText::_( 'COM_CCK_FORM' ) ),
						   JHtml::_( 'select.option', 'hidden', JText::_( 'COM_CCK_HIDDEN' ) ),
						   JHtml::_( 'select.option', 'disabled', JText::_( 'COM_CCK_FORM_DISABLED' ) ),
						   JHtml::_( 'select.option', 'value', JText::_( 'COM_CCK_VALUE' ) ),
						   JHtml::_( 'select.option', '</OPTGROUP>', '' ) );
 
// Process
require_once JPATH_ADMINISTRATOR.DS.'components'.DS.CCK_COM.DS.'helpers'.DS.'helper_selectable.php';
$fields		=	Helper_Selectable::getFields( $elem, $item, 'AND (( c.live = "" AND c.live_value = "" ) OR ( c.live != "" 
 
AND c.live != "stage" ))', false, true );
 
if ( count( $fields ) ) {
	if ( $form == 'form' ) {
		// RENDER FORM
		JPluginHelper::importPlugin( 'cck_field' );
		$dispatcher	=	JDispatcher::getInstance();
		foreach( $fields as $pos ) {
			foreach( $pos as $field ) {
				$inherit			=	array( 'id'=>'live_'.$field->name , 
 
'name'=>'live_'.$field->name );
				$value				=	@$values[$field->name];
				$variat				=	@$variations[$field->name];
				$variat				=	( $variat == 'none' ) ? $variat = 'hidden' : $variat;	// 
 
TODO: FIX TO REMOVE AFTER GA
				$variation			=	Jhtml::_( 'select.genericlist', $opts, 
 
'variation_'.$field->name, 'size="1" class="inputbox variation_values" onchange="CCK_setOptions(\'variation\');"', 'value', 'text', 
 
$variat );
				$field->css			=	'live_values';
				$field->attributes	=	'onchange="CCK_setOptions(\'live\');"';
				$dispatcher->trigger( 'onCCK_FieldPrepareForm', array( &$field, $value, &$config, $inherit ) );
				$html				.=	'<label style="padding-left: 
 
10px;">'.$field->title.'</label>'
									.	$field->form
									.	$variation
									.	'<div class="clear"></div>';
			}
		}
	} else {
		// INPUT TEXT
		foreach( $fields as $pos ) {
			foreach( $pos as $field ) {
				$value		=	@$values[$field->name];
				$variat		=	@$variations[$field->name];
				$variat		=	( $variat == 'none' ) ? $variat = 'hidden' : $variat;	// TODO: FIX TO 
 
REMOVE AFTER GA
				$variation	=	Jhtml::_( 'select.genericlist', $opts, 'variation_'.$field->name, 'size="1" 
 
class="inputbox variation_values" onchange="CCK_setOptions(\'variation\');"', 'value', 'text', $variat );
				$html		.=	'<label style="padding-left: 10px;">'.$field->title.'</label>'
							.	'<input class="live_values inputbox testinput" type="text" 
 
id="live_'.$field->name.'" name="live_'.$field->name.'" value="'.$value.'" onchange="CCK_setOptions(\'live\');" />'
							.	$variation
							.	'<div class="clear"></div>';
			}
		}
	}
}
 
echo $html;
?>
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.