joshua stein
f1cfe29b1f
fix initial story hotness
...
Initial story hotness was zero, which excluded stories with no other
upvotes from the homepage. Before creating, define initial hotness
to something.
Since this now makes very new stories show up on the homepage right
away, expand the window back to 48 hours.
This requires a Story.recalculate_all_hotnesses! to properly sort
things.
2015-01-13 13:00:55 -06:00
joshua stein
4b768e2f42
Search: clamp results to Sphinx's max_matches
...
Otherwise this will annoyingly raise an exception when fetching
results if offset exceeds max_matches
2015-01-11 12:59:41 -06:00
joshua stein
88709b5d04
move story tagging sorting into a function
2015-01-06 17:31:44 -06:00
joshua stein
9c73c87d28
add story cache showing for manually-specified unavailable stories
2015-01-06 17:31:09 -06:00
joshua stein
9f5e04bbba
use _path for most things instead of _url
...
Instead of hard-coding the scheme and host everywhere, use _path
methods to show relative URLs.
Except that our previous setting of
Rails.application.routes.default_url_options in
config.after_initialize made this moot because Rails inserts that
host into all _path helpers for some reason. So revert that
setting.
But then anything that wants an absolute URL doesn't know the
hostname and the root_url helper throws an exception. So make a
Rails.application.root_url shortcut to pass the per-app settings in
Rails.application to root_url.
Now we can just use _path helpers most places but still use _url
ones where we need them, such as in RSS views and e-mail templates.
2015-01-02 17:02:55 -06:00
joshua stein
c151fbeeb8
better tag hotness mod calculation
2015-01-01 10:25:14 -06:00
joshua stein
1cc16ecfbf
tweak code formatting
2014-12-15 15:06:53 -06:00
joshua stein
606f5c9849
experiment with factoring comment scores into story hotness
...
might keep an active story alive on the front page and bury a story
with a "comment graveyard"
2014-12-15 15:06:53 -06:00
joshua stein
5c1cc0ae38
Hat: if link isn't a url, don't href to it (probably shouldn't call it link then)
2014-12-15 15:06:53 -06:00
joshua stein
ddb9215aa0
log a moderation when hats are granted, since we're open and all that
2014-11-15 09:52:29 -06:00
joshua stein
31d4e97858
implement hats
...
https://lobste.rs/s/bkeYe9/about_lobsters/comments/ZD2tL3#c_ZD2tL3
2014-11-14 14:12:29 -06:00
joshua stein
5b94406640
Comment: include page anchor in urls
2014-11-14 12:46:09 -06:00
joshua stein
9e8b89be1c
cast story.{upvotes,downvotes} to signed on mysql, integer on postgres
...
old mysql doesn't support 'cast(1 as integer)', but new/mariadb does
postgres doesn't support 'cast(1 as signed)'
should fix #145
2014-10-06 14:07:53 -05:00
joshua stein
09bd0026d3
ignore a story's submitter's comments when calculating hotness
2014-09-16 10:53:25 -05:00
joshua stein
dfe6db4849
revert 85cb7c20
, give up on planet rss aggregation
2014-08-31 20:35:41 -05:00
joshua stein
962b7e8d59
add per-tag story hotness modifiers
2014-08-31 20:27:54 -05:00
joshua stein
e252d2d66e
StoryRepository: positive_ranked should end at -1
2014-08-25 17:57:26 -05:00
joshua stein
e3f6a4edd8
Merge pull request #163 from walle/upvoted_fix
...
add /upvoted page to show a logged-in user's upvoted stories
2014-08-17 19:09:04 -05:00
joshua stein
13de40df34
order newest stories by id, not created_at
...
same order (most likely) but id has an index on it and created_at
will need a full table scan
2014-08-17 18:58:45 -05:00
Fredrik Wallgren
2ffe322f64
Rename by_user to newest_by_user and sort accordingly.
2014-08-17 14:18:23 +02:00
Fredrik Wallgren
ab8f8f3a72
Add upvoted route.
...
Upvoted route shows all stories a logged in user have upvoted
in reverse chronological order, latest upvote first.
It is not shown in the gui, but reachable at /upvoted.
2014-08-16 00:27:18 +02:00
joshua stein
85cb7c2057
first stab at planet rss aggregation
...
could probably use a prettier layout and auto-posting a weblog url
to the main site (carrying tags)
2014-08-03 22:07:57 -05:00
joshua stein
8a3b133d87
style/wrapping
2014-08-03 22:07:56 -05:00
Andrey Chernih
fc52db5424
Refactor HomeController
2014-07-09 22:25:39 +04:00
joshua stein
270939b5a4
Story: return true from recalculate_all_hotnesses!
...
this is usually called from the console, and true is better than a
giant array of every Story object
2014-07-02 10:09:03 -05:00
joshua stein
78f4da6699
Search: escape " when sending to sphinx
2014-06-24 20:08:15 -05:00
joshua stein
023f8282ea
as noted earlier, URI.parse is not very lenient
...
trying to use it in Story#domain but not in validate can ruin things
2014-06-05 07:54:48 -05:00
joshua stein
56774913c0
Story: experiment with making comment counts affect hotness
2014-05-06 21:32:17 -05:00
joshua stein
aab34a9936
embed timestamp in password reset token, only work for 24 hours
2014-04-15 00:46:14 -05:00
joshua stein
73b8df5eb7
implement story merging
...
closes #137
2014-04-08 17:51:12 -05:00
joshua stein
9848cf5e47
Story: export tags in json view
...
closes #143
2014-04-03 10:23:37 -05:00
joshua stein
eec85db1f8
bump up max edit times for stories and comments
...
not really any harm in letting people correct mistakes
2014-04-02 13:14:08 -05:00
joshua stein
7fb75af7fe
simplify Story.find_similar_by_url arel, only pull undeleted stories
2014-03-28 10:45:01 -05:00
joshua stein
bb9c9c5353
don't include hiders in story vote summary
2014-03-24 10:26:07 -05:00
joshua stein
6f30d99581
shrink story hotness window to 24 hours
2014-03-24 10:26:07 -05:00
joshua stein
c09542a80a
enforce a maximum username length of 25
2014-03-24 10:26:07 -05:00
joshua stein
7f9c227ed0
bring back story downvoting, remove low quality option
...
story hiding is still here, so hopefully this will result in less
bogus story downvotes
2014-03-24 10:26:06 -05:00
joshua stein
00eda60fdc
Story#is_downvotable? is gone
2014-03-14 18:55:46 -05:00
joshua stein
8b60e5fd63
show story hider count on story detail page
2014-03-13 10:51:12 -05:00
joshua stein
efe1353b87
update a user's unread message count after bulk-delete
...
only count messages that are both unread and undeleted
2014-03-06 15:27:13 -06:00
joshua stein
285fd82c16
check story tag permissions on editor, not creator
2014-03-06 13:54:30 -06:00
joshua stein
9535b05490
remove story downvoting, add story hiding
...
stories should either be reported for spam (coming later), upvoted,
or left alone rather than being downvoted for being uninteresting.
since users don't like leaving uninteresting things alone, they can
now hide stories from their view without affecting the story's
score.
hiding is implemented as a Vote with its vote set to 0 and the
reason set to "H"
add a /hidden url which shows all of a user's hidden stories
while i'm here, simplify Vote guts and add some tests to make sure
all the flip-flopping stuff works right
2014-03-03 17:20:21 -06:00
joshua stein
99c551cbfe
move initial upvote of submitted story to Story model
2014-03-03 17:13:00 -06:00
joshua stein
888c80eb83
reserve "moderator" and "moderators" usernames
2014-02-21 11:41:47 -06:00
joshua stein
3a60d3abba
show story downvoting usernames to moderators to detect problems
...
such as voting rings or users downvoting things instead of filtering
tags
2014-02-21 11:29:19 -06:00
joshua stein
95202f21b2
add Tag.active scope to deprecate tags without removing them
2014-02-21 10:57:30 -06:00
joshua stein
67fc2cc75c
set maximum time during which comments and stories can be downvoted
...
always allow a user to "unvote" if they're previously downvoted, but
after a certain number of days, don't accept new downvotes
there isn't really any benefit in downvoting old stuff that is
already off the front pages or on a dead comment thread, other than
to maliciously strip karma for particular users
2014-02-17 12:08:01 -06:00
joshua stein
9d16898477
User: move "new account" age into constant
2014-02-17 10:09:08 -06:00
joshua stein
1d5b004a36
Story: alpha sort methods, no functional changes
2014-02-17 10:07:36 -06:00
joshua stein
9918660ab4
Comment: alpha sort methods, no functional changes
2014-02-17 10:01:44 -06:00
Serge Paquet
519427586a
use Rails4-style strong parameters mass assignment protection
2014-02-02 15:41:38 -05:00
joshua stein
20cf2bab65
show how many stories have been tagged with each on filters page
...
closes #93
closes #114
2014-01-24 13:53:10 -06:00
joshua stein
fe83a5b780
use false instead of 0 for boolean column in where clause
...
fixes #113
2014-01-21 20:53:29 -06:00
joshua stein
71eeb6c7d2
be a good pushover user and let the user specify a sound
...
- move pushover particulars into User model
- Pushover class rescues errors, don't need to do it from User
2014-01-21 01:21:02 -06:00
joshua stein
00f8e9c189
use one of gravatar's default avatars rather than our own
2014-01-21 00:22:40 -06:00
joshua stein
3c7393c6a3
give tedu his karma back
...
fix bug introduced in 3757b279
that gave comment vote karma to the
voter rather than the commenter
2014-01-20 20:22:45 -06:00
joshua stein
27caa0a7a6
Merge pull request #106 from srgpqt/recent_threads
...
fix User#recent_threads for postgresql
2014-01-20 17:27:03 -08:00
Serge Paquet
79b64c3883
use standard create/update comment routes
2014-01-20 16:52:19 -05:00
Serge Paquet
41c9dfad5d
fix DOM structure when replying to or updating comments
2014-01-20 16:52:19 -05:00
Serge Paquet
577ce2307b
fix User#recent_threads for postgresql
2014-01-16 21:33:00 -05:00
joshua stein
dd860f06e3
also escape ~ char before sending to sphinx
2014-01-14 21:53:46 -06:00
Serge Paquet
d74a2c448f
add postgresql support
2014-01-14 21:42:27 -05:00
joshua stein
5f6c13b26b
Merge pull request #98 from srgpqt/master
...
remove redundant "story" variable in comment templates
2014-01-14 18:34:07 -08:00
joshua stein
be2c706c06
fix Tag.accessible_to to allow moderators to use privileged tags
2014-01-14 11:39:56 -06:00
joshua stein
e12d91cd43
allow users to delete their own accounts
...
not much can actually be deleted, but it can be put into a deleted
state
2014-01-13 10:12:17 -06:00
Serge Paquet
aabe4ceed7
remove redundant "story" variable in comment templates
2014-01-13 02:11:34 -05:00
joshua stein
1ef58d6496
search: fix busted scope introduced in sphinx update
2014-01-13 00:59:37 -06:00
joshua stein
65a9a77104
Merge pull request #92 from srgpqt/filters
...
simplify and optimize Filters controller and template
2014-01-12 22:34:09 -08:00
joshua stein
4cfa2dae27
Merge pull request #86 from srgpqt/master
...
refactor Comment#ordered_for_story_or_thread_for_user method
2014-01-12 22:30:27 -08:00
joshua stein
f1f6b3c7e0
alert the user when submitting a long-ago-submitted story
...
show the user a link to the previous story and let them know they
can submit it again if they want to (just by submitting the form
again)
2014-01-13 00:10:31 -06:00
joshua stein
22b77573a5
prevent new users from downvoting
...
don't show downvote arrows for logged-out and new users
color comments from new users in green like in the user tree,
and banned users in gray
2014-01-12 23:17:09 -06:00
joshua stein
0989d6b30b
also log a moderation when a user is banned
2014-01-12 19:22:08 -06:00
joshua stein
287be48187
add stuff to deal with banning users
2014-01-12 15:09:32 -06:00
joshua stein
68a1f02a1c
name /u/:username route
2014-01-12 14:22:47 -06:00
joshua stein
7abb4636dd
reduce access required for privileged tags to just moderator
2014-01-12 13:28:07 -06:00
Serge Paquet
2c906efa7e
simplify and optimize Filters controller and template
2014-01-09 01:44:03 -05:00
Serge Paquet
e2c266af4b
simplify Comment#arrange_for_user method
2014-01-08 23:48:24 -05:00
Serge Paquet
5988038071
make Comment#ordered_for_story_or_thread_for_user work on query scope
2014-01-08 23:48:24 -05:00
joshua stein
d578482e3b
move story comment counts out of keystore
...
it would be nice to use AR's built-in counter cache, but the
comments count has to reflect something custom so stick with what
was there
2014-01-08 22:20:56 -06:00
joshua stein
2f824a73a3
shrink story hotness window, things are moving faster now
2014-01-08 20:42:25 -06:00
joshua stein
40e4c10e26
fix busted PM e-mail notifications
...
do e-mail and pushover deliveries separately, catch and log errors
from each
closes #90
2014-01-08 20:42:24 -06:00
joshua stein
345388079e
Merge pull request #83 from srgpqt/sphinx
...
upgrade thinking-sphinx gem; requires sphinx >= 2.0.6
2014-01-07 10:17:31 -08:00
joshua stein
c576f86e4d
in moderation auto-message, tell the user it's automated
2014-01-07 11:42:21 -06:00
joshua stein
1452e1c34d
rip out default filtered tags
2014-01-07 11:42:21 -06:00
joshua stein
ce495470c6
double max comment edit time to 90 minutes
2014-01-07 11:42:20 -06:00
Serge Paquet
709b0bff98
upgrade thinking-sphinx gem
2014-01-07 05:52:29 -05:00
Serge Paquet
a46194d1be
add Search#page_count method
2014-01-02 12:16:14 -05:00
Serge Paquet
3757b279ff
add karma column to users table
2014-01-01 16:03:01 -05:00
Serge Paquet
9b0294c471
upgrade to rails v4.0.2
2013-12-30 17:40:52 -05:00
Serge Paquet
b42189f45b
replace some raw sql with database-agnostic activerecord queries
2013-12-30 16:23:59 -05:00
joshua stein
1e7dc17b56
set hotness with score+1 so a single downvote doesn't kill it
2013-12-28 11:52:52 -06:00
joshua stein
4fe74ab2e4
add "low quality" story downvote option, reorder
2013-12-28 11:52:52 -06:00
Serge Paquet
8fbf76b484
use activerecord query interface instead of deprecated finder methods
2013-12-25 16:43:50 -05:00
joshua stein
c8e5aa3cac
sphinx casts integers to unsigned, screwing up score attributes
...
cast them as bigints
closes #67
2013-12-19 16:04:51 -06:00
joshua stein
c6191da912
InvitationRequest: require url (memo) for invitations
...
otherwise validating requests is kind of difficult
2013-12-02 10:44:36 -06:00
joshua stein
4914366ffe
auto link invitiation request memos
2013-10-24 11:16:07 -05:00
joshua stein
66f433176a
add an invitiation request queue
...
the user tree is pretty big to look through now, so let users submit
a request for an invitation, which logged-in users can browse and
instantly send invites to
2013-10-18 15:49:20 -05:00
joshua stein
249dd85ec3
allow non-logged-in users to define tag filters
...
when not logged in, store the filters in a long-lasting cookie and
do not cache the home page
for that one guy on hacker news that complained about lobste.rs not
having this
2013-08-05 02:19:55 -05:00
joshua stein
dbc2e40684
move tag css class building to Tag model
...
add a tag_is_media class to tags with that type, use that for
matching in application.css instead
2013-08-05 01:02:48 -05:00
joshua stein
5c0dad2c4a
strip spaces from urls as they are assigned
2013-07-19 22:07:03 -05:00
joshua stein
ccb8094da1
change some before_create's to before_validation, :on => :create
...
random tokens need to be filled in before validation, otherwise the
validation is just checking a blank value
2013-07-19 22:05:00 -05:00
joshua stein
eeda7668b6
on user pages, show their most commonly used tag
2013-07-01 15:53:43 -05:00
joshua stein
301fc79268
alpha user methods
2013-07-01 15:53:43 -05:00
joshua stein
a471eb180a
don't hardcode "Lobsters" and "lobste.rs" everywhere, use Rails.application.{name,domain}
2013-06-30 01:50:23 -05:00
joshua stein
2cdd385126
add front-end code to allow users to toggle mailing list reception
2013-06-30 00:54:03 -05:00
joshua stein
0325b026c1
rss_token and mailing_list_token have to be set before create, duh
2013-06-30 00:54:03 -05:00
joshua stein
7e0fc989d1
move countinual comment logging to model
...
comments can come in from other places than the controller now
2013-06-30 00:54:02 -05:00
joshua stein
fd41bfa566
start on mailing list interface
2013-06-30 00:54:02 -05:00
joshua stein
ed512cc065
move comment thread_id generation to Comment
2013-06-30 00:54:02 -05:00
joshua stein
7ff7b676e5
use cast() magic when passing score to sphinx
...
fixes problem with mysql/mariadb 5.5
2013-06-30 00:54:02 -05:00
joshua stein
78603d8349
unique mailing list tokens for everyone!
2013-06-30 00:54:01 -05:00
joshua stein
b641d0232d
sort of merge cache branch but don't do anything automatically
...
allow manual caching of story text using diffbot, if an api key is
configured and Story#fetch_story_cache! is called
2013-06-30 00:54:01 -05:00
joshua stein
68690647ab
user newer-style validation methods, add banned usernames
2013-06-21 20:37:15 -05:00
joshua stein
c9571dabaf
back out 9ece666
removing utf8mb4 hacks, no longer needed
2013-05-26 12:32:54 -05:00
joshua stein
0ff4ef2484
Tag has_many taggings, and delete them on destroy
2013-03-30 11:37:38 -05:00
joshua stein
5e357f5684
allow moderators to edit story urls if they ever had one
2013-03-26 12:23:47 -05:00
joshua stein
f585d07aa8
don't do @username expansion in user profile about section
...
most users are probably putting @username to mean a twitter profile,
not a link to a lobste.rs profile
2013-03-23 21:05:13 -05:00
joshua stein
d0459974cd
so long whitespace
2013-02-13 18:50:51 -06:00
joshua stein
464b3c3f80
add support for viewing sent private messages
2013-01-24 14:21:22 -06:00
Jon Evans
08a8165fa9
Use new ShortId class to generate short id
2013-01-22 23:32:45 -07:00
Jon Evans
0a48959cda
Pull short id generation into separate class
2013-01-22 23:15:05 -07:00
joshua stein
10abf0bd7b
don't deliver mention or reply notifications to posting user
2013-01-07 16:29:00 -06:00
joshua stein
11385d6b65
add json view of story, including comments
...
for issue #42
2012-12-30 12:17:59 -06:00
joshua stein
048c614590
Story: make update_comment_count factor in deleted comments/threads
2012-12-30 12:12:24 -06:00
joshua stein
19ba94fd31
don't collapse moderated threads, remove them entirely
2012-12-30 12:11:47 -06:00
joshua stein
f7cac129b4
when comments are moderated, collapse their replies
...
also try to show which moderator deleted the comment and the reason
2012-12-18 21:36:32 -06:00
joshua stein
d64f713054
User: don't export id to json; consumers should use username as pk
2012-12-18 17:26:29 -06:00
joshua stein
109718ba90
expose User and Story created_at to json
2012-12-18 17:16:02 -06:00
joshua stein
cb5e1592b0
Story: export comment_count and score to json
2012-12-17 18:19:19 -06:00
joshua stein
a4e5684994
moderation log: fix tag change summary; fixes issue #43
2012-12-16 20:27:54 -06:00
joshua stein
175ff9d2b1
add some custom as_json output to Story and User
2012-12-16 20:00:41 -06:00
joshua stein
a9e169175b
show story vote summaries to submitters and mods if it has any downvotes
2012-12-08 22:39:06 -06:00
joshua stein
e5a0b671b8
story: simplify tags malarky and just use mark_for_destruction on associated objects
2012-11-26 13:39:16 -06:00
joshua stein
fd4a278d3b
fix duplicate description= definition
2012-11-13 11:39:50 -06:00
joshua stein
6deadc731a
designate certain tags as media types, require a tag other than those
...
just tagging something "video" doesn't make it appropriate for
submission, it still requires a categorization tag
2012-11-12 11:02:18 -06:00
joshua stein
9ece6666bf
add stupid temporary hack to strip out utf8mb4 chars that are screwing up mysql
...
4-byte utf8 chars like emoji are passed around in ruby fine, but
when they are put into mysql queries, strings get truncated at the
first mb4 character. to prevent truncation, strip out mb4
characters in most user-controlled fields like comments, story
descriptions and titles, and messages.
to properly support utf8mb4, mysql server 5.5 is needed, the table
encodings need to be changed to utf8mb4, and the mysql2 gem needs to
be upgraded once it supports utf8mb4:
https://github.com/brianmario/mysql2/issues/249
2012-11-07 21:58:10 -06:00
joshua stein
47f1c44fc9
do incremented_value_for in a transaction to make sure we get the right key back
...
do sqlite checks based on Keystore.connection.adapter_name rather
than assuming one environment uses sqlite and the others don't
2012-10-24 14:55:14 -05:00
joshua stein
d07c555595
comments can be deleted or moderated to be considered gone
2012-10-24 11:53:43 -05:00
joshua stein
d495e9472a
move hotness window back to 48 hours
2012-10-09 11:06:43 -05:00
joshua stein
24ed0e1f6f
only count downvotes in downvote summary
2012-10-09 11:04:53 -05:00
joshua stein
468a0cbe60
no need to make a delta for seconds, just use created_at
2012-10-09 11:04:53 -05:00
joshua stein
c4f1a5e756
we're not doing comment flagging, remove
2012-10-09 11:04:43 -05:00
joshua stein
c0ba39834b
only do new tag check for new stories
2012-10-07 01:44:33 -05:00
joshua stein
6cb466bc83
shrink story hotness window down to 24 hours as we are growing
2012-09-20 11:00:11 -05:00
joshua stein
39bb9b77de
minor cleanup
2012-09-20 10:53:11 -05:00
Robert J Samson
45d87069dd
Check that user has appropriate permissions on tags before_save
2012-09-19 22:13:20 -04:00
Robert J Samson
f3eb44972b
Check to make sure a user isn't improperly using a privileged tag when saving a Story.
2012-09-19 20:57:45 -04:00
Robert J Samson
7fd75a7f3a
More descriptive method and attribute names
2012-09-19 20:28:09 -04:00
Robert J Samson
5ada55f10d
Add a 'private' attribute to tags to allow for admin / mod specific tags
...
Private tags would allow admins to create tags that only admins could
use, and that regular users could not filter. The best example use case
for this is an 'announements' tag for site announements that all users
should see.
2012-09-19 16:44:57 -04:00
joshua stein
0663ea0fed
show how many users are filtering each tag
2012-09-19 12:25:11 -05:00