Giter Site home page Giter Site logo

publiclab / plots2 Goto Github PK

View Code? Open in Web Editor NEW
951.0 67.0 1.8K 28.7 MB

a collaborative knowledge-exchange platform in Rails; we welcome first-time contributors! :balloon:

Home Page: https://publiclab.org

License: GNU General Public License v3.0

Ruby 54.46% JavaScript 8.47% CSS 2.20% HTML 34.50% Shell 0.02% Makefile 0.11% Dockerfile 0.10% SCSS 0.14%
ruby wiki rails publiclab environment collaboration first-timers beginner-friendly help-wanted javascript

plots2's Introduction

PublicLab.org

Code of Conduct Build Status first-timers-only-friendly Join the chat at https://publiclab.org/chat Code Climate codecov View performance data on Skylight Newcomers welcome GitHub license Gitpod Ready-to-Code

The content management system for the Public Lab research community, the plots2 web application is a combination of a group research blog -what we call "research notes"-and a wiki. Read more about the data model here.

Begin running (and contributing to) this codebase immediately with GitPod:

Open in Gitpod

It showcases a variety of features that help the Public Lab community collaborate on environmental technology, design, documentation, and community organizing. Originally a Drupal site, it was rewritten in 2012 with Ruby on Rails and has since extended but not yet entirely replaced the legacy Drupal data model and database design. We ❤️ Open Source and actively participate in various OSS programs such as Google Summer of Code(GSoC), Rails Girls Summer of Code (RGSoC), Outreachy, and Google Code-In (GCI). Some key features include:

Roadmap

We are developing a draft Roadmap for plots2 and our broader Public Lab code projects; read more and comment here.

A full description of the features, audiences, inter-relationships, and goals of Public Lab software projects can be found here: https://publiclab.org/software-overview

Table of Contents

  1. What Makes This Project Different
  2. Data model
  3. Contributing
  4. Prerequisites
  5. Installation
  6. SSL in Development
  7. Login
  8. Testing
  9. Maintainers
  10. How to start and modify cron jobs
  11. Bundle Exec
  12. Reply-by-email
  13. Bugs and Support
  14. Recaptcha
  15. Internationalization
  16. Security
  17. Developers
  18. First Time?
  19. Hacktoberfest

What makes this project different

The people who create our platform make very different design and technology decisions from other projects. This stems from our deep belief that, to see a change in the world, we must build and maintain systems that reflect our values and principles.

From design to system architecture to basic vocabulary and communication patterns, our systems have grown organically since 2010 to support a powerful, diverse, and cooperative network of people capable of taking on environmental problems that affect communities globally. The platform we have built together speaks to this shared history in many ways, big and small. It reflects input from people facing serious health issues, on-the-ground organizers, policy specialists, hardware hackers, educators, and civil servants.

This broad community and the Public Lab team have facilitated a space where we can discuss, break down, construct, prototype, and critique real-world projects. Together we have shaped a platform that incorporates familiar pieces but ultimately looks and feels quite different from anything else on the internet. Despite the growth of our platform, it remains committed to hearing the voices of others, mutual respect and support, an awareness of the barriers and challenges presented by gaps in expertise and knowledge, and a sensitivity to the inequalities and power imbalances perpetuated by many mainstream modes of knowledge production and technological and scientific development.

Our mutual aim to democratize inexpensive and accessible do-it-yourself techniques has allowed us to create a collaborative network of practitioners who actively re-imagine the human relationship with the environment. Our goals are supported and facilitated by a system which questions and even challenges how collaborative work can happen.

Data Model

Diagram

(Above: draft of our Data model)

Contributing

We welcome contributions, and are especially interested in welcoming first time contributors. Read more about how to contribute below! We especially welcome contributions from people belonging to groups under-represented in free and open source software!

Code of Conduct

Please read and abide by our Code of Conduct; our community aspires to be a respectful place both during online and in-­person interactions.

Prerequisites

For installation, prerequisites include sqlite3 and rvm. Click here for a complete list and instructions.

Installation

