{ "id": "134070", "key": "TIMOB-17446", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "16593", "description": "Release 4.0.0", "name": "Release 4.0.0", "archived": false, "released": true, "releaseDate": "2015-05-21" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-01-30T00:27:59.000+0000", "created": "2014-08-01T21:34:01.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [ { "id": "40047", "type": { "id": "10000", "name": "Blocks", "inward": "is blocked by", "outward": "blocks" }, "outwardIssue": { "id": "127308", "key": "ALOY-967", "fields": { "summary": "Support i18n directory in widgets", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "39518", "type": { "id": "10000", "name": "Blocks", "inward": "is blocked by", "outward": "blocks" }, "outwardIssue": { "id": "121538", "key": "ALOY-858", "fields": { "summary": "Alloy: Theme \"i18n\" and \"platform\" folders", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "50991", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "155594", "key": "TIMOB-20543", "fields": { "summary": "Build flags for custom platform and i18n folders should be reverted", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "None", "id": "6" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "39714", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "134098", "key": "ALOY-1107", "fields": { "summary": "Rollback Theme \"i18n\" and \"platform\" folders implementations", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "updated": "2016-03-10T09:59:59.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "13103", "name": "CLI", "description": "Node-based command line interface" } ], "description": "Our initial solution to ALOY-858 (use Alloy themes override the contents of a project's platform and i18n directories) has proven unworkable and pointed out the need to handle this at the platform level. \r\n\r\nOur attempted solution was to make a backup copy of those folders in the build directory, merge themed versions of the i18n/platform folders to the original locations, proceed with the build, then restore the originals when done. This has created problems with inconsistent states, original files being lost, etc.\r\n\r\nThe better solution for Alloy would be to merge the originals and theme copies to a folder within build, then direct the platform to build using those versions. For that, we need new flags to the build scripts.\r\n\r\nAs you implement this, please consider how we might also theme the tiapp.xml, as this has also been requested. Again, that should be handled at the platform level not by Alloy making temp copies of files.\r\n", "attachment": [ { "id": "53829", "filename": "stockclassic.zip", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2015-01-26T21:14:06.000+0000", "size": 4841348, "mimeType": "application/zip" } ], "flagged": false, "summary": "Build scripts should accept flags indicating the path to the platform and i18n folders to use for a build", "creator": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "subtasks": [], "reporter": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "environment": null, "closedSprints": [ { "id": 311, "state": "closed", "name": "2015 Sprint 02 Tooling", "startDate": "2015-01-17T02:00:00.000Z", "endDate": "2015-01-31T01:00:00.000Z", "completeDate": "2015-01-31T03:36:52.887Z", "originBoardId": 121 } ], "comment": { "comments": [ { "id": "316736", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "To reiterate my comment from the original ticket;\r\n\r\nI strongly believe that including the tiapp.xml file into the files that can be included via theme folders would add the final hurdle of theming once the platform and i18n folders have been merged correctly.\r\n\r\nAssuming each theme was aimed at providing the same base app but to different clients or markets then the appid and if required elements like the google map api values would also need to swap over.\r\n\r\nThe simplest solution would be to have the tiapp.xml file inside the root of each theme folder. If found this copy is used in place of the normal app version. Whilst deep merging could be used I do not believe it is required, a simple file swap out is the smartest approach.\r\n\r\nI imagine many professional app houses have a need to manage several variations of one base app engine and having manual steps in the process lead to potentially dangerous miss-managed store releases.\r\n\r\nThe idea of the theme folders are superb; adding i18n and platform folder is a great move and championed by myself - but the tiapp.xml is the final hurdle to complete the process.", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2014-08-02T07:43:05.000+0000", "updated": "2014-08-02T07:43:05.000+0000" }, { "id": "316840", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~cbarber] Thoughts on the request?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-08-04T15:10:05.000+0000", "updated": "2014-08-04T15:10:05.000+0000" }, { "id": "337574", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "Any movements, thoughts or love coming to this ticket?", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2014-12-29T18:48:55.000+0000", "updated": "2014-12-29T18:48:55.000+0000" }, { "id": "340621", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "titanium_mobile PR https://github.com/appcelerator/titanium_mobile/pull/6602\r\ntitanium_mobile_windows PR https://github.com/appcelerator/titanium_mobile_windows/pull/98\r\n\r\nThis change adds two new build flags:\r\n\r\n* {{--i18n-directory }}\r\n* {{--platform-directory }}\r\n\r\nFor a functional review, use the attached project.\r\n\r\n1. Build the app with {{ti build -p ios}} to get an app with three basic labels. Check the Settings app and look for the stockclassic app's setting options.\r\n2. Build the app again with {{ti build -p ios --platform-directory somedir/myplatform --i18n-directory somedir/myi18n}}. This time, the strings and the Settings option indicate that you're using the \"My\" versions of the i18n strings and platform/iphone/Settings.bundle files.\r\n3. Repeat for Android with {{ti build -p android}}\r\n4. And again with {{ti build -p ios --platform-directory somedir/myplatform --i18n-directory somedir/myi18n}}. This time, you'll get the \"My\" strings. Return to the home screen, open the app tray. The app icon should have red lines drawn over it (icons supplied for high, xhdpi, and xxhdpi densities)\r\n\r\nBlackberry and MobileWeb should respect the i18n strings, but offer no support for platform files. \r\n\r\nWindows is untested, as at this stage it doesn't offer support for internationalized strings or platform-specific files.\r\n\r\n\r\n", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2015-01-26T21:09:33.000+0000", "updated": "2015-01-26T21:09:33.000+0000" }, { "id": "341306", "author": { "name": "pinnamuri", "key": "pinnamuri", "displayName": "Praveen Innamuri", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Merged PR into master.", "updateAuthor": { "name": "pinnamuri", "key": "pinnamuri", "displayName": "Praveen Innamuri", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-01-30T00:27:59.000+0000", "updated": "2015-01-30T00:27:59.000+0000" }, { "id": "347817", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the implementation.\r\n\r\nClosing.\r\n\r\nEnvironment:\r\nAppc Studio : 4.0.0.201503301039\r\nTi SDK : 4.0.0.v20150330105813\r\nCLI : 4.0.0-alpha\r\nAlloy : 1.6.0-alpha\r\nMAC Yosemite : 10.10.2", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-03-30T22:48:42.000+0000", "updated": "2015-03-30T22:48:42.000+0000" } ], "maxResults": 7, "total": 7, "startAt": 0 } } }