Commit graph

41 commits

Author SHA1 Message Date
Marcin Kurczewski
6a28be5e3e Moved comment removal to API 2014-05-03 19:25:59 +02:00
Marcin Kurczewski
16c5d6961b More robust argument handling 2014-05-02 09:51:34 +02:00
Marcin Kurczewski
902aed7278 Introducing API
Right now there's a lot of messy code in controllers. Furthermore, there
is no way to interact with szurubooru via vanilla HTTP, since API is
next to non-existent. So, basing upon my experiences from another
project, I plan to:

- Create actual API. It is going to consist of well-defined "jobs" that
  do things currently done by controllers. Benefits of such approach are
  as follows:
  - defining them in their own classes allows to clean up code a lot,
  - it allows to abstract from input method (POST data, part of URL,
	whatever), and leave processing of these to controllers,
  - it allows to make proxy controller, whose purpose would be to let
	users interact with API (jobs) directly in well-documented and
	consistent way.
- Make controllers responsible only for mediating between views and API.
  Behavior of these may remain inconsistent, since views they're talking
  to are also messy to begin with. Such controllers might be removed
  altogether in the future in favor of making views talk to API directly
  through previously mentioned ApiController.
- Organize all sorts of privilege checking and possibly other stuff into
  methods within jobs.
- Actually distinguish POST from GET requests.
- Leave POST-only controller methods as Actions, but rename GET-only
  methods to Views. Example: editAction for editing comments, but
  listView for showing comment list. The choice of these suffixes might
  be subject to changes in future.
- Get rid of ?json and $context->transport. They now look like disease
  to me.

This commit introduces job system and converts CommentController to use
the new API.
2014-05-01 23:35:05 +02:00
Marcin Kurczewski
feec48ed83 AJAX doesn't rely on StatusHelper
Since the purpose that StatusHelper was mainly created for no longer
holds, it was simplified to Messenger. It is now is used to transport
simple messages to views and still transports info whether the message
is about success or failure.
2014-05-01 23:34:44 +02:00
Marcin Kurczewski
0a7fc387ac Simplified auth 2014-05-01 22:11:05 +02:00
Marcin Kurczewski
c52531e8fc Increasing readability 2014-04-30 08:08:24 +02:00
Marcin Kurczewski
c18c9ec680 Lines wrapped again 2014-04-30 00:11:53 +02:00
Marcin Kurczewski
396ea97cad PrivilegesHelper shortened to Access
Methods are shorter, too
2014-04-29 23:53:47 +02:00
Marcin Kurczewski
81e43286b5 Newest chibi-core 2014-04-29 21:35:29 +02:00
Marcin Kurczewski
f495774be4 New exception style; split long lines in php 2014-04-27 16:01:45 +02:00
Marcin Kurczewski
ff8bb761ee Added comment preloading 2014-02-24 16:50:16 +01:00
Marcin Kurczewski
e6b37afa8c Changed /comments behaviour
Instead of showing comments chronologically, group them into posts, then sort
the posts by last comment date. Reason: improved comment context delivery
makes discussion bumping possible (no matter how old it is) and discussion is
what comments are about.

Comment count is limited to 5 per post.
2014-02-24 16:50:16 +01:00
Marcin Kurczewski
0c5fc7e03f Fixed useless arguments 2014-02-16 20:10:38 +01:00
Marcin Kurczewski
35cdc0cf3a Refactored scripts and stylesheets
Styles, scripts and page titles are no longer set from controllers level.
Changed because it was breaking MVC pattern and led to spaghetti code.

Also, optimized JS/CSS inclusions a bit.
2014-02-01 11:24:03 +01:00
Marcin Kurczewski
a869c1da1e Slightly changed comment edit log message 2014-01-25 16:44:37 +01:00
Marcin Kurczewski
100303173e Added comment editing support
In other news, editing a post doesn't reload page anymore
(yay for editing tags for Youtube posts)
2014-01-25 16:39:09 +01:00
Marcin Kurczewski
5607cfc353 Models rewrite; removed RedBeanPHP; misc changes
Pages load 1.5-2x faster
Exception trace in JSON is now represented as an array
Fixed pagination of default favorites page in user pages
Fixed thumbnail size validation for non-square thumbnails
2013-12-18 15:17:49 +01:00
Marcin Kurczewski
d7cb024f24 Refactored pagination queries 2013-11-30 13:59:29 +01:00
Marcin Kurczewski
c9a8f99f6a Optimization: preloading moved back to controllers
- Nearly twice faster page load
- Query count greatly dropped
2013-11-30 01:10:58 +01:00
Marcin Kurczewski
676c3a41e2 Logging: removed logEvent() and log prefixes
This looked ugly.
2013-11-23 15:39:19 +01:00
Marcin Kurczewski
d8997edc57 Refactor of controllers and models
- Most of model-related code moved from controllers to model classes, much
  fewer calls to R::whatever() in controllers
- Post editing and uploading shares the same code, thus making implementing
  stuff easier in the future
- Added support for default bean wiring, no more calls to R::preload() all over
  the place
- More robust concurrent post editing detection
2013-11-23 15:39:13 +01:00
Marcin Kurczewski
9ab961985d Refactor to logging
- Centralized use of TextHelper::repr..() instead of hardcoded markdown
- Centralized processing of highlighting instead of hardcoded markdown
- Highlighted items are marked with color, not just bold
2013-11-17 23:46:31 +01:00
Marcin Kurczewski
4fd25b10c6 Fixed logging of post previews 2013-11-17 14:25:13 +01:00
Marcin Kurczewski
69a993c5af Fixed sending empty comments 2013-11-17 14:24:39 +01:00
Marcin Kurczewski
04e9bad79e Added logging engine for #61 2013-11-16 21:21:43 +01:00
Marcin Kurczewski
76a60ed5d7 Refactoring of error/success messages 2013-11-16 18:44:40 +01:00
Marcin Kurczewski
9e6716021a Models: enhanced entities filtering 2013-10-28 11:24:11 +01:00
Marcin Kurczewski
b55a8f1dce Closed #52 - fixes for anonymous accounts
- Anonymous account is no longer created when commenting/uploading
- Anonymous users can now switch safety, if it's available
- Anonymous users can delete their own posts
- Refurbished session and logging in/out mechanism
- Possible fixes for registration/activation/account deletion issues
2013-10-27 20:39:32 +01:00
Marcin Kurczewski
d135f84bf2 Added paginator CSS to comments 2013-10-22 23:57:57 +02:00
Marcin Kurczewski
d45ab47d3b Always test your goddamn code 2013-10-22 00:18:41 +02:00
Marcin Kurczewski
eaa8c4897d Closed #39 2013-10-22 00:17:40 +02:00
Marcin Kurczewski
019ce6a141 Fixed comment removal 2013-10-19 20:17:16 +02:00
Marcin Kurczewski
ea463cb0db Faster queries, fixed foreign keys
When user is removed, their posts and comments get null user ID now
2013-10-19 20:14:23 +02:00
Marcin Kurczewski
019e7eea7f Closed #43 2013-10-18 00:09:50 +02:00
Marcin Kurczewski
379674d027 Closed #8 2013-10-17 23:37:41 +02:00
Marcin Kurczewski
ee050cfd01 Worked on #8
Also:
- changed URL schema for posts from /posts/action/id to /posts/id/action
- moved XXXController::locateXXX methods to Model_XXX::locate
2013-10-17 22:57:32 +02:00
Marcin Kurczewski
21f4669a98 Closed #18 2013-10-12 22:37:18 +02:00
Marcin Kurczewski
c345800716 Placeholder stylesheets
Now I can look at this.
2013-10-05 22:52:55 +02:00
Marcin Kurczewski
041b8eedbe Moved AbstractController to Bootstrap 2013-10-05 21:24:20 +02:00
Marcin Kurczewski
046968b815 Page titles filled in 2013-10-05 21:22:28 +02:00
Marcin Kurczewski
c905f1d7dd Let there be placeholders 2013-10-05 19:26:33 +02:00