CINXE.COM

Bug #485080 “Admin tools” : Bugs : Open Library

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <head> <base href="https://bugs.launchpad.net/openlibrary/+bug/485080/+index" /> <meta charset="UTF-8" /> <title>Bug #485080 “Admin tools” : Bugs : Open Library</title> <link rel="apple-touch-icon" sizes="180x180" href="/@@/apple-touch-icon.png?v=2022" /> <link rel="icon" type="image/png" sizes="32x32" href="/@@/favicon-32x32.png?v=2022" /> <link rel="icon" type="image/png" sizes="16x16" href="/@@/favicon-16x16.png?v=2022" /> <link rel="manifest" href="/@@/site.webmanifest?v=2022" /> <link rel="mask-icon" href="/@@/safari-pinned-tab.svg?v=2022" color="#e9531f" /> <link rel="shortcut icon" href="/@@/favicon.ico?v=2022" /> <meta name="msapplication-TileColor" content="#da532c" /> <meta name="msapplication-config" content="/@@/browserconfig.xml?v=2022" /> <meta name="theme-color" content="#ffffff" /> <link rel="canonical" href="https://bugs.launchpad.net/bugs/485080" /> <link rel="alternate" type="application/atom+xml" href="http://feeds.launchpad.net/bugs/485080/bug.atom" title="Bug 485080 Feed" /> <link type="text/css" rel="stylesheet" media="screen, print" href="/+icing/rev419ba3bacb6daab6277d21076d6369a2b1ffe680/combo.css" /> <meta name="description" content="We need some basic community management tools in place. In addition to the new Admin Dashboard page, we need a slightly more detailed view on our patrons and anonymous editors, and some tools to help keep things under control. * All Admin pages should only be accessible to the Staff usergroup 1. ADMIN HOME Here's the mock-up of the Admin page: http://home.us.archive.org/~larthur/admin.html * It's main purpose is to give us an overview of activity on Open Library, and show trends over tim..." /> <meta property="og:description" content="We need some basic community management tools in place. In addition to the new Admin Dashboard page, we need a slightly more detailed view on our patrons and anonymous editors, and some tools to help keep things under control. * All Admin pages should only be accessible to the Staff usergroup 1. ADMIN HOME Here's the mock-up of the Admin page: http://home.us.archive.org/~larthur/admin.html * It's main purpose is to give us an overview of activity on Open Library, and show trends over tim..." /> <meta property="og:title" content="Bug #485080 “Admin tools” : Bugs : Open Library" /> <meta property="og:type" content="website" /> <meta property="og:image" content="/@@/launchpad-og-image.png" /> <meta property="og:url" content="https://bugs.launchpad.net/bugs/485080" /> <meta property="og:site_name" content="Launchpad" /> <script type="text/javascript"> var LP = { cache: {}, links: {} }; </script> <script type="text/javascript">var cookie_scope = '; Path=/; Secure; Domain=.launchpad.net';</script> <script type="text/javascript" src="/+combo/rev419ba3bacb6daab6277d21076d6369a2b1ffe680/?yui/yui/yui-min.js&amp;lp/meta.js&amp;yui/loader/loader-min.js"></script> <script type="text/javascript"> var raw = null; if (LP.devmode) { raw = 'raw'; } YUI.GlobalConfig = { combine: true, comboBase: '/+combo/rev419ba3bacb6daab6277d21076d6369a2b1ffe680/?', root: 'yui/', filter: raw, debug: false, fetchCSS: false, maxURLLength: 2000, groups: { lp: { combine: true, base: '/+combo/rev419ba3bacb6daab6277d21076d6369a2b1ffe680/?lp/', comboBase: '/+combo/rev419ba3bacb6daab6277d21076d6369a2b1ffe680/?', root: 'lp/', // comes from including lp/meta.js modules: LP_MODULES, fetchCSS: false } } }</script> <script type="text/javascript"> // we need this to create a single YUI instance all events and code // talks across. All instances of YUI().use should be based off of // LPJS instead. var LPJS = new YUI(); </script> <script id="base-layout-load-scripts" type="text/javascript"> //<![CDATA[ LPJS.use('base', 'node', 'console', 'event', 'oop', 'lp', 'lp.app.foldables','lp.app.sorttable', 'lp.app.inlinehelp', 'lp.app.links', 'lp.bugs.bugtask_index', 'lp.bugs.subscribers', 'lp.app.ellipsis', 'lp.code.branchmergeproposal.diff', 'lp.views.global', function(Y) { Y.on("domready", function () { var global_view = new Y.lp.views.Global(); global_view.render(); Y.lp.app.sorttable.SortTable.init(); Y.lp.app.inlinehelp.init_help(); Y.lp.activate_collapsibles(); Y.lp.app.foldables.activate(); Y.lp.app.links.check_valid_lp_links(); }); Y.on('lp:context:web_link:changed', function(e) { window.location = e.new_value; }); }); //]]> </script> <script id="base-helper-functions" type="text/javascript"> //<![CDATA[ // This code is pulled from lp.js that needs to be available on every // request. Pulling here to get it outside the scope of the YUI block. function setFocusByName(name) { // Focus the first element matching the given name which can be focused. var nodes = document.getElementsByName(name); var i, node; for (i = 0; i < nodes.length; i++) { node = nodes[i]; if (node.focus) { try { // Trying to focus a hidden element throws an error in IE8. if (node.offsetHeight !== 0) { node.focus(); } } catch (e) { LPJS.use('console', function(Y) { Y.log('In setFocusByName(<' + node.tagName + ' type=' + node.type + '>): ' + e); }); } break; } } } function selectWidget(widget_name, event) { if (event && (event.keyCode === 9 || event.keyCode === 13)) { // Avoid firing if user is tabbing through or simply pressing // enter to submit the form. return; } document.getElementById(widget_name).checked = true; } //]]> </script> <script type="text/javascript" id="available-official-tags-js">var available_official_tags = ["api", "ariel", "covers", "i18n", "language", "lending", "marc", "rdf", "search", "types", "works"];</script> <script type="text/javascript"> LPJS.use('base', 'node', 'oop', 'event', 'lp.bugs.bugtask_index', 'lp.bugs.subscribers', 'lp.code.branchmergeproposal.diff', 'lp.app.comment', 'lp.services.messages.edit', function(Y) { Y.on('domready', function() { Y.lp.code.branchmergeproposal.diff.connect_diff_links(); Y.lp.bugs.bugtask_index.setup_bugtask_index(); Y.lp.bugs.bugtask_index.setup_bugtask_table(); LP.cache.comment_context = LP.cache.bug; var cl = new Y.lp.app.comment.CommentList(); cl.render(); var sl = new Y.lp.bugs.subscribers.createBugSubscribersLoader({ container_box: '#other-bug-subscribers', subscribers_details_view: '/+bug-portlet-subscribers-details', subscribe_someone_else_link: '.menu-link-addsubscriber' }, window); Y.lp.services.messages.edit.setup(); }); }); </script> <style type="text/css"> /* Align the 'add comment' link to the right of the comment box. */ #add-comment-form textarea { width: 100%; } #add-comment-form { max-width: 60em; padding-bottom: 4em; } #add-comment-form .actions {float: right;} .buglink-summary dd { font-size: 10px; } a#privacy-link:link:hover, a#privacy-link:visited:hover {text-decoration:none;} </style> <style type="text/css"> .yui3-overlay .value label { /* It normally makes sense for form labels to be bold, but since this form consists only of radio buttons, there's nothing but labels so we just get wall-to-wall bold. */ font-weight: normal !important; } </style> </head> <body id="document" itemscope="" itemtype="http://schema.org/WebPage" class="tab-bugs main_side public yui3-skin-sam"> <div class="yui-d0"> <div id="locationbar" class="login-logout"> <div id="logincontrol"><a href="https://bugs.launchpad.net/openlibrary/+bug/485080/+login">Log in / Register</a></div> </div><!--id="locationbar"--> <div id="watermark" class="watermark-apps-portlet"> <div> <a href="https://launchpad.net/openlibrary"><img alt="" width="64" height="64" src="https://launchpadlibrarian.net/35799906/ol-launchpad.png" /></a> </div> <div class="wide"> <h2 id="watermark-heading"><a href="https://launchpad.net/openlibrary">Open Library</a></h2> </div> <!-- Application Menu --> <ul class="facetmenu"> <li class="overview"><a href="https://launchpad.net/openlibrary">Overview</a></li> <li class="branches"><a href="https://code.launchpad.net/openlibrary">Code</a></li> <li class="bugs active"><a href="https://bugs.launchpad.net/openlibrary">Bugs</a></li> <li class="specifications"><a href="https://blueprints.launchpad.net/openlibrary">Blueprints</a></li> <li class="translations"><a href="https://translations.launchpad.net/openlibrary">Translations</a></li> <li class="answers"><a href="https://answers.launchpad.net/openlibrary">Answers</a></li> </ul> </div> <div class="yui-t4"> <div id="maincontent" class="yui-main"> <div class="yui-b" dir="ltr"> <div class="context-publication"> <h1 id="edit-title"> <span class="yui3-editable_text-text ellipsis" style="max-width: 95%;"> Admin tools </span> </h1> <div id="registration" class="registering"> Bug #485080 reported by <a href="https://launchpad.net/~george-archive" class="sprite person">George</a> <time title="2009-11-18 23:06:10 UTC" datetime="2009-11-18T23:06:10.922922+00:00">on 2009-11-18</time> </div> </div> <div id="request-notifications"> </div> <div> <div id="bug-is-duplicate"> </div> <div style="float: right;"> <span><a href="/+help-bugs/bug-heat.html" target="help" class="sprite flame">6</a></span> </div> <div class="actions"> <span id="affectsmetoo" style="display: inline">This bug affects 1 person</span> </div> <table id="affected-software" class="listing"> <thead> <tr> <th colspan="2">Affects</th> <th>Status</th> <th>Importance</th> <th>Assigned to</th> <th>Milestone</th> </tr> </thead> <tbody> <tr class="highlight" id="tasksummary565622"> <td> </td> <td> <span id="bugtarget-picker-tasksummary565622"> <span class="yui3-activator-data-box"> <a class="sprite product" href="https://bugs.launchpad.net/openlibrary">Open Library</a> </span> <div class="yui3-activator-message-box yui3-activator-hidden"></div> </span> </td> <td style="width: 20%; vertical-align: middle"> <div class="status-content" style="width: 100%; float: left"> <span style="float: left" class="value statusCONFIRMED">Confirmed</span> </div> </td> <td style="width: 15em; vertical-align: middle"> <div class="importance-content" style="width: 100%; float: left"> <span style="float: left" class="value importanceHIGH">High</span> </div> </td> <td style="width:20%; margin: 0; padding: 0; vertical-align: middle; padding-left: 0.5em"> <span id="assignee-picker-tasksummary565622"> <span class="yui3-activator-data-box"> <a class="sprite person" href="https://launchpad.net/~noufal">Noufal Ibrahim</a> </span> <div class="yui3-activator-message-box yui3-activator-hidden"></div> </span> </td> <td style="width: 20%; vertical-align: middle"> <div class="milestone-content" style="width: 100%; float: left"> <a class="value" href="https://launchpad.net/openlibrary/+milestone/general-bucket">Open Library general-bucket</a> </div> </td> </tr> </tbody> </table> <div id="maincontentsub"> <div class="top-portlet"> <div itemprop="mainContentOfPage" class="report"> <div> <div class="lazr-multiline-edit" id="edit-description"> <div class="clearfix"> <h3>Bug Description</h3> </div> <div class="yui3-editable_text-text"><p>We need some basic community management tools in place.</p> <p>In addition to the new Admin Dashboard page, we need a slightly more detailed view on our patrons and anonymous editors, and some tools to help keep things under control.</p> <p>* All Admin pages should only be accessible to the Staff usergroup</p> <p>1. ADMIN HOME</p> <p>Here&#x27;s the mock-up of the Admin page:<br /> <a rel="nofollow" href="http://home.us.archive.org/~larthur/admin.html">http://<wbr />home.us.<wbr />archive.<wbr />org/~larthur/<wbr />admin.html</a></p> <p>* It&#x27;s main purpose is to give us an overview of activity on Open Library, and show trends over time at a glance.<br /> * Should display a graph of the number of edits per day (or, a count at least)<br /> * Should differentiate between human &amp; bot edits, logged-in humans &amp; not-logged in humans<br /> * Similarly, for new accounts, display a count of new accounts created per day, ideally in graph form as well<br /> * Time frames for comparison should be All Time, Last Month, Last Week, Yesterday, Today<br /> * Would be very nice if a % change could be calculated and displayed too.<br /> * We need a way to see often-edited items, because chances are, that&#x27;s where the action is<br /> &nbsp;&nbsp;&nbsp;* If a page has been edited more than 3 times in the last hour, it should show up on a list on this page, with a link to the page in question, and perhaps a note of the last edit and editor.<br /> * Would be good to show Raj&#x27;s Unique IP graph on this page too, just so we don&#x27;t have to look in 2 places<br /> * We should move edition/full text counts from current home page to this page. Having those numbers on the home page is a bit weird, and was only set up for Brewster, afaik. We can have him look here instead.</p> <p>2. PATRONS</p> <p>Here&#x27;s the mock: <a rel="nofollow" href="http://home.us.archive.org/~georgeo/upstream/admin-patrons.html">http://<wbr />home.us.<wbr />archive.<wbr />org/~georgeo/<wbr />upstream/<wbr />admin-patrons.<wbr />html</a></p> <p>* A more detailed list of patron activity, both logged in and anonymous<br /> * 2 lists:<br /> &nbsp;&nbsp;&nbsp;1. New accounts. Display, say 50. Show timestamp for creation, username, email address, link to public profile, link to Admin view and a count of # of edits so far.<br /> &nbsp;&nbsp;&nbsp;2. Recent Changes. Just the same list as you can see on <a rel="nofollow" href="http://upstream.openlibrary.org/recentchanges">http://<wbr />upstream.<wbr />openlibrary.<wbr />org/recentchang<wbr />es</a> except links point to Admin view</p> <p>3. PATRON ADMIN VIEW</p> <p>Here&#x27;s the mock: <a rel="nofollow" href="http://home.us.archive.org/~georgeo/upstream/admin-patrons-patron.html">http://<wbr />home.us.<wbr />archive.<wbr />org/~georgeo/<wbr />upstream/<wbr />admin-patrons-<wbr />patron.<wbr />html</a></p> <p>Need a way to provide support to people and take control of unruly users.</p> <p>* Show minimal account config information: username, last login, email address, IP, list of edits<br /> * Provide a way to change email address (for support)<br /> * Provide a way to reset password (for support)<br /> * Provide a way to block User&#x27;s IP address. (Not clear to me what the effect of this is from the user perspective.) Should include &quot;Are You Sure?&quot; alert before complying. If user&#x27;s IP has been blocked, we need a note here to that effect.<br /> &nbsp;&nbsp;* Can a user page have an ADMIN history??<br /> * Need a way to delete a user account. This should definitely be noted in an account&#x27;s history.</p> <p>Nice To Have:<br /> * Links from www.openlibrary through to this Admin View. Links must only show up for usergroup = staff<br /> * A search box you could use to find a username. Links go to 3. PATRON ADMIN page.</p></div> </div> </div> <div style="margin:-10px 0 20px 5px" class="clearfix"> </div> <div id="bug-tags"> <span id="tags-heading"> </span> <span id="tag-list"> </span> </div> <script type="text/javascript"> LPJS.use('event', 'node', 'lp.bugs.tags_entry', function(Y) { Y.on('domready', function(e) { Y.lp.bugs.tags_entry.setup_tag_entry( available_official_tags); }, window); }); </script> <div class="clearfix"></div> </div> <div id="branches-and-cves"> <div id="bug-branches-container" style="float: left"> </div><!-- bug-branch-container --> <div class="clearfix"></div> </div> <!-- branches and CVEs --> </div> <div> <div class="boardComment"> <div class="boardCommentDetails"> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> <time title="2009-11-18 23:06:26 UTC" datetime="2009-11-18T23:06:26.802316+00:00">on 2009-11-18</time> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>milestone</b>: </td> <td> none &#8594; upstream </td> </tr> <tr> <td style="text-align: right;"> <b>assignee</b>: </td> <td> nobody &#8594; webchickbot (webchickbot) </td> </tr> <tr> <td style="text-align: right;"> <b>importance</b>: </td> <td> Undecided &#8594; High </td> </tr> <tr> <td style="text-align: right;"> <b>status</b>: </td> <td> New &#8594; Confirmed </td> </tr> </table> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/1" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2009-11-25T22:42:00.358582+00:00" title="2009-11-25 22:42:00 UTC">on 2009-11-25</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/1"> #1</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Re: Unique IPs</p> <p>The numbers are uploaded here every day:<br /> <a rel="nofollow" href="http://www.archive.org/details/stats">http://<wbr />www.archive.<wbr />org/details/<wbr />stats</a></p> <p>They are in a file called numUniqueIPsOL.<wbr />sqlite. direct link to this file:<br /> <a rel="nofollow" href="http://www.archive.org/download/stats/numUniqueIPsOL.sqlite">http://<wbr />www.archive.<wbr />org/download/<wbr />stats/numUnique<wbr />IPsOL.sqlite</a></p> <p>If you have a hard time dealing with the sqlite db, you can convert it to text using this code:<br /> <a rel="nofollow" href="http://home.us.archive.org/~rkumar/git/gitweb.cgi?p=stats/.git;a=blob;f=sqlite2txt.py;hb=HEAD">http://<wbr />home.us.<wbr />archive.<wbr />org/~rkumar/<wbr />git/gitweb.<wbr />cgi?p=stats/<wbr />.git;a=<wbr />blob;f=<wbr />sqlite2txt.<wbr />py;hb=HEAD</a></p> <p>Hope that helps!<br /> -raj</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Re: Unique IPs The numbers are uploaded here every day: http://www.archive.org/details/stats They are in a file called numUniqueIPsOL.sqlite. direct link to this file: http://www.archive.org/download/stats/numUniqueIPsOL.sqlite If you have a hard time dealing with the sqlite db, you can convert it to text using this code: http://home.us.archive.org/~rkumar/git/gitweb.cgi?p=stats/.git;a=blob;f=sqlite2txt.py;hb=HEAD Hope that helps! -raj </textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/2" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2009-12-08T18:25:12.595979+00:00" title="2009-12-08 18:25:12 UTC">on 2009-12-08</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/2"> #2</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Hey. Not sure why I did the layout this way initially, but, now that I see it, the order of columns in the Members table on <a rel="nofollow" href="http://upstream.openlibrary.org/admin">http://<wbr />upstream.<wbr />openlibrary.<wbr />org/admin</a> should be reversed, so they start at &quot;Today&quot; and end with &quot;All Time&quot;.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Hey. Not sure why I did the layout this way initially, but, now that I see it, the order of columns in the Members table on http://upstream.openlibrary.org/admin should be reversed, so they start at "Today" and end with "All Time".</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/3" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-01-05T19:57:54.311152+00:00" title="2010-01-05 19:57:54 UTC">on 2010-01-05</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/3"> #3</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Priority is low, as long as Stats Bot is still chugging away.</p> <p>* Grand totals in the tables aren&#x27;t updating.<br /> * Flickr API call is busted</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Priority is low, as long as Stats Bot is still chugging away. * Grand totals in the tables aren't updating. * Flickr API call is busted</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>assignee</b>: </td> <td> webchick (webchick) &#8594; Anand Chitipothu (anandology) </td> </tr> <tr> <td style="text-align: right;"> <b>importance</b>: </td> <td> High &#8594; Low </td> </tr> <tr> <td style="text-align: right;"> <b>milestone</b>: </td> <td> upstream &#8594; upstream-to-www </td> </tr> </table> </div> </div> <div class="boardComment"> <div class="boardCommentDetails"> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> <time title="2010-01-07 23:44:54 UTC" datetime="2010-01-07T23:44:54.514188+00:00">on 2010-01-07</time> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>importance</b>: </td> <td> Low &#8594; Wishlist </td> </tr> </table> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/4" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-03-08T23:09:20.844552+00:00" title="2010-03-08 23:09:20 UTC">on 2010-03-08</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/4"> #4</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <ul style="margin-bottom: 1em"> <li class="download-attachment"> <a href="https://bugs.launchpad.net/openlibrary/+bug/485080/+attachment/1187658/+files/admin-user-tools.png" class="sprite download-icon">admin-user-tools.png</a> <a class="sprite edit action-icon" href="/openlibrary/+bug/485080/+attachment/1187658">Edit</a> (292.9 KiB, image/png) </li> </ul> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Anand - as we approach the soft launch, having these Admin Tools in place moves up the priority chain.</p> <p>I&#x27;d like you to work on the first iteration of these tools as soon as possible.</p> <p>To begin, we need the ability to:<br /> 1. BAN AN IP ADDRESS from making any more edits, and ideally<br /> 2. REVERT ALL EDITS per IP</p> <p>- If someone comes to the site with a banned IP address, the EDIT button should either not work, or be hidden<br /> - Reverting all edits should revert back to the last edit not made by that IP</p> <p>Case in point: <a rel="nofollow" href="http://upstream.openlibrary.org/recentchanges?ip=87.101.146.203">http://<wbr />upstream.<wbr />openlibrary.<wbr />org/recentchang<wbr />es?ip=87.<wbr />101.146.<wbr />203</a></p> <p>It would be most convenient if ADMINS ONLY could see these two options as buttons on the Recent Changes by IP page, as per the attached mockup. We should probably add an Are You Sure check as well.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Anand - as we approach the soft launch, having these Admin Tools in place moves up the priority chain. I'd like you to work on the first iteration of these tools as soon as possible. To begin, we need the ability to: 1. BAN AN IP ADDRESS from making any more edits, and ideally 2. REVERT ALL EDITS per IP - If someone comes to the site with a banned IP address, the EDIT button should either not work, or be hidden - Reverting all edits should revert back to the last edit not made by that IP Case in point: http://upstream.openlibrary.org/recentchanges?ip=87.101.146.203 It would be most convenient if ADMINS ONLY could see these two options as buttons on the Recent Changes by IP page, as per the attached mockup. We should probably add an Are You Sure check as well.</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>importance</b>: </td> <td> Wishlist &#8594; High </td> </tr> </table> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/5" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-03-08T23:26:10.004224+00:00" title="2010-03-08 23:26:10 UTC">on 2010-03-08</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/5"> #5</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>And:</p> <p>- Consider making these admin actions detached from Admin performing the action. IE, make the history note read &quot;Adminstrator&quot; instead of George, and don&#x27;t show these Admin tasks on George&#x27;s page. (Could make staff a target for trouble.)</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">And: - Consider making these admin actions detached from Admin performing the action. IE, make the history note read "Adminstrator" instead of George, and don't show these Admin tasks on George's page. (Could make staff a target for trouble.)</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/6" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-03-08T23:45:14.955687+00:00" title="2010-03-08 23:45:14 UTC">on 2010-03-08</time><span class="editable-message-last-edit-date">: </span> <a href="/openlibrary/+bug/485080/comments/6"> <strong>Re: Block IP / Revert edits</strong> </a> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/6"> #6</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <ul style="margin-bottom: 1em"> <li class="download-attachment"> <a href="https://bugs.launchpad.net/openlibrary/+bug/485080/+attachment/1187745/+files/admin-user-tools-history.png" class="sprite download-icon">admin-user-tools-history.png</a> <a class="sprite edit action-icon" href="/openlibrary/+bug/485080/+attachment/1187745">Edit</a> (7.0 KiB, image/png) </li> </ul> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>it would also be good if reversions set at this level (all reverted by administrators) didn&#x27;t appear in the Around the Library chunk at the bottom. Draws unnecessary attention to problematic edits.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">it would also be good if reversions set at this level (all reverted by administrators) didn't appear in the Around the Library chunk at the bottom. Draws unnecessary attention to problematic edits.</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td style="text-align: right;"> <b>summary</b>: </td> <td> - New Administration Screens<br />+ Block IP / Revert edits </td> </tr> </table> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/7" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~anandology" class="sprite person">Anand Chitipothu (anandology)</a> wrote <time itemprop="commentTime" datetime="2010-03-15T07:29:32.005158+00:00" title="2010-03-15 07:29:32 UTC">on 2010-03-15</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/7"> #7</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Added code to hide reverts from around-the-library.</p> <p>Implemented minimal support for blocking IP Addresses.</p> <p><a rel="nofollow" href="http://upstream.openlibrary.org/admin/block">http://<wbr />upstream.<wbr />openlibrary.<wbr />org/admin/<wbr />block</a></p> <p>Block your IP address and try to edit any book to test this.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Added code to hide reverts from around-the-library. Implemented minimal support for blocking IP Addresses. http://upstream.openlibrary.org/admin/block Block your IP address and try to edit any book to test this.</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/8" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-03-24T19:29:36.535007+00:00" title="2010-03-24 19:29:36 UTC">on 2010-03-24</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/8"> #8</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Block IP should not show up in Recent Changes. Even though the /admin/block page is permission-<wbr />controlled, the fact that we block IPs should not be public knowledge.</p> <p>Anand - when can you complete this as spec&#x27;d ?</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Block IP should not show up in Recent Changes. Even though the /admin/block page is permission-controlled, the fact that we block IPs should not be public knowledge. Anand - when can you complete this as spec'd ?</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/9" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~anandology" class="sprite person">Anand Chitipothu (anandology)</a> wrote <time itemprop="commentTime" datetime="2010-03-25T04:22:02+00:00" title="2010-03-25 04:22:02 UTC">on 2010-03-25</time><span class="editable-message-last-edit-date">: </span> <a href="/openlibrary/+bug/485080/comments/9"> <strong>Re: [Bug 485080] Re: Block IP / Revert edits</strong> </a> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/9"> #9</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>On 25-Mar-10, at 12:59 AM, George wrote:</p> <p><span class="foldable-quoted">&gt; Block IP should not show up in Recent Changes. Even though the<br /> &gt; /admin/block page is permission-<wbr />controlled, the fact that we block IPs<br /> &gt; should not be public knowledge. </span></p> <p>As I mentioned earlier, the backend was designed to keep everything<br /> world-readable.</p> <p>For now, I changed the recentchanges template to hide add /admin/<br /> changes.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10"> On 25-Mar-10, at 12:59 AM, George wrote: &gt; Block IP should not show up in Recent Changes. Even though the &gt; /admin/block page is permission-controlled, the fact that we block IPs &gt; should not be public knowledge. As I mentioned earlier, the backend was designed to keep everything world-readable. For now, I changed the recentchanges template to hide add /admin/ changes.</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/10" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~lance-arthur" class="sprite person">Lance Arthur (lance-arthur)</a> wrote <time itemprop="commentTime" datetime="2010-03-26T16:38:41.472905+00:00" title="2010-03-26 16:38:41 UTC">on 2010-03-26</time><span class="editable-message-last-edit-date">: </span> <a href="/openlibrary/+bug/485080/comments/10"> <strong>Re: Block IP / Revert edits</strong> </a> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/10"> #10</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>I don&#x27;t think block IPs is working, at least in this case:<br /> <a rel="nofollow" href="http://upstream.openlibrary.org/recentchanges?ip=65.242.84.75">http://<wbr />upstream.<wbr />openlibrary.<wbr />org/recentchang<wbr />es?ip=65.<wbr />242.84.<wbr />75</a></p> <p>I blocked that IP on Wednesday, and on Friday he/she was still at it.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">I don't think block IPs is working, at least in this case: http://upstream.openlibrary.org/recentchanges?ip=65.242.84.75 I blocked that IP on Wednesday, and on Friday he/she was still at it.</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/11" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-03-26T21:15:13.626424+00:00" title="2010-03-26 21:15:13 UTC">on 2010-03-26</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/11"> #11</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Anand - pls make this your critical bug.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Anand - pls make this your critical bug.</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>importance</b>: </td> <td> High &#8594; Critical </td> </tr> </table> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/12" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~edwardbetts" class="sprite person">Edward Betts (edwardbetts)</a> wrote <time itemprop="commentTime" datetime="2010-03-26T22:21:06.264859+00:00" title="2010-03-26 22:21:06 UTC">on 2010-03-26</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/12"> #12</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>IPs are blocked on upstream, not yet on production.</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">IPs are blocked on upstream, not yet on production.</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/13" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-03-27T00:56:05.000913+00:00" title="2010-03-27 00:56:05 UTC">on 2010-03-27</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/13"> #13</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>Argh. Thanks for the pointer, Edward. The sooner we can transition to WWW, the better!</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">Argh. Thanks for the pointer, Edward. The sooner we can transition to WWW, the better!</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>importance</b>: </td> <td> Critical &#8594; High </td> </tr> </table> </div> </div> <div class="boardComment"> <div class="boardCommentDetails"> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> <time title="2010-03-29 22:25:02 UTC" datetime="2010-03-29T22:25:02.056718+00:00">on 2010-03-29</time> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>milestone</b>: </td> <td> upstream-to-www &#8594; general-bucket </td> </tr> </table> </div> </div> <div class="boardComment"> <div class="boardCommentDetails"> <a href="https://launchpad.net/~edwardbetts" class="sprite person">Edward Betts (edwardbetts)</a> <time title="2010-07-27 18:26:49 UTC" datetime="2010-07-27T18:26:49.954739+00:00">on 2010-07-27</time> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td style="text-align: right;"> <b>summary</b>: </td> <td> - Block IP / Revert edits<br />+ Admin tools </td> </tr> </table> </div> </div> <div xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://schema.org/UserComments" class="boardComment editable-message " data-baseurl="/openlibrary/+bug/485080/comments/14" data-i-can-edit="False"> <div class="boardCommentDetails"> <div class="message-revision-container"> <div class="message-revision-container-header"> <span>Revision history for this message</span> <img src="/+icing/build/overlay/assets/skins/sam/images/close.gif" class="message-revision-close" /> </div> <script type="text/template"> <div class='message-revision-item'> <div class='message-revision-title'> <a class="sprite remove action-icon message-revision-del-btn"> Remove </a> <a class="js-action"> Revision #{revision}, created at {date_created_display} </a> </div> <div class='message-revision-body'>{content}</div> </div> </script> <div class="message-revision-list"></div> </div> <table> <tbody> <tr> <td> <a href="https://launchpad.net/~george-archive" class="sprite person">George (george-archive)</a> wrote <time itemprop="commentTime" datetime="2010-08-31T15:54:57.287417+00:00" title="2010-08-31 15:54:57 UTC">on 2010-08-31</time><span class="editable-message-last-edit-date">: </span> </td> <td> </td> <td> </td> <td class="bug-comment-index"> <a itemprop="url" href="/openlibrary/+bug/485080/comments/14"> #14</a> </td> </tr> </tbody> </table> </div> <div class="boardCommentBody"> <div class="editable-message-body"> <div class="comment-text editable-message-text" itemprop="commentText"><p>IP Blocking requirements:</p> <p>- add wildcard IPs, like 202.23.56.*</p> <p>CAPTCHA</p> <p>- only to anonymous edits<br /> - add captcha to any pages edited anonymously 3 times in the last 8 hours</p></div> </div> <div class="editable-message-form" style="display: none"> <textarea style="width: 100%" rows="10">IP Blocking requirements: - add wildcard IPs, like 202.23.56.* CAPTCHA - only to anonymous edits - add captcha to any pages edited anonymously 3 times in the last 8 hours</textarea> <input type="button" value="Update" class="editable-message-update-btn" /> <input type="button" value="Cancel" class="editable-message-cancel-btn" /> </div> </div> </div> <div class="boardComment"> <div class="boardCommentDetails"> <a href="https://launchpad.net/~anandology" class="sprite person">Anand Chitipothu (anandology)</a> <time title="2011-01-21 12:10:32 UTC" datetime="2011-01-21T12:10:32.905455+00:00">on 2011-01-21</time> </div> <div class="boardCommentActivity"> <table class="bug-activity"> <tr> <td colspan="2">Changed in openlibrary: </td> </tr> <tr> <td style="text-align: right;"> <b>assignee</b>: </td> <td> Anand Chitipothu (anandology) &#8594; Noufal Ibrahim (noufal) </td> </tr> </table> </div> </div> <div style="float: right;"> <a class="menu-link-activitylog" href="https://bugs.launchpad.net/openlibrary/+bug/485080/+activity">See full activity log</a> </div> <div class="clearfix"></div> <div align="center" id="add-comment-login-first"> To post a comment you must <a href="+login?comments=all">log in</a>. </div> </div><!-- class="top-portlet" --> </div><!--- id="maincontentsub"--> <div> <div id="duplicate-form-container"></div> <div id="privacy-form-container"></div> </div> </div> </div><!-- yui-b --> </div><!-- yui-main --> <div id="side-portlets" class="yui-b side"> <div id="involvement" class="portlet"> <ul class="involvement"> <li class="single"> <a class="sprite bugs" href="/openlibrary/+filebug"> Report a bug </a> </li> </ul> </div> <div id="privacy" class="first portlet public"> <div id="privacy-text"> <span id="information-type-summary" class="sprite public">This report contains <strong id="information-type">Public</strong> information </span>&nbsp; <div id="information-type-description" style="padding-top: 5px">Everyone can see this information. </div> </div> </div> <div id="portlet-actions" class="portlet vertical"> <ul id="duplicate-actions"> </ul> <ul id="lock-status-actions"> </ul> </div> <div class="portlet vertical" id="portlet-subscription"> <div class="section"> <div id="current_user_subscription" class="False"> <span>You are</span> <a class="menu-link-subscription sprite modify edit" href="/openlibrary/+bug/485080/+subscribe"> not directly subscribed to this bug's notifications. </a> </div> <div id="sub-unsub-spinner">Subscribing...</div> <ul> <li><a class="menu-link-editsubscriptions sprite modify edit" href="https://bugs.launchpad.net/openlibrary/+bug/485080/+subscriptions" title="View and change your subscriptions to this bug">Edit bug mail</a></li> </ul> </div> <script type="text/javascript"> LPJS.use('io-base', 'node', 'lp.bugs.bugtask_index.portlets.subscription', function(Y) { Y.on('domready', function() { Y.lp.bugs.bugtask_index.portlets.subscription.initialize(); }); }); </script> </div> <div class="portlet vertical" id="portlet-subscribers"> <h2>Other bug subscribers</h2> <div> <div><a class="menu-link-addsubscriber sprite add" href="https://bugs.launchpad.net/openlibrary/+bug/485080/+addsubscriber" title="Launchpad will email that person whenever this bugs changes">Subscribe someone else</a></div> </div> <div id="other-bug-subscribers"></div> </div> <div class="portlet" id="portlet-attachments"> <h2>Bug attachments</h2> <ul> <li class="download-attachment"> <a href="https://bugs.launchpad.net/openlibrary/+bug/485080/+attachment/1187658/+files/admin-user-tools.png" class="sprite download-icon">admin-user-tools.png</a> <a class="sprite edit action-icon" title="Change attachment details" href="/openlibrary/+bug/485080/+attachment/1187658">Edit</a> </li> <li class="download-attachment"> <a href="https://bugs.launchpad.net/openlibrary/+bug/485080/+attachment/1187745/+files/admin-user-tools-history.png" class="sprite download-icon">admin-user-tools-history.png</a> <a class="sprite edit action-icon" title="Change attachment details" href="/openlibrary/+bug/485080/+attachment/1187745">Edit</a> </li> </ul> <ul> <li> <a class="sprite add" href="/openlibrary/+bug/485080/+addcomment">Add attachment</a> </li> </ul> </div> <div class="portlet" id="portlet-watches"> <h2>Remote bug watches</h2> <ul> </ul> <p>Bug watches keep track of this bug in other bug trackers.</p> </div> </div><!-- yui-b side --> </div><!-- yui-t4 --> <div id="footer" class="footer"> <div class="lp-arcana"> <div class="lp-branding"> <a href="https://launchpad.net/"><img src="/@@/launchpad-footer-logo.svg" alt="Launchpad" width="65" height="18" /></a> &nbsp;&bull;&nbsp; <a href="https://launchpad.net/+tour">Take the tour</a> &nbsp;&bull;&nbsp; <a href="https://help.launchpad.net/">Read the guide</a> &nbsp; <form id="globalsearch" method="get" accept-charset="UTF-8" action="https://launchpad.net/+search"> <input type="search" id="search-text" name="field.text" /> <input type="image" src="/@@/search" style="vertical-align:5%" alt="Search Launchpad" /> </form> </div> </div> <div class="colophon"> &copy; 2004 <a href="http://canonical.com/">Canonical&nbsp;Ltd.</a> &nbsp;&bull;&nbsp; <a href="https://launchpad.net/legal">Terms of use</a> &nbsp;&bull;&nbsp; <a href="https://www.ubuntu.com/legal/dataprivacy">Data privacy</a> &nbsp;&bull;&nbsp; <a href="/feedback">Contact Launchpad Support</a> &nbsp;&bull;&nbsp; <a href="http://blog.launchpad.net/">Blog</a> &nbsp;&bull;&nbsp; <a href="https://canonical.com/careers">Careers</a> &nbsp;&bull;&nbsp; <a href="https://ubuntu.social/@launchpadstatus">System status</a> <span id="lp-version"> &nbsp;&bull;&nbsp; 419ba3b (<a href="https://dev.launchpad.net/">Get the code!</a>) </span> </div> </div> </div><!-- yui-d0--> <script id="json-cache-script">LP.cache = {"related_features": {}, "bug": {"self_link": "https://bugs.launchpad.net/api/devel/bugs/485080", "web_link": "https://bugs.launchpad.net/bugs/485080", "resource_type_link": "https://bugs.launchpad.net/api/devel/#bug", "id": 485080, "private": false, "information_type": "Public", "name": null, "title": "Admin tools", "description": "We need some basic community management tools in place.\n\nIn addition to the new Admin Dashboard page, we need a slightly more detailed view on our patrons and anonymous editors, and some tools to help keep things under control.\n\n* All Admin pages should only be accessible to the Staff usergroup\n\n1. ADMIN HOME\n\nHere's the mock-up of the Admin page:\nhttp://home.us.archive.org/~larthur/admin.html\n\n* It's main purpose is to give us an overview of activity on Open Library, and show trends over time at a glance.\n* Should display a graph of the number of edits per day (or, a count at least)\n* Should differentiate between human \u0026 bot edits, logged-in humans \u0026 not-logged in humans\n* Similarly, for new accounts, display a count of new accounts created per day, ideally in graph form as well\n* Time frames for comparison should be All Time, Last Month, Last Week, Yesterday, Today\n* Would be very nice if a % change could be calculated and displayed too.\n* We need a way to see often-edited items, because chances are, that's where the action is\n * If a page has been edited more than 3 times in the last hour, it should show up on a list on this page, with a link to the page in question, and perhaps a note of the last edit and editor.\n* Would be good to show Raj's Unique IP graph on this page too, just so we don't have to look in 2 places\n* We should move edition/full text counts from current home page to this page. Having those numbers on the home page is a bit weird, and was only set up for Brewster, afaik. We can have him look here instead.\n\n2. PATRONS\n\nHere's the mock: http://home.us.archive.org/~georgeo/upstream/admin-patrons.html\n\n* A more detailed list of patron activity, both logged in and anonymous\n* 2 lists: \n 1. New accounts. Display, say 50. Show timestamp for creation, username, email address, link to public profile, link to Admin view and a count of # of edits so far.\n 2. Recent Changes. Just the same list as you can see on http://upstream.openlibrary.org/recentchanges except links point to Admin view\n\n3. PATRON ADMIN VIEW\n\nHere's the mock: http://home.us.archive.org/~georgeo/upstream/admin-patrons-patron.html\n\nNeed a way to provide support to people and take control of unruly users.\n\n* Show minimal account config information: username, last login, email address, IP, list of edits\n* Provide a way to change email address (for support)\n* Provide a way to reset password (for support)\n* Provide a way to block User's IP address. (Not clear to me what the effect of this is from the user perspective.) Should include \"Are You Sure?\" alert before complying. If user's IP has been blocked, we need a note here to that effect. \n * Can a user page have an ADMIN history??\n* Need a way to delete a user account. This should definitely be noted in an account's history. \n\nNice To Have:\n* Links from www.openlibrary through to this Admin View. Links must only show up for usergroup = staff\n* A search box you could use to find a username. Links go to 3. PATRON ADMIN page.", "owner_link": "https://bugs.launchpad.net/api/devel/~george-archive", "bug_tasks_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/bug_tasks", "duplicate_of_link": null, "date_created": "2009-11-18T23:06:10.922922+00:00", "activity_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/activity", "subscriptions_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/subscriptions", "date_last_updated": "2011-01-21T12:10:34.281911+00:00", "who_made_private_link": null, "date_made_private": null, "heat": 6, "bug_watches_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/bug_watches", "cves_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/cves", "vulnerabilities_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/vulnerabilities", "duplicates_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/duplicates", "attachments_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/attachments", "security_related": false, "latest_patch_uploaded": null, "tags": [], "date_last_message": "2010-08-31T15:54:57.287417+00:00", "number_of_duplicates": 0, "message_count": 15, "users_affected_count": 1, "users_unaffected_count": 0, "users_affected_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/users_affected", "users_unaffected_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/users_unaffected", "users_affected_count_with_dupes": 1, "other_users_affected_count_with_dupes": 1, "users_affected_with_dupes_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/users_affected_with_dupes", "messages_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/messages", "lock_status": "Unlocked", "lock_reason": null, "linked_branches_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/linked_branches", "linked_merge_proposals_collection_link": "https://bugs.launchpad.net/api/devel/bugs/485080/linked_merge_proposals", "http_etag": "\"5c02b79e259f815724469b04e0e27ffda6673d27-b24dd963d5b64395061798a1ec47094b02dfafd4\""}, "subscribers_portlet_url_data": {"web_link": "https://bugs.launchpad.net/bugs/485080", "self_link": "https://bugs.launchpad.net/api/devel/bugs/485080"}, "total_comments_and_activity": 31, "initial_comment_batch_offset": 41, "first visible_recent_comment": -26, "bugtask_data": {"565622": {"id": 565622, "row_id": "tasksummary565622", "form_row_id": "task565622", "bugtask_path": "/openlibrary/+bug/485080", "prefix": "openlibrary", "targetname": "Open Library", "bug_title": "Admin tools", "assignee_value": "noufal", "assignee_is_team": false, "assignee_vocabulary": "AllUserTeamsParticipation", "assignee_vocabulary_filters": [], "hide_assignee_team_selection": true, "user_can_unassign": false, "user_can_delete": false, "delete_link": "https://bugs.launchpad.net/openlibrary/+bug/485080/+delete", "target_is_product": true, "status_widget_items": [{"name": "Confirmed", "value": "Confirmed", "description": "Verified by someone other than the reporter.\n", "description_css_class": "choice-description", "style": "", "help": "", "disabled": false, "css_class": "statusCONFIRMED"}], "status_value": "Confirmed", "importance_widget_items": "[]", "importance_value": "High", "milestone_widget_items": "[]", "milestone_value": "https://bugs.launchpad.net/api/devel/openlibrary/+milestone/general-bucket", "user_can_edit_assignee": false, "user_can_edit_milestone": false, "user_can_edit_status": false, "user_can_edit_importance": false}}, "information_type_data": {"PUBLIC": {"value": "PUBLIC", "description": "Everyone can see this information.\n", "name": "Public", "order": 0, "is_private": false, "description_css_class": "choice-description"}, "PUBLICSECURITY": {"value": "PUBLICSECURITY", "description": "Everyone can see this security related information.\n", "name": "Public Security", "order": 1, "is_private": false, "description_css_class": "choice-description"}, "PRIVATESECURITY": {"value": "PRIVATESECURITY", "description": "Only the security group can see this information.\n ", "name": "Private Security", "order": 2, "is_private": true, "description_css_class": "choice-description"}, "USERDATA": {"value": "USERDATA", "description": "Only shared with users permitted to see private user information.\n", "name": "Private", "order": 3, "is_private": true, "description_css_class": "choice-description"}}, "bug_is_private": false, "context": {"self_link": "https://bugs.launchpad.net/api/devel/openlibrary/+bug/485080", "web_link": "https://bugs.launchpad.net/openlibrary/+bug/485080", "resource_type_link": "https://bugs.launchpad.net/api/devel/#bug_task", "bug_link": "https://bugs.launchpad.net/api/devel/bugs/485080", "milestone_link": "https://bugs.launchpad.net/api/devel/openlibrary/+milestone/general-bucket", "status": "Confirmed", "status_explanation": null, "importance": "High", "importance_explanation": null, "assignee_link": "https://bugs.launchpad.net/api/devel/~noufal", "bug_target_display_name": "Open Library", "bug_target_name": "openlibrary", "bug_watch_link": null, "date_assigned": "2009-11-18T23:06:33.092650+00:00", "date_created": "2009-11-18T23:06:10.922922+00:00", "date_confirmed": "2009-11-18T23:06:46.116179+00:00", "date_incomplete": null, "date_in_progress": null, "date_closed": null, "date_left_new": "2009-11-18T23:06:46.116179+00:00", "date_triaged": null, "date_fix_committed": null, "date_fix_released": null, "date_left_closed": null, "owner_link": "https://bugs.launchpad.net/api/devel/~george-archive", "target_link": "https://bugs.launchpad.net/api/devel/openlibrary", "title": "Bug #485080 in Open Library: \"Admin tools\"", "related_tasks_collection_link": "https://bugs.launchpad.net/api/devel/openlibrary/+bug/485080/related_tasks", "is_complete": false, "http_etag": "\"ec96fc407d3c4f72c1b5a2f2cc62c7130c74eb49-3f79d842adbe7e5749e7b3d0a93f81811bf0d128\""}};</script> </body> <!-- Facet name: bugs Page type: main_side Has global search: True Has application tabs: True Has side portlets: True At least 46 queries/external actions issued in 0.47 seconds Features: {'profiling.enabled': None, 'hard_timeout': '9000', 'app.mainsite_only.canonical_url': None, 'js.yui_version': None, 'app.maintenance_message': None, 'bugs.affected_count_includes_dupes.disabled': None, 'baselayout.careers_link.disabled': None, 'visible_render_time': None} r419ba3b --> </html>

Pages: 1 2 3 4 5 6 7 8 9 10