mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-29 18:22:41 +01:00
Merge branch 'preferences'
This commit is contained in:
commit
6b8c2d110a
15 changed files with 311 additions and 4 deletions
6
resources/sql/patches/015.preferences.sql
Normal file
6
resources/sql/patches/015.preferences.sql
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
CREATE TABLE phabricator_user.user_preferences (
|
||||||
|
id int unsigned not null auto_increment primary key,
|
||||||
|
userPHID varchar(64) binary not null,
|
||||||
|
preferences longblob not null,
|
||||||
|
unique key (userPHID)
|
||||||
|
);
|
|
@ -270,6 +270,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorDirectoryMainController' => 'applications/directory/controller/main',
|
'PhabricatorDirectoryMainController' => 'applications/directory/controller/main',
|
||||||
'PhabricatorDraft' => 'applications/draft/storage/draft',
|
'PhabricatorDraft' => 'applications/draft/storage/draft',
|
||||||
'PhabricatorDraftDAO' => 'applications/draft/storage/base',
|
'PhabricatorDraftDAO' => 'applications/draft/storage/base',
|
||||||
|
'PhabricatorEditPreferencesController' => 'applications/preferences/controller/edit',
|
||||||
'PhabricatorEmailLoginController' => 'applications/auth/controller/email',
|
'PhabricatorEmailLoginController' => 'applications/auth/controller/email',
|
||||||
'PhabricatorEmailTokenController' => 'applications/auth/controller/emailtoken',
|
'PhabricatorEmailTokenController' => 'applications/auth/controller/emailtoken',
|
||||||
'PhabricatorEnv' => 'infrastructure/env',
|
'PhabricatorEnv' => 'infrastructure/env',
|
||||||
|
@ -323,6 +324,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorPeopleListController' => 'applications/people/controller/list',
|
'PhabricatorPeopleListController' => 'applications/people/controller/list',
|
||||||
'PhabricatorPeopleProfileController' => 'applications/people/controller/profile',
|
'PhabricatorPeopleProfileController' => 'applications/people/controller/profile',
|
||||||
'PhabricatorPeopleProfileEditController' => 'applications/people/controller/profileedit',
|
'PhabricatorPeopleProfileEditController' => 'applications/people/controller/profileedit',
|
||||||
|
'PhabricatorPreferencesController' => 'applications/preferences/controller/base',
|
||||||
'PhabricatorProject' => 'applications/project/storage/project',
|
'PhabricatorProject' => 'applications/project/storage/project',
|
||||||
'PhabricatorProjectAffiliation' => 'applications/project/storage/affiliation',
|
'PhabricatorProjectAffiliation' => 'applications/project/storage/affiliation',
|
||||||
'PhabricatorProjectAffiliationEditController' => 'applications/project/controller/editaffiliation',
|
'PhabricatorProjectAffiliationEditController' => 'applications/project/controller/editaffiliation',
|
||||||
|
@ -386,6 +388,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorUser' => 'applications/people/storage/user',
|
'PhabricatorUser' => 'applications/people/storage/user',
|
||||||
'PhabricatorUserDAO' => 'applications/people/storage/base',
|
'PhabricatorUserDAO' => 'applications/people/storage/base',
|
||||||
'PhabricatorUserOAuthInfo' => 'applications/people/storage/useroauthinfo',
|
'PhabricatorUserOAuthInfo' => 'applications/people/storage/useroauthinfo',
|
||||||
|
'PhabricatorUserPreferences' => 'applications/people/storage/preferences',
|
||||||
'PhabricatorUserProfile' => 'applications/people/storage/profile',
|
'PhabricatorUserProfile' => 'applications/people/storage/profile',
|
||||||
'PhabricatorUserSettingsController' => 'applications/people/controller/settings',
|
'PhabricatorUserSettingsController' => 'applications/people/controller/settings',
|
||||||
'PhabricatorWorker' => 'infrastructure/daemon/workers/worker',
|
'PhabricatorWorker' => 'infrastructure/daemon/workers/worker',
|
||||||
|
@ -612,6 +615,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
||||||
'PhabricatorDraft' => 'PhabricatorDraftDAO',
|
'PhabricatorDraft' => 'PhabricatorDraftDAO',
|
||||||
'PhabricatorDraftDAO' => 'PhabricatorLiskDAO',
|
'PhabricatorDraftDAO' => 'PhabricatorLiskDAO',
|
||||||
|
'PhabricatorEditPreferencesController' => 'PhabricatorPreferencesController',
|
||||||
'PhabricatorEmailLoginController' => 'PhabricatorAuthController',
|
'PhabricatorEmailLoginController' => 'PhabricatorAuthController',
|
||||||
'PhabricatorEmailTokenController' => 'PhabricatorAuthController',
|
'PhabricatorEmailTokenController' => 'PhabricatorAuthController',
|
||||||
'PhabricatorFile' => 'PhabricatorFileDAO',
|
'PhabricatorFile' => 'PhabricatorFileDAO',
|
||||||
|
@ -656,6 +660,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorPeopleListController' => 'PhabricatorPeopleController',
|
'PhabricatorPeopleListController' => 'PhabricatorPeopleController',
|
||||||
'PhabricatorPeopleProfileController' => 'PhabricatorPeopleController',
|
'PhabricatorPeopleProfileController' => 'PhabricatorPeopleController',
|
||||||
'PhabricatorPeopleProfileEditController' => 'PhabricatorPeopleController',
|
'PhabricatorPeopleProfileEditController' => 'PhabricatorPeopleController',
|
||||||
|
'PhabricatorPreferencesController' => 'PhabricatorController',
|
||||||
'PhabricatorProject' => 'PhabricatorProjectDAO',
|
'PhabricatorProject' => 'PhabricatorProjectDAO',
|
||||||
'PhabricatorProjectAffiliation' => 'PhabricatorProjectDAO',
|
'PhabricatorProjectAffiliation' => 'PhabricatorProjectDAO',
|
||||||
'PhabricatorProjectAffiliationEditController' => 'PhabricatorProjectController',
|
'PhabricatorProjectAffiliationEditController' => 'PhabricatorProjectController',
|
||||||
|
@ -712,6 +717,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorUser' => 'PhabricatorUserDAO',
|
'PhabricatorUser' => 'PhabricatorUserDAO',
|
||||||
'PhabricatorUserDAO' => 'PhabricatorLiskDAO',
|
'PhabricatorUserDAO' => 'PhabricatorLiskDAO',
|
||||||
'PhabricatorUserOAuthInfo' => 'PhabricatorUserDAO',
|
'PhabricatorUserOAuthInfo' => 'PhabricatorUserDAO',
|
||||||
|
'PhabricatorUserPreferences' => 'PhabricatorUserDAO',
|
||||||
'PhabricatorUserProfile' => 'PhabricatorUserDAO',
|
'PhabricatorUserProfile' => 'PhabricatorUserDAO',
|
||||||
'PhabricatorUserSettingsController' => 'PhabricatorPeopleController',
|
'PhabricatorUserSettingsController' => 'PhabricatorPeopleController',
|
||||||
'PhabricatorWorkerDAO' => 'PhabricatorLiskDAO',
|
'PhabricatorWorkerDAO' => 'PhabricatorLiskDAO',
|
||||||
|
|
|
@ -242,6 +242,9 @@ class AphrontDefaultApplicationConfiguration
|
||||||
=> 'HeraldTranscriptController',
|
=> 'HeraldTranscriptController',
|
||||||
),
|
),
|
||||||
|
|
||||||
|
'/preferences/' => array(
|
||||||
|
'$' => 'PhabricatorEditPreferencesController'
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1199,7 +1199,7 @@ EOSYNTHETIC;
|
||||||
$table = null;
|
$table = null;
|
||||||
if ($contents) {
|
if ($contents) {
|
||||||
$table =
|
$table =
|
||||||
'<table class="differential-diff remarkup-code">'.
|
'<table class="differential-diff remarkup-code PhabricatorMonospaced">'.
|
||||||
$contents.
|
$contents.
|
||||||
'</table>';
|
'</table>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,7 +142,7 @@ class DiffusionBrowseFileController extends DiffusionController {
|
||||||
$corpus_table = phutil_render_tag(
|
$corpus_table = phutil_render_tag(
|
||||||
'table',
|
'table',
|
||||||
array(
|
array(
|
||||||
'class' => "diffusion-source remarkup-code",
|
'class' => "diffusion-source remarkup-code PhabricatorMonospaced",
|
||||||
),
|
),
|
||||||
implode("\n", $rows));
|
implode("\n", $rows));
|
||||||
$corpus = phutil_render_tag(
|
$corpus = phutil_render_tag(
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2011 Facebook, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class PhabricatorUserPreferences extends PhabricatorUserDAO {
|
||||||
|
|
||||||
|
const PREFERENCE_MONOSPACED = 'monospaced';
|
||||||
|
const PREFERENCE_TITLES = 'titles';
|
||||||
|
|
||||||
|
protected $userPHID;
|
||||||
|
protected $preferences;
|
||||||
|
|
||||||
|
public function getConfiguration() {
|
||||||
|
return array(
|
||||||
|
self::CONFIG_SERIALIZATION => array(
|
||||||
|
'preferences' => self::SERIALIZATION_JSON,
|
||||||
|
),
|
||||||
|
self::CONFIG_TIMESTAMPS => false,
|
||||||
|
) + parent::getConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPreference($key) {
|
||||||
|
return $this->getPreferences()[$key];
|
||||||
|
}
|
||||||
|
}
|
12
src/applications/people/storage/preferences/__init__.php
Normal file
12
src/applications/people/storage/preferences/__init__.php
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is automatically generated. Lint this module to rebuild it.
|
||||||
|
* @generated
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_module('phabricator', 'applications/people/storage/base');
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_source('PhabricatorUserPreferences.php');
|
|
@ -34,6 +34,8 @@ class PhabricatorUser extends PhabricatorUserDAO {
|
||||||
|
|
||||||
protected $conduitCertificate;
|
protected $conduitCertificate;
|
||||||
|
|
||||||
|
protected $preferences = null;
|
||||||
|
|
||||||
public function getProfileImagePHID() {
|
public function getProfileImagePHID() {
|
||||||
return nonempty(
|
return nonempty(
|
||||||
$this->profileImagePHID,
|
$this->profileImagePHID,
|
||||||
|
@ -161,4 +163,28 @@ class PhabricatorUser extends PhabricatorUserDAO {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function loadPreferences() {
|
||||||
|
if ($this->preferences) {
|
||||||
|
return $this->preferences;
|
||||||
|
}
|
||||||
|
|
||||||
|
$preferences = id(new PhabricatorUserPreferences())->loadOneWhere(
|
||||||
|
'userPHID = %s',
|
||||||
|
$this->getPHID());
|
||||||
|
|
||||||
|
if (!$preferences) {
|
||||||
|
$preferences = new PhabricatorUserPreferences();
|
||||||
|
$preferences->setUserPHID($this->getPHID());
|
||||||
|
|
||||||
|
$default_dict = array(
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_TITLES => 'glyph',
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_MONOSPACED => '');
|
||||||
|
|
||||||
|
$preferences->setPreferences($default_dict);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->preferences = $preferences;
|
||||||
|
return $preferences;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
|
|
||||||
phutil_require_module('phabricator', 'applications/people/storage/base');
|
phutil_require_module('phabricator', 'applications/people/storage/base');
|
||||||
|
phutil_require_module('phabricator', 'applications/people/storage/preferences');
|
||||||
phutil_require_module('phabricator', 'applications/phid/constants');
|
phutil_require_module('phabricator', 'applications/phid/constants');
|
||||||
phutil_require_module('phabricator', 'applications/phid/storage/phid');
|
phutil_require_module('phabricator', 'applications/phid/storage/phid');
|
||||||
phutil_require_module('phabricator', 'infrastructure/env');
|
phutil_require_module('phabricator', 'infrastructure/env');
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2011 Facebook, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class PhabricatorPreferencesController extends PhabricatorController {
|
||||||
|
|
||||||
|
public function buildStandardPageResponse($view, array $data) {
|
||||||
|
|
||||||
|
$page = $this->buildStandardPageView();
|
||||||
|
|
||||||
|
$page->setApplicationName('Preferences');
|
||||||
|
$page->setBaseURI('/preferences/');
|
||||||
|
$page->setTitle(idx($data, 'title'));
|
||||||
|
$page->setGlyph("\xE2\x9A\x92");
|
||||||
|
$page->appendChild($view);
|
||||||
|
|
||||||
|
$response = new AphrontWebpageResponse();
|
||||||
|
return $response->setContent($page->render());
|
||||||
|
}
|
||||||
|
}
|
15
src/applications/preferences/controller/base/__init__.php
Normal file
15
src/applications/preferences/controller/base/__init__.php
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is automatically generated. Lint this module to rebuild it.
|
||||||
|
* @generated
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_module('phabricator', 'aphront/response/webpage');
|
||||||
|
phutil_require_module('phabricator', 'applications/base/controller/base');
|
||||||
|
|
||||||
|
phutil_require_module('phutil', 'utils');
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_source('PhabricatorPreferencesController.php');
|
|
@ -0,0 +1,111 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2011 Facebook, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
class PhabricatorEditPreferencesController
|
||||||
|
extends PhabricatorPreferencesController {
|
||||||
|
|
||||||
|
public function processRequest() {
|
||||||
|
|
||||||
|
$request = $this->getRequest();
|
||||||
|
$user = $request->getUser();
|
||||||
|
$preferences = $user->loadPreferences();
|
||||||
|
|
||||||
|
if ($request->isFormPost()) {
|
||||||
|
$monospaced = $request->getStr(
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_MONOSPACED);
|
||||||
|
|
||||||
|
// Prevent the user from doing stupid things.
|
||||||
|
$monospaced = preg_replace('/[^a-z0-9 ,"]+/i', '', $monospaced);
|
||||||
|
|
||||||
|
$pref_dict = array(
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_TITLES =>
|
||||||
|
$request->getStr(PhabricatorUserPreferences::PREFERENCE_TITLES),
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_MONOSPACED =>
|
||||||
|
$monospaced);
|
||||||
|
|
||||||
|
$preferences->setPreferences($pref_dict);
|
||||||
|
$preferences->save();
|
||||||
|
return id(new AphrontRedirectResponse())
|
||||||
|
->setURI('/preferences/?saved=true');
|
||||||
|
}
|
||||||
|
|
||||||
|
$example_string = <<<EXAMPLE
|
||||||
|
// This is what your monospaced font currently looks like.
|
||||||
|
function helloWorld() {
|
||||||
|
alert("Hello world!");
|
||||||
|
}
|
||||||
|
EXAMPLE;
|
||||||
|
|
||||||
|
$form = id(new AphrontFormView())
|
||||||
|
->setAction('/preferences/')
|
||||||
|
->setUser($user)
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormSelectControl())
|
||||||
|
->setLabel('Page Titles')
|
||||||
|
->setName(PhabricatorUserPreferences::PREFERENCE_TITLES)
|
||||||
|
->setValue($preferences->getPreference(
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_TITLES))
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
'glyph' =>
|
||||||
|
"In page titles, show Tool names as unicode glyphs: \xE2\x9A\x99",
|
||||||
|
'text' =>
|
||||||
|
'In page titles, show Tool names as plain text: [Differential]',
|
||||||
|
)))
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormTextControl())
|
||||||
|
->setLabel('Monospaced Font')
|
||||||
|
->setName(PhabricatorUserPreferences::PREFERENCE_MONOSPACED)
|
||||||
|
->setCaption(
|
||||||
|
'Overrides default fonts in tools like Differential. '.
|
||||||
|
'(Default: 10px "Menlo", "Consolas", "Monaco", '.
|
||||||
|
'monospace)')
|
||||||
|
->setValue($preferences->getPreference(
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_MONOSPACED)))
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormMarkupControl())
|
||||||
|
->setValue(
|
||||||
|
'<pre class="PhabricatorMonospaced">'.
|
||||||
|
phutil_escape_html($example_string).
|
||||||
|
'</pre>'))
|
||||||
|
->appendChild(
|
||||||
|
id(new AphrontFormSubmitControl())
|
||||||
|
->setValue('Save Preferences'));
|
||||||
|
|
||||||
|
$panel = new AphrontPanelView();
|
||||||
|
$panel->appendChild($form);
|
||||||
|
|
||||||
|
$error_view = null;
|
||||||
|
if ($request->getStr('saved') === 'true') {
|
||||||
|
$error_view = id(new AphrontErrorView())
|
||||||
|
->setTitle('Preferences Saved')
|
||||||
|
->setSeverity(AphrontErrorView::SEVERITY_NOTICE)
|
||||||
|
->setErrors(array('Your preferences have been saved.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildStandardPageResponse(
|
||||||
|
array(
|
||||||
|
$error_view,
|
||||||
|
$panel,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => 'Edit Preferences',
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
20
src/applications/preferences/controller/edit/__init__.php
Normal file
20
src/applications/preferences/controller/edit/__init__.php
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is automatically generated. Lint this module to rebuild it.
|
||||||
|
* @generated
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_module('phabricator', 'aphront/response/redirect');
|
||||||
|
phutil_require_module('phabricator', 'applications/people/storage/preferences');
|
||||||
|
phutil_require_module('phabricator', 'applications/preferences/controller/base');
|
||||||
|
phutil_require_module('phabricator', 'view/form/base');
|
||||||
|
phutil_require_module('phabricator', 'view/form/control/submit');
|
||||||
|
phutil_require_module('phabricator', 'view/form/error');
|
||||||
|
phutil_require_module('phabricator', 'view/layout/panel');
|
||||||
|
|
||||||
|
phutil_require_module('phutil', 'utils');
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_source('PhabricatorEditPreferencesController.php');
|
|
@ -60,7 +60,19 @@ class PhabricatorStandardPageView extends AphrontPageView {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTitle() {
|
public function getTitle() {
|
||||||
return $this->getGlyph().' '.parent::getTitle();
|
$use_glyph = true;
|
||||||
|
$request = $this->getRequest();
|
||||||
|
if ($request) {
|
||||||
|
$user = $request->getUser();
|
||||||
|
if ($user && $user->loadPreferences()->getPreference(
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_TITLES) !== 'glyph') {
|
||||||
|
$use_glyph = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($use_glyph ?
|
||||||
|
$this->getGlyph() : '['.$this->getApplicationName().']').
|
||||||
|
' '.parent::getTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,7 +109,7 @@ class PhabricatorStandardPageView extends AphrontPageView {
|
||||||
|
|
||||||
protected function getHead() {
|
protected function getHead() {
|
||||||
$response = CelerityAPI::getStaticResourceResponse();
|
$response = CelerityAPI::getStaticResourceResponse();
|
||||||
return
|
$head =
|
||||||
'<script type="text/javascript">'.
|
'<script type="text/javascript">'.
|
||||||
'(top != self) && top.location.replace(self.location.href);'.
|
'(top != self) && top.location.replace(self.location.href);'.
|
||||||
'window.__DEV__=1;'.
|
'window.__DEV__=1;'.
|
||||||
|
@ -105,6 +117,27 @@ class PhabricatorStandardPageView extends AphrontPageView {
|
||||||
$response->renderResourcesOfType('css').
|
$response->renderResourcesOfType('css').
|
||||||
'<script type="text/javascript" src="/rsrc/js/javelin/init.dev.js">'.
|
'<script type="text/javascript" src="/rsrc/js/javelin/init.dev.js">'.
|
||||||
'</script>';
|
'</script>';
|
||||||
|
|
||||||
|
$request = $this->getRequest();
|
||||||
|
if ($request) {
|
||||||
|
$user = $request->getUser();
|
||||||
|
if ($user) {
|
||||||
|
$monospaced = $user->loadPreferences()->getPreference(
|
||||||
|
PhabricatorUserPreferences::PREFERENCE_MONOSPACED
|
||||||
|
);
|
||||||
|
|
||||||
|
if (strlen($monospaced)) {
|
||||||
|
$head .=
|
||||||
|
'<style type="text/css">'.
|
||||||
|
'.PhabricatorMonospaced { font: '.
|
||||||
|
$monospaced.
|
||||||
|
' !important; }'.
|
||||||
|
'</style>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $head;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setGlyph($glyph) {
|
public function setGlyph($glyph) {
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_module('phabricator', 'applications/people/storage/preferences');
|
||||||
phutil_require_module('phabricator', 'infrastructure/celerity/api');
|
phutil_require_module('phabricator', 'infrastructure/celerity/api');
|
||||||
phutil_require_module('phabricator', 'infrastructure/env');
|
phutil_require_module('phabricator', 'infrastructure/env');
|
||||||
phutil_require_module('phabricator', 'infrastructure/javelin/api');
|
phutil_require_module('phabricator', 'infrastructure/javelin/api');
|
||||||
|
|
Loading…
Reference in a new issue