mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-22 06:42:42 +01:00
Make client inlines track an "active" state
Summary: Ref T13559. Rather than reading from the document, make client inlines actively track their current "active" state. The "active" state is what the user currently sees in the client UI. Test Plan: Created inlines, etc. See followups. Maniphest Tasks: T13559 Differential Revision: https://secure.phabricator.com/D21646
This commit is contained in:
parent
b964731b6a
commit
cb00cb99e2
3 changed files with 74 additions and 28 deletions
|
@ -13,7 +13,7 @@ return array(
|
||||||
'core.pkg.js' => 'ab3502fe',
|
'core.pkg.js' => 'ab3502fe',
|
||||||
'dark-console.pkg.js' => '187792c2',
|
'dark-console.pkg.js' => '187792c2',
|
||||||
'differential.pkg.css' => 'ffb69e3d',
|
'differential.pkg.css' => 'ffb69e3d',
|
||||||
'differential.pkg.js' => '5e0c7197',
|
'differential.pkg.js' => '68a2e7be',
|
||||||
'diffusion.pkg.css' => '42c75c37',
|
'diffusion.pkg.css' => '42c75c37',
|
||||||
'diffusion.pkg.js' => '78c9885d',
|
'diffusion.pkg.js' => '78c9885d',
|
||||||
'maniphest.pkg.css' => '35995d6d',
|
'maniphest.pkg.css' => '35995d6d',
|
||||||
|
@ -385,8 +385,8 @@ return array(
|
||||||
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '0116d3e8',
|
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '0116d3e8',
|
||||||
'rsrc/js/application/diff/DiffChangeset.js' => 'd7d3ba75',
|
'rsrc/js/application/diff/DiffChangeset.js' => 'd7d3ba75',
|
||||||
'rsrc/js/application/diff/DiffChangesetList.js' => 'cc2c5de5',
|
'rsrc/js/application/diff/DiffChangesetList.js' => 'cc2c5de5',
|
||||||
'rsrc/js/application/diff/DiffInline.js' => '09e0c6e5',
|
'rsrc/js/application/diff/DiffInline.js' => 'a5f196da',
|
||||||
'rsrc/js/application/diff/DiffInlineContentState.js' => 'cb9e5396',
|
'rsrc/js/application/diff/DiffInlineContentState.js' => '68e6339d',
|
||||||
'rsrc/js/application/diff/DiffPathView.js' => '8207abf9',
|
'rsrc/js/application/diff/DiffPathView.js' => '8207abf9',
|
||||||
'rsrc/js/application/diff/DiffTreeView.js' => '5d83623b',
|
'rsrc/js/application/diff/DiffTreeView.js' => '5d83623b',
|
||||||
'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd',
|
'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd',
|
||||||
|
@ -788,8 +788,8 @@ return array(
|
||||||
'phabricator-dashboard-css' => '5a205b9d',
|
'phabricator-dashboard-css' => '5a205b9d',
|
||||||
'phabricator-diff-changeset' => 'd7d3ba75',
|
'phabricator-diff-changeset' => 'd7d3ba75',
|
||||||
'phabricator-diff-changeset-list' => 'cc2c5de5',
|
'phabricator-diff-changeset-list' => 'cc2c5de5',
|
||||||
'phabricator-diff-inline' => '09e0c6e5',
|
'phabricator-diff-inline' => 'a5f196da',
|
||||||
'phabricator-diff-inline-content-state' => 'cb9e5396',
|
'phabricator-diff-inline-content-state' => '68e6339d',
|
||||||
'phabricator-diff-path-view' => '8207abf9',
|
'phabricator-diff-path-view' => '8207abf9',
|
||||||
'phabricator-diff-tree-view' => '5d83623b',
|
'phabricator-diff-tree-view' => '5d83623b',
|
||||||
'phabricator-drag-and-drop-file-upload' => '4370900d',
|
'phabricator-drag-and-drop-file-upload' => '4370900d',
|
||||||
|
@ -1000,10 +1000,6 @@ return array(
|
||||||
'herald-rule-editor',
|
'herald-rule-editor',
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
),
|
),
|
||||||
'09e0c6e5' => array(
|
|
||||||
'javelin-dom',
|
|
||||||
'phabricator-diff-inline-content-state',
|
|
||||||
),
|
|
||||||
'0ad8d31f' => array(
|
'0ad8d31f' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
|
@ -1544,6 +1540,9 @@ return array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'68e6339d' => array(
|
||||||
|
'javelin-dom',
|
||||||
|
),
|
||||||
'6a1583a8' => array(
|
'6a1583a8' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-history',
|
'javelin-history',
|
||||||
|
@ -1872,6 +1871,10 @@ return array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'a5f196da' => array(
|
||||||
|
'javelin-dom',
|
||||||
|
'phabricator-diff-inline-content-state',
|
||||||
|
),
|
||||||
'a77e2cbd' => array(
|
'a77e2cbd' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
|
@ -2089,9 +2092,6 @@ return array(
|
||||||
'javelin-workflow',
|
'javelin-workflow',
|
||||||
'javelin-json',
|
'javelin-json',
|
||||||
),
|
),
|
||||||
'cb9e5396' => array(
|
|
||||||
'javelin-dom',
|
|
||||||
),
|
|
||||||
'cc2c5de5' => array(
|
'cc2c5de5' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'phuix-button-view',
|
'phuix-button-view',
|
||||||
|
|
|
@ -416,25 +416,12 @@ JX.install('DiffInline', {
|
||||||
.send();
|
.send();
|
||||||
},
|
},
|
||||||
|
|
||||||
_getContentState: function() {
|
|
||||||
var state;
|
|
||||||
|
|
||||||
if (this._editRow) {
|
|
||||||
state = this._readFormState(this._editRow);
|
|
||||||
} else {
|
|
||||||
state = this._originalState;
|
|
||||||
}
|
|
||||||
|
|
||||||
return state;
|
|
||||||
},
|
|
||||||
|
|
||||||
reply: function(with_quote) {
|
reply: function(with_quote) {
|
||||||
this._closeMenu();
|
this._closeMenu();
|
||||||
|
|
||||||
var content_state = this._newContentState();
|
var content_state = this._newContentState();
|
||||||
if (with_quote) {
|
if (with_quote) {
|
||||||
var text = this._getContentState().text;
|
var text = this._getActiveContentState().getTextForQuote();
|
||||||
text = '> ' + text.replace(/\n/g, '\n> ') + '\n\n';
|
|
||||||
content_state.text = text;
|
content_state.text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -607,6 +594,9 @@ JX.install('DiffInline', {
|
||||||
_readInlineState: function(state) {
|
_readInlineState: function(state) {
|
||||||
this._id = state.id;
|
this._id = state.id;
|
||||||
this._originalState = state.contentState;
|
this._originalState = state.contentState;
|
||||||
|
|
||||||
|
this._getActiveContentState().readWireFormat(state.contentState);
|
||||||
|
|
||||||
this._canSuggestEdit = state.canSuggestEdit;
|
this._canSuggestEdit = state.canSuggestEdit;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -790,7 +780,13 @@ JX.install('DiffInline', {
|
||||||
},
|
},
|
||||||
|
|
||||||
_getActiveContentState: function() {
|
_getActiveContentState: function() {
|
||||||
return this._activeContentState;
|
var state = this._activeContentState;
|
||||||
|
|
||||||
|
if (this._editRow) {
|
||||||
|
state.readForm(this._editRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
return state;
|
||||||
},
|
},
|
||||||
|
|
||||||
setHasSuggestion: function(has_suggestion) {
|
setHasSuggestion: function(has_suggestion) {
|
||||||
|
@ -819,12 +815,13 @@ JX.install('DiffInline', {
|
||||||
},
|
},
|
||||||
|
|
||||||
save: function() {
|
save: function() {
|
||||||
|
var state = this._getActiveContentState();
|
||||||
var handler = JX.bind(this, this._onsubmitresponse);
|
var handler = JX.bind(this, this._onsubmitresponse);
|
||||||
|
|
||||||
this.setLoading(true);
|
this.setLoading(true);
|
||||||
|
|
||||||
var uri = this._getInlineURI();
|
var uri = this._getInlineURI();
|
||||||
var data = this._newRequestData('save', this._getContentState());
|
var data = this._newRequestData('save', state.getWireFormat());
|
||||||
|
|
||||||
new JX.Request(uri, handler)
|
new JX.Request(uri, handler)
|
||||||
.setData(data)
|
.setData(data)
|
||||||
|
|
|
@ -17,6 +17,55 @@ JX.install('DiffInlineContentState', {
|
||||||
},
|
},
|
||||||
|
|
||||||
members: {
|
members: {
|
||||||
|
readForm: function(row) {
|
||||||
|
var node;
|
||||||
|
|
||||||
|
try {
|
||||||
|
node = JX.DOM.find(row, 'textarea', 'inline-content-text');
|
||||||
|
this.setText(node.value);
|
||||||
|
} catch (ex) {
|
||||||
|
this.setText(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
node = this._getSuggestionNode(row);
|
||||||
|
if (node) {
|
||||||
|
this.setSuggestionText(node.value);
|
||||||
|
} else {
|
||||||
|
this.setSuggestionText(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
getWireFormat: function() {
|
||||||
|
return {
|
||||||
|
text: this.getText(),
|
||||||
|
suggestionText: this.getSuggestionText(),
|
||||||
|
hasSuggestion: this.getHasSuggestion()
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
readWireFormat: function(map) {
|
||||||
|
this.setText(map.text || null);
|
||||||
|
this.setSuggestionText(map.suggestionText || null);
|
||||||
|
this.setHasSuggestion(!!map.hasSuggestion);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
getTextForQuote: function() {
|
||||||
|
var text = this.getText();
|
||||||
|
text = '> ' + text.replace(/\n/g, '\n> ') + '\n\n';
|
||||||
|
return text;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getSuggestionNode: function(row) {
|
||||||
|
try {
|
||||||
|
return JX.DOM.find(row, 'textarea', 'inline-content-suggestion');
|
||||||
|
} catch (ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue