* qna:
QnA - Allow answer revisions and marking a question as "best"
QnA - add best class to best answers
QnA - Better display of questions and answers in streams
QnA - save answer revisions and show # of revisions
* qna:
Some work towards allowing revisions
Make new answers work
More plumbing
Work on QnA notice display -- in progress
* Move stuff around again * Make answers save
* Fix plugin filename * Make questions save!
Renamed QuestionAndAnswerPlugin to QnAPlugin
Most objects and forms are in place, now I just have to make it work.
Skeleton / Stub for Question and Answers micro-app plugin
A bunch of the common_* functions for date formatting expect an interpretable string, rather than a Unix timestamp, as input. Switched to using the DB-formatted timestamps as we put them into the object rather than the unix timestamp intermediate value when formatting the plaintext and HTML fallback content.
The ShowNoticeAction subclasses were cut-n-pasting a lot of prepare() code from ShowNoticeAction, though the only part that's different is how we look up the notice. Broke that out to a getNotice() method, so only that needs to be copied. Avoids extra copies of permission checks and other common code in this spot.
Numbered parameters when more than one used in a message.
L10n updates for consistency.
i18n for non-translatable exception.
Updated translator documentation.
Removed superfluous whitespace.
We get HTTP 400 for various cases of invalid data, where retrying doesn't help at all -- previously those would loop forever, or until something died at least. :)
400 is also used for rate limiting, but retrying *immediately* will just hit the rate limit again, so better to discard if we're going over for now.
We get HTTP 400 for various cases of invalid data, where retrying doesn't help at all -- previously those would loop forever, or until something died at least. :)
400 is also used for rate limiting, but retrying *immediately* will just hit the rate limit again, so better to discard if we're going over for now.
* 1.0.x: (26 commits)
Fix typo in documentation.
Fix i18n.
Change formatting of i18n slightly. Translator hints were not picked up in pot file. May now they are.
Localisation updates from http://translatewiki.net.
Translator documentation updated. i18n/L10n updates. Superfluous whitespace removed. Add FIXME for missing class documentation.
Update translator documentation. Remove superfluous whitespace. L10n/I18n updates. FIXMEs added for missing documentation or headers.
Update translator documentation. i18n/L10n updates. Superfluous whitespace removed. Add FIXME in files with missing documentation.
Fallback for RSVP display when Event is deleted
Enhancement for 'ajax' form class: submit buttons behave more like normal submissions, submitting their name/values through a hidden field.
Retool group join queue list ajax forms to use two buttons in one form, making it more ajax-submit-friendly. Needs util.js fixes for AJAX submission input buttons...
Some fixes to make the notice stream class work
let Inbox class go fingerpokin' in streams
New NoticeStream class to reify streams of notices
Refactoring on notification mail generation: common profile & footer chunks pulled out, notifications added for group joins.
Fix typo in cf45c978
Mass replacement of #-comments with //-comments
Add pending members list to group navigation, if group has joins moderated or if it has pending requests open
Split up some list/form classes, and get the 'approve' and 'cancel' links on group member queue working.
Pending members queue list -- doesn't yet allow approval.
Logic to have group joins turn into pending joins automatically when group is set to mod; allow users to cancel their pending group requests.
...
like leprous boils in our code. So, I've replaced all of them with //
comments instead. It's a massive, meaningless, and potentially buggy
change -- great one for the middle of a release cycle, eh?
* 1.0.x: (23 commits)
ModPlus plugin -- Ticket #3095: add remote profile options popup to group membership and other profile lists
fix ModPlus 'remote profile options' popup for Realtime
Fixes for GroupPrivateMessage, OStatus due to changes in group output events, and some internal bugs using wrong vars
Tickets #1610, #1949: show permalinks on Popular Notices, attachments aside sections
Localisation updates from http://translatewiki.net.
Translator documentation added/updated. Superfluous whitespace removed. L10n update.
Add myself to contributors array.
i18n updates. Translator documentation added. Superfluous whitespace removed.
Translator documentation added/updated. i18n updates. Superfluous whitespace removed.
Fixed issues with plural handling. L10n/I18n updates. Translator documentation added. Superfluous whitespace removed.
Translator documentation added/updates. L10n/i18n updates. Superfluous whitespace removed.
Update/add translator documentation. L10n/i18n updates. Superfluous whitespace removed.
* Add FIXME: $profile appears to be undefined. * Update translator documentation.
Caching for conversation root lookup, some logic fixes in threaded view
Use cached sources for favorites & repeats info on threaded notice lists
ajax load for additional inline replies; /replies variant of conversationview
Fixes for race conditions between Realtime plugin and the AJAX display of inline replies.
Initial use of inline reply area for marking repeats...
Initial inline listing of favoriters
Favored lists in progress: 'foo, bar and baz'
...
Switched from one-time setup to live stuff that'll work without per-notice setup.
Used to not matter because Realtime wouldn't include the extra stuff, but new Realtime pulls the full rendering, so yay!
Switched from one-time setup to live stuff that'll work without per-notice setup.
Used to not matter because Realtime wouldn't include the extra stuff, but new Realtime pulls the full rendering, so yay!
* keep the notice-reply-placeholder around, but hidden
* insert things before the placeholder, rather than appending to the end of the list.
* append the active form after the hidden placeholder, so things inserted before the placeholder never come after it
* Realtime: check pre-existing notice visibility a second time after loading the HTML for a notice. Fixes bug where sometimes your own post would be shown twice because the Realtime notification arrived before the AJAX posting returned, but Realtime's AJAX fetch of the notice returned after.
* profile-fixups: (46 commits)
* Extended profile - make cloned datefields work correctly with calendar popup * Validate URLs
More style for profile edit.
Extended profile - don't show empty company entry in view
Extended profile - linkify related URLs added by the user
Extended profile - fix some issues saving and displaying dates
Extended profile - don't check end date if experience entry has current checked
Extended profile - allow adding more than one website
Small smattering of pixie dust
Extended profile - fix regression whereby if there was only one item, you could still delete it!
Remove supersizeme class as appropriate.
Extended profile - hide add button when not needed (regression)
Extended profile - add fancy JQuery UI confirm dialog when deleting items
Extended profile - add fancy datepicker widgets
Extended profile - prettier date formatting
Extended profile - fix issue with JavaScript not executing in Firefox
Extended profile - namespace JavaScript functions
Extended profile - autocomplete for manager
Hide all unnecessarylabels from profile edit view.
Extended profile - make birthday save
Extended profile - make websites save
...
* 'profile-fixups' of gitorious.org:~zcopley/statusnet/zcopleys-clone:
Whole bunch of style-related changes, including some tasty hackery for the experience and education fields.
* 1.0.x:
For good measure; trip short error mode in earlier on ajax shownotice
Realtime plugin: fix i18n, thumbnails, location display, OStatus server display, micro-apps display.
'ajax' param on shownotice action so we can pull items in full html version for realtime
Whoops, need to reset the background color on the aside.
Realtime work in progress: switch makeNoticeData to async -- next we'll load fresh copies from server, maintaining proper language and plugin enhancements.
Check the site minifications etting for realtime plugin; debugging aid.
Switch from manual local formatting of notices (which lacks all the server-side goodness) to calling into the server-side with an AJAX variant of shownotice.
* 1.0.x: (26 commits)
(update util.min.js for recent changes)
JS optimization: move creation of inline reply placeholders to server-side so we don't have to create them client-side (which causes reflows and takes about 25-30ms on my test system) Using live instead of bind for the event handling, we don't have to play any games on the ones that we do add at runtime. Yay!
JS performance: speeding up initialization by consolidating event handlers for reply buttons
Use non-minified jQuery when $config['site']['minify'] is off; aids in debugging when something fails deep in jQuery-land.
Update PersonalGroupNav with fixed highlighting checks.
remove stray close div from empty search results doc bits
durrrr s/textValue/textContent/
Update PollPlugin Atom input
Poll plugin: switching Atom & JSON output to use new hooks & methods, much nicer output. Also switched types, which may break old entries. Beware! Input not yet updated.
Add event hooks for customizing ActivityObject output to Atom and JSON, and helpers for MicroAppPlugin.
Localisation updates from http://translatewiki.net.
Move translator documentation one line lower. Otherwise it will not be added to the POT file.
i18n/L10n updates Translator documentation added
i18n fixes: plugins should use _m(), not _().
* Superfluous whitespace removed * Small L10n updates
* update/add translator documentation. * remove superfluous whitespace. * minor updates to L10n/i18n.
Couple of tiny theme changes for inline replies.
Removing currently unused webfonts from theme.ini.
New interim default avatar images.
Updating favicon.
...
Had to fix some calls to MicroAppPlugin->saveNoticeFromActivity() which passed an OStatus_profile instead of a Profile...
Imported polls don't get data from upstream or send it back currently.
* main notice form setup now encapsulated into SN.Init.NoticeForm(form) -- this can be monkeypatched by plugins to append their own setup code, as LinkPreview does
* LinkPreview now supports debugging with non-minified JS source when $config['site']['minify'] is false
* tweaked core & neo styles so 'notice-status' class gets same styles as attach-status, so we can more easily add mroe statusy things. (needs more consolidation with geo-status, etc)
* tweaked LinkPreview's preview area to use that style
* RSVP cancel/delete now works
* caching fix for RSVP insert and delete (compound unique keys aren't properly handled for pkeyGet's caching right now; hacked it for this class for the moment)
* div nesting fix
* missing name/avatar on RSVP responses
FormNoticeXHR now is triggered on any form labeled with class 'ajax-notice', so those other than the traditional notice form should work as long as they handle the AJAX submission and return a properly formatted notice.
Things to watch out for:
* to determine whether the resulting notice should show on the current timeline, the JS code needs to be able to check the author and such. Keeping the existing vcard bits helps for this!
* the notice form submission stuff clears out inputs from your form -- test to make sure this behaves correctly
* error messages returned from the thingy _should_ come through, but this needs more testing for consistency
* while form components that aren't in a custom form should just be ignored, this should be tested more. (eg there's no location or attachment box for poll or bookmark plugins)
* NoticeListItem isn't currently reachable via autoloader -- touch NoticeList explicitly before calling into it for now.
Note that changes to the attachment from <label for/><input id/> to <label><input></label> affect some of the existing styles which attempt to place them both in the same place based on having a common parent. Only 'neo' has been fully tested and fixed for this case, as the others all fail due to the new layout anyway. :)
* '1.0.x' of gitorious.org:statusnet/mainline:
Initial checkin of Poll plugin: micro-app to post mini polls/surveys from the notice form.
Localisation updates from http://translatewiki.net.
More doc comments on MicroApp stuff; some of the show-notice code & the ActivityStreams stuff is a bit wonky and may need smoothing out
Doc comments for MicroAppPlugin
mailboxes were wrongly overriding global menu
This version is fairly basic; votes do not (yet) show a reply, they just got in the table. No pretty graphs for the results yet, just text.
The ActivityStream output is temporary and probably should be replaced; the current structures for adding custom data aren't really ready yet (especially since we need to cover JSON and Atom formats, probably pretty differently)
Uses similar system as Bookmark for attaching to notices -- saves a custom URI for an alternate action, which we can then pass in and hook back up to our poll object. This can probably do with a little more simplification in the parent MicroAppPlugin class.
Currently adds two tables:
- poll holds the main poll info: id and URI to associate with the notice, then the question and a text blob with the options.
- poll_response records the selections picked by our nice fellows.
Hopefully no off-by-one bugs left in the selection, but I give no guarantees. ;)
Some todo notes in the README and in doc comments.
* 1.0.x: (68 commits)
Avoid AJAX fetch delay for inline replies when possible; we clone a copy of the notice form skeleton at initialization, then insert it in place instead of fetching a new one.
Fix bad reference
lost a </div> in input_forms
neo is the default
First version of 3cl theme neo.
cleaner is the new default theme (for now)
store reply_to notices as comment activity objects
fix object errors with bookmark notices
save the object type when saving a new bookmark notice
ActivityObject uses Notice's object_type by default
Notice saves its object type
show correct notice in output
UR FACE
wrapper div for primary nav
Revert "abstraction for starting and ending a menu"
Revert "primarynav uses menustart and menuend"
primarynav uses menustart and menuend
abstraction for starting and ending a menu
remove adminpanelnav from adminpanelaction module
Input form switcher works
...
Location information removed from translation files with msgmerge --no-location to decrease size of files and reduce diff size. Unfortunately there does not appear to be a setting in msgmerge or msgattrib to remove the extracted comments ("#.") from translation files. If you do know of such a switch, please let me know!
* 1.0.x:
* translator documentation updated. * superfluous whitespace removed. * small refactoring in noticeform.php to allow proper translator hints.
* translator documntation updated * superfluous whitespace remove * minor L10n and i18n updates
Cleanup & minification for migration to reusable notice form in inline replies. Yay!
Work in progress: inline reply form reusing the main reply form now inserts the successful result more or less right
style fixes for new notice form being reused in reply area
Reusable notice form fixes for geolocation
Loading the original form instead of faking up our own. Sorta works but not pretty :D
Kill some more hardcoded ids...
More hardcoded id cleanup in notice form...
'link' to 'links' in feed document
As a hack this removes the mysql_timestamp bit from the field settings on reply.modified so that our value actually gets saved. This *should* work ok as long as system timezone is set correctly, which we now set to UTC to match when connecting.
Changes the replacement of Twitter "entities" from in-place reverse ordering ('to preserve indices') to a forward-facing append-in-chunks that pulls in both the text and link portions, and escapes them all.
This unfortunately means first *de*-escaping the < and > that Twitter helpfully adds for us.... and any literal &blah;s that get written. This seems to match Twitter's web UI, however horrid it is.
http://status.net/open-source/issues/2442
Notes:
* Mapstraction causes JavaScript errors in XHTML mode, breaking our code if we're run later so the link doesn't work to get back to Desktop.
* not 100% sure how safe feature detection is here?
* Currently will be useless but visible links if no JS available; need to fall back to server-side for limited browsers
Now using the original text form of @-mentions and #-tags, as in Twitter's own HTMLification.
Canonical forms are still used in generating links, where it's polite to match the canonical form.
A repeat/retweet is roughly equivalent to an active direct post, so should follow the posting rules, rather than always sending over as we do for fave notifications.
Output from 0.9.6 PuSH feeds seems to have a rump <author> but no
<activity:actor>. It was overwriting valid and useful data set up at
subscribe time.
This fix tries to avoid overwriting data. However, it may prevent
updates that delete data.
Bug: 3028
Should fix issue #3027: twitter user avatars not getting imported.
Due to the change in URI, all twitter users that had been previously seen were getting new profile entries, which tried to save the same avatar. This would fail as Avatar.url has a unique index.
Note: now anything new seen in the last couple days in production will still potentially conflict.