Standard Installation

  1. Fork our repo from https://github.com/publiclab/plots2.
  2. In the console, download a copy of your forked repo with git clone https://github.com/your_username/plots2.git where your_username is your GitHub username.
  3. Enter the new plots2 directory with cd plots2.
  4. Set the upstream remote to the original repository url so that git knows where to fetch updates from in future: git remote add upstream https://github.com/publiclab/plots2.git
  5. Steps to install gems:
    • You may need to first run bundle install if you have older gems in your environment from previous Rails work. If you get an error message like Your Ruby version is 2.x.x, but your Gemfile specified 2.7.3 then you need to install the ruby version 2.7.3 using rvm or rbenv.
      • Using rvm: rvm install 2.7.3 followed by rvm use 2.7.3
      • Using rbenv: rbenv install 2.7.3 followed by rbenv local 2.7.3
    • Run this bundle config set without 'production mysql' from the rails root folder to set your project to exclude libraries only needed in production.
    • Install gems with bundle install from the rails root folder.
  6. Run cp db/schema.rb.example db/schema.rb to make a copy of db/schema.rb.example in db/schema.rb.
  7. You could choose to use mysql2 or sqlite3 as your database. We recommend using sqlite3 as your plots2 database as some of our contributors have reported issues while using mysql2.
    • If mysql2, run cp config/database.yml.mysql.example config/database.yml to make a copy of config/database.yml.mysql.example in config/database.yml
    • If sqlite3, run cp config/database.yml.sqlite.example config/database.yml to make a copy of config/database.yml.sqlite.example in config/database.yml. kindly note if you choose to use sqlite some tests may fail. The project was setup initially to use mysql and some tests are tailored for mysql db. No need for alarm, we are working to fix these and this will not interfere with your development process
  8. Run rake db:setup to set up the database
  9. Install static assets (like external javascript libraries, fonts) with yarn install
  10. Setup React & webpacker by running rails webpacker:install && rails webpacker:install:react && rails generate react:install(for local SSL work, see SSL below)
  • If you get any prompt to overwrite files in this step please choose no. The prompt will be something like "Overwrite /home/plots2/config/webpacker.yml? (enter "h" for help) [Ynaqdhm]" :- type "n" and enter.
  1. Start the server with passenger start and navigate to http://localhost:3000/ on your browser.
  2. Wheeeee! You're up and running! Log in with test usernames "user", "moderator", or "admin", and password "password".
  3. Run rails test to confirm that your install is working properly. You can also run rails test:system for system tests. (Note: if you chose sqlite as your database, some tests may fail; Please ignore these, we are working to fix this. If your server starts correctly, you are all set)

Windows Installation

We recommend you either work in a virtual environment, or on a dual booted system to avoid dependencies issues as Unix systems tend to work smoother with Ruby and Rails. This will not only benefit you now for plots2, but also in the future while working on other Ruby projects, a Linux or Mac based OS will make your development much easier.

  1. Windows Subsystem for Linux (recommended)
  2. Dual Booting, option2, video guide
  3. Setting up a Linux virtual env

Windows Subsystem for Linux 2 Installation

