Select the types of activity you want to include in your feed.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
···77 return 'arcanist.projectinfo';
88 }
991010+ public function getMethodStatus() {
1111+ return self::METHOD_STATUS_DEPRECATED;
1212+ }
1313+1014 public function getMethodDescription() {
1111- return pht('Get information about Arcanist projects.');
1515+ return pht('Arcanist projects are deprecated.');
1216 }
13171418 protected function defineParamTypes() {
···4747 DifferentialRevision $revision,
4848 PhabricatorRepository $repository) {
49495050+ // TODO: This temporarily disables this action, because it doesn't work
5151+ // and is confusing to users. If you want to use it, comment out this line
5252+ // for now and we'll provide real support eventually.
5353+ return;
5454+5055 $vcs = $repository->getVersionControlSystem();
5156 if ($vcs !== PhabricatorRepositoryType::REPOSITORY_TYPE_GIT) {
5257 return;
···522522 }
523523524524 $query = id(new DifferentialInlineCommentQuery())
525525+ ->needHidden(true)
525526 ->setViewer($viewer);
526527527528 // NOTE: This is a bit sketchy: this method adjusts the inlines as a
···11+<?php
22+33+final class PhabricatorOwnersPackageTransactionQuery
44+ extends PhabricatorApplicationTransactionQuery {
55+66+ public function getTemplateApplicationTransaction() {
77+ return new PhabricatorOwnersPackageTransaction();
88+ }
99+1010+}
···4343 $types[] = PhabricatorRepositoryTransaction::TYPE_SERVICE;
4444 $types[] = PhabricatorRepositoryTransaction::TYPE_SYMBOLS_LANGUAGE;
4545 $types[] = PhabricatorRepositoryTransaction::TYPE_SYMBOLS_SOURCES;
4646+ $types[] = PhabricatorRepositoryTransaction::TYPE_STAGING_URI;
46474748 $types[] = PhabricatorTransactions::TYPE_EDGE;
4849 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
···104105 return $object->getSymbolLanguages();
105106 case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_SOURCES:
106107 return $object->getSymbolSources();
108108+ case PhabricatorRepositoryTransaction::TYPE_STAGING_URI:
109109+ return $object->getDetail('staging-uri');
107110 }
108111 }
109112···139142 case PhabricatorRepositoryTransaction::TYPE_SERVICE:
140143 case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_LANGUAGE:
141144 case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_SOURCES:
145145+ case PhabricatorRepositoryTransaction::TYPE_STAGING_URI:
142146 return $xaction->getNewValue();
143147 case PhabricatorRepositoryTransaction::TYPE_NOTIFY:
144148 case PhabricatorRepositoryTransaction::TYPE_AUTOCLOSE:
···219223 case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_SOURCES:
220224 $object->setDetail('symbol-sources', $xaction->getNewValue());
221225 return;
226226+ case PhabricatorRepositoryTransaction::TYPE_STAGING_URI:
227227+ $object->setDetail('staging-uri', $xaction->getNewValue());
228228+ return;
222229 case PhabricatorRepositoryTransaction::TYPE_ENCODING:
223230 // Make sure the encoding is valid by converting to UTF-8. This tests
224231 // that the user has mbstring installed, and also that they didn't type
···330337 case PhabricatorRepositoryTransaction::TYPE_SERVICE:
331338 case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_SOURCES:
332339 case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_LANGUAGE:
340340+ case PhabricatorRepositoryTransaction::TYPE_STAGING_URI:
333341 PhabricatorPolicyFilter::requireCapability(
334342 $this->requireActor(),
335343 $object,
···241241 '**NOTE**: This script will queue tasks to reparse the data. Once the '.
242242 'tasks have been queued, you need to run Taskmaster daemons to '.
243243 'execute them.'."\n\n".
244244- "QUEUEING TASKS (%d Commits):",
245245- number_format(count($commits))));
244244+ "QUEUEING TASKS (%s Commits):",
245245+ new PhutilNumber(count($commits))));
246246 }
247247248248 $progress = new PhutilConsoleProgressBar();
···349349350350351351 public function getCustomFieldSpecificationForRole($role) {
352352- // TODO: We could make this configurable eventually, but just use the
353353- // defaults for now.
354354- return array();
352352+ return PhabricatorEnv::getEnvConfig('diffusion.fields');
355353 }
356354357355 public function getCustomFieldBaseClass() {
···4949 See below for details about path resolution, or see
5050 @{article:libphutil Libraries User Guide} for a general introduction to
5151 libphutil libraries.
5252- - **project.name**: name an "Arcanist Project" to associate this working
5353- copy (Git, Mercurial) or directory (SVN) with. Previously, this was a
5454- required option, but `arc` can now usually operate without it in Git and
5555- Mercurial. This option was previously called `project_id`.
5652 - **https.cabundle**: specifies the path to an alternate certificate bundle
5753 for use when making HTTPS connections.
5854 - **lint.engine**: the name of a subclass of
···5757 public function setIsGhost($is_ghost);
5858 public function getIsGhost();
59596060+ public function supportsHiding();
6161+ public function isHidden();
6262+6063}
···2323 protected function getRowAttributes() {
2424 // TODO: This is semantic information used by the JS when placing comments
2525 // and using keyboard navigation; we should move it out of class names.
2626+2727+ $style = null;
2828+ foreach ($this->getInlineViews() as $view) {
2929+ if ($view->isHidden()) {
3030+ $style = 'display: none';
3131+ }
3232+ }
3333+2634 return array(
2735 'class' => 'inline',
3636+ 'sigil' => 'inline-row',
3737+ 'style' => $style,
2838 );
2939 }
3040
···220220 case 'buildplan':
221221 case 'taskpriority':
222222 case 'taskstatus':
223223- case 'arcanistprojects':
224223 case 'legaldocuments':
225224 case 'applicationemail':
226225 var tokenizer = this._newTokenizer(type);
+59-18
webroot/rsrc/js/core/behavior-fancy-datepicker.js
···6464 JX.DOM.remove(picker);
6565 picker = null;
6666 JX.DOM.alterClass(root, 'picker-open', false);
6767- e.kill();
6767+ if (e) {
6868+ e.kill();
6969+ }
68706971 root = null;
7072 };
···78807981 var get_inputs = function() {
8082 return {
8181- y: JX.DOM.find(root, 'select', 'year-input'),
8282- m: JX.DOM.find(root, 'select', 'month-input'),
8383- d: JX.DOM.find(root, 'select', 'day-input'),
8383+ d: JX.DOM.find(root, 'input', 'date-input'),
8484 t: JX.DOM.find(root, 'input', 'time-input')
8585 };
8686 };
87878888 var read_date = function() {
8989 var i = get_inputs();
9090- value_y = +i.y.value;
9191- value_m = +i.m.value;
9292- value_d = +i.d.value;
9090+ var date = i.d.value;
9191+ var parts = date.split('/');
9292+ value_y = +parts[2];
9393+ value_m = +parts[0];
9494+ value_d = +parts[1];
9395 };
94969597 var write_date = function() {
9698 var i = get_inputs();
9797- i.y.value = value_y;
9898- i.m.value = value_m;
9999- i.d.value = value_d;
9999+ i.d.value = value_m + '/' + value_d + '/' + value_y;
100100 };
101101102102 var render = function() {
···133133 return JX.$N('td', {meta: {value: value}, className: class_name}, label);
134134 };
135135136136-137136 // Render the top bar which allows you to pick a month and year.
138137 var render_month = function() {
138138+ var valid_date = getValidDate();
139139+ var month = valid_date.getMonth();
140140+ var year = valid_date.getYear() + 1900;
141141+139142 var months = [
140143 'January',
141144 'February',
···152155153156 var buttons = [
154157 cell('\u25C0', 'm:-1', false, 'lrbutton'),
155155- cell(months[value_m - 1] + ' ' + value_y, null),
158158+ cell(months[month] + ' ' + year, null),
156159 cell('\u25B6', 'm:1', false, 'lrbutton')];
157160158161 return JX.$N(
···161164 JX.$N('tr', {}, buttons));
162165 };
163166167167+ function getValidDate() {
168168+ var written_date = new Date(value_y, value_m-1, value_d);
169169+ if (isNaN(written_date.getTime())) {
170170+ return new Date();
171171+ } else {
172172+ //year 01 should be 2001, not 1901
173173+ if (written_date.getYear() < 70) {
174174+ value_y += 2000;
175175+ written_date = new Date(value_y, value_m-1, value_d);
176176+ }
177177+ return written_date;
178178+ }
179179+ }
180180+164181165182 // Render the day-of-week and calendar views.
166183 var render_day = function() {
184184+ var today = new Date();
185185+ var valid_date = getValidDate();
186186+167187 var weeks = [];
168188169189 // First, render the weekday names.
···179199 // Render the calendar itself. NOTE: Javascript uses 0-based month indexes
180200 // while we use 1-based month indexes, so we have to adjust for that.
181201 var days = [];
182182- var start = new Date(value_y, value_m - 1, 1).getDay();
202202+ var start = new Date(
203203+ valid_date.getYear() + 1900,
204204+ valid_date.getMonth(),
205205+ 1).getDay();
206206+183207 while (start--) {
184208 days.push(cell('', null, false, 'day-placeholder'));
185209 }
186210187187- var today = new Date();
188188-189211 for (ii = 1; ii <= 31; ii++) {
190190- var date = new Date(value_y, value_m - 1, ii);
191191- if (date.getMonth() != (value_m - 1)) {
212212+ var date = new Date(
213213+ valid_date.getYear() + 1900,
214214+ valid_date.getMonth(),
215215+ ii);
216216+ if (date.getMonth() != (valid_date.getMonth())) {
192217 // We've spilled over into the next month, so stop rendering.
193218 break;
194219 }
···206231 classes.push('weekend');
207232 }
208233209209- days.push(cell(ii, 'd:'+ii, value_d == ii, classes.join(' ')));
234234+ days.push(cell(
235235+ ii,
236236+ 'd:'+ii,
237237+ valid_date.getDate() == ii,
238238+ classes.join(' ')));
210239 }
211240212241 // Slice the days into weeks.
···232261 return;
233262 }
234263264264+ var valid_date = getValidDate();
265265+ value_y = valid_date.getYear() + 1900;
266266+ value_m = valid_date.getMonth() + 1;
267267+ value_d = valid_date.getDate();
268268+235269 var p = data.value.split(':');
236270 switch (p[0]) {
237271 case 'm':
···262296263297 render();
264298 });
299299+300300+ JX.Stratcom.listen('click', null, function(e){
301301+ if (e.getNode('phabricator-datepicker')) {
302302+ return;
303303+ }
304304+ onclose();
305305+ });
265306266307});