Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14019259
D7465.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
66 KB
Referenced Files
None
Subscribers
None
D7465.diff
View Options
Index: resources/sprite/manifest/apps-large.json
===================================================================
--- resources/sprite/manifest/apps-large.json
+++ resources/sprite/manifest/apps-large.json
@@ -581,6 +581,26 @@
"rule" : ".apps-new-white-large",
"hash" : "be597ce11c4d1630f67282cd7b81cc85"
},
+ "apps-nuance-blue-large" : {
+ "name" : "apps-nuance-blue-large",
+ "rule" : ".apps-nuance-blue-large, .phabricator-crumb-view:hover .apps-nuance-dark-large",
+ "hash" : "a6c11b6c091b15c93bb75e40f5014c46"
+ },
+ "apps-nuance-dark-large" : {
+ "name" : "apps-nuance-dark-large",
+ "rule" : ".apps-nuance-dark-large",
+ "hash" : "a179a6802048440f0c4dfd99784ad740"
+ },
+ "apps-nuance-light-large" : {
+ "name" : "apps-nuance-light-large",
+ "rule" : ".apps-nuance-light-large",
+ "hash" : "f6f36066f33b015e0e44e125182db158"
+ },
+ "apps-nuance-white-large" : {
+ "name" : "apps-nuance-white-large",
+ "rule" : ".apps-nuance-white-large",
+ "hash" : "8510afe6941a33000ca02a054a3f78e0"
+ },
"apps-owners-blue-large" : {
"name" : "apps-owners-blue-large",
"rule" : ".apps-owners-blue-large, .phabricator-crumb-view:hover .apps-owners-dark-large",
@@ -621,26 +641,6 @@
"rule" : ".apps-paste-white-large",
"hash" : "94cf3ee0f2b15b82ad8f62cb9399ecad"
},
- "apps-pebkac-blue-large" : {
- "name" : "apps-pebkac-blue-large",
- "rule" : ".apps-pebkac-blue-large, .phabricator-crumb-view:hover .apps-pebkac-dark-large",
- "hash" : "7a1010119d4589609f364c603cd03d1b"
- },
- "apps-pebkac-dark-large" : {
- "name" : "apps-pebkac-dark-large",
- "rule" : ".apps-pebkac-dark-large",
- "hash" : "617142b451eec10fe60246eec52a99d0"
- },
- "apps-pebkac-light-large" : {
- "name" : "apps-pebkac-light-large",
- "rule" : ".apps-pebkac-light-large",
- "hash" : "2319b657d0fe3df60b234e8961c4869e"
- },
- "apps-pebkac-white-large" : {
- "name" : "apps-pebkac-white-large",
- "rule" : ".apps-pebkac-white-large",
- "hash" : "25eb13ac78cf507b6ec66016cd477cfe"
- },
"apps-people-blue-large" : {
"name" : "apps-people-blue-large",
"rule" : ".apps-people-blue-large, .phabricator-crumb-view:hover .apps-people-dark-large",
Index: resources/sprite/manifest/apps.json
===================================================================
--- resources/sprite/manifest/apps.json
+++ resources/sprite/manifest/apps.json
@@ -291,6 +291,16 @@
"rule" : ".apps-new-white",
"hash" : "dc5ce42c7d60e6ba37b07631b3c3280a"
},
+ "apps-nuance-dark" : {
+ "name" : "apps-nuance-dark",
+ "rule" : ".apps-nuance-dark",
+ "hash" : "e20c19670e1c9b9d1f9267bf7f017aba"
+ },
+ "apps-nuance-white" : {
+ "name" : "apps-nuance-white",
+ "rule" : ".apps-nuance-white",
+ "hash" : "368f1241b438492642520a037a1ac294"
+ },
"apps-owners-dark" : {
"name" : "apps-owners-dark",
"rule" : ".apps-owners-dark",
@@ -311,16 +321,6 @@
"rule" : ".apps-paste-white",
"hash" : "ed5ec1ee39cc2a01f568f91c72141bfb"
},
- "apps-pebkac-dark" : {
- "name" : "apps-pebkac-dark",
- "rule" : ".apps-pebkac-dark",
- "hash" : "4adb4a8f0a8c5bc5462bb806ceafc63f"
- },
- "apps-pebkac-white" : {
- "name" : "apps-pebkac-white",
- "rule" : ".apps-pebkac-white",
- "hash" : "35438c7a295df21aa2fa4771a5c3c986"
- },
"apps-people-dark" : {
"name" : "apps-people-dark",
"rule" : ".apps-people-dark",
Index: resources/sql/patches/20131106.nuance-v0.sql
===================================================================
--- /dev/null
+++ resources/sql/patches/20131106.nuance-v0.sql
@@ -0,0 +1,259 @@
+CREATE TABLE {$NAMESPACE}_nuance.nuance_item (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ ownerPHID VARCHAR(64) COLLATE utf8_bin,
+ requestorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ sourcePHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ sourceLabel VARCHAR(255),
+ status INT UNSIGNED NOT NULL,
+ data longtext NOT NULL COLLATE utf8_bin,
+ mailKey VARCHAR(20) NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ dateNuanced INT UNSIGNED NOT NULL,
+ UNIQUE KEY `key_phid` (phid),
+ KEY `key_source` (sourcePHID, status, dateNuanced, id),
+ KEY `key_owner` (ownerPHID, status, dateNuanced, id),
+ KEY `key_contacter` (requestorPHID, status, dateNuanced, id)
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_itemtransaction (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentPHID VARCHAR(64) COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
+ oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ newValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ metadata LONGTEXT NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ KEY `key_object` (objectPHID)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_itemtransaction_comment (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ transactionPHID VARCHAR(64) COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ content LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ isDeleted BOOL NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ UNIQUE KEY `key_version` (transactionPHID, commentVersion)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_source (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ name VARCHAR(255),
+ type INT UNSIGNED NOT NULL,
+ data longtext NOT NULL COLLATE utf8_bin,
+ mailKey VARCHAR(20) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL,
+ editPolicy VARCHAR(64) NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ UNIQUE KEY `key_phid` (phid),
+ KEY `key_type` (type, dateModified)
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_sourcetransaction (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentPHID VARCHAR(64) COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
+ oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ newValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ metadata LONGTEXT NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ KEY `key_object` (objectPHID)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_sourcetransaction_comment (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ transactionPHID VARCHAR(64) COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ content LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ isDeleted BOOL NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ UNIQUE KEY `key_version` (transactionPHID, commentVersion)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_queue (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ name VARCHAR(255),
+ mailKey VARCHAR(20) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL,
+ editPolicy VARCHAR(64) NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ UNIQUE KEY `key_phid` (phid)
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_queuetransaction (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentPHID VARCHAR(64) COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
+ oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ newValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ metadata LONGTEXT NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ KEY `key_object` (objectPHID)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_queuetransaction_comment (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ transactionPHID VARCHAR(64) COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ content LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ isDeleted BOOL NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ UNIQUE KEY `key_version` (transactionPHID, commentVersion)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_queueitem (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ queuePHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ itemPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ itemStatus INT UNSIGNED NOT NULL,
+ itemDateNuanced INT UNSIGNED NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ UNIQUE KEY `key_one_per_queue` (itemPHID, queuePHID),
+ KEY `key_queue` (queuePHID, itemStatus, itemDateNuanced, id)
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_requestor (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ data longtext NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ UNIQUE KEY `key_phid` (phid)
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_requestortransaction (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentPHID VARCHAR(64) COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin,
+ oldValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ newValue LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ metadata LONGTEXT NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ KEY `key_object` (objectPHID)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_requestortransaction_comment (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ phid VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ transactionPHID VARCHAR(64) COLLATE utf8_bin,
+ authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ commentVersion INT UNSIGNED NOT NULL,
+ content LONGTEXT NOT NULL COLLATE utf8_bin,
+ contentSource LONGTEXT NOT NULL COLLATE utf8_bin,
+ isDeleted BOOL NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+
+ UNIQUE KEY `key_phid` (phid),
+ UNIQUE KEY `key_version` (transactionPHID, commentVersion)
+
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.nuance_requestorsource (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ requestorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ sourcePHID VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ sourceKey VARCHAR(128) NOT NULL COLLATE utf8_bin,
+ data LONGTEXT NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ KEY `key_requestor` (requestorPHID, id),
+ KEY `key_source` (sourcePHID, id),
+ UNIQUE KEY `key_source_key` (sourcePHID, sourceKey)
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.edge (
+ src VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ type VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ dst VARCHAR(64) NOT NULL COLLATE utf8_bin,
+ dateCreated INT UNSIGNED NOT NULL,
+ seq INT UNSIGNED NOT NULL,
+ dataID INT UNSIGNED,
+ PRIMARY KEY (src, type, dst),
+ KEY (src, type, dateCreated, seq)
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
+
+CREATE TABLE {$NAMESPACE}_nuance.edgedata (
+ id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ data LONGTEXT NOT NULL COLLATE utf8_bin
+) ENGINE=InnoDB, COLLATE utf8_general_ci;
Index: src/__phutil_library_map__.php
===================================================================
--- src/__phutil_library_map__.php
+++ src/__phutil_library_map__.php
@@ -830,6 +830,48 @@
'MetaMTAConstants' => 'applications/metamta/constants/MetaMTAConstants.php',
'MetaMTANotificationType' => 'applications/metamta/constants/MetaMTANotificationType.php',
'MetaMTAReceivedMailStatus' => 'applications/metamta/constants/MetaMTAReceivedMailStatus.php',
+ 'NuanceController' => 'applications/nuance/controller/NuanceController.php',
+ 'NuanceDAO' => 'applications/nuance/storage/NuanceDAO.php',
+ 'NuanceItem' => 'applications/nuance/storage/NuanceItem.php',
+ 'NuanceItemEditController' => 'applications/nuance/controller/NuanceItemEditController.php',
+ 'NuanceItemEditor' => 'applications/nuance/editor/NuanceItemEditor.php',
+ 'NuanceItemQuery' => 'applications/nuance/query/NuanceItemQuery.php',
+ 'NuanceItemTransaction' => 'applications/nuance/storage/NuanceItemTransaction.php',
+ 'NuanceItemTransactionComment' => 'applications/nuance/storage/NuanceItemTransactionComment.php',
+ 'NuanceItemTransactionQuery' => 'applications/nuance/query/NuanceItemTransactionQuery.php',
+ 'NuanceItemViewController' => 'applications/nuance/controller/NuanceItemViewController.php',
+ 'NuancePHIDTypeItem' => 'applications/nuance/phid/NuancePHIDTypeItem.php',
+ 'NuancePHIDTypeQueue' => 'applications/nuance/phid/NuancePHIDTypeQueue.php',
+ 'NuancePHIDTypeRequestor' => 'applications/nuance/phid/NuancePHIDTypeRequestor.php',
+ 'NuancePHIDTypeSource' => 'applications/nuance/phid/NuancePHIDTypeSource.php',
+ 'NuanceQuery' => 'applications/nuance/query/NuanceQuery.php',
+ 'NuanceQueue' => 'applications/nuance/storage/NuanceQueue.php',
+ 'NuanceQueueEditController' => 'applications/nuance/controller/NuanceQueueEditController.php',
+ 'NuanceQueueEditor' => 'applications/nuance/editor/NuanceQueueEditor.php',
+ 'NuanceQueueItem' => 'applications/nuance/storage/NuanceQueueItem.php',
+ 'NuanceQueueQuery' => 'applications/nuance/query/NuanceQueueQuery.php',
+ 'NuanceQueueTransaction' => 'applications/nuance/storage/NuanceQueueTransaction.php',
+ 'NuanceQueueTransactionComment' => 'applications/nuance/storage/NuanceQueueTransactionComment.php',
+ 'NuanceQueueTransactionQuery' => 'applications/nuance/query/NuanceQueueTransactionQuery.php',
+ 'NuanceQueueViewController' => 'applications/nuance/controller/NuanceQueueViewController.php',
+ 'NuanceRequestor' => 'applications/nuance/storage/NuanceRequestor.php',
+ 'NuanceRequestorEditController' => 'applications/nuance/controller/NuanceRequestorEditController.php',
+ 'NuanceRequestorEditor' => 'applications/nuance/editor/NuanceRequestorEditor.php',
+ 'NuanceRequestorQuery' => 'applications/nuance/query/NuanceRequestorQuery.php',
+ 'NuanceRequestorSource' => 'applications/nuance/storage/NuanceRequestorSource.php',
+ 'NuanceRequestorTransaction' => 'applications/nuance/storage/NuanceRequestorTransaction.php',
+ 'NuanceRequestorTransactionComment' => 'applications/nuance/storage/NuanceRequestorTransactionComment.php',
+ 'NuanceRequestorTransactionQuery' => 'applications/nuance/query/NuanceRequestorTransactionQuery.php',
+ 'NuanceRequestorViewController' => 'applications/nuance/controller/NuanceRequestorViewController.php',
+ 'NuanceSource' => 'applications/nuance/storage/NuanceSource.php',
+ 'NuanceSourceEditController' => 'applications/nuance/controller/NuanceSourceEditController.php',
+ 'NuanceSourceEditor' => 'applications/nuance/editor/NuanceSourceEditor.php',
+ 'NuanceSourceQuery' => 'applications/nuance/query/NuanceSourceQuery.php',
+ 'NuanceSourceTransaction' => 'applications/nuance/storage/NuanceSourceTransaction.php',
+ 'NuanceSourceTransactionComment' => 'applications/nuance/storage/NuanceSourceTransactionComment.php',
+ 'NuanceSourceTransactionQuery' => 'applications/nuance/query/NuanceSourceTransactionQuery.php',
+ 'NuanceSourceViewController' => 'applications/nuance/controller/NuanceSourceViewController.php',
+ 'NuanceTransaction' => 'applications/nuance/storage/NuanceTransaction.php',
'OwnersPackageReplyHandler' => 'applications/owners/mail/OwnersPackageReplyHandler.php',
'PHUI' => 'view/phui/PHUI.php',
'PHUIBoxExample' => 'applications/uiexample/examples/PHUIBoxExample.php',
@@ -928,6 +970,7 @@
'PhabricatorApplicationMailingLists' => 'applications/mailinglists/application/PhabricatorApplicationMailingLists.php',
'PhabricatorApplicationManiphest' => 'applications/maniphest/application/PhabricatorApplicationManiphest.php',
'PhabricatorApplicationMetaMTA' => 'applications/metamta/application/PhabricatorApplicationMetaMTA.php',
+ 'PhabricatorApplicationNuance' => 'applications/nuance/application/PhabricatorApplicationNuance.php',
'PhabricatorApplicationOwners' => 'applications/owners/application/PhabricatorApplicationOwners.php',
'PhabricatorApplicationPHIDTypeApplication' => 'applications/meta/phid/PhabricatorApplicationPHIDTypeApplication.php',
'PhabricatorApplicationPHPAST' => 'applications/phpast/application/PhabricatorApplicationPHPAST.php',
@@ -3097,6 +3140,60 @@
'ManiphestView' => 'AphrontView',
'MetaMTANotificationType' => 'MetaMTAConstants',
'MetaMTAReceivedMailStatus' => 'MetaMTAConstants',
+ 'NuanceController' => 'PhabricatorController',
+ 'NuanceDAO' => 'PhabricatorLiskDAO',
+ 'NuanceItem' =>
+ array(
+ 0 => 'NuanceDAO',
+ 1 => 'PhabricatorPolicyInterface',
+ ),
+ 'NuanceItemEditController' => 'NuanceController',
+ 'NuanceItemEditor' => 'PhabricatorApplicationTransactionEditor',
+ 'NuanceItemQuery' => 'NuanceQuery',
+ 'NuanceItemTransaction' => 'NuanceTransaction',
+ 'NuanceItemTransactionComment' => 'PhabricatorApplicationTransactionComment',
+ 'NuanceItemTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'NuanceItemViewController' => 'NuanceController',
+ 'NuancePHIDTypeItem' => 'PhabricatorPHIDType',
+ 'NuancePHIDTypeQueue' => 'PhabricatorPHIDType',
+ 'NuancePHIDTypeRequestor' => 'PhabricatorPHIDType',
+ 'NuancePHIDTypeSource' => 'PhabricatorPHIDType',
+ 'NuanceQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+ 'NuanceQueue' =>
+ array(
+ 0 => 'NuanceDAO',
+ 1 => 'PhabricatorPolicyInterface',
+ ),
+ 'NuanceQueueEditController' => 'NuanceController',
+ 'NuanceQueueEditor' => 'PhabricatorApplicationTransactionEditor',
+ 'NuanceQueueItem' => 'NuanceDAO',
+ 'NuanceQueueQuery' => 'NuanceQuery',
+ 'NuanceQueueTransaction' => 'NuanceTransaction',
+ 'NuanceQueueTransactionComment' => 'PhabricatorApplicationTransactionComment',
+ 'NuanceQueueTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'NuanceQueueViewController' => 'NuanceController',
+ 'NuanceRequestor' => 'NuanceDAO',
+ 'NuanceRequestorEditController' => 'NuanceController',
+ 'NuanceRequestorEditor' => 'PhabricatorApplicationTransactionEditor',
+ 'NuanceRequestorQuery' => 'NuanceQuery',
+ 'NuanceRequestorSource' => 'NuanceDAO',
+ 'NuanceRequestorTransaction' => 'NuanceTransaction',
+ 'NuanceRequestorTransactionComment' => 'PhabricatorApplicationTransactionComment',
+ 'NuanceRequestorTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'NuanceRequestorViewController' => 'NuanceController',
+ 'NuanceSource' =>
+ array(
+ 0 => 'NuanceDAO',
+ 1 => 'PhabricatorPolicyInterface',
+ ),
+ 'NuanceSourceEditController' => 'NuanceController',
+ 'NuanceSourceEditor' => 'PhabricatorApplicationTransactionEditor',
+ 'NuanceSourceQuery' => 'NuanceQuery',
+ 'NuanceSourceTransaction' => 'NuanceTransaction',
+ 'NuanceSourceTransactionComment' => 'PhabricatorApplicationTransactionComment',
+ 'NuanceSourceTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'NuanceSourceViewController' => 'NuanceController',
+ 'NuanceTransaction' => 'PhabricatorApplicationTransaction',
'OwnersPackageReplyHandler' => 'PhabricatorMailReplyHandler',
'PHUIBoxExample' => 'PhabricatorUIExample',
'PHUIBoxView' => 'AphrontTagView',
@@ -3193,6 +3290,7 @@
'PhabricatorApplicationMailingLists' => 'PhabricatorApplication',
'PhabricatorApplicationManiphest' => 'PhabricatorApplication',
'PhabricatorApplicationMetaMTA' => 'PhabricatorApplication',
+ 'PhabricatorApplicationNuance' => 'PhabricatorApplication',
'PhabricatorApplicationOwners' => 'PhabricatorApplication',
'PhabricatorApplicationPHIDTypeApplication' => 'PhabricatorPHIDType',
'PhabricatorApplicationPHPAST' => 'PhabricatorApplication',
Index: src/applications/conpherence/application/PhabricatorApplicationConpherence.php
===================================================================
--- src/applications/conpherence/application/PhabricatorApplicationConpherence.php
+++ src/applications/conpherence/application/PhabricatorApplicationConpherence.php
@@ -22,7 +22,7 @@
}
public function getTitleGlyph() {
- return "\xE2\x98\x8E";
+ return "\xE2\x9C\x86";
}
public function getApplicationGroup() {
Index: src/applications/nuance/application/PhabricatorApplicationNuance.php
===================================================================
--- /dev/null
+++ src/applications/nuance/application/PhabricatorApplicationNuance.php
@@ -0,0 +1,54 @@
+<?php
+
+final class PhabricatorApplicationNuance extends PhabricatorApplication {
+
+ public function getIconName() {
+ return 'nuance';
+ }
+
+ public function getTitleGlyph() {
+ return "\xE2\x98\x8E";
+ }
+
+ public function isBeta() {
+ return true;
+ }
+
+ public function shouldAppearInLaunchView() {
+ // try to hide this even more for now
+ return false;
+ }
+
+ public function canUninstall() {
+ return true;
+ }
+
+ public function getRoutes() {
+ return array(
+ '/nuance/' => array(
+ 'item/' => array(
+ 'view/(?P<id>[1-9]\d*)/' => 'NuanceItemViewController',
+ 'edit/(?P<id>[1-9]\d*)/' => 'NuanceItemEditController',
+ 'new/' => 'NuanceItemEditController',
+ ),
+ 'source/' => array(
+ 'view/(?P<id>[1-9]\d*)/' => 'NuanceSourceViewController',
+ 'edit/(?P<id>[1-9]\d*)/' => 'NuanceSourceEditController',
+ 'new/' => 'NuanceSourceEditController',
+ ),
+ 'queue/' => array(
+ 'view/(?P<id>[1-9]\d*)/' => 'NuanceQueueViewController',
+ 'edit/(?P<id>[1-9]\d*)/' => 'NuanceQueueEditController',
+ 'new/' => 'NuanceQueueEditController',
+ ),
+ 'requestor/' => array(
+ 'view/(?P<id>[1-9]\d*)/' => 'NuanceRequestorViewController',
+ 'edit/(?P<id>[1-9]\d*)/' => 'NuanceRequestorEditController',
+ 'new/' => 'NuanceRequestorEditController',
+ ),
+ ),
+ );
+ }
+
+}
+
Index: src/applications/nuance/controller/NuanceController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceController.php
@@ -0,0 +1,5 @@
+<?php
+
+abstract class NuanceController extends PhabricatorController {
+
+}
Index: src/applications/nuance/controller/NuanceItemEditController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceItemEditController.php
@@ -0,0 +1,50 @@
+<?php
+
+final class NuanceItemEditController extends NuanceController {
+
+ private $itemID;
+
+ public function setItemID($item_id) {
+ $this->itemID = $item_id;
+ return $this;
+ }
+ public function getItemID() {
+ return $this->itemID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setItemID(idx($data, 'id'));
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $item_id = $this->getItemID();
+ $is_new = !$item_id;
+
+ if ($is_new) {
+ $item = new NuanceItem();
+
+ } else {
+ $item = id(new NuanceItemQuery())
+ ->setViewer($user)
+ ->withIDs(array($item_id))
+ ->executeOne();
+ }
+
+ if (!$item) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+
+}
Index: src/applications/nuance/controller/NuanceItemViewController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceItemViewController.php
@@ -0,0 +1,42 @@
+<?php
+
+final class NuanceItemViewController extends NuanceController {
+
+ private $itemID;
+
+ public function setItemID($item_id) {
+ $this->itemID = $item_id;
+ return $this;
+ }
+ public function getItemID() {
+ return $this->itemID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setItemID($data['id']);
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $item_id = $this->getItemID();
+ $item = id(new NuanceItemQuery())
+ ->setViewer($user)
+ ->withIDs(array($item_id))
+ ->executeOne();
+
+ if (!$item) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+}
Index: src/applications/nuance/controller/NuanceQueueEditController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceQueueEditController.php
@@ -0,0 +1,50 @@
+<?php
+
+final class NuanceQueueEditController extends NuanceController {
+
+ private $queueID;
+
+ public function setQueueID($queue_id) {
+ $this->queueID = $queue_id;
+ return $this;
+ }
+ public function getQueueID() {
+ return $this->queueID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setQueueID(idx($data, 'id'));
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $queue_id = $this->getQueueID();
+ $is_new = !$queue_id;
+
+ if ($is_new) {
+ $queue = new NuanceQueue();
+
+ } else {
+ $queue = id(new NuanceQueueQuery())
+ ->setViewer($user)
+ ->withIDs(array($queue_id))
+ ->executeOne();
+ }
+
+ if (!$queue) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+
+}
Index: src/applications/nuance/controller/NuanceQueueViewController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceQueueViewController.php
@@ -0,0 +1,42 @@
+<?php
+
+final class NuanceQueueViewController extends NuanceController {
+
+ private $queueID;
+
+ public function setQueueID($queue_id) {
+ $this->queueID = $queue_id;
+ return $this;
+ }
+ public function getQueueID() {
+ return $this->queueID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setQueueID($data['id']);
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $queue_id = $this->getQueueID();
+ $queue = id(new NuanceQueueQuery())
+ ->setViewer($user)
+ ->withIDs(array($queue_id))
+ ->executeOne();
+
+ if (!$queue) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+}
Index: src/applications/nuance/controller/NuanceRequestorEditController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceRequestorEditController.php
@@ -0,0 +1,50 @@
+<?php
+
+final class NuanceRequestorEditController extends NuanceController {
+
+ private $requestorID;
+
+ public function setRequestorID($requestor_id) {
+ $this->requestorID = $requestor_id;
+ return $this;
+ }
+ public function getRequestorID() {
+ return $this->requestorID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setRequestorID(idx($data, 'id'));
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $requestor_id = $this->getRequestorID();
+ $is_new = !$requestor_id;
+
+ if ($is_new) {
+ $requestor = new NuanceRequestor();
+
+ } else {
+ $requestor = id(new NuanceRequestorQuery())
+ ->setViewer($user)
+ ->withIDs(array($requestor_id))
+ ->executeOne();
+ }
+
+ if (!$requestor) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+
+}
Index: src/applications/nuance/controller/NuanceRequestorViewController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceRequestorViewController.php
@@ -0,0 +1,42 @@
+<?php
+
+final class NuanceRequestorViewController extends NuanceController {
+
+ private $requestorID;
+
+ public function setRequestorID($requestor_id) {
+ $this->requestorID = $requestor_id;
+ return $this;
+ }
+ public function getRequestorID() {
+ return $this->requestorID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setRequestorID($data['id']);
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $requestor_id = $this->getRequestorID();
+ $requestor = id(new NuanceRequestorQuery())
+ ->setViewer($user)
+ ->withIDs(array($requestor_id))
+ ->executeOne();
+
+ if (!$requestor) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+}
Index: src/applications/nuance/controller/NuanceSourceEditController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceSourceEditController.php
@@ -0,0 +1,49 @@
+<?php
+
+final class NuanceSourceEditController extends NuanceController {
+
+ private $sourceID;
+
+ public function setSourceID($source_id) {
+ $this->sourceID = $source_id;
+ return $this;
+ }
+ public function getSourceID() {
+ return $this->sourceID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setSourceID(idx($data, 'id'));
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $source_id = $this->getSourceID();
+ $is_new = !$source_id;
+
+ if ($is_new) {
+ $source = new NuanceSource();
+
+ } else {
+ $source = id(new NuanceSourceQuery())
+ ->setViewer($user)
+ ->withIDs(array($source_id))
+ ->executeOne();
+ }
+
+ if (!$source) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+}
Index: src/applications/nuance/controller/NuanceSourceViewController.php
===================================================================
--- /dev/null
+++ src/applications/nuance/controller/NuanceSourceViewController.php
@@ -0,0 +1,42 @@
+<?php
+
+final class NuanceSourceViewController extends NuanceController {
+
+ private $sourceID;
+
+ public function setSourceID($source_id) {
+ $this->sourceID = $source_id;
+ return $this;
+ }
+ public function getSourceID() {
+ return $this->sourceID;
+ }
+
+ public function willProcessRequest(array $data) {
+ $this->setSourceID($data['id']);
+ }
+
+ public function processRequest() {
+ $request = $this->getRequest();
+ $user = $request->getUser();
+
+ $source_id = $this->getSourceID();
+ $source = id(new NuanceSourceQuery())
+ ->setViewer($user)
+ ->withIDs(array($source_id))
+ ->executeOne();
+
+ if (!$source) {
+ return new Aphront404Response();
+ }
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $title = 'TODO';
+
+ return $this->buildApplicationPage(
+ $crumbs,
+ array(
+ 'title' => $title,
+ 'device' => true));
+ }
+}
Index: src/applications/nuance/editor/NuanceItemEditor.php
===================================================================
--- /dev/null
+++ src/applications/nuance/editor/NuanceItemEditor.php
@@ -0,0 +1,17 @@
+<?php
+
+final class NuanceItemEditor
+ extends PhabricatorApplicationTransactionEditor {
+
+ public function getTransactionTypes() {
+ $types = parent::getTransactionTypes();
+
+ $types[] = PhabricatorTransactions::TYPE_EDGE;
+ $types[] = PhabricatorTransactions::TYPE_COMMENT;
+ $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
+ $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
+
+ return $types;
+ }
+
+}
Index: src/applications/nuance/editor/NuanceQueueEditor.php
===================================================================
--- /dev/null
+++ src/applications/nuance/editor/NuanceQueueEditor.php
@@ -0,0 +1,17 @@
+<?php
+
+final class NuanceQueueEditor
+ extends PhabricatorApplicationTransactionEditor {
+
+ public function getTransactionTypes() {
+ $types = parent::getTransactionTypes();
+
+ $types[] = PhabricatorTransactions::TYPE_EDGE;
+ $types[] = PhabricatorTransactions::TYPE_COMMENT;
+ $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
+ $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
+
+ return $types;
+ }
+
+}
Index: src/applications/nuance/editor/NuanceRequestorEditor.php
===================================================================
--- /dev/null
+++ src/applications/nuance/editor/NuanceRequestorEditor.php
@@ -0,0 +1,17 @@
+<?php
+
+final class NuanceRequestorEditor
+ extends PhabricatorApplicationTransactionEditor {
+
+ public function getTransactionTypes() {
+ $types = parent::getTransactionTypes();
+
+ $types[] = PhabricatorTransactions::TYPE_EDGE;
+ $types[] = PhabricatorTransactions::TYPE_COMMENT;
+ $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
+ $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
+
+ return $types;
+ }
+
+}
Index: src/applications/nuance/editor/NuanceSourceEditor.php
===================================================================
--- /dev/null
+++ src/applications/nuance/editor/NuanceSourceEditor.php
@@ -0,0 +1,17 @@
+<?php
+
+final class NuanceSourceEditor
+ extends PhabricatorApplicationTransactionEditor {
+
+ public function getTransactionTypes() {
+ $types = parent::getTransactionTypes();
+
+ $types[] = PhabricatorTransactions::TYPE_EDGE;
+ $types[] = PhabricatorTransactions::TYPE_COMMENT;
+ $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
+ $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
+
+ return $types;
+ }
+
+}
Index: src/applications/nuance/phid/NuancePHIDTypeItem.php
===================================================================
--- /dev/null
+++ src/applications/nuance/phid/NuancePHIDTypeItem.php
@@ -0,0 +1,46 @@
+<?php
+
+final class NuancePHIDTypeItem
+ extends PhabricatorPHIDType {
+
+ const TYPECONST = 'NUAI';
+
+ public function getTypeConstant() {
+ return self::TYPECONST;
+ }
+
+ public function getTypeName() {
+ return pht('Item');
+ }
+
+ public function newObject() {
+ return new NuanceItem();
+ }
+
+ protected function buildQueryForObjects(
+ PhabricatorObjectQuery $query,
+ array $phids) {
+
+ return id(new NuanceItemQuery())
+ ->withPHIDs($phids);
+ }
+
+ public function loadHandles(
+ PhabricatorHandleQuery $query,
+ array $handles,
+ array $objects) {
+
+ $viewer = $query->getViewer();
+ foreach ($handles as $phid => $handle) {
+ $item = $objects[$phid];
+
+ $handle->setName($item->getLabel($viewer));
+ $handle->setURI($item->getURI());
+ }
+ }
+
+ public function canLoadNamedObject($name) {
+ return false;
+ }
+
+}
Index: src/applications/nuance/phid/NuancePHIDTypeQueue.php
===================================================================
--- /dev/null
+++ src/applications/nuance/phid/NuancePHIDTypeQueue.php
@@ -0,0 +1,46 @@
+<?php
+
+final class NuancePHIDTypeQueue
+ extends PhabricatorPHIDType {
+
+ const TYPECONST = 'NUAQ';
+
+ public function getTypeConstant() {
+ return self::TYPECONST;
+ }
+
+ public function getTypeName() {
+ return pht('Queue');
+ }
+
+ public function newObject() {
+ return new NuanceQueue();
+ }
+
+ protected function buildQueryForObjects(
+ PhabricatorObjectQuery $query,
+ array $phids) {
+
+ return id(new NuanceQueueQuery())
+ ->withPHIDs($phids);
+ }
+
+ public function loadHandles(
+ PhabricatorHandleQuery $query,
+ array $handles,
+ array $objects) {
+
+ $viewer = $query->getViewer();
+ foreach ($handles as $phid => $handle) {
+ $queue = $objects[$phid];
+
+ $handle->setName($queue->getName());
+ $handle->setURI($queue->getURI());
+ }
+ }
+
+ public function canLoadNamedObject($name) {
+ return false;
+ }
+
+}
Index: src/applications/nuance/phid/NuancePHIDTypeRequestor.php
===================================================================
--- /dev/null
+++ src/applications/nuance/phid/NuancePHIDTypeRequestor.php
@@ -0,0 +1,46 @@
+<?php
+
+final class NuancePHIDTypeRequestor
+ extends PhabricatorPHIDType {
+
+ const TYPECONST = 'NUAR';
+
+ public function getTypeConstant() {
+ return self::TYPECONST;
+ }
+
+ public function getTypeName() {
+ return pht('Requestor');
+ }
+
+ public function newObject() {
+ return new NuanceRequestor();
+ }
+
+ protected function buildQueryForObjects(
+ PhabricatorObjectQuery $query,
+ array $phids) {
+
+ return id(new NuanceRequestorQuery())
+ ->withPHIDs($phids);
+ }
+
+ public function loadHandles(
+ PhabricatorHandleQuery $query,
+ array $handles,
+ array $objects) {
+
+ $viewer = $query->getViewer();
+ foreach ($handles as $phid => $handle) {
+ $requestor = $objects[$phid];
+
+ $handle->setName($requestor->getBestName());
+ $handle->setURI($requestor->getURI());
+ }
+ }
+
+ public function canLoadNamedObject($name) {
+ return false;
+ }
+
+}
Index: src/applications/nuance/phid/NuancePHIDTypeSource.php
===================================================================
--- /dev/null
+++ src/applications/nuance/phid/NuancePHIDTypeSource.php
@@ -0,0 +1,46 @@
+<?php
+
+final class NuancePHIDTypeSource
+ extends PhabricatorPHIDType {
+
+ const TYPECONST = 'NUAS';
+
+ public function getTypeConstant() {
+ return self::TYPECONST;
+ }
+
+ public function getTypeName() {
+ return pht('Source');
+ }
+
+ public function newObject() {
+ return new NuanceSource();
+ }
+
+ protected function buildQueryForObjects(
+ PhabricatorObjectQuery $query,
+ array $phids) {
+
+ return id(new NuanceSourceQuery())
+ ->withPHIDs($phids);
+ }
+
+ public function loadHandles(
+ PhabricatorHandleQuery $query,
+ array $handles,
+ array $objects) {
+
+ $viewer = $query->getViewer();
+ foreach ($handles as $phid => $handle) {
+ $source = $objects[$phid];
+
+ $handle->setName($source->getName());
+ $handle->setURI($source->getURI());
+ }
+ }
+
+ public function canLoadNamedObject($name) {
+ return false;
+ }
+
+}
Index: src/applications/nuance/query/NuanceItemQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceItemQuery.php
@@ -0,0 +1,71 @@
+<?php
+
+final class NuanceItemQuery
+ extends NuanceQuery {
+
+ private $ids;
+ private $phids;
+ private $sourceIDs;
+
+ public function withIDs(array $ids) {
+ $this->ids = $ids;
+ return $this;
+ }
+
+ public function withPHIDs(array $phids) {
+ $this->phids = $phids;
+ return $this;
+ }
+
+ public function withSourceIDs($source_ids) {
+ $this->sourceIDs = $source_ids;
+ return $this;
+ }
+
+
+ public function loadPage() {
+ $table = new NuanceItem();
+ $conn_r = $table->establishConnection('r');
+
+ $data = queryfx_all(
+ $conn_r,
+ 'SELECT FROM %T %Q %Q %Q',
+ $table->getTableName(),
+ $this->buildWhereClause($conn_r),
+ $this->buildOrderClause($conn_r),
+ $this->buildLimitClause($conn_r));
+
+ return $table->loadAllFromArray($data);
+ }
+
+ protected function buildWhereClause($conn_r) {
+ $where = array();
+
+ $where[] = $this->buildPagingClause($conn_r);
+
+ if ($this->sourceID) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'sourceID IN (%Ld)',
+ $this->sourceIDs);
+ }
+
+ if ($this->ids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'id IN (%Ld)',
+ $this->ids);
+ }
+
+ if ($this->phids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'phid IN (%Ls)',
+ $this->phids);
+ }
+
+ return $this->formatWhereClause($where);
+ }
+
+}
+
Index: src/applications/nuance/query/NuanceItemTransactionQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceItemTransactionQuery.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceItemTransactionQuery
+ extends PhabricatorApplicationTransactionQuery {
+
+ public function getTemplateApplicationTransaction() {
+ return new NuanceItemTransaction();
+ }
+
+}
Index: src/applications/nuance/query/NuanceQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceQuery.php
@@ -0,0 +1,11 @@
+<?php
+
+abstract class NuanceQuery
+ extends PhabricatorCursorPagedPolicyAwareQuery {
+
+ public function getQueryApplicationClass() {
+ return 'PhabricatorApplicationNuance';
+ }
+
+}
+
Index: src/applications/nuance/query/NuanceQueueQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceQueueQuery.php
@@ -0,0 +1,57 @@
+<?php
+
+final class NuanceQueueQuery
+ extends NuanceQuery {
+
+ private $ids;
+ private $phids;
+
+ public function withIDs(array $ids) {
+ $this->ids = $ids;
+ return $this;
+ }
+
+ public function withPHIDs(array $phids) {
+ $this->phids = $phids;
+ return $this;
+ }
+
+ public function loadPage() {
+ $table = new NuanceQueue();
+ $conn_r = $table->establishConnection('r');
+
+ $data = queryfx_all(
+ $conn_r,
+ 'SELECT FROM %T %Q %Q %Q',
+ $table->getTableName(),
+ $this->buildWhereClause($conn_r),
+ $this->buildOrderClause($conn_r),
+ $this->buildLimitClause($conn_r));
+
+ return $table->loadAllFromArray($data);
+ }
+
+ protected function buildWhereClause($conn_r) {
+ $where = array();
+
+ $where[] = $this->buildPagingClause($conn_r);
+
+ if ($this->ids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'id IN (%Ld)',
+ $this->ids);
+ }
+
+ if ($this->phids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'phid IN (%Ls)',
+ $this->phids);
+ }
+
+ return $this->formatWhereClause($where);
+ }
+
+}
+
Index: src/applications/nuance/query/NuanceQueueTransactionQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceQueueTransactionQuery.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceQueueTransactionQuery
+ extends PhabricatorApplicationTransactionQuery {
+
+ public function getTemplateApplicationTransaction() {
+ return new NuanceQueueTransaction();
+ }
+
+}
Index: src/applications/nuance/query/NuanceRequestorQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceRequestorQuery.php
@@ -0,0 +1,57 @@
+<?php
+
+final class NuanceRequestorQuery
+ extends NuanceQuery {
+
+ private $ids;
+ private $phids;
+
+ public function withIDs(array $ids) {
+ $this->ids = $ids;
+ return $this;
+ }
+
+ public function withPHIDs(array $phids) {
+ $this->phids = $phids;
+ return $this;
+ }
+
+ public function loadPage() {
+ $table = new NuanceRequestor();
+ $conn_r = $table->establishConnection('r');
+
+ $data = queryfx_all(
+ $conn_r,
+ 'SELECT FROM %T %Q %Q %Q',
+ $table->getTableName(),
+ $this->buildWhereClause($conn_r),
+ $this->buildOrderClause($conn_r),
+ $this->buildLimitClause($conn_r));
+
+ return $table->loadAllFromArray($data);
+ }
+
+ protected function buildWhereClause($conn_r) {
+ $where = array();
+
+ $where[] = $this->buildPagingClause($conn_r);
+
+ if ($this->ids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'id IN (%Ld)',
+ $this->ids);
+ }
+
+ if ($this->phids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'phid IN (%Ls)',
+ $this->phids);
+ }
+
+ return $this->formatWhereClause($where);
+ }
+
+}
+
Index: src/applications/nuance/query/NuanceRequestorTransactionQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceRequestorTransactionQuery.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceRequestorTransactionQuery
+ extends PhabricatorApplicationTransactionQuery {
+
+ public function getTemplateApplicationTransaction() {
+ return new NuanceRequestorTransaction();
+ }
+
+}
Index: src/applications/nuance/query/NuanceSourceQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceSourceQuery.php
@@ -0,0 +1,83 @@
+<?php
+
+final class NuanceSourceQuery
+ extends NuanceQuery {
+
+ private $ids;
+ private $phids;
+ private $creatorPHIDs;
+ private $types;
+
+ public function withIDs(array $ids) {
+ $this->ids = $ids;
+ return $this;
+ }
+
+ public function withPHIDs(array $phids) {
+ $this->phids = $phids;
+ return $this;
+ }
+
+ public function withCreatorPHIDs(array $phids) {
+ $this->CreatorPHIDs = $phids;
+ return $this;
+ }
+
+ public function withTypes($types) {
+ $this->types = $types;
+ return $this;
+ }
+
+
+ public function loadPage() {
+ $table = new NuanceSource();
+ $conn_r = $table->establishConnection('r');
+
+ $data = queryfx_all(
+ $conn_r,
+ 'SELECT FROM %T %Q %Q %Q',
+ $table->getTableName(),
+ $this->buildWhereClause($conn_r),
+ $this->buildOrderClause($conn_r),
+ $this->buildLimitClause($conn_r));
+
+ return $table->loadAllFromArray($data);
+ }
+
+ protected function buildWhereClause($conn_r) {
+ $where = array();
+
+ $where[] = $this->buildPagingClause($conn_r);
+
+ if ($this->creatorPHIDs) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'creatorPHID IN (%Ls)',
+ $this->creatorPHIDs);
+ }
+
+ if ($this->types) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'type IN (%Ld)',
+ $this->types);
+ }
+
+ if ($this->ids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'id IN (%Ld)',
+ $this->ids);
+ }
+
+ if ($this->phids) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'phid IN (%Ls)',
+ $this->phids);
+ }
+
+ return $this->formatWhereClause($where);
+ }
+
+}
Index: src/applications/nuance/query/NuanceSourceTransactionQuery.php
===================================================================
--- /dev/null
+++ src/applications/nuance/query/NuanceSourceTransactionQuery.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceSourceTransactionQuery
+ extends PhabricatorApplicationTransactionQuery {
+
+ public function getTemplateApplicationTransaction() {
+ return new NuanceSourceTransaction();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceDAO.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceDAO.php
@@ -0,0 +1,9 @@
+<?php
+
+abstract class NuanceDAO extends PhabricatorLiskDAO {
+
+ public function getApplicationName() {
+ return 'nuance';
+ }
+
+}
Index: src/applications/nuance/storage/NuanceItem.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceItem.php
@@ -0,0 +1,95 @@
+<?php
+
+final class NuanceItem
+ extends NuanceDAO
+ implements PhabricatorPolicyInterface {
+
+ protected $ownerPHID;
+ protected $requestorPHID;
+ protected $sourcePHID;
+ protected $sourceLabel;
+ protected $data;
+ protected $mailKey;
+ protected $dateNuanced;
+
+ public function getConfiguration() {
+ return array(
+ self::CONFIG_AUX_PHID => true,
+ self::CONFIG_SERIALIZATION => array(
+ 'data' => self::SERIALIZATION_JSON,
+ ),
+ ) + parent::getConfiguration();
+ }
+
+ public function generatePHID() {
+ return PhabricatorPHID::generateNewPHID(
+ NuancePHIDTypeItem::TYPECONST);
+ }
+
+ public function save() {
+ if (!$this->getMailKey()) {
+ $this->setMailKey(Filesystem::readRandomCharacters(20));
+ }
+ return parent::save();
+ }
+
+ public function getURI() {
+ return '/nuance/item/view/'.$this->getID().'/';
+ }
+
+ public function getLabel(PhabricatorUser $viewer) {
+ // this is generated at the time the item is created based on
+ // the configuration from the item source. It is typically
+ // something like 'Twitter'.
+ $source_label = $this->getSourceLabel();
+
+ return pht(
+ 'Item via %s @ %s.',
+ $source_label,
+ phabricator_datetime($this->getDateCreated(), $viewer));
+ }
+
+ public function getRequestor() {
+ return $this->assertAttached($this->requestor);
+ }
+
+ public function attachRequestor(NuanceRequestor $requestor) {
+ return $this->requestor = $requestor;
+ }
+
+ public function getSource() {
+ return $this->assertAttached($this->source);
+ }
+
+ public function attachSource(NuanceSource $source) {
+ $this->source = $source;
+ }
+
+ public function getCapabilities() {
+ return array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ );
+ }
+
+ public function getPolicy($capability) {
+ // TODO - this should be based on the queues the item currently resides in
+ return PhabricatorPolicies::POLICY_NOONE;
+ }
+
+ public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
+ // TODO - requestors should get auto access too!
+ return $viewer->getPHID() == $this->ownerPHID;
+ }
+
+ public function describeAutomaticCapability($capability) {
+ switch ($capability) {
+ case PhabricatorPolicyCapability::CAN_VIEW:
+ return pht('Owners of an item can always view it.');
+ case PhabricatorPolicyCapability::CAN_EDIT:
+ return pht('Owners of an item can always edit it.');
+ }
+ return null;
+ }
+
+}
Index: src/applications/nuance/storage/NuanceItemTransaction.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceItemTransaction.php
@@ -0,0 +1,14 @@
+<?php
+
+final class NuanceItemTransaction
+ extends NuanceTransaction {
+
+ public function getApplicationTransactionType() {
+ return NuancePHIDTypeItem::TYPECONST;
+ }
+
+ public function getApplicationTransactionCommentObject() {
+ return new NuanceItemTransactionComment();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceItemTransactionComment.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceItemTransactionComment.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceItemTransactionComment
+ extends PhabricatorApplicationTransactionComment {
+
+ public function getApplicationTransactionObject() {
+ return new NuanceItemTransaction();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceQueue.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceQueue.php
@@ -0,0 +1,58 @@
+<?php
+
+final class NuanceQueue
+ extends NuanceDAO
+ implements PhabricatorPolicyInterface {
+
+ protected $name;
+ protected $mailKey;
+ protected $viewPolicy;
+ protected $editPolicy;
+
+ public function getConfiguration() {
+ return array(
+ self::CONFIG_AUX_PHID => true,
+ ) + parent::getConfiguration();
+ }
+
+ public function generatePHID() {
+ return PhabricatorPHID::generateNewPHID(
+ NuancePHIDTypeQueue::TYPECONST);
+ }
+
+ public function save() {
+ if (!$this->getMailKey()) {
+ $this->setMailKey(Filesystem::readRandomCharacters(20));
+ }
+ return parent::save();
+ }
+
+ public function getURI() {
+ return '/nuance/queue/view/'.$this->getID().'/';
+ }
+
+ public function getCapabilities() {
+ return array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ );
+ }
+
+ public function getPolicy($capability) {
+ switch ($capability) {
+ case PhabricatorPolicyCapability::CAN_VIEW:
+ return $this->getViewPolicy();
+ case PhabricatorPolicyCapability::CAN_EDIT:
+ return $this->getEditPolicy();
+ }
+ }
+
+ public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
+ return false;
+ }
+
+ public function describeAutomaticCapability($capability) {
+ return null;
+ }
+
+}
Index: src/applications/nuance/storage/NuanceQueueItem.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceQueueItem.php
@@ -0,0 +1,12 @@
+<?php
+
+final class NuanceQueueItem
+ extends NuanceDAO {
+
+ protected $queuePHID;
+ protected $itemPHID;
+ protected $itemStatus;
+ protected $itemDateNuanced;
+
+
+}
Index: src/applications/nuance/storage/NuanceQueueTransaction.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceQueueTransaction.php
@@ -0,0 +1,14 @@
+<?php
+
+final class NuanceQueueTransaction
+ extends NuanceTransaction {
+
+ public function getApplicationTransactionType() {
+ return NuancePHIDTypeQueue::TYPECONST;
+ }
+
+ public function getApplicationTransactionCommentObject() {
+ return new NuanceQueueTransactionComment();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceQueueTransactionComment.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceQueueTransactionComment.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceQueueTransactionComment
+ extends PhabricatorApplicationTransactionComment {
+
+ public function getApplicationTransactionObject() {
+ return new NuanceQueueTransaction();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceRequestor.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceRequestor.php
@@ -0,0 +1,37 @@
+<?php
+
+final class NuanceRequestor
+ extends NuanceDAO {
+
+ protected $data;
+
+ public function getConfiguration() {
+ return array(
+ self::CONFIG_AUX_PHID => true,
+ self::CONFIG_SERIALIZATION => array(
+ 'data' => self::SERIALIZATION_JSON,
+ ),
+ ) + parent::getConfiguration();
+ }
+
+ public function generatePHID() {
+ return PhabricatorPHID::generateNewPHID(
+ NuancePHIDTypeRequestor::TYPECONST);
+ }
+
+ public function save() {
+ if (!$this->getMailKey()) {
+ $this->setMailKey(Filesystem::readRandomCharacters(20));
+ }
+ return parent::save();
+ }
+
+ public function getURI() {
+ return '/nuance/requestor/view/'.$this->getID().'/';
+ }
+
+ public function getPhabricatorUserPHID() {
+ return idx($this->getData(), 'phabricatorUserPHID');
+ }
+
+}
Index: src/applications/nuance/storage/NuanceRequestorSource.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceRequestorSource.php
@@ -0,0 +1,18 @@
+<?php
+
+final class NuanceRequestorSource
+ extends NuanceDAO {
+
+ protected $requestorPHID;
+ protected $sourcePHID;
+ protected $data;
+
+ public function getConfiguration() {
+ return array(
+ self::CONFIG_SERIALIZATION => array(
+ 'data' => self::SERIALIZATION_JSON,
+ ),
+ ) + parent::getConfiguration();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceRequestorTransaction.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceRequestorTransaction.php
@@ -0,0 +1,13 @@
+<?php
+
+final class NuanceRequestorTransaction
+ extends NuanceTransaction {
+
+ public function getApplicationTransactionType() {
+ return NuancePHIDTypeRequestor::TYPECONST;
+ }
+
+ public function getApplicationTransactionCommentObject() {
+ return new NuanceRequestorTransactionComment();
+ }
+}
Index: src/applications/nuance/storage/NuanceRequestorTransactionComment.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceRequestorTransactionComment.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceRequestorTransactionComment
+ extends PhabricatorApplicationTransactionComment {
+
+ public function getApplicationTransactionObject() {
+ return new NuanceRequestorTransaction();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceSource.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceSource.php
@@ -0,0 +1,64 @@
+<?php
+
+final class NuanceSource
+ extends NuanceDAO
+ implements PhabricatorPolicyInterface {
+
+ protected $name;
+ protected $type;
+ protected $data;
+ protected $mailKey;
+ protected $viewPolicy;
+ protected $editPolicy;
+
+ public function getConfiguration() {
+ return array(
+ self::CONFIG_AUX_PHID => true,
+ self::CONFIG_SERIALIZATION => array(
+ 'data' => self::SERIALIZATION_JSON,
+ ),
+ ) + parent::getConfiguration();
+ }
+
+ public function generatePHID() {
+ return PhabricatorPHID::generateNewPHID(
+ NuancePHIDTypeSource::TYPECONST);
+ }
+
+ public function save() {
+ if (!$this->getMailKey()) {
+ $this->setMailKey(Filesystem::readRandomCharacters(20));
+ }
+ return parent::save();
+ }
+
+ public function getURI() {
+ return '/nuance/source/view/'.$this->getID().'/';
+ }
+
+ public function getCapabilities() {
+ return array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ );
+ }
+
+ public function getPolicy($capability) {
+ switch ($capability) {
+ case PhabricatorPolicyCapability::CAN_VIEW:
+ return $this->getViewPolicy();
+ case PhabricatorPolicyCapability::CAN_EDIT:
+ return $this->getEditPolicy();
+ }
+ }
+
+ public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
+ return false;
+ }
+
+ public function describeAutomaticCapability($capability) {
+ return null;
+ }
+
+
+}
Index: src/applications/nuance/storage/NuanceSourceTransaction.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceSourceTransaction.php
@@ -0,0 +1,14 @@
+<?php
+
+final class NuanceSourceTransaction
+ extends NuanceTransaction {
+
+ public function getApplicationTransactionType() {
+ return NuancePHIDTypeSource::TYPECONST;
+ }
+
+ public function getApplicationTransactionCommentObject() {
+ return new NuanceSourceTransactionComment();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceSourceTransactionComment.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceSourceTransactionComment.php
@@ -0,0 +1,10 @@
+<?php
+
+final class NuanceSourceTransactionComment
+ extends PhabricatorApplicationTransactionComment {
+
+ public function getApplicationTransactionObject() {
+ return new NuanceSourceTransaction();
+ }
+
+}
Index: src/applications/nuance/storage/NuanceTransaction.php
===================================================================
--- /dev/null
+++ src/applications/nuance/storage/NuanceTransaction.php
@@ -0,0 +1,10 @@
+<?php
+
+abstract class NuanceTransaction
+ extends PhabricatorApplicationTransaction {
+
+ public function getApplicationName() {
+ return 'nuance';
+ }
+
+}
Index: src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php
===================================================================
--- src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php
+++ src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php
@@ -208,6 +208,10 @@
'type' => 'db',
'name' => 'policy',
),
+ 'db.nuance' => array(
+ 'type' => 'db',
+ 'name' => 'nuance',
+ ),
'0000.legacy.sql' => array(
'type' => 'sql',
'name' => $this->getPatchPath('0000.legacy.sql'),
@@ -1736,6 +1740,10 @@
'type' => 'sql',
'name' => $this->getPatchPath('20131106.diffphid.3.key.sql'),
),
+ '20131106.nuance-v0.sql' => array(
+ 'type' => 'sql',
+ 'name' => $this->getPatchPath('20131106.nuance-v0.sql'),
+ ),
);
}
}
Index: webroot/rsrc/css/sprite-apps-large.css
===================================================================
--- webroot/rsrc/css/sprite-apps-large.css
+++ webroot/rsrc/css/sprite-apps-large.css
@@ -482,51 +482,51 @@
background-position: -290px -203px;
}
-.apps-owners-light-large {
+.apps-nuance-light-large {
background-position: -319px -203px;
}
-.apps-owners-dark-large {
+.apps-nuance-dark-large {
background-position: -348px -203px;
}
-.apps-owners-blue-large, .phabricator-crumb-view:hover .apps-owners-dark-large {
+.apps-nuance-blue-large, .phabricator-crumb-view:hover .apps-nuance-dark-large {
background-position: -377px -203px;
}
-.apps-owners-white-large {
+.apps-nuance-white-large {
background-position: -406px -203px;
}
-.apps-paste-light-large {
+.apps-owners-light-large {
background-position: 0px -232px;
}
-.apps-paste-dark-large {
+.apps-owners-dark-large {
background-position: -29px -232px;
}
-.apps-paste-blue-large, .phabricator-crumb-view:hover .apps-paste-dark-large {
+.apps-owners-blue-large, .phabricator-crumb-view:hover .apps-owners-dark-large {
background-position: -58px -232px;
}
-.apps-paste-white-large {
+.apps-owners-white-large {
background-position: -87px -232px;
}
-.apps-pebkac-light-large {
+.apps-paste-light-large {
background-position: -116px -232px;
}
-.apps-pebkac-dark-large {
+.apps-paste-dark-large {
background-position: -145px -232px;
}
-.apps-pebkac-blue-large, .phabricator-crumb-view:hover .apps-pebkac-dark-large {
+.apps-paste-blue-large, .phabricator-crumb-view:hover .apps-paste-dark-large {
background-position: -174px -232px;
}
-.apps-pebkac-white-large {
+.apps-paste-white-large {
background-position: -203px -232px;
}
Index: webroot/rsrc/css/sprite-apps.css
===================================================================
--- webroot/rsrc/css/sprite-apps.css
+++ webroot/rsrc/css/sprite-apps.css
@@ -250,27 +250,27 @@
background-position: -75px -75px;
}
-.apps-owners-dark {
+.apps-nuance-dark {
background-position: -90px -75px;
}
-.apps-owners-white {
+.apps-nuance-white {
background-position: -105px -75px;
}
-.apps-paste-dark {
+.apps-owners-dark {
background-position: -120px -75px;
}
-.apps-paste-white {
+.apps-owners-white {
background-position: -135px -75px;
}
-.apps-pebkac-dark {
+.apps-paste-dark {
background-position: 0px -90px;
}
-.apps-pebkac-white {
+.apps-paste-white {
background-position: -15px -90px;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Nov 6, 9:48 PM (6 d, 3 h ago)
Storage Engine
amazon-s3
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
phabricator/secure/bj/df/4rwdd6dlhemhhntj
Default Alt Text
D7465.diff (66 KB)
Attached To
Mode
D7465: Nuance - get some scaffolding up there
Attached
Detach File
Event Timeline
Log In to Comment