Before continuing with the installation steps in this README, users of Windows Subsystem for Linux 2 (WSL 2) should open the WSL 2 Terminal and type out the commands below.

  1. Install Dependencies required from Ruby Source with the following commands:
  • sudo apt update
  • sudo apt install curl g++ gcc autoconf automake bison libc6-dev
  • sudo apt install libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libtool
  • sudo apt install libyaml-dev make pkg-config sqlite3 zlib1g-dev libgmp-dev
  • sudo apt install libreadline-dev libssl-dev
  1. Add GPG Key & Install RVM:
  • Install gnupg2 if you haven't already: sudo apt install gnupg2
  • gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
  • curl -sSL https://get.rvm.io | bash -s stable
  1. Load the Script environment variables using source command:
  • source ~/.rvm/scripts/rvm
  1. Install and use specific Ruby version:
  • rvm install ruby-x.x.x (this projects Ruby version)
  • rvm --default use ruby-x.x.x (replace x.x.x with this project's Ruby version)
  1. For further reference, read here

Redis Installation

Public Lab uses Redis and may be required for some functionality when running the application locally.

  1. Install Redis if you haven't already:
  • Using MacOS: brew install redis
  • Using Linux: sudo yum -y install redis
  • Using Ubuntu WSL2:
    • update & upgrade Ubuntu: sudo apt update && apt upgrade
    • install redis: sudo apt install Redis-server
    • open Redis.config file: sudo nano /etc/redis/redis.conf
    • update the file by changing the supervised no line to supervised systemd(ubuntu uses systemd)
    • start Redis: sudo service redis-server start
    • open Redis CLI: redis-cli
    • test Redis: type ping & response should be pong
    • exit cli: type quit
    • Awesome 👍 All done ✅
  1. Run Redis server:
  • Using MacOS: brew services start redis
  • Using Linux: redis-server
  1. Run SideKiq: bundle exec sidekiq
  2. If SideKiq started correctly Redis is now configured and working!

SSL in Development

At Public Lab we use the openssl gem to provide SSL (Secure Sockets Layer) for a secure connection (https) in the development mode. You can run the https connection on localhost through the following steps:

  1. Use passenger start --ssl --ssl-certificate config/localhost.crt --ssl-certificate-key config/localhost.key --ssl-port 3001.
  2. Open up https://localhost:3001.
  3. Add security exceptions from the advance settings of the browser. You can also use http (unsecure connection) on the port number 3000 by going to 'http://localhost:3000'. We use port number 3001 for 'https' and port number 3000 for 'http' connection. Secure connection is needed for OAuth authentication etc.

Login

Once you complete the installation, use any of these credentials to login into the PL website in your local development/testing environment to gain additional permissions for logged in users only. Each one comes with its own set of permissions; nevertheless, the experience across them is pretty much the same.

username: admin, moderator, or user

password: password

For more on the login systems, see this page

Testing

Click here for a comprehensive description of testing and here to learn about system tests.

Maintainers

How to start and modify cron jobs

  1. We are using Whenever gem to schedule cron jobs.
  2. All the cron jobs are written in easy ruby syntax using this gem and can be found in config/schedule.rb.
  3. Go to the config/schedule.rb file to create and modify the cron jobs.
  4. Click here to learn more about how to write cron jobs.
  5. After updating config/schedule.rb file run the command whenever --update-crontab to update the cron jobs.
  6. To see the installed list of cron jobs use command crontab -l
  7. For more details about this gem, visit the official repository of the Whenever gem.

Bundle exec

For some, it will be necessary to prepend your gem-related commands with bundle exec. For example, bundle exec passenger start. Adding bundle exec ensures you're using the version of passenger you just installed with Bundler. bundle exec rake db:setup, bundle exec rake db:seed are other examples of where this might be necessary.

Reply-by-email

Public Lab now supports "reply by email to comment" feature. For more details, go to the email documentation

Bugs and support

To report bugs and request features, please use the GitHub issue tracker

For additional support, join the Public Lab website and mailing list at http://publiclab.org/lists. For urgent requests, email [email protected]

Recaptcha

This application uses RECAPTCHA via the recaptcha gem in production only. For more information, click here.

Internationalization

Publiclab.org now supports Internationalization and localization, though we are in the initial stages. This has been accomplished with rails-I8n.

To see it in action, click on the 'Language' drop-down located in the footer section of the page. All the guidelines and best practices for I18n can be found here.

Translations are arranged in the YAML files here, which are set in a similar way to views files. An example for adding translations can be found here.

Since the implementation of our new Translation system, we now use the translation() helper, found here. This provides some extra translation features such as inserting a prompt visible to site visitors if no translation exists yet. You can learn more about our translation system by reading our Translation system docs.

To add new languages or for additional support, please write to [email protected]

Security

To report security vulnerabilities or for questions about security, please contact [email protected]. Our Web Working Group will assess and respond promptly.

Developers

Help improve Public Lab software!

First Time?

New to open source/free software? Here is a selection of issues we've made especially for first-timers. We're here to help, so just ask if one looks interesting : https://code.publiclab.org

Here is a link to our Git workflow.

Hacktoberfest

Wishing to contribute to Publiclab as part of Hacktoberfest? Check out our Hacktoberfest contributing docs

Let the code be with you.

Happy opensourcing. 😄


Twitter Follow

plots2's People

Contributors

ananyo2012 avatar btbonval avatar cesswairimu avatar cleverfool77 avatar david-days avatar dependabot-preview[bot] avatar dependabot[bot] avatar grvsachdeva avatar icarito avatar ishagupta18 avatar jiteshjha avatar jywarren avatar keshavsethi avatar lalithr95 avatar manasa2850 avatar milaaraujo avatar namangupta01 avatar noi5e avatar nstjean avatar oorjitchowdhary avatar ruthnjeri avatar sagarpreet-chadha avatar siaw23-retired avatar sidharthbansal avatar souravirus avatar tlazypanda avatar ujithaperera avatar uzay-g avatar viditchitkara avatar vladimirmikulic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plots2's Issues

version tracking schema.rb - causes timestamp conflicts

git pull generates:

error: Your local changes to the following files would be overwritten by merge:
    db/schema.rb
Please, commit your changes or stash them before you can merge.
Aborting

I'm sure there's a best practice for this. Shall we not track schema.rb?

Map details categories visible when empty

This may be more of a personal preference. The ancillary info for each map page should only show up when those fields are used. Categories such as "cartographer's notes" are showing up when empty. I think it would look better/cleaner if those categories are only visible when they contain entries.

wiki revisions not deleted upon deleting a page?

Or was this due to a direct database edit instead of deleting the wiki page through the web interface or rails model?

These pages don't exist anymore but their revisions are still showing up in the sidebar at /dashboard

revisions

Hmm, i went to /spam/wiki and they actually did exist -- but when you go to the wiki pages, it says they don't. Some other kind of wiki page creation going on here?

add user profiles to the spam moderation page

Recently we only had the 15 newest user profiles in the database, so I was able to read all of them. Of the 15, 3 were spam profiles.

Since we're now down to a manageable number of newly created users, we should add new user profiles to the moderate spam page. Instead of "title", it'll contain the profile contents.

https://publiclab.org/spam

image

Users could be removed from the list automatically after a few days to keep clutter down.

The ban button would be useful if the profile is obvious spam.

The Publish button would presently do nothing, since the profiles are published by default. But maybe it could expedite the usual timeout before a user is removed from the list.

We'll need a place in the database to indicate new users that are not yet vetted. This corresponds to the user status of ticket #11.

unverified user status

To curb spam, moderation is being proposed in issues like #11 .

Moderation should only be applied to users who aren't otherwise verified. Moderators and admin are implicitly verified.

Basic users are both verified and unverified. If basic were broken up into basic (unverified) and verified, the permission priority schedule might look more like: basic, verified, moderator, admin. Thus verified user is classified as such under DrupalUser.role or User.role.

Features which verified users have over basic users:

  • preventative spam measures are not applied
  • may vote to promote basic users to verified (this might enact the promotion or it might suggest it to mods/admin for review)
  • may vote wiki and notes as spam (this might not unpublish/delete the wiki or note, but might suggest it to mods/admin for review)

It might be awhile until jywarren#160 (proper RBAC) is completed, since there weren't any obvious or highly recommended RBAC implementations in Ruby.

optimization for publiclab.org/maps

the /maps page is taking 24 seconds!

thanks to using powertags for location storage. I want to figure out a better query but basically each map is getting map.lat and map.lon called. These alias to has_powertag('foo') which joins a couple tables EACH TIME. this was my code and I should be punished

however! I think caching is a bit dumb of a way to do this... gotta think of some better way. Even batch collecting all the tags or something, and assembling the joins in code, rather than as sequential queries... scrappy but it could work. this is a fairly unique page, anyways.

signup biography does not get added to user profile

Steps to reproduce (sufficient but perhaps more than necessary):

  1. go to /signup
  2. type in some junk that will cause errors and click sign up
  3. when forwarded to /register, type in some more junk that will cause errors and click sign up
  4. properly fill out the registry and type in something for the bio
  5. once logged in as new user, look at profile and see lack of bio

That signup bio is not put in the database anywhere so far as I can tell.

just for fun, I did this again very simply and still see the problem:

  1. go to /signup
  2. type in valid information and something good in the bio, click sign up
  3. once logged in as new user, look at profile and see lack of something good in bio
  4. edit profile, change bio, see that it sticks

404 page has old menubar

I went to delete a spam message and got a 404: "There was an error. Are you sure you have the right address?", but I noticed there was still the "Switch to the old site" button in the upper right. I looked more closely at the menubar and found a number of things missing that is seen from the header on the front page.

Click here to see:
http://publiclab.org/notes/Liuzhuang19880717/10-24-2013/a-good-place-to-frame-nfl-shirt

I'm guessing someone else deleted the spam note before I got to it, leading to the 404. That is irrelevant to this ticket.

tag page shows code instead of running code.

http://publiclab.org/tags


Research notes by location

    tid); if ($count) { /* don't show terms with 0 count */ echo("
    ".$term->name." (".$count.")
    "); } } /* end foreach */ ?> 

Research notes by tool

    tid); if ($count) { /* don't show terms with 0 count */ echo("
    ".$term->name." (".$count.")
    "); } } /* end foreach */ ?> 

Map form entry data lost during publishing

Every so often when I click publish wonky stuff just happens with saving all of the different entry data/thumbnail/tags. The form will reload with missing entry data. I

Instant rice

Ideally, it should take fewer than 3 steps from start to finish and less than 10 minutes to cook.

I'm thinking we'll need to add water at some point.

Possibly heat.

Clean up migrations and schema

As per my message here: https://groups.google.com/forum/#!topic/plots-dev/QkKfqKStq88
I want to take a go at cleaning up the migrations and schema, which should provide these two benefits:

  1. Easier and faster project setup - it should only take a couple of minutes from git clone to rake test or rails s to run smoothly.
  2. Easier and faster project setup for production purposes eg. if the project switched servers and such.

At the moment, the best solution I've found is to add a migration that will add missing tables/columns as well as add/remove columns from what's already in the migrations.
This will update the schema to reflect the used database tables and it should allow for a smooth running application and tests. Finally, it'll shift development over to using migrations exclusively.

By the way, do you guys think the migration should additionally remove the unused tables or should they be left as they are?

Subscribe to All Research Notes: The Button

Make a button, visible to mods and admin only, which allows them to subscribe or unsubscribe to all research notes.

Not sure the best place to put this button. Dashboard, profile, both, or maybe the side panel?

The tag isn't actually in the database. There's some magical handling of a pretend tag id. See here:
https://github.com/jywarren/plots2/blob/master/app/mailers/subscription_mailer.rb#L65-L68

Unfortunately this special tag is only used in one place, so it is only defined in one place:
https://github.com/jywarren/plots2/blob/master/app/mailers/subscription_mailer.rb#L59

Maybe the magic all_tag should be hard coded into the tag model.

search page returns original wiki page title

If a wiki page title has been changed, the search page returns the initial title and not the newest title.

I have to assume this will be a simple fix in the code from reading node.title to node.latest.title.

optimize url_alias

We could reduce queries a lot by doing proper eager loading with a join between DrupalNode and DrupalUrlAlias (which requires a CONCAT() since DrupalUrlAlias.src = "node/#" where # is the node.nid) but I'm quite tempted to run a migration which just adds the drupalUrlAlias dst column as an additional DrupalNode column. We almost always need to get the URL and are no longer bound by the modularity rules of Drupal.

This is a tangent off of this closed issue: #33

magic spam wikis don't load

There are a bunch of spam wiki pages shown in the "recently edited wiki" list on my dashboard.

Clicking on them brings up the error page (404? 500? who knows)
http://publiclab.org/wiki/ought-to-you-pay-off-your-auto-title-loan-with-your-tax-refund

I can set the status to 0 in the database and make it go away. However, looking at the database, there is nothing obviously wrong with the record in node or the record in node_revisions. The page should load so that the delete button is easily accessed.

But many of these pages don't load. Their pageviews count is 0 on the wiki stats page:
http://publiclab.org/wiki

Production log indicates nid 9119 not found. That actual nid for the post is 9670.

Started GET "/wiki/ought-to-you-pay-off-your-auto-title-loan-with-your-tax-refund" for 108.20.246.226 at 2013-10-28 21:18:01 +0000
Processing by WikiController#show as HTML
  Parameters: {"id"=>"ought-to-you-pay-off-your-auto-title-loan-with-your-tax-refund"}
Completed 404 Not Found in 8ms

ActiveRecord::RecordNotFound (Couldn't find DrupalNode with nid=9119):
  app/models/drupal_url_alias.rb:7:in `node'
  app/models/drupal_node.rb:360:in `find_by_slug'
  app/controllers/wiki_controller.rb:8:in `show'

front page refinements

At the april 2014 staff meeting we had some design brainstorming about how to make the front page of the site a little less cluttered. Not removing any important content; just organizing it under "megatabs". Supercedes jywarren#172

barnstar listings on profiles are not consistent; poor join

https://github.com/publiclab/plots2/blob/master/app/models/user.rb#L142-L148

This is not working for all profiles due to improper join; only some profiles correctly report the barnstars they have:

> nids = DrupalNode.find_all_by_uid(554, :conditions => {:type => "note"}, :order => "created DESC", :select => :nid).collect(&:nid)

node Columns (3.3ms)  SHOW FIELDS FROM `node`
DrupalNode Load (0.3ms)  SELECT nid FROM `node` WHERE `node`.`type` = 'note' AND `node`.`uid` = 554 ORDER BY created DESC
=> [8928, 8926, ... 1676, 1652, 1541, 831] 

> DrupalNodeCommunityTag.find :all, :conditions => ["name LIKE ? AND nid IN (?)",'barnstar:%',nids.join(',')], :joins => :drupal_tag

community_tags Columns (3.0ms)  SHOW FIELDS FROM `community_tags`
term_data Columns (2.2ms)  SHOW FIELDS FROM `term_data`
DrupalNodeCommunityTag Load (1.2ms)  SELECT `community_tags`.* FROM `community_tags` INNER JOIN `term_data` ON `term_data`.`tid` = `community_tags`.`tid` WHERE (name LIKE 'barnstar:%' AND nid IN ('8928,8926, ... 1541,831'))
=> [] 

However, manually changing it to outer join doesn't work either:

> DrupalNodeCommunityTag.find :all, :conditions => ["name LIKE ? AND nid IN (?) OUTER JOIN term_node ON term_node.tid = community_tags.tid",'barnstar:%',nids.join(',')]#, :joins => :drupal_tag

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER JOIN term_node ON term_node.tid = community_tags.tid)' at line 1: SELECT `community_tags`.* FROM `community_tags`  WHERE (name LIKE 'barnstar:%' AND nid IN ('8928,8926, ... 1652,1541,831') OUTER JOIN term_node ON term_node.tid = community_tags.tid)

Create a seeds.rb file for easier project setup

I think a seeds.rb file is the way to go to set up some example database entries, that would allow a freshly git cloneed copy of the code to be run right away. It would be easy to update it for modified models so that anyone forking the project could run the app right away and not get view-related errors.

It would also allow for a quick reset of the example data after some poking around in there.

I'll work on this right after finishing #34, so I'll have a better idea of what example entries to add to the DB.

spam tracker 3000

In order to determine how much spam is being received at any time, and how much is being handled by the community (admin/moderators), we should have some way to track historical spam even after it is deleted.

This might be as simple as something like a table that has a date that a node id and revision id were deleted, and possibly cache some information such as when the spam was created, who created it, and the last IP address of the creator. Usually this would be done relationally, but since the user, node, and revision might be deleted, this table should store copies of information and not pointers.

Redesign "related notes" queries to be smarter

On place pages (wikis) with "tabbed:notes" the "research" tab displays related research notes. These are not just notes that are tagged with that place name, and sometimes seemingly unrelated notes are included. For example, notes tagged with "chapter" always seem to be included for every place. The Jerusalem page includes notes from lots of places.

Just curious.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.