1<?php
2/**
3 * @package tikiwiki
4 */
5// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
6//
7// All Rights Reserved. See copyright.txt for details and a complete list of authors.
8// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
9// $Id$
10
11
12$inputConfiguration = [[
13	'staticKeyFilters'	=> [
14		'use-default-prefs'	=> 'alnum', 		// request
15		'use-changes-wizard' => 'alnum', 		// request
16		'url'				=> 'relativeurl',	// request
17		'close'				=> 'alnum',			// post
18		'showOnLogin'		=> 'alnum',			// post
19		'wizard_step'		=> 'int',			// post
20		'stepNr'			=> 'int',			// get
21		'back'				=> 'alnum',			// post
22	],
23
24	// catchAllUnset not advised because 'lm_preference' has variable array content.
25]];
26
27require 'tiki-setup.php';
28
29$headerlib = TikiLib::lib('header');
30$headerlib->add_cssfile('themes/base_files/feature_css/admin.css');
31$headerlib->add_cssfile('themes/base_files/feature_css/wizards.css');
32
33// Hide the display of the preference dependencies in the wizard
34$headerlib->add_css('.pref_dependency{display:none !important;}');
35
36$accesslib = TikiLib::lib('access');
37$accesslib->check_permission('tiki_p_admin');
38
39// Create the template instances
40$pages = [];
41
42/////////////////////////////////////
43// BEGIN Wizard page section
44/////////////////////////////////////
45
46// Always show the first page
47require_once('lib/wizard/pages/admin_wizard.php');
48$pages[] = new AdminWizard();
49
50// If $useDefaultPrefs is set, the "profiles wizard" should be run. Otherwise the "admin wizard".
51$useDefaultPrefs = isset($_REQUEST['use-default-prefs']) ? true : false;
52// If $useChangesWizard is set, the "Changes Wizard" should be run. Otherwise the "admin wizard".
53$useChangesWizard = isset($_REQUEST['use-changes-wizard']) ? true : false;
54if ($useDefaultPrefs) {
55	// Store the default prefs selection in the wizard bar
56	$smarty->assign('useDefaultPrefs', $useDefaultPrefs);
57
58	require_once('lib/wizard/pages/profiles_featured_site_confs.php');
59	$pages[] = new ProfilesWizardFeaturedSiteConfs();
60
61	require_once('lib/wizard/pages/profiles_useful_micro_confs.php');
62	$pages[] = new ProfilesWizardUsefulMicroConfs();
63
64	require_once('lib/wizard/pages/profiles_useful_changes_in_display.php');
65	$pages[] = new ProfilesWizardUsefulChangesInDisplay();
66
67	require_once('lib/wizard/pages/profiles_useful_new_tech_confs.php');
68	$pages[] = new ProfilesWizardUsefulNewTechConfs();
69
70	require_once('lib/wizard/pages/profiles_useful_admin_confs.php');
71	$pages[] = new ProfilesWizardUsefulAdminConfs();
72
73	require_once('lib/wizard/pages/profiles_demo_common_confs.php');
74	$pages[] = new ProfilesWizardDemoCommonConfs();
75
76	require_once('lib/wizard/pages/profiles_demo_interesting_use_cases.php');
77	$pages[] = new ProfilesWizardDemoInterestingUseCases();
78
79	require_once('lib/wizard/pages/profiles_demo_other_interesting_use_cases.php');
80	$pages[] = new ProfilesWizardDemoOtherInterestingUseCases();
81
82	require_once('lib/wizard/pages/profiles_demo_more_advanced_confs.php');
83	$pages[] = new ProfilesWizardDemoMoreAdvancedConfs();
84
85	require_once('lib/wizard/pages/profiles_demo_cases_in_project_management.php');
86	$pages[] = new ProfilesWizardDemoProjectManagement();
87
88	require_once('lib/wizard/pages/profiles_demo_highly_specialized_confs.php');
89	$pages[] = new ProfilesWizardHighlySpecializedConfs();
90
91	require_once('lib/wizard/pages/profiles_completed.php');
92	$pages[] = new AdminWizardProfilesCompleted();
93} elseif ($useChangesWizard) {
94	// Store the use Changes Wizard selection in the wizard bar
95	$smarty->assign('useChangesWizard', $useChangesWizard);
96
97/*
98	require_once('lib/wizard/pages/changes_ui.php');
99	$pages[] = new ChangesWizardUI();
100
101	require_once('lib/wizard/pages/changes_novice_admin_assistance.php');
102	$pages[] = new ChangesWizardNoviceAdminAssistance();
103
104	require_once('lib/wizard/pages/changes_trackers.php');
105	$pages[] = new ChangesWizardTrackers();
106
107	require_once('lib/wizard/pages/changes_permissions_and_logs.php');
108	$pages[] = new ChangesWizardPermissionsAndLogs();
109
110	require_once('lib/wizard/pages/changes_others.php');
111	$pages[] = new ChangesWizardOthers();
112
113	require_once('lib/wizard/pages/changes_new_in_13.php');
114	$pages[] = new ChangesWizardNewIn13();
115
116	require_once('lib/wizard/pages/changes_new_in_14.php');
117	$pages[] = new ChangesWizardNewIn14();
118
119	require_once('lib/wizard/pages/changes_new_in_15.php');
120	$pages[] = new ChangesWizardNewIn15();
121
122	require_once('lib/wizard/pages/changes_new_in_16.php');
123	$pages[] = new ChangesWizardNewIn16();
124
125	require_once('lib/wizard/pages/changes_new_in_17.php');
126	$pages[] = new ChangesWizardNewIn17();
127*/
128
129	require_once('lib/wizard/pages/changes_new_in_18.php');
130	$pages[] = new ChangesWizardNewIn18();
131
132    require_once('lib/wizard/pages/changes_new_in_19.php');
133    $pages[] = new ChangesWizardNewIn19();
134
135	require_once('lib/wizard/pages/changes_new_in_20.php');
136	$pages[] = new ChangesWizardNewIn20();
137
138	require_once('lib/wizard/pages/changes_new_in_21.php');
139	$pages[] = new ChangesWizardNewIn21();
140
141    require_once('lib/wizard/pages/changes_doc_page_iframe.php');
142	$pages[] = new ChangesWizardDocPageIframe();
143
144	require_once('lib/wizard/pages/changes_send_feedback.php');
145	$pages[] = new ChangesWizardSendFeedback();
146
147	require_once('lib/wizard/pages/changes_wizard_completed.php');
148	$pages[] = new ChangesWizardCompleted();
149} else {
150	require_once('lib/wizard/pages/admin_language.php');
151	$pages[] = new AdminWizardLanguage();
152
153	require_once('lib/wizard/pages/admin_date_time.php');
154	$pages[] = new AdminWizardDateTime();
155
156	require_once('lib/wizard/pages/admin_login.php');
157	$pages[] = new AdminWizardLogin();
158
159	require_once('lib/wizard/pages/admin_look_and_feel.php');
160	$pages[] = new AdminWizardLookAndFeel();
161
162	require_once('lib/wizard/pages/admin_editor_type.php');
163	$pages[] = new AdminWizardEditorType();
164
165	require_once('lib/wizard/pages/admin_wysiwyg.php');
166	$pages[] = new AdminWizardWysiwyg();
167
168	require_once('lib/wizard/pages/admin_text_area.php');
169	$pages[] = new AdminWizardTextArea();
170
171	require_once('lib/wizard/pages/admin_wiki.php');
172	$pages[] = new AdminWizardWiki();
173
174	require_once('lib/wizard/pages/admin_auto_toc.php');
175	$pages[] = new AdminWizardAutoTOC();
176
177	require_once('lib/wizard/pages/admin_category.php');
178	$pages[] = new AdminWizardCategory();
179
180	require_once('lib/wizard/pages/admin_structures.php');
181	$pages[] = new AdminWizardStructures();
182
183	require_once('lib/wizard/pages/admin_files.php');
184	$pages[] = new AdminWizardFiles();
185
186	require_once('lib/wizard/pages/admin_files_storage.php');
187	$pages[] = new AdminWizardFileStorage();
188
189	require_once('lib/wizard/pages/admin_features.php');
190	$pages[] = new AdminWizardFeatures();
191
192	require_once('lib/wizard/pages/admin_search.php');
193	$pages[] = new AdminWizardSearch();
194
195	require_once('lib/wizard/pages/admin_community.php');
196	$pages[] = new AdminWizardCommunity();
197
198	require_once('lib/wizard/pages/admin_advanced.php');
199	$pages[] = new AdminWizardAdvanced();
200
201	require_once('lib/wizard/pages/admin_namespace.php');
202	$pages[] = new AdminWizardNamespace();
203
204	require_once('lib/wizard/pages/admin_wizard_completed.php');
205	$pages[] = new AdminWizardCompleted();
206}
207
208/////////////////////////////////////
209// END Wizard page section
210/////////////////////////////////////
211
212
213// Step the wizard pages
214$wizardlib = TikiLib::lib('wizard');
215
216// Show pages
217$wizardlib->showPages($pages, true);
218
219// Set the display flag
220$showOnLogin = $wizardlib->get_preference('wizard_admin_hide_on_login') !== 'y';
221$smarty->assign('showOnLogin', $showOnLogin);
222
223
224// Build the TOC
225$toc = '<div class="list-group list-group-flush wizard_toc">';
226$stepNr = 0;
227$reqStepNr = $wizardlib->wizard_stepNr;
228$homepageUrl = $_REQUEST['url'];
229foreach ($pages as $page) {
230	global $base_url;
231	$cssClasses = '';
232
233	// Start the admin wizard
234	$url = $base_url . 'tiki-wizard_admin.php?&amp;stepNr=' . $stepNr . '&amp;url=' . rawurlencode($homepageUrl);
235	if ($useDefaultPrefs) {
236		$url .= '&amp;use-default-prefs=1';
237	}
238	if ($useChangesWizard) {
239		$url .= '&amp;use-changes-wizard=1';
240	}
241	$cnt = $stepNr + 1;
242//	if ($stepNr == 1 && $useChangesWizard) {
243//		$toc .= '<div class="list-group-item font-italic">' . tra("New in Tiki 12 (LTS)") . '</div>';
244//	}
245	if ($cnt <= 9) {
246		$cnt = '&nbsp;&nbsp;' . $cnt;
247	}
248	$toc .= '<a ';
249	$cssClasses .= 'list-group-item list-group-item-action ';
250	if (preg_match('/ Tiki /', $page->pageTitle()) or $stepNr == 0) {
251		$cssClasses .= 'font-italic ';
252	}
253	if ($stepNr == $reqStepNr) {
254		$cssClasses .= 'active ';
255	}
256	if (! $page->isVisible()) {
257		$cssClasses .= 'disabled disabledTOCSelection ';
258	}
259	$css = '';
260	if (strlen($cssClasses) > 0) {
261		$css = 'class="' . $cssClasses . '" ';
262	}
263	$toc .= $css;
264	$toc .= 'href="' . $url . '">' . $page->pageTitle() . '</a>';
265	$stepNr++;
266}
267$toc .= '</div>';
268
269if ($reqStepNr > 0) {
270	$smarty->assign('wizard_toc', $toc);
271}
272
273
274// disallow robots to index page:
275$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
276
277$smarty->display('tiki-wizard_admin.tpl');
278