/** * Run/render a set of inputs for each cron job that this form will manage. * * "enable_$tag" is the value stored in the cron job enablement checkbox. * "$tag" will be the form data loaded from crontab. */ public function run() { // Script for toggle checkboxes: Yii::app()->clientScript->registerScript('cronForm', ' var toggleCronJobInputs = function(checkbox,initial) { var tag = checkbox.prop("id").replace("cron-job-",""); if (typeof initial == "undefined") initial = false; if(checkbox.is(":checked")) { $("#"+checkbox.attr("id")+"-form").each(function(){ if(initial) { $("#"+checkbox.attr("id")+"-form").show(); } else { $("#"+checkbox.attr("id")+"-form").slideDown().find("input,select").prop("disabled",false); cronForm[cronForm._nameSpaces[tag]].setup(); } }); } else { $("#"+checkbox.attr("id")+"-form").each(function(){ if(initial) { $(this).hide(); } else { $(this).slideUp(); } $(this).find("input,select").prop("disabled",true); }); } } $(".cron-enabled").each(function() { toggleCronJobInputs($(this),1); }).change(function() { toggleCronJobInputs($(this)); }); ', CClientScript::POS_READY); // Render form fields for each cron job managed by this widget: CrontabUtil::$printHint = false; $jobSections = array(); foreach ($this->jobTags as $tag) { // Populate initial form data. // // The job is initially disabled if not found in the table $enabled = isset($this->j[$tag]); $this->formData[$tag] = CrontabUtil::cronJobToForm($enabled ? $this->j[$tag] : array()); // Overwrite cmd/desc with default as defined in the widget declaration/job config: if (!$this->allowUserCmdInput) { $this->formData[$tag]['cmd'] = $this->jobAttr($tag, 'cmd'); $this->formData[$tag]['desc'] = $this->jobAttr($tag, 'desc'); } // Render the job form inputs for this particular job: $viewData = array(); foreach (array('title', 'longdesc', 'instructions') as $attr) { $viewData[$attr] = $this->jobAttr($tag, $attr); } $jobSections[] = $this->render('application.components.views.cronJobForm', array_merge($viewData, array('userCmd' => $this->allowUserCmdInput, 'cmd' => $this->formData[$tag]['cmd'], 'displayCmd' => isset($this->displayCmds[$tag]) ? $this->displayCmds[$tag] : '', 'enabled' => $enabled, 'labelClass' => $this->labelCssClass, 'name' => $this->name, 'tag' => $tag, 'initialCron' => $this->formData[$tag])), true); } echo implode($this->jobSeparator, $jobSections); }