Commit graph

165 commits

Author SHA1 Message Date
joshua stein 6695480fdb when auto-detecting story titles, try to find a canonical url and use it
should remedy duplicate stories being submitted under all of their
stupid blogspot.* domains instead of the canonical url represented
in the <link> tag
2015-03-10 17:41:40 -05:00
joshua stein f9b309d342 separate story hiding from voting
A story downvote is considered a flag, just meaning the story has
problems and not necessarily that the user wants to ignore it.  By
moving hiding out of Vote and into a new HiddenStory model, a user
can now both downvote/flag and hide separately, or just one or the
other.
2015-02-11 11:37:03 -06:00
joshua stein 8771afc5f5 try a bit harder at finding a submitted story's real title
Ignore the title presented by the user unless we couldn't find
anything, but start out by fetching the URL and trying some <meta>
tags first, then <title>, then use the title the user brought.
2015-02-03 11:20:07 -06:00
joshua stein a16150d8a5 allow searching stories by domain, link domain in story list to such a query 2015-01-29 10:16:46 -06:00
joshua stein 00d347c4f4 consolidate sql fragment to cast story/comment score 2015-01-28 15:02:40 -06:00
joshua stein bf928cf62b Story: take hotness window back down to 36, 48 is a bit stale 2015-01-27 12:14:26 -06:00
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 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 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 962b7e8d59 add per-tag story hotness modifiers 2014-08-31 20:27:54 -05: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 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 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 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 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 8b60e5fd63 show story hider count on story detail page 2014-03-13 10:51:12 -05: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 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 1d5b004a36 Story: alpha sort methods, no functional changes 2014-02-17 10:07:36 -06:00
Serge Paquet 519427586a use Rails4-style strong parameters mass assignment protection 2014-02-02 15:41:38 -05:00
Serge Paquet aabe4ceed7 remove redundant "story" variable in comment templates 2014-01-13 02:11:34 -05: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
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
Serge Paquet 709b0bff98 upgrade thinking-sphinx gem 2014-01-07 05:52:29 -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
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 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 a471eb180a don't hardcode "Lobsters" and "lobste.rs" everywhere, use Rails.application.{name,domain} 2013-06-30 01:50:23 -05:00
joshua stein fd41bfa566 start on mailing list interface 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 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 c9571dabaf back out 9ece666 removing utf8mb4 hacks, no longer needed 2013-05-26 12:32:54 -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
Jon Evans 0a48959cda Pull short id generation into separate class 2013-01-22 23:15:05 -07: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 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 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 468a0cbe60 no need to make a delta for seconds, just use created_at 2012-10-09 11:04:53 -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
joshua stein b7e5447c1d allow embedded images in story text, but still not in comments 2012-09-17 13:24:29 -05:00
joshua stein b91a637535 Story#url has a custom validator, remove duplicate 2012-09-03 16:53:58 -05:00
joshua stein e6c74e8251 add moderation logging
- add users.is_moderator and look at that for most things, not
is_admin

- make default user in readme be a moderator

- log moderator actions in story edits, comment
  deletions/undeletions (and later, user disabling).

- remove ability for moderators to edit comments, there's really no
  reason to.
2012-09-02 12:18:52 -05:00
joshua stein edcee1bddd << strikes again 2012-08-24 11:41:37 -05:00
joshua stein c945f29040 add similar-url check for www\d*\., rewrite checker to be simpler 2012-08-24 11:41:37 -05:00
joshua stein 70db7a5879 short ids in urls should be case insensitive, so make them that way anyway 2012-08-24 11:41:37 -05:00
joshua stein 33e6eee4e0 don't count deleted comments for stories, update comment counts after comment del/undel 2012-08-24 11:41:37 -05:00
joshua stein 3640e1e7a3 comment deleting and undeleting 2012-08-24 11:41:37 -05:00
joshua stein fd8ec36608 story previews 2012-08-24 11:41:37 -05:00
joshua stein abb8392c16 search engine! 2012-08-24 11:41:36 -05:00
joshua stein 389b4c61ec do better at finding near-similar urls already posted recently
http -> https, trailing slash, etc.
2012-08-24 11:41:36 -05:00
joshua stein 88f01210d3 enable activerecord attribute whitelisting just in case 2012-08-24 11:41:36 -05:00
joshua stein c17ea7b638 while we're slow, allow upvoted stories to stick around longer 2012-08-24 11:41:36 -05:00
joshua stein 911bc2d088 only rstrip comments to preserve leading spaces for <pre> wrapping 2012-08-24 11:41:35 -05:00
joshua stein c63d35a65d use a common class for rdiscount options, filter out <h#> tags, add rel=nofollow 2012-08-24 11:41:35 -05:00
joshua stein 342d6ff911 move markeddown html into sql so it doesn't have to be generated every time
it's unlikely to change and if it does, we can just re-generate
everything in sql at once
2012-08-24 11:41:35 -05:00
joshua stein cd568eaa38 fix deleting/undeleting stories for users and moderators 2012-08-24 11:41:35 -05:00
joshua stein b5fc3d2e1f allow admins to edit everything forever 2012-08-24 11:41:35 -05:00
joshua stein 28cd5f8432 fix story edit bug, only check url at new time 2012-08-24 11:41:34 -05:00
joshua stein fc1c474fb3 implement private messages 2012-08-24 11:41:34 -05:00
joshua stein 95ef42d872 move confidence and hotness into sql tables for proper sorting 2012-08-24 11:41:34 -05:00
joshua stein d9b95b2a1d email and pushover reply notifications 2012-08-24 11:41:30 -05:00