Open neocotic opened 12 years ago
It would also be fantastic if, when a user changed the title/contents of a template they have previously shared and attempted to share it again, they would be given an option to share it as a new template or to update the original one. If they choose to update the original, all users that have downloaded that template from the repository can update their local copies via the new tab (which could have a badge displaying the number of available updates - fetched only when the user opens the options page). Otherwise, the local template should have its repository-linked unique identifier for the new shared template.
Create a web service that allows users to share their templates as well as browse, search, download, and rate templates created by other users.
Users will be required to authenticate (using OAuth 2.0?) with the web service before being able to share and rate templates, but can browse and search regardless. This will likely be hosted on the Google App Engine but possibly Heroku, so long as it's free. The API should be designed in such a way that it can be used for other purposes (e.g. allowing websites to fetch most popular/downloaded templates) and at least JSONP should be supported.
I'm not yet sure what the best unique identifier for a template should be on the datastore, but it can't be the local unique identifier. This will likely require templates linked to the repository to have another property containing the key value.
A new tab will probably be added to the options page to interface with the repository containing a sortable table of user templates which can be searched and can span multiple pages (using pagination), hero section for featured templates, and an author information section for authentication users.
The Templates tab on the options page will have 2 new buttons when templates are selected; Share, Rate. When clicked by an unauthenticated user these will prompt the user to do so; otherwise a dialog will be displayed for these actions. Naturally, a user can only share templates that have not previously been shared unless its contents and/or title have been changed. Users can only have a single rating for a template, but has the option to change that rating at any time.
This will be a huge undertaking so I'll probably get started with the web service first as it will no doubt be the most time consuming.