繁体   English   中英

Joomla日历> 3.7版本

[英]Joomla Calendar > 3.7 version

我遇到了一个问题,希望对您有所帮助。

我正在尝试在组件中显示动态创建的日历。 新的花哨的东西。 我已经显示了它,但是好像它没有拾取发送给它的所有属性。

因此,简而言之,这就是我正在做的事情:

$attrcalendar = [ 
  'size' => ($metadata['size'] != '') ? $metadata['size'] : '100%', 
  'showTime' => ($metadata['showTime'] != '') ? $metadata['showTime'] : 0, 
  'timeFormat' => ($metadata['timeFormat'] != '') ? '24' : '12', 
  'singleHeader' => ($metadata['singleHeader'] != '') ? $metadata['singleHeader'] : 0, 
  'todaybutton' => ($metadata['todayButton'] != '') ? true : false, 
  'weekNumbers' => ($metadata['weekNumbers'] != '') ? true : false, 
  'minYear' => ($metadata['minYear'] != '') ? $metadata['minYear'] : '1900', 
  'maxYear' => ($metadata['maxYear'] != '') ? $metadata['maxYear'] : '2017', 
  'firstDay' => '1' 
]; 

echo JHTML::_('calendar', $defaultvalue, $calendarname, $calendarid,  '%Y-%m-%d', $attrcalendar); 

我正在填充用户输入中的所有值,并按原样填充$ attrcalendar。 但是,使用上面的代码,当其被渲染时,我得到以下内容(我省略了日历的输入字段):

<button type="button" class="btn btn-secondary" id="mycalendar_btn" data-inputfield="mycalendar" data-dayformat="%Y-%m-%d" data-button="mycalendar_btn" data-firstday="0" data-weekend="0,6" data-today-btn="0" data-week-numbers="0" data-show-time="1" data-show-others="1" data-time-24="12" data-only-months-nav="0" title="Open the calendar"><span class="icon-calendar" aria-hidden="true"></span></button> 

如您所见,它没有选择“今天”按钮(尝试使用小写/大写变量名称的所有组合),第一天,最小和最大年份(甚至尝试使用这些字段的+ 1,-1)。

我还尝试使用所有必需的属性对<input type =“ text” ...>和<button ...>进行编码,但随后无法对其进行初始化。 我尝试过:

elements = document.querySelectorAll("#the-id-of-the-input"); 
    for (i = 0; i < elements.length; i++) {            
        JoomlaCalendar.init(elements[i]); 
 } 

但随后由于错误,没有有效输入而无法呈现日历。 我尝试了很多组合,甚至都想不到。 我猜我在JoomlaCalendar.init中做错了什么,但是我根本无法弄清楚。

我可以打电话给我一些功能

任何帮助非常感谢。 :)

“今天”属性在您的代码中不正确。 更改-

'todaybutton' => ($metadata['todayButton'] != '') ? true : false, 

'todayBtn' => ($metadata['todayButton'] != '') ? true : false, 

如果要日历对象,则init对象期望的元素是div,其中包含输入字段。

<div class="field-calendar">
    <div class="input-append">
        <input type="text" id="filters_startDate" name="filters[startDate]" value="" class="tjrsmall-input dash-calendar validate-ymd-date filter-hide" onchange="this.form.submit;" placeholder="FROM (YYYY-MM-DD)" data-alt-value="" autocomplete="off"/>
        <button type="button" class="btn btn-secondary"
        id="filters_startDate_btn"
        data-inputfield="filters_startDate"
        data-dayformat="%Y-%m-%d"
        data-button="filters_startDate_btn"
        data-firstday="0"
        data-weekend="0,6"
        data-today-btn="1"
        data-week-numbers="1"
        data-show-time="0"
        data-show-others="1"
        data-time-24="24"
        data-only-months-nav="0"
        >   
            <span class="icon-calendar"></span>
        </button>
    </div>
</div>


<script>
var elements = document.querySelectorAll(".field-calendar"); 
    for (i = 0; i < elements.length; i++) {            
        JoomlaCalendar.init(elements[i]); 
 } 
</script>

更新:如果页面上没有日历字段,则可能还需要添加JS文件。

$tag       = Factory::getLanguage()->getTag();
$calendar  = Factory::getLanguage()->getCalendar();
$direction = strtolower(Factory::getDocument()->getDirection());

// Get the appropriate file for the current language date helper
$helperPath = 'system/fields/calendar-locales/date/gregorian/date-helper.min.js';

if (!empty($calendar) && is_dir(JPATH_ROOT . '/media/system/js/fields/calendar-locales/date/' . strtolower($calendar)))
{
    $helperPath = 'system/fields/calendar-locales/date/' . strtolower($calendar) . '/date-helper.min.js';
}

// Get the appropriate locale file for the current language
$localesPath = 'system/fields/calendar-locales/en.js';

if (is_file(JPATH_ROOT . '/media/system/js/fields/calendar-locales/' . strtolower($tag) . '.js'))
{
    $localesPath = 'system/fields/calendar-locales/' . strtolower($tag) . '.js';
}
elseif (is_file(JPATH_ROOT . '/media/system/js/fields/calendar-locales/' . strtolower(substr($tag, 0, -3)) . '.js'))
{
    $localesPath = 'system/fields/calendar-locales/' . strtolower(substr($tag, 0, -3)) . '.js';
}
$cssFileExt = ($direction === 'rtl') ? '-rtl.css' : '.css';

// Load polyfills for older IE
JHtml::_('behavior.polyfill', array('event', 'classlist', 'map'), 'lte IE 11');

// The static assets for the calendar
JHtml::_('script', $localesPath, false, true, false, false, true);
JHtml::_('script', $helperPath, false, true, false, false, true);
JHtml::_('script', 'system/fields/calendar.min.js', false, true, false, false, true);
JHtml::_('stylesheet', 'system/fields/calendar' . $cssFileExt, array(), true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM