Editing Other's Comments Only By Moderators

edit

sometimes it's needed to allow users to write and edit their own posts. not the other users. only moderators should move, edit all users posts. Douglas Januvia Lawyers Blog

"How To" questions

edit

display on main page

edit

how to display recent threads on the main page or inside an article?

install Extension:RSS and use this code:

Extension:RSS -- Error: "http://www.yourdomain.com/wiki/api.php?action=query&list=threads&thpage=Talk:Main_page&format=xml" is not in the list of allowed feeds. The allowed feeds are as follows: https://wikimediafoundation.org/news/feed/, https://wikimediafoundation.org/category/technology/feed/, https://wikimediafoundation.org/category/technology/mediawiki/feed/, https://discourse-mediawiki.wmflabs.org/c/ask-here.rss, https://codeclimate.com/github/wikimedia/mediawiki-extensions-CentralNotice/feed.atom, https://codeclimate.com/github/wikimedia/mediawiki-extensions-DonationInterface/feed.atom, https://codeclimate.com/github/wikimedia/wikimedia-fundraising-crm/feed.atom, https://codeclimate.com/github/wikimedia/wikimedia-fundraising-dash/feed.atom, https://codeclimate.com/github/wikimedia/wikimedia-fundraising-php-queue/feed.atom, https://codeclimate.com/github/wikimedia/wikimedia-fundraising-SmashPig/feed.atom and https://codeclimate.com/github/wikimedia/wikimedia-fundraising-tools/feed.atom. i don't know how to display threads from all articles.but you can limit the number by &limit=5

Installing

edit

Does anyone know what this second step of installation actually means or how do you complete this: thanks

Add the required tables to the database: cd into the extensions/LiquidThreads directory and run mysql -u[put your username here] -p [put your database name here] < lqt.sql on a shell, replacing thing such as [put your username here] with the appropriate values.

There is an explanation in the README-File which comes with the extension:
2. Add database tables from lqt.sql using the sql.php MediaWiki tool.
(On Unix, if the current directory is the MediaWiki root directory, you can
say "php maintenance/sql.php extensions/LiquidThreads/lqt.sql".)
If you haven't created the AdminSettings.php file, you will have to do that
first; see Manual:AdminSettings.php
Alternatively, you can run lqt.sql manually (you can use the command
"mysql -u $USER -p -e 'source lqt.sql'" on Unix), but you might have to
edit it first, and replace the /*$wgDBprefix*/ and /*$wgDBTableOptions*/
strings with the corresponding settings.
it also works with Windows
15:19, 22 June 2010 (UTC)~

Default header

edit

Does anyone know how to add a default header to Liquid Threads? Also, I would like to use a different headers for different name spaces.

Appreciate anyone that can provide suggestions. Onejimb 23:09, 9 February 2009 (UTC)Reply

Custom MW installation?

edit

Does this extension require custom changes to core MediaWiki code?

Because the extension uses a LinkerMakeLinkObj hook that doesn't seem to exist. --Juliano 17:36, 21 February 2009 (UTC)Reply

Error on Reply?

edit

Anyone know why I might be getting this error when replying to a new thread?

LiquidThreads\classes\LqtHistoricalThread.php on line 22 PHP Notice: Trying to get property of non-object in C:\Inetpub\wwwroot\mywikipedia\extensions\LiquidThreads\classes\LqtHistoricalThread.php on line 23 PHP Notice: Trying to get property of non-object in C:\Inetpub\wwwroot\mywikipedia\extensions\LiquidThreads\classes\LqtHistoricalThread.php on line 24 PHP Notice: Trying to get property of non-object in C:\Inetpub\wwwroot\mywikipedia\extensions\LiquidThreads\classes\LqtHistoricalThread.php on line 27 PHP Warning: Invalid argument supplied for foreach() in C:\Inetpub\wwwroot\mywikipedia\extensions\LiquidThreads\classes\LqtHistoricalThread.php on line 27 PHP Fatal error: Call to a member function id() on a non-object in C:\Inetpub\wwwroot\mywikipedia\extensions\LiquidThreads\classes\LqtHistoricalThread.php on line 46

I rem'd out lines 22-24...

$this->changeUser = $t->changeUser;
$this->changeUserText = $t->changeUserText;
$this->editedness = $t->editedness;

...and that got rid of those lines of the error but lines 27 and 46 seemed a bit more serious to remark out. I then thought that especially line 46 might have meant I skipped a step in the install but I don't think I did. The install didn't say I needed to run the lqt-schema-change-X.sql files that are in the download set but maybe something else is missing from the DB. I would love to use LiquidThreads because it is so much better than DiscussionThreading --Jepeneter 22:11, 26 February 2009 (UTC)Reply

I reported the problem but it seams that nobody cears about it (bugzilla:17553) --DaSch 16:59, 28 February 2009 (UTC)Reply

Hi, got the same problem and fixed it thus:
  • Comment out lines 215 and 216 in LqtBaseView.php
  • Replace $t->replies with $this->replies in classes/LqtHistoricalThread.php
  • Insert
    if (!$tmt) { return; }
    
    in the same file after line 42
  • Insert
    if (!$thread) { return; }
    
    in classes/LqtThread.php after line 106
Hope this will resolve your problem.
Janek
Resolved. thx --87.234.245.52 09:53, 17 February 2010 (UTC)Reply

--

Resolved for me, too. MediaWiki 1.15.3
Also, line 215/216 for me in LqtBaseView.php looked like:
$tmp_title = $thread->topmostThread()->title();
$tmp_title->setFragment( '#' . LqtView::anchorName( $thread ) );
and line 42 in LqtHistoricalThread.php looked like
$tmt = $t->topmostThread();
and line 106 of LqtThread.php looked like
// TODO this is ludicrously inefficient.
as a reference in case you aren't sure you are inserting into the right spots. --Sxtynnmach1 16:03, 19 July 2010 (UTC)Reply



Patches for LQT 1.2 in MW 1.15.3

edit

If you use the "download snaphot" link and specify MW 1.15, you get LQT v1.2. I got it to work applying the above four patches (see "Resolved for me, too. MediaWiki 1.15.3" and the hints above and below that line). However I needed one more because Special:Recentchanges threw an error concerning a call to

static function customizeOldChangesList( &$changeslist, &$s, &$rc )

saying "value specified but reference expected". It turns out that the "wrong" call is issued from ./includes/ChangesList.php Line 439

wfRunHooks( 'OldChangesListRecentChangesLine', array(&$this, &$s, &$rc) );  # used to be $rc but that crashes

which is MW core. Changes to core code will be nulled on the next upgrade but for the moment this patch helped. --BRFR 22:20, 3 February 2011 (UTC)Reply



How to activate LQT v1.2 only on those talk pages explicitely specified, rather than all talk pages

edit

It seems that LQT in MW below 1.16 affects all(!) talk pages, not only those designated by the magic word '#useliquidthreads'. In fact, this magic word is not registered and not recognised at all. That's my observation with LQT v1.2 in MW 1.15.3, and it was confirmed in an enquiry to the Support Desk.

I inspected the code and found static function tryPage() in ./extensions/LiquidThreads/LqtBaseView.php. It starts near line 100. That function establishes if LQT should fire on a given page or not. It checks a number of conditions where the first one is

if ( $title->isTalkPage() ) {
    // yes, fire LQT and return
} else if ( other tests ) {
    // etc
}

You can modify the first test to limit LQT to one or a few selected talk pages. The next example is the dirtiest way to do that, but it shows the principle. Don't try this at home, though, better to use a page title (or list of titles) that you can manage in a custom message in the Mediawiki namespace.

