protected function getSelectOptions() { $postprocessor_map = CelerityPostprocessor::getAllPostprocessors(); $postprocessor_map = mpull($postprocessor_map, 'getPostprocessorName'); asort($postprocessor_map); $postprocessor_order = array(CelerityDefaultPostprocessor::POSTPROCESSOR_KEY); $postprocessor_map = array_select_keys($postprocessor_map, $postprocessor_order) + $postprocessor_map; return $postprocessor_map; }
public function processRequest(AphrontRequest $request) { $user = $request->getUser(); $preferences = $user->loadPreferences(); $pref_monospaced = PhabricatorUserPreferences::PREFERENCE_MONOSPACED; $pref_editor = PhabricatorUserPreferences::PREFERENCE_EDITOR; $pref_multiedit = PhabricatorUserPreferences::PREFERENCE_MULTIEDIT; $pref_titles = PhabricatorUserPreferences::PREFERENCE_TITLES; $pref_monospaced_textareas = PhabricatorUserPreferences::PREFERENCE_MONOSPACED_TEXTAREAS; $pref_postprocessor = PhabricatorUserPreferences::PREFERENCE_RESOURCE_POSTPROCESSOR; $errors = array(); $e_editor = null; if ($request->isFormPost()) { $monospaced = $request->getStr($pref_monospaced); $monospaced = PhabricatorUserPreferences::filterMonospacedCSSRule($monospaced); $preferences->setPreference($pref_titles, $request->getStr($pref_titles)); $preferences->setPreference($pref_editor, $request->getStr($pref_editor)); $preferences->setPreference($pref_multiedit, $request->getStr($pref_multiedit)); $preferences->setPreference($pref_monospaced, $monospaced); $preferences->setPreference($pref_monospaced_textareas, $request->getStr($pref_monospaced_textareas)); $preferences->setPreference($pref_postprocessor, $request->getStr($pref_postprocessor)); $editor_pattern = $preferences->getPreference($pref_editor); if (strlen($editor_pattern)) { $ok = PhabricatorHelpEditorProtocolController::hasAllowedProtocol($editor_pattern); if (!$ok) { $allowed_key = 'uri.allowed-editor-protocols'; $allowed_protocols = PhabricatorEnv::getEnvConfig($allowed_key); $proto_names = array(); foreach (array_keys($allowed_protocols) as $protocol) { $proto_names[] = $protocol . '://'; } $errors[] = pht('Editor link has an invalid or missing protocol. You must ' . 'use a whitelisted editor protocol from this list: %s. To ' . 'add protocols, update %s.', implode(', ', $proto_names), phutil_tag('tt', array(), $allowed_key)); $e_editor = pht('Invalid'); } } if (!$errors) { $preferences->save(); return id(new AphrontRedirectResponse())->setURI($this->getPanelURI('?saved=true')); } } $example_string = <<<EXAMPLE // This is what your monospaced font currently looks like. function helloWorld() { alert("Hello world!"); } EXAMPLE; $editor_doc_link = phutil_tag('a', array('href' => PhabricatorEnv::getDoclink('User Guide: Configuring an External Editor')), pht('User Guide: Configuring an External Editor')); $pref_monospaced_textareas_value = $preferences->getPreference($pref_monospaced_textareas); if (!$pref_monospaced_textareas_value) { $pref_monospaced_textareas_value = 'disabled'; } $editor_instructions = pht('Link to edit files in external editor. ' . '%%f is replaced by filename, %%l by line number, %%r by repository ' . 'callsign, %%%% by literal %%. For documentation, see: %s', $editor_doc_link); $font_instructions = pht('Overrides default fonts in tools like Differential. ' . 'Input should be valid CSS "font" declaration, such as ' . '"13px Consolas"'); $postprocessor_map = CelerityPostprocessor::getAllPostprocessors(); $postprocessor_map = mpull($postprocessor_map, 'getPostprocessorName'); asort($postprocessor_map); $postprocessor_order = array(CelerityDefaultPostprocessor::POSTPROCESSOR_KEY); $postprocessor_map = array_select_keys($postprocessor_map, $postprocessor_order) + $postprocessor_map; $form = id(new AphrontFormView())->setUser($user)->appendControl(id(new AphrontFormSelectControl())->setLabel(pht('Accessibility'))->setName($pref_postprocessor)->setValue($preferences->getPreference($pref_postprocessor))->setOptions($postprocessor_map))->appendChild(id(new AphrontFormSelectControl())->setLabel(pht('Page Titles'))->setName($pref_titles)->setValue($preferences->getPreference($pref_titles))->setOptions(array('glyph' => pht('In page titles, show Tool names as unicode glyphs: %s', "⚙"), 'text' => pht('In page titles, show Tool names as plain text: ' . '[Differential]'))))->appendChild(id(new AphrontFormTextControl())->setLabel(pht('Editor Link'))->setName($pref_editor)->setCaption($editor_instructions)->setError($e_editor)->setValue($preferences->getPreference($pref_editor)))->appendChild(id(new AphrontFormSelectControl())->setLabel(pht('Edit Multiple Files'))->setName($pref_multiedit)->setOptions(array('' => pht('Supported (paths separated by spaces)'), 'disable' => pht('Not Supported')))->setValue($preferences->getPreference($pref_multiedit)))->appendChild(id(new AphrontFormTextControl())->setLabel(pht('Monospaced Font'))->setName($pref_monospaced)->setCaption($font_instructions)->setValue($preferences->getPreference($pref_monospaced)))->appendChild(id(new AphrontFormMarkupControl())->setValue(phutil_tag('pre', array('class' => 'PhabricatorMonospaced'), $example_string)))->appendChild(id(new AphrontFormRadioButtonControl())->setLabel(pht('Monospaced Textareas'))->setName($pref_monospaced_textareas)->setValue($pref_monospaced_textareas_value)->addButton('enabled', pht('Enabled'), pht('Show all textareas using the monospaced font defined above.'))->addButton('disabled', pht('Disabled'), null)); $form->appendChild(id(new AphrontFormSubmitControl())->setValue(pht('Save Preferences'))); $form_box = id(new PHUIObjectBoxView())->setHeaderText(pht('Display Preferences'))->setFormErrors($errors)->setFormSaved($request->getStr('saved') === 'true')->setForm($form); return array($form_box); }
public function getCSSVariableMap() { $postprocessor_key = $this->getPostprocessorKey(); $postprocessor = CelerityPostprocessor::getPostprocessor($postprocessor_key); if (!$postprocessor) { $postprocessor = CelerityPostprocessor::getPostprocessor(CelerityDefaultPostprocessor::POSTPROCESSOR_KEY); } return $postprocessor->getVariables(); }
public function testGetAllCelerityPostprocessors() { CelerityPostprocessor::getAllPostprocessors(); $this->assertTrue(true); }