From: Jeff D. <da...@da...> - 2000-07-28 05:28:36
|
In message <Pin...@bo...>,Steve Wai nstead writes: > >Jeff, I'm adding things to PhpWikiBrainstorm and I'm wondering.. is it >easy to store the diffs instead of the whole pages? And would it be hard >to iterate through the diffs and reconstitute version 5 of a page that's >up to version 7? 10? 30? My guess is that you definitely don't want to apply 100 patches to go back 100 versions --- I'm sure that would take a while. Applying 10 patches is probably fine as long as they're reasonable size. Now that I've thought about it awhile I don't think you'd want to store exclusively diffs. I think small diffs should be stored as diffs. For bigger diffs (the storage gains are smaller compared the speed loss) and one might as well just store the whole page. Probably there should be some limit on the diff chain length as well. >I know we want to store all versions of a page for safety reasons, and I'm >wrangling with what the user interface should look like. I'm a bit embarrassed to admit it but I've continued hacking here off and on for the past week, and have gotten PhpWiki to a totally unrecognizable state. Now, in my home version I've: Redone the database interface comepletely. I've added support for multiple archived versions. The links table (MySQL) is now used for proper and quick backlinks searches. Of course it's object oriented. The schema are all changed. MySQL and DBM backends are both working. Then I started worrying about the user interface too. (What I've done so far is add a history page --- much like the info page, but more compact --- which lists versions, dates, authors, and has links to views and diffs of each version.) Writing all these pages and links was giving me template headaches so I started working on a new template scheme. First I tried PHPlib's templates --- which I think have some good ideas --- but wasn't happy. I'm pretty happy with what I've got now. Almost all of the HTML and I think all of the output text is in the templates now. The templates support conditional chunks of output and loops. So I'm not sure any of the original (meaning 1.1.7!) code remains in my version. As I said, I'm a bit embarrassed. I certainly don't want to take over your project. However, you're more than welcome to my code. Let me know your level of interest. I can either check it into the CVS, either in the jeffs_hacks branch, or some other new branch. Or I get a tar file to you. Note that tables are in the jeffs_hacks-branch of the CVS already. The syntax (copied from some Wiki --- I can't remember which at the moment is || column 1 text || column 2 text || column 3 text |{ left aligned text || centered text |} right aligned text Jeff Another interesting idea I've put into my home hacks is to do away with the admin page. Instead one can browse the Wiki in admin mode (through admin.php3 instead of index.php3). It's identical to normal mode, except there is a button on each page to lock/unlock it, (and you can edit locked pages). The admin page is replaced by a regular Wiki page. There are special tokens like %%WikiZip%% (analagous to %%Search%%) which produce a button which will get you a zip archive. (There's a %%Login%% button which will switch you to browsing through admin.php3, or you could do it by just manually entering the url.) |
From: Steve W. <sw...@wc...> - 2000-07-28 16:09:39
|
On Fri, 28 Jul 2000, Jeff Dairiki wrote: > Once (if) the code is working, I see reason to let paranoia be the motivation > for saving whole pages. I think some criteria like: > > if ( ( [number of lines in diff] < [number of lines in page] / FACTOR ) > || ( version % INTERVAL != 0 ) ) > [Save diff] > else > [Save whole page] > > would work fine. Simple solution. Hard to read though ;-) > >Sure, check it into your hacks branch... I checked it out a couple of days > >ago but was unable to make it work. I like the new switch:case in > >index.php3. > > Why wouldn't it work? Any ideas? Yes: Syntax error on line 286 of wiki_renderlib.php3. I tried to figure out why it thought so but in the 5 minutes I spent it just didn't want to instantiate any objects for some reason. (Line 286 has a call to new for some class and the method has a comment in the param list). > I could take them or leave them personally. I added it is an example > extension module. The idea is that table support (or whatever) can be > added by including a extension module in wiki_config. (Same thing for > inline HTML.) Inline images could be done the same way. I see. Sounds neat! > Speaking of which, another way to handle the inline image idea > is to allow <IMG> tags within the page. (They would have to be parsed > enough to make sure the URL's in them were sane.) Hrmm. In the direction you are going, would it be possible to let the Wiki admin: * choose classic Wiki markup * choose extended Wiki markup * choose basic HTML * or create their own markup as the markup language, when the Wiki is first set up? I wouldn't want to allow them to choose all of them necessarily, if it means conflicts and parsing headaches. > Yes this would require both account and session information to be stored in > the database, but would be straightforward enough. Then one would have the > hooks for other fancy features like "mail me a note whenever this page > changes". People have asked for that, and I think they will be less than happy if the Wiki is really active and they get flooded... for low activity Wikis I think that's fine, and I'd email the whole page plus the diff and a link to edit the page, drawing them back into the Wiki. > And when and if you (all) give the word I'm happy to be the one to merge my > hacks back into the main branch. (Either all of them or some of them.) I'll buy you a beer someday :-) sw ...............................ooo0000ooo................................. Hear FM quality freeform radio through the Internet: http://wcsb.org/ home page: www.wcsb.org/~swain |
From: Steve W. <sw...@wc...> - 2000-07-28 14:07:39
|
On Thu, 27 Jul 2000, Jeff Dairiki wrote: > My guess is that you definitely don't want to apply 100 patches to go back > 100 versions --- I'm sure that would take a while. Applying 10 patches is > probably fine as long as they're reasonable size. > > Now that I've thought about it awhile I don't think you'd want to store > exclusively diffs. I think small diffs should be stored as diffs. For bigger > diffs (the storage gains are smaller compared the speed loss) and one might > as well just store the whole page. Probably there should be some limit on > the diff chain length as well. I've thought along similar lines; there must be a reasonable scheme where every 10th page is whole and the rest are diffs, or author "commits" are diffs but changes between authors are stored as whole pages. > I'm a bit embarrassed to admit it but I've continued hacking here off and > on for the past week, and have gotten PhpWiki to a totally unrecognizable > state. > > Now, in my home version I've: > > Redone the database interface comepletely. I've added support for > multiple archived versions. The links table (MySQL) is now used for > proper and quick backlinks searches. Of course it's object oriented. > The schema are all changed. MySQL and DBM backends are both working. > Then I started worrying about the user interface too. (What I've done so > far is add a history page --- much like the info page, but more compact --- > which lists versions, dates, authors, and has links to views and diffs of > each version.) too cool! > Writing all these pages and links was giving me template headaches so > I started working on a new template scheme. First I tried PHPlib's templates > --- which I think have some good ideas --- but wasn't happy. I'm pretty > happy with what I've got now. Almost all of the HTML and I think all > of the output text is in the templates now. The templates support > conditional chunks of output and loops. > > So I'm not sure any of the original (meaning 1.1.7!) code remains in > my version. As I said, I'm a bit embarrassed. I certainly don't want to > take over your project. However, you're more than welcome to my code. Nah, don't be embarassed! It sounds like you've added some great things. I'd love to see it all in action. > Let me know your level of interest. I can either check it into the CVS, > either in the jeffs_hacks branch, or some other new branch. Or I get > a tar file to you. Sure, check it into your hacks branch... I checked it out a couple of days ago but was unable to make it work. I like the new switch:case in index.php3. > Note that tables are in the jeffs_hacks-branch of the CVS already. > The syntax (copied from some Wiki --- I can't remember which at the moment > is > > || column 1 text || column 2 text || column 3 text > |{ left aligned text || centered text |} right aligned text I guess one cannot hold back the tide ;-) > Another interesting idea I've put into my home hacks is to do away with the > admin page. Instead one can browse the Wiki in admin mode (through admin.php3 > instead of index.php3). It's identical to normal mode, except there is > a button on each page to lock/unlock it, (and you can edit locked pages). This is the best idea yet. It makes great sense and it would greatly reduce the amount of code we have! I wish I'd thought of it. What I want to add eventually is something on the level of a mailing list's authentication: user fills out registration (just a name and email address), a password is mailed to the account, and the user can optionally change it down the road. This simple access allows them to edit pages. A lot of people are sqeamish about using Wikis because they think the pages will be erased and filled with uuencoded warez and pr0n. With version control and auth, they have some peace of mind. I can't speak for Arno but if all of my code is replaced, I could care less (I will just contribute more) because I want PhpWiki to be the best designed, easiest to install and most featureful Wiki out there, and I want you and Arno to get all the credit for your work! I only wish you would have made more stingent demands to objectify pagehash and the database, and I would have listened (or should have?) because I want my codevelopers to be happy... instead of forking the code... but it's never too late :-) sw ...............................ooo0000ooo................................. Hear FM quality freeform radio through the Internet: http://wcsb.org/ home page: www.wcsb.org/~swain |