if ( $title->isTalkPage() && $title->getNamespace() == 1 && $title->getText() == 'Forum-like Wiki Page' ) {

Sorry wasn't logged in when writing this initially ... --BRFR 23:06, 14 February 2011 (UTC)Reply

Quoting form main article page?

edit

I wonder whether there is an easy way of quoting a sentence/paragraph from the main article page and comment on that article in LQT, with that sentence/paragraph displayed on the LQT page as well. Also, can the fact that some sentence/paragraph is quoted on LQT page be reflected on the main article page? --Liyf 04:22, 6 March 2009 (UTC)Reply

edit

Not sure why. I've installed LQT on a internal servrer, and it's acting a bit funny. i got MW1.12. maybe i've installed the wrong version, but i did overwrite it with the correct version now. however - the bug is weird - the links to the threads in the main page are not working. i get the message "There is currently no text in this page, you can search for this page title in other pages or edit this page." - which is for nonexistent pages. Also - the link in the Recent Changes list is to "...index.php/:Discussion" - no wonder it's not working. Just wondering why that may be and maybe if anyone has good ideas regarding how to approach this issue.

thanks in advance.

We're having the same problem, also an internal server. Details here:
Installed Software
Product Version
MediaWiki 1.15.3
PHP 5.1.6 (apache2handler)
MySQL 5.0.77


Installed Extension
CategoryTree (Version r48218) Dynamically navigate the category structure Daniel Kinzler
Replace Text (Version 0.8) Provides a special page to allow administrators to do a global string find-and-replace on all the content pages of a wiki Niklas Laxström and Yaron Koren
Parser hooks
Calendar (Version v3.8.4 (9/15/2009)) MediaWiki Calendar Eric Fortin
CategoryTree (Version r48218) Dynamically navigate the category structure Daniel Kinzler
ParserFunctions (Version 1.1.1) Enhance parser with logical functions Tim Starling
Other
LDAP Authentication Plugin (Version 1.2b (alpha)) LDAP Authentication plugin with support for multiple LDAP authentication methods Ryan Lane
Any advice would be appreciated
-- Applicationswhisperer 19:27, 14 December 2010 (UTC)Reply

corresponding Thread: article not deleted (MW 1.14)

edit

Deleting the thread does not delete the corresponding Thread: article, which is a problem when spammers create threads.

A patch which seems to work (tested only once as of this writing) -- after this line in LqtPages.php function handlePost():

$this->thread->delete($reason);

add the following lines:

$objArticle = new Article($this->thread->title());
$objArticle->doDelete('Thread is being deleted');

Hope this is helpful. --Woozle 11:40, 27 April 2009 (UTC)Reply

Update: Even with that patch, spam threads were still leaving traces. Also, for some reason spammers found OpenThreads particularly attractive -- mostly just irrelevant stuff, rarely any links (which the spam filter generally intercepts), but clearly not real people -- and it became too much of a nuisance to maintain, so I had to disable it. --Woozle 11:24, 13 June 2009 (UTC)Reply

what is the status of liquid threads?

edit

does it work? Can it be used by other wikis?

--Stmrlbs 04:04, 12 June 2009 (UTC)Reply

  • It is getting better and better. Should be usable, and if you report bugs, they may even get fixed.
  • Actually, it is. With the code in a worse state than it is now.
So please use it, and report whatever isn't going right or may be missing. siebrand 14:51, 13 June 2009 (UTC)Reply
I would like to suggest it to a friend who set up a wiki, as something more user friendly than the normal wiki discussion page. But, is there a sample discussion that I can show him? I looked at the educator's site, and I couldn't find any discussions (a comment, or 2, but no discussions).--Stmrlbs 09:04, 16 June 2009 (UTC)Reply
Here are a few ones : http://fr.wikimini.org/wiki/Discuter:Accueil (written by children in french)
My experiense with this Extension were very bad. I used it for a long time in my wiki[1] but there were many bug and the developers did not fix them. So and the end I deleted the Extension from my system and I do not thing I'll put it back. --DaSch 08:06, 18 June 2009 (UTC)Reply

Editing posts

edit

Does this still allow people to edit others' posts? While that may work in Wiki-threads, it may be worse in Liquidthreads where posts are clearly delineated. Would a system in which users are only allowed to DELETE others' posts (while giving a legitimate reason) work? It would be noted in the history, and it would be possible to revert the changes if the user was abusing it.--Zxcvbnm 05:53, 13 July 2009 (UTC)Reply

delete thread is not working

edit

When I try to delete a thread, I get the following errors in my Mediawiki 1.15.0:

Warning: Invalid argument supplied for foreach() in /home/bluewater-info/public_html/wiki/extensions/LiquidThreads/classes/LqtHistoricalThread.php on line 27

Fatal error: Call to a member function id() on a non-object in /home/bluewater-info/public_html/wiki/extensions/LiquidThreads/classes/LqtHistoricalThread.php on line 46

Does anyone know a solution? --Tkrueger73 14:28, 20 August 2009 (UTC)Reply

I'm having the same issue on MediaWiki version 1.15.1 --Lhridley 16:01, 12 February 2010 (UTC)Reply

Cannot reply to posted threads (MW 1.15.1)

edit

I get this error when you try to reply to a posted thread (post LQT installation, and in a new thread created after):

Warning: Invalid argument supplied for foreach() in /var/www/w/extensions/LiquidThreads/classes/LqtHistoricalThread.php on line 27

Fatal error: Call to a member function id() on a non-object in /var/www/w/extensions/LiquidThreads/classes/LqtHistoricalThread.php on line 46

Using MW 1.15.1 and the latest non-SVN version (via the selector I chose MW 1.15). The SVN version I can't try to see if it solves the problem, as it complains about no magic word useliquidthreads (something like that).

Actually, I can't delete new threads, or perform other actions, just make new threads. Looking up earlier i the line I see some similar errors - why are these not considered bugs?

Problem verified, same issue, MediaWiki 1.15.1 and LiquidThreads 2.0. To me it looks like the statement in the Readme "has bugs, unstable" still is true.
Same problem --74.167.38.9 18:55, 22 February 2010 (UTC)Reply
I have this issue as well. MediaWiki 1.15.3 --Sxtynnmach1 15:41, 19 July 2010 (UTC)Reply

Magic word 'useliquidthreads' not found

edit

got internal error straight after required_once line added. I set "$wgShowExceptionDetails = true;" as the instructions showed, refresh the page again, the message was "Magic word 'useliquidthreads' not found." Please advise. 203.82.79.109 14:46, 14 November 2009 (UTC)Reply

Sorry, took a reference from post above and downloaded the snapshot. it's successfully installed now, let see how it's going. 203.82.79.109 14:46, 14 November 2009 (UTC)Reply


Problems to start a new discussion (MW 1.16alpha)

edit

I have just installed the latest Version of LiquidThreads via SVN and everything seemed to be ok (databases are installed and Special:Version shows the extension). When I start a new discussion the box appears. But when pressing 'save' the following error message appears:

Fatal error: Call to a member function getAnchorName() on a non-object in ../extensions/LiquidThreads/classes/View.php on line 1503

I'm using MW 1.16alpha as suggested.

Any idea? Thanks for support! Greetings --Filburt 18:10, 16 March 2010 (UTC)Reply

It's working now - I changed the order of the extensions in LocalSettings.php and cleared the cache, LiquidThreads is now included as first extension. Probably it was a variable conflict with another extension. --Filburt 12:15, 17 March 2010 (UTC)Reply
Ok, after it was working for a while the error again appears. I made no changes in LocalSettings.php It's confusing :-( Any idea? Thanks a lot --Filburt 15:42, 17 March 2010 (UTC)Reply
I'm seeing this error as well. Jlerner 12:48, 5 April 2010 (UTC)Reply
I can get it to work consistently by including both a Subject and some message, and I can get it to fail consistently by including a Subject with no message. Are you guys seeing that, or does it just fail regardless? I can block the exception by checking for !$thread before letting $thread->getAnchorName() run, but then it ignores my subject. I'm good with that, what I really want is to make the message area mandatory so it won't try leaving without it. --Skew 20:53, 6 November 2010 (UTC)Reply

How do the user avatars work?

edit

Unfortunately there is no information besides that avatars are possible. Could you please give a short instruction how to integrate user avatars?

Thanks a lot --Filburt 13:17, 17 March 2010 (UTC)Reply

I don't think avatars have been implemented, rather "avatars are possible" means they can be implemented at a later date. Nx 21:13, 12 April 2010 (UTC)Reply
edit

I was wondering if there is a way to change the Thread titles in the Contents, at the top of a LiquidThreads talk page, into a link to the thread itself.

Because, if a thread (or threads) were to get too large, it might make the page look messy.

Smile Lee 07:47, 18 April 2010 (UTC)--Smile Lee 07:47, 18 April 2010 (UTC)Reply

Liquid Threads and power users

edit

Hi, I'm an admin on two projects and would like to know how one will be able to follow discussion on high traffic pages with LQT? I need (!) to be informed about everything that happens within ten, fifteen or even thirty three threads over thirty, a hundred twenty or in extreme cases over 400 versions of not one but a two digit number of high traffic pages, most of which I only read and rarely contribute to. So far I simply use a huge diff and scroll down. This allows me to fade out everything static (= read before). Will this be possible in some way or other with LQT? From what I have seen at the strategic planning wiki and else where, LQT if designed to make it easy to contribute for newbies. But please recognize that the power users need(!) to be able to follow all the stuff that happens. Has LQT been tested on high traffic pages with several hundred edits a day? --H-stt 13:28, 18 April 2010 (UTC)Reply

Comment rating

edit

Does this extension allow for comment rating or will it be implemented at some point? GoEThe 17:09, 4 May 2010 (UTC)Reply

Liquid Threads breaks Recent Changes?

edit

We've installed LiquidThreads on our wiki (1.5.2). We have done the following to the basic install:

  • We substituted for /*$wgDBprefix*/ and /*$wgDBTableOptions*/ in lqt.sql in order to run it from Unix
  • In order to make replies / deletion work, we did the following:

Replaced $t->replies with $this->replies in classes/LqtHistoricalThread.php and Inserted 'if (!$tmt) { return; }' after line 42# Inserted 'if (!$thread) { return; }' in classes/LqtThread.php after line 106

Even before making the changes to LqtHistoricalThread.php and LqtThread.php, once we actually used the extension to add things to the talk pages, we found that it would break the RecentChanges Special page. It would load blank, with no text on the page at all. Recent Changes work while LT is installed, but break as soon as we create any threads.

Any idea what the problem is? It is otherwise a basic installation.

--Aekki99 00:33, 24 May 2010 (UTC)Reply

Recent Changes also breaks in MW 1.16alpha. the error message is: Fatal error: Call to protected method ChangesList::insertTimestamp() from context 'LqtHooks' in /extensions/LiquidThreads/classes/Hooks.php on line 31 Barabum 17:36, 26 May 2010 (UTC)Reply

Recent Changes doesn't work since LiquidThread was added - it shows: "Internal Error - Detected bug in an extension! Hook LqtDispatch::customizeOldChangesList failed to return a value; should return true to continue hook processing or false to abort." (I have the Backtrace if needed). --Nelu 15:45, 28 June 2010 (UTC)Reply

To fix this, comment out " $wgHooks['OldChangesListRecentChangesLine'][] = 'LqtDispatch::customizeOldChangesList';" in LiquidThreads.php

"tryParserCache() expected to be a reference" message

edit

LiquidThreads 1.2 in MediaWiki 1.15.1, going from the Main Page to Discussion shows lines of errors on the top of the screen, "under" the page. The message appears 2 times: "Warning: Parameter 1 to OutputPage::tryParserCache()expected to be a reference, value given in C:\..\mediawiki\includesStubObject.php on line 58" (I cut some of the path). The"garbage" doesn't appear if the discussion is just starting (empty page). Any ideas about what happens? --Nelu 18:18, 23 June 2010 (UTC)Reply

Add $wgEnableParserCache = CACHE_NONE to LocalSettings.php. It's Probably an error in LqtBaseView.php.

Issues with upgrade from 1.15 to 1.16 versions

edit

After anupgrade to MW1.16, creating new threqads or new replies to existing threads did not work anymore.

I tried upgrading LQT to the latest version, first SVN and then to the latest snapshot available for 1.16.

Both resulted in two issues that hopefully are related.

1- What is the best way to migrate the database schema ? I manually applied the schema changes in order to be able to run the maintenance script. After the script ran without error, none of my threads were visible in my talk pages (they are still in the database but not on the pages). Is there something else I need to do to complete the migration ?

2- If I try to post a new thread, the AJAX post just hangs there and nothing happens. I can't tell at this point if it is because of an incomplete upgrade of the schema or because my site is using NTLM authentication (which is known to block some AJAX updates). Is it possible to make the AJAX post optional ?

- Laurent Alquier

I have the same problem? How can i fix it?

Czech Wikipedia

edit

We are thinking about enabling LT for selected pages on the Czech Wikipedia. Please help on how to achieve this. Thanks.--Kozuch 12:02, 31 July 2010 (UTC)Reply

can not work with 15.x

edit

I downloaded current snapshot for mw15.x LiquidThreads-MW1.15-r48763.tar.gz, but have no luck to make it work. I tried it with 15.4 and 15.5, even with new installed system, but none worked. It reported "Undefined property: stdClass::$thread_summary_page..." error. I tried mw16.0 with 16.x snapshot, it worked fine. But since my site use many other extensions, I may not upgrade my mw system now. Somebody please help fix the old LiquidThreads.

Wikieditor

edit

On the LiquidThreads laboratory, I had no problem with the editor(the new vector version). But when I try it on mine, it is the old editor, can anyone help?? Hydriz 13:52, 26 October 2010 (UTC)Reply

Solution: LiquidThreads within a symlinked environment

edit

Running MW1.16 I encountered the problem that while the main installation worked flawlessly, the symlinked installations didn't: LQT didn't save anything, always got an internal server error.

This can be fixed by removing the symbolic link of api.php in the main directory of the derived installs. Instead you have to copy api.php physically to the root directory of the derived installations.

EmailAlerts for new threads?

edit

Does any of you know if there's a way to get emailalerts whenever a new thread is added to a page that is watched?

I know that I can watch already existing threads, but I would like to monitor the entire discussionpage (small site)..

Can't see comments on Ubuntu 10.10 in FF 3.6.xx

edit

Just installed this on my wiki and it looks great! The only problem is that so far I can see the comments (or get them to load I suppose) on Ubuntu 10.10 under FF 3.6.xx. I can see them under FF 3.6.xx on WinXp, however, so I'm not sure what's going on. I see the 'Show Replies' link and when I click it I see the the spinner comes up. Firebug shows me I am getting a JSON response, but I can't seem to see the same asynchronous requests occurring on the WinXP Firebug. Suggestions on what more I can do to debug and get you useful info?
My wiki is running on 1.16.x and this only appears to happen on my wiki. I checked some of the examples you provided and click 'Show Replies' works fine.
~Cburton1 -- Nov 8th 2010

Moved from main page:

Comments/feedback

edit

I assume this section is where I can write my feedback?

  1. Old talk pages are not migrated into the new system.
    That sucks, but it's not an easy problem to solve.
  2. Does 'you have new messages' still work?
    Yes.
  3. if enotif is installed, can user be notified by email whenever a new topic or comment is added on a discussion page of a page included in his watch list and/or answers a comment of his?
  4. What about moderation? There doesn't seem to be any way to delete abusive, obscene, off-topic or spam comments. Will that function be available to admins and bureaucrats?
  5. What is the purpose of letting posts be editable by other users? No other forum software does anything like that and I fail to see its utility. It's a recipe for edit wars. Yes, the edit history is available, but users should not have to go through histories in order to see if words attributed to a user were in fact inserted by someone else. If a post is signed by a user, which is automatically done in LiquidThreads, it should be editable only by that user.

Search of WikiEducator Google Group discussions

edit

User comments

edit
  • LQT (James Neill, WikiEducator)

Adamtheclown 05:48, 17 November 2010 (UTC)Reply

#1071 - Specified key was too long

edit

Hi there,

I find that I can't upgrade my MySQL schema, as the call to create the thread table throws this error:

  1. 1071 - Specified key was too long; max key length is 1000 bytes

The offending bit of code is: INDEX thread_article_title (thread_article_namespace, thread_article_title, thread_sortkey)

If I remove that, the table and the rest of the schema is created successfully.

I'm on MySQL 5.0.67, and collation is set to utf8_general_ci.

Any advice is appreciated.

I am also having this issue MSQL v.5.1.50 same collation as above
Posted as a bug on bugzilla -bugzilla:26517

FCKeditor and LiquidThreads

edit

Can anybody tell how to enable the FCKeditor to work with LiquidThreads replies and new subjects? I have the extension install and working fine with MW 1.16, under the cavendish mod skin. Everything is great, except that when I enable liquidthreads, the FCKeditor doesn't appear there.

Fatal Error

edit

After Installing LiquidThreads, I added a test thread to the discussion section of a page. The rotating progress circle continued to animate while I was typing the comment, and a second one appeared after I clicked save.

After a few minutes of waiting, I closed the window and reopen the wiki. Going back to the discussion section of the same page, I'm greeted with a blank page. After forcing PHP debug through LocalSettings.php, I see the following:

Fatal error: Call to undefined function array_fill_keys() in /var/www/wiki/extensions/LiquidThreads/classes/Thread.php on line 659

Which points to this line of code:

$restrictionRows = array_fill_keys( $pageIds, array() );

Any idea what is causing this error and how I could possibly resolve it?

Return to "LiquidThreads/Archive 2" page.