Open2

YetiForceCRMコードリーディングViewまわり

ta.toshiota.toshio
  • modules/Calendar/views/CalendarExtended.php
<?php

/**
 * Calendar view Class.
 *
 * @package   View
 *
 * @copyright YetiForce Sp. z o.o
 * @license   YetiForce Public License 3.0 (licenses/LicenseEN.txt or yetiforce.com)
 * @author    Arkadiusz Adach <a.adach@yetiforce.com>
 */
class Calendar_CalendarExtended_View extends Calendar_Calendar_View
{
	/**
	 * {@inheritdoc}
	 */
	protected function getTpl(string $tplFile)
	{
		return "Extended/$tplFile";
	}

	/**
	 * {@inheritdoc}
	 */
	public function preProcess(App\Request $request, $display = true)
	{
		parent::preProcess($request, $display);

		$moduleName = $request->getModule();
		$viewer = $this->getViewer($request);
		$mid = false;
		if ($request->has('mid')) {
			$mid = $request->getInteger('mid');
		}
		$viewer->assign('CUSTOM_VIEWS', CustomView_Record_Model::getAllByGroup($moduleName, $mid));
	}

	/**
	 * {@inheritdoc}
	 */
	protected function preProcessTplName(App\Request $request)
	{
		return 'Calendar/PreProcess.tpl';
	}

	/**
	 * {@inheritdoc}
	 */
	public function postProcess(App\Request $request, $display = true)
	{
		$viewer = $this->getViewer($request);
		$moduleName = $request->getModule();
		$calendarFilters = Calendar_CalendarFilters_Model::getCleanInstance();
		$viewer->assign('FILTERS', ['Events', 'Filter']);
		$viewer->assign('SHOW_TYPE', true);
		$viewer->assign('CALENDAR_FILTERS', $calendarFilters);
		$viewer->view('Calendar/PostProcess.tpl', $moduleName);
		parent::postProcess($request);
	}

	/**
	 * {@inheritdoc}
	 */
	public function getFooterScripts(App\Request $request)
	{
		return array_merge(parent::getFooterScripts($request), $this->checkAndConvertJsScripts([
			'~libraries/fullcalendar/dist/fullcalendar.js',
			'~libraries/css-element-queries/src/ResizeSensor.js',
			'~libraries/css-element-queries/src/ElementQueries.js',
			'~layouts/resources/Calendar.js',
			'~layouts/resources/YearView.js',
			'modules.Calendar.resources.Standard.CalendarView',
			'modules.Calendar.resources.Extended.CalendarView',
		]));
	}
}

  • app/Controller/View/Base.php
	/**
	 * Static function to get the Instance of the Vtiger_Viewer.
	 *
	 * @param \App\Request $request
	 *
	 * @return \Vtiger_Viewer
	 */
	public function getViewer(\App\Request $request)
	{
		if (!isset($this->viewer)) {
			$user = \App\User::getCurrentUserModel();
			$this->viewer = \Vtiger_Viewer::getInstance();
			$this->viewer->assign('APPTITLE', \App\Language::translate('APPTITLE'));
			$this->viewer->assign('YETIFORCE_VERSION', \App\Version::get());
			$this->viewer->assign('MODULE_NAME', $request->getModule());
			$this->viewer->assign('NONCE', \App\Session::get('CSP_TOKEN'));
			$this->viewer->assign('IS_IE', \App\RequestUtil::getBrowserInfo()->ie);
			$this->viewer->assign('USER_MODEL', \Users_Record_Model::getCurrentUserModel());
			$this->viewer->assign('CURRENT_USER', $user);
			$this->viewer->assign('WIDTHTYPE', $user->getDetail('rowheight'));
			$this->viewer->assign('WIDTHTYPE_GROUP', ['narrow' => 'input-group-sm', 'wide' => 'input-group-lg'][$user->getDetail('rowheight')] ?? '');
			if ($request->isAjax()) {
				if (!$request->isEmpty('parent', true) && 'Settings' === $request->getByType('parent', 2)) {
					$this->viewer->assign('QUALIFIED_MODULE', $request->getModule(false));
				}
			}
		}
		return $this->viewer;
	}
  • include/runtime/Viewer.php
public function __construct($media = '')
{
/**
array(2) {
  [0]=>
  string(49) "/var/www/html/include/runtime/../../layouts/basic"
  [1]=>
  string(49) "/var/www/html/include/runtime/../../layouts/basic"
}
*/
		$this->setTemplateDir(array_unique($templateDir));

/**
string(59) "/var/www/html/include/runtime/../../cache/templates_c/basic"
*/
		$this->setCompileDir($compileDir);
}
  • include/runtime/Viewer.php
	/**
	 * Function to display/fetch the smarty file contents.
	 *
	 * @param string $templateName
	 * @param string $moduleName
	 * @param bool $fetch
	 *
	 * @return html data
	 */
	public function view($templateName, $moduleName = '', $fetch = false)
	{
		$templatePath = $this->getTemplatePath($templateName, $moduleName);
		if (\App\Cache::has('ViewerTemplateExists', $templatePath)) {
			$templateFound = \App\Cache::get('ViewerTemplateExists', $templatePath);
		} else {
			$templateFound = $this->templateExists($templatePath);
			\App\Cache::save('ViewerTemplateExists', $templatePath, $templateFound, \App\Cache::LONG);
		}
		// END
		if ($templateFound) {
			if (!empty(App\Config::debug('SMARTY_ERROR_REPORTING'))) {
				$this->error_reporting = App\Config::debug('SMARTY_ERROR_REPORTING');
			}
			if ($fetch) {
				return $this->fetch($templatePath);
			}
			$this->display($templatePath);
			return true;
		}
		return false;
	}
ta.toshiota.toshio
  • modules/Vtiger/views/List.php extends modules/Vtiger/views/Index.php

    • preProcess
    • process
    • postProcess
    • getFooterScripts
  • modules/Vtiger/views/Index.php extends app/Controller/View/Page.php

    • preProcess
    • process
    • postProcess
    • getFooterScripts
    • validateRequest
  • app/Controller/View/Page.php extends app/Controller/View/Base.php

    • showBodyHeader
    • showFooter
  • app/Controller/View/Base.php (abstract) extends app/Controller/Base.php

    • getViewer
    • getPageTitle
    • getBreadcrumbTitle
  • app/Controller/Base.php (abstract)


  1. include/CRMEntity.php::__construct (63)
  2. app/QueryGenerator.php::getInstance (127)
  3. modules/Vtiger/models/ListView.php::__construct (44)
  4. modules/Vtiger/views/List.php::getInstance (92)
  5. include/main/WebUI.php::preProcess (268)
  6. include/main/WebUI.php::triggerPreProcess (188)