Options -> Build pages off of a template\n+++[message]>\nDisable debug mode if you do not want to display errors on screen browser\n2008-04-01 16:04:35\nError: Unable to load decoration-1 for page 462896297 (# 256)\nError in line 800 of file /var/www/elgg_9/mod/folio/object/page.php\nScript: /elgg_9/mod/folio/html/view.php\n===\n\n!!!8 April: \nBackup database and remove "shouts". Then create new page:\nSystem waits a long time, then:\n>{{{Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/elgg_9/lib/adodb/adodb.inc.php on line 889}}}\n!!!Tweak\nWent to Administration : Configuration and set Max file size to 1000 . No units are given so I have no idea whether this is bytes, Kb, Mb or whatever. Did a save and then went to Your Pages. Error message:\n>{{{Notice: Trying to get property of non-object in /var/www/elgg_9/mod/folio/lib.php on line 500}}}\n(this may be a consequence of 'shouts' not being there.)\nClick Create new page:\n>{{{Notice: Trying to get property of non-object in /var/www/elgg_9/mod/folio/lib.php on line 500}}}\n>{{{Warning: Cannot modify header information - headers already sent by (output started at /var/www/elgg_9/mod/folio/lib.php:500) in /var/www/elgg_9/mod/folio/html/new.php on line 140}}}\nwent ahead and tried to create a new page:\n>{{{Notice: Trying to get property of non-object in /var/www/elgg_9/mod/folio/lib.php on line 500}}}\n>{{{Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/elgg_9/mod/folio/object/page.php on line 349}}}\nChecked database table elggusers and file_quota (bytes) set to 1000000000 for each user, so no problem there. But may want to reduce this in future. See [[disable upload conversation|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=837]]\n\n\n\n
Checked out new changeset from svn:\n<<<\nU devel/mod/file/lib/files_actions.php\nU devel/mod/community/lib/community_membership_check.php\nU devel/mod/elggadmin/lib/engine.inc.php\nU devel/auth/ldap/lib.php\nChecked out revision 1575.\n<<<\n[[Changes in devel [1571:1575]|http://elgg.org/trac/changeset?new=devel%401575&old=devel%401571]]\nCopy changed files into the elgg root and overwrite.\n
Try to get Blogthis in Diigo to work with EC Blogs. Great interface. Also add tag cloud code to Eduspaces blog:\n<<<\n<script type="text/javascript" src="http://www.diigo.com/roll2/linkrolls?username=markpea&count=10&style=customize&icon=true&l_type=0&t_color=0000FF&t_fam=Arial,sans-serif&t_size=14&t_bold=true&t_italic=false&t_underline=false&i_fam=Verdana,sans-serif&i_color=663300&i_size=10&i_bold=false&i_italic=false&i_underline=false&bg_color=FFFFFF&bg_repeat=no-repeat&title=Diigo%20bookmarks&tags=moodle&bg_img=" ></script><noscript><a href="http://www.diigo.com/user/markpea" >Diigo bookmarks</a></noscript>\n<<<
!!Mods to barnabas server\nNote : need to use sudo to do all these (permissions/ownership)\n# /var/www/moodle/config.php. Change //159.28.7.34// to //barnabas.lly.earlham.edu//\n# /etc/php5/apache2/php.ini. Change //upload_max_filesize// to 32M and //post_max_size// to 32M\n# add line to crontab with {{{crontab -e}}}\n** {{{*/10 * * * * wget -q -O /dev/null http://barnabas.lly.earlham.edu/moodle/admin/cron.php}}}\n# restart apache : {{{sudo apache2ctl restart}}}\n\n\n
!!Eveniks and Morninks I get these Warninks :-)\n(A reference to an old advert on British telly ...)\nSituation:\n* elgg 0.8 production. $CFG->debug = 7; in config.php\n* Post new entry : edit post (access restriction : Private)\n* Warning message:\n<<<\n"Warning: in_array() [function.in-array]: Wrong datatype for second argument in /var/www/elgg/mod/blog/lib/weblogs_posts_edit.php on line 36\nWarning: in_array() [function.in-array]: Wrong datatype for second argument in /var/www/elgg/mod/blog/lib/weblogs_posts_edit.php on line 36"\n<<<\n* Save post works and warning goes away\nPosted to [[Running Elgg : Forum|http://elgg.org/mod/forum/forum_view_thread.php?post=1049]]\nGot +++[this reply]>\n-- a/mod/blog/lib/weblogs_posts_edit.php Sat May 19 22:55:18 2007 -0400\n++ b/mod/blog/lib/weblogs_posts_edit.php Sat May 19 23:04:27 2007 -0400\n@@ -33,7 +33,7 @@ if(array_key_exists($extensionContext,$C\nif ($tags = get_records_select('tags',"tagtype = ? and ref = ? and owner = ?",array('weblog',$post->ident,$_SESSION['userid']),'tag ASC')) {\n$first = true;\nforeach($tags as $key => $tag) {\n- if(!in_array($tag->tag,$extraValue) && trim($tag->tag)!=$extraType){\n+ if(is_array($extraValue) && !in_array($tag->tag,$extraValue) && trim($tag->tag)!=$extraType){\nif (empty($first)) {\n$keywords .= ", ";\n}\n===\n----\n\n
!!Switch sites from elgg.barnabas to blogs.barnabas\n# {{{cd /etc/apache2/sites-available/}}}\n# copy the vhosts file {{{sudo cp elgg.barnabas blogs.barnabas}}}\n# edit it to change 'elgg.barnabas' to 'blogs.barnabas' but still point to /var/www/elgg {{{sudo pico blogs.barnabas}}}\n# Disable the 'elgg.barnabas' redirect {{{sudo a2dissite elgg.barnabas}}} @@Site elgg.barnabas disabled; run /etc/init.d/apache2 reload to fully disable.@@\n# Enable 'blogs.barnabas' {{{sudo a2ensite blogs.barnabas}}}. Now, run /etc/init.d/apache2 reload to enable.\n# {{{sudo /etc/init.d/apache2 reload}}}\n!!Reconfigure Elgg\n# change front page : \n** change dir {{{cd /var/www/elgg/mod/template/templates/Default_Template}}}\n** edit the //frontpage_loggedout// page which is displayed by default {{{sudo pico frontpage_loggedout}}}\n** edit //frontpage_loggedin// in the same way\n# the main css file is called simply //css//. Change all occurrences of "elgg.lly.earlham.edu" to "blogs.lly.earlham.edu"\n
Apply patch for [[ticket #327|http://elgg.org/trac/ticket/327]] //elggadmin fails with "duh!"//\nDownload [[engine.inc.php|http://elgg.org/trac/attachment/ticket/327/engine.inc.php?format=raw]] and copy into mod/elggadmin/lib (after doing a diff to check that all was hunky dory).\n----\n!Update\nAfter discovering the correct location for download the latest svn code ([[SVN on Barnabas]] and [[Elgg version strangeness]] and [[More on Elgg versioning]]) I decided to do a complete reinstall using the SVN code (1571 changeset) since this has fixed a lot of bugs. Will also attempt to apply the patches as they come along.\nSo copy config.php and .htaccess to /home/markp/elgg/0.9.1, delete /var/www/elgg_9 and mv ~/markp/sandbox/devel to /var/www/elgg_9 and restore the config.php and htaccess.\n\nSo I did ''not'' restore the config.php or .htaccess. Instead I followed the directions from the [[installation guide|http://elgg.org/mod/mediawiki/wiki/index.php/Installation_guide]] and did {{{sudo chmod 777 data}}} and {{{sudo chmod 666 config.php}}}. And guess what, when I logged in to http://barnabas.lly.earlham.edu/elgg_9 it all worked as per the documentation. Ie I could get to the Configuration Manager and set some options.\n!!!Note\nYou do need to click 'View all options' to see ''all'' the settings to configure but I was unable to change the wwwroot, dirroot and data root. However, all the default settings were correct.\nAlso do {{{sudo vim /etc/crontab}}} and add \n{{{30 * * * * /usr/bin/wget -O - -q http://barnabas.lly.earlham.edu/elgg_9/cron.php}}}\n
!! Session about ELS\n4 students in Judi Hetrick's Journalism II class. Sarah Scanlon, & Mandi Rice were new to ELS but picked it up quickly. Chris Matlack was not there and Fredrico Rojas I helped out.\nJudi created a community ('Future of News') but accidentally put it into blogs@barnabas (+++[note to self]>\nUnmake the 'blogs.barnabas' URL. Done. Redo the front page of barnabas.elgg. Done===)\nShe redid the community and the students joined community.\nTheir assignment was to copy and paste their piece into a blog posting and then write a summary in the community blog with a link to the individual article. Worked well.\nNext time Folio?
Ana Cornide (Spanish) wants to do blogging with her [[SPAN352:200810 - Hispanic Short Story|https://moodle.earlham.edu/course/view.php?id=357]] class. There are 14 students in the class and we'll add the names manually.\n* She's having them view a film and then make comments in their blog. Also add comments to other's blogs.\n* All students should add each other as Friends, then it's easy to access their blog\n## Search : People - type in second name : Go\n## Name should come up in ''Matched users and communities''\n## click on name\n## click //Click here to add this user as a friend.//\n## To approve go to //Your Network// , click //Friendship requests// and approve.\n* assignment entered into moodle, student responses into blog\n!!To be Sussed\n* Tagging. Get students to tag with the name of the film. ? Can you get an RSS feed for that tag?\n** Tagging plugin. What does it do?\n* Spanish keyboard. How to use on Mac
From Kevin Jardine's description +++[text]>\nI have just uploaded an Elgg 0.9 version of my Access extension plugin to SVN.\n\nFor those who are unfamiliar with this, basically it adds the concepts of friends and enemies to the Elgg access system.\n\nBecause of the way Elgg 0.9 access control works, I needed to rename it to z_acsext to make sure that it is the last plugin manipulating access controls. (It doesn't have to be the last plugin, just the last one that manipulates the Elgg access control SQL string - ordinary plugins don't do that anyway.)\n\nNote that this won't work unless you have the latest version of Elgg from SVN. The latest version appears to have fixed the nasty access control bug in Elgg 0.9.\n\nHere's the text from the README.txt:\n\nThis module extends the Elgg access system. It adds a "Friends"\noption to Elgg access control select boxes, and a "Block this person"\nlink to every sidebar, immediately below the "Click here to add this\nperson as a friend" link.\n\nIf the user selects "Friends" in the access control box, that content\nis only visible to people on their friends list.\n\nIf they click on "Block this person", only their public content will be\nvisible to that user (and even then, only when the user is logged out\nand cannot be identified).\n\nIf user A is blocked by user B, user B sees an "Unblock this person" link\nin user A's sidebar and so can easily change his/her mind.\n\nUsers with the admin role cannot be blocked.\n===\nCalled z_acsext -- @@INSTALL@@
This is just too easy. After all the hassles I had with OS X server, this is a doddle ....\nSo, GD is not present in the default php 5 setup. I google for "php GD ubuntu" click on the [[first link|http://ubuntuforums.org/showthread.php?t=252842]] to Ubuntu forums and read:\n{{{sudo apt-get install php5-gd}}}\nthen\n{{{sudo apache2ctl restart}}}\nand it worketh!\nThis is really too easy!! But I can handle it.\n\n----\n\n
Unfortunatley Apache2 on Ubuntu server v7.04 'fiesty fawn' does not come with mod-rewrite empowered. Since GIMF I found [[these destructions|http://blog.estebanglas.com.ar/2007/06/activating-mod_rewrite-on-apache-ubuntu/]] which I followed:\n* Add a loader to mod_rewrite module:\nExecute (on the shell): {{{sudo a2enmod rewrite}}}\n* Edit the apache2.conf by adding a call:\n<<<\nOn ubuntu this file usually sits on: /etc/apache2/apache2.conf\n{{{<IfModule mod_rewrite.c>}}}\n{{{RewriteEngine On}}}\n{{{</IfModule>}}}\n<<<\n* Edit the virtual host file:\n<<<\nTo know what hosts are enabled take a look at: {{{/etc/apache2/sites-enabled/}}}\n{{{$ ls -l /etc/apache2/sites-enabled/}}}\n{{{lrwxrwxrwx 1 root root 36 2007-07-10 11:39 000-default -> /etc/apache2/sites-available/default}}}\nThere you’ll see a simlink to some file(s) sitting at: {{{/etc/apache2/sites-available/}}}\nwhich you’ll have to edit. You need to add the permissions for your directorie(s):\n{{{<Directory />}}}\n{{{Options FollowSymLinks}}}\n{{{AllowOverride All}}}\n{{{</Directory>}}}\n<<<\n* Restart your Apache:\n>> {{{sudo /etc/init.d/apache2 force-reload}}}\n\n
use {{{$ adduser }}} and {{{adduser --system}}} It's easy.\n\n!!Issues with 'adduser'\nThe whole process of creating a user account on Ubuntu is bizarre to say the least. Here are some lessons I learned:\n# the user's home directory does ''not'' get created by default unless you use the ''-m'' option\n# the ''-D'' option doesn't update the user's defaults. No, this is for updating the system default settings!\n# the password supplied with the ''-p'' option has to be the //encrypted// password. Needless to say, the crypt utility is not installed by default on Ubuntu (neither is mcrypt)\n** To install it use {{{sudo apt-get install mcrypt}}} but then you get:\n<<<\nMedia change: please insert the disc labeled\n '~Ubuntu-Server 7.04 _Feisty Fawn_ - Release i386 (20070415)'\nin the drive '/cdrom/' and press enter\nAGGGGGGGG!\n<<<\nTo generate the encrypted password I used [[UNIX crypt(3) encryption|http://javascript.internet.com/passwords/unix-crypt(3)-encryption.html]] online service with no 'salt' (click Cancel).\n\nFound a whole bunch of additional user commands with {{{apropos user}}} (thanks Dylan!) which include ''usermod'' to modify a user account.\n\n----\n\n
Admin password not emailed, as per:\n<<<\nHi to all!\nI installed the WP-Mu in my local computer. The installation proceeded successfully however I do not obtain to enter as ADMIN therefore the password was ordered in the registered in cadastre email.\nAs the WP is twirling in Localhost, it does not have as to order emails, my question is: how I make to obtain the password of the ADMIN?\n<<<\nSolution from [[WPMU Forum|http://mu.wordpress.org/forums/topic.php?id=2267]]:\n<<<\nI have the same issue, but the easy way to fix this is, enter in to your db, open the db of worpress mu, then in wp_user, then in user_login, the first user to show is the admin, edit the user_pass area, use 1a1dc91c907325c69271ddf0c944bc72 (MD5 encrypted), in normal text this is "pass" (without "")...\nnow you can change your password from the admin panel...\n<<<\nThis worked for me as well using phpMyAdmin to do the heavy lifting...
Alison Pope (RHUL) tells me that the following apps already use CAS:\n* Ex Libris/ Metalib\n* SFX\n* Aleph\n* phpBB\nNote that the first three are all Library Apps
!!Problems with playing MP3s\nWe've noticed in the past that the Moodle Flash player (and the stand alone flash player) can't handle MP3s encoded at bit rates less than 128kbps. This is a pain because often we don't need 128 and 64 will do.
!!ELS backup system\nRandy Schulz was kind enough to do me some scripts (located in /home/markp/backup_scripts):\n* +++[Daily]>\n<html><pre>\n#!/bin/sh\n\n# this is the daily backup routine for guinness markp's elgg schtuff.\n#\n# - 20071219 schulra\n\nPATH=/usr/bin:/bin\n\nBASEDIR="/home/markp"\nBACKUPDIR="/home/markp/elggbackups"\nCODEDIR="/var/www/blogs"\nDATADIR="/var/elgg_data"\n\nDAY=`date +%d`\n\nmysqldump -u elggbackup -pelggbackup -CQe elgg \s\n | bzip2 -9 > $BACKUPDIR/elgg_dba-backup.$DAY.sql.bz2\n</pre></html>=== backs up the database every day.\n* +++[Weekly]>\n<html><pre>\n#!/bin/sh\n\n# this is the weekly backup routine for guinness markp's elgg schtuff. it\n# needs to be, and assumes it is, run on days 7,14,21,28. Many nasty\n# and horrible things may result if it is not: comets smashing into the\n# earth, rivers burning, locusts, flies, cats and dogs living together.\n# You've been warned. ;> On a serious note, if this isn't run on one of\n# the specified days, the WOM global may be incorrect as it is generated\n# via the integer division of %d / 7. More succinctly, there will be an\n# off-by-1 condition.\n#\n# - 20071219 schulra\n\nBASEDIR="/home/markp"\nBACKUPDIR="/home/markp/elggbackups"\nCODEDIR="/var/www/blogs"\nDATADIR="/var/elgg_data"\n\n# generate the week of the month\nDOM=`date +%d`\nWOM=$(($DOM/7))\n\ncd $BASEDIR\n\ntar --exclude-from /var/elgg_excludes.txt --use-compress-program bzip2 -cf \s\n $BACKUPDIR/elgg_data_$WOM.tgz $DATADIR\n</pre></html>=== backs up the data directory every 7th day\n* +++[Monthly]>\n<html><pre>\n#!/bin/sh\n\n# this is the monthly backup routine for guinness markp's elgg schtuff.\n#\n# - 20071219 schulra\n\nBASEDIR="/home/markp"\nBACKUPDIR="/home/markp/elggbackups"\nCODEDIR="/var/www/elgg"\nDATADIR="/var/elgg_data"\n\nMO=`date +%m`\n\ncd $BASEDIR\n\n# nearly everything in here should be compressed (?) so there's little to gain\n# by compressing again\ntar -cf elggbackup_$MO.tar $BACKUPDIR\nrm -rf $BACKUPDIR/*\n</pre></html>=== tars up the contents of the elgg_backup dir and deletes what's in it. Then I just move this file off site.\n* The +++[crontab]>\n<html><pre>\n$ crontab -l\n# m h dom mon dow command\n# run monthly accumulate into tarball before starting the daily at 12\n0 0 1 * * /home/markp/backup_scripts/monthly\n# run daily database backup at 12:30\n30 0 * * * /home/markp/backup_scripts/daily\n# run weekly data backup at 1 am\n0 1 7 * * /home/markp/backup_scripts/weekly\n0 1 14 * * /home/markp/backup_scripts/weekly\n0 1 21 * * /home/markp/backup_scripts/weekly\n0 1 28 * * /home/markp/backup_scripts/weekly\n</pre></html>=== runs the //monthly// script on the first of the month before anything else to clear out the backup dir. Then the //daily// script runs every day and then on successive 7th days the //weekly// is run. Thus at the end of the month we should get 30 or so daily database backups and 4 weekly data backups. These are tarred up into the monthly one.\nI should make sure that the monthly script completes before starting the daily, but I'm not sure how to do that.\n
Since Elgg is now going to be used for at least two classes (ref) I need to make sure that the database and the data uploads are backed up on a regular basis:\n# Create backup user with read only access (& lock tables) {{{ GRANT SELECT,LOCK TABLES on elgg.* TO elggbackup@localhost IDENTIFIED BY 'elggbackup';}}}\n# Backup the database : run mysqldump {{{mysqldump -u elggbackup -p -C -Q -e elgg >/home/markp/elggbackups/elgg_dba-backup.sql}}}\n# Backup the data directory : {{{tar --exclude-from /var/elgg_excludes.txt -czf elgg_data.tgz /var/elgg_data}}} +++[elgg_excludes.txt]>\nsessions/*\ncache/*\n===\n\n# roll into single cron job and create daily backups in separate files. Overwrite every week.\n|!Date|!Database|!Size|!Data|!Size|!Comments|\n|10-29-2007|elgg_dba-backup.sql.4|1.8Mb|elgg_data.4.tgz| | |\n|11-13-2007|elgg_dba-backup.sql.5|2.0Mb|elgg_data.5.tgz|43Mb|last backup before markpea account deleted|\n|11-30-2007|elgg_dba-backup.sql.7|2.0Mb|elgg_data.7.tgz|8.3Mb|3 big MP3 files from markp are gone|\n|12-07-2007|elgg_dba-backup.sql.9|1.6Mb|elgg_data.9.tgz|12Mb| |\n\nnew backup string : {{{mysqldump -u elggbackup -pelggbackup -CQe elgg | gzip >elgg_dba-backup.12.sql.gz}}}
Following events detailed in [[Open Source & Tag Management]] I found [[Better TAG management|http://elgg.jiscemerge.org.uk/joe/weblog/1608.html]] and emailed support @ jiscemerge.org.uk listed at the bottom of that page. +++[email to Joe Rosa]>\nJoe,\n\nI was reading your blog on Emerge and came across the entry about Better TAG management:\n> Better TAG management\n>\n> Some enhancements, bug fixes, and qualitative functionality for a better TAG management.\n>\n> Adding or Editing a BLOG \n>\n> The core changes are when 'Adding' or 'Editing' a BLOG post. A 'personal' TAG cloud containing every TAG that a user used in BLOGs are shown allowing a quick-click selection, plus when typing a new TAG it shows a list of site wide TAGs that others have used as a 'suggestion'. It is a way of avoiding similar TAGs with different spellings.\n>\n> [TAG Cloud]\n>\n> Now it shows all TAGS that can be listed in alphabetic [Alpha] order for an easy search, randomly [Random] for improving serendipity (only 200 TAGs), in a chronologic [Ageing] order of TAG use, and by the 'mostly used' [Frequency] to find popular/main topics.\n>\n> Frontpage cloud\n>\n> The frontpage TAG cloud sorts the TAGs used on latest posts, and now includes all TAGs that a user have access rights, so when a user is LOGGED_IN is different from the PUBLIC access cloud. There are differences on TAG colouring that represents how long that TAG has been used relatively to other TAGs (Ageing).\n>\n> These enhancements allows a better TAG management, and helps to extract a picture of the site contents.\n\nI was wondering whether you'd be willing to make these enhancements available to me. I have hacked about with 0.9.2 in order to implement a custom theme so I'm capable of applying patches as well as install straight modules. My site is currently at https://els.frumentius.earlham.edu\n\nThanks\n\nMark Pearson\n\nThis email is: [x] actionable [ ] fyi [ ] social [ ] response\nResponse needed: [x] yes [ ] up to you [ ] no \nTime-sensitive: [ ] immediate [ ] soon [x] none\n\nIdea from : Writing sensible email messages\n\n\n-----------------------------------------------------------------------\nDr. Mark Pearson\nInstructional Technologist @ Earlham Information Systems\nEarlham College\nRichmond, Indiana, 47374\nTel : (765) 973 2102\n===\n\nI got +++[this response]>\n-- do not edit --\n\nMark Pearson,\n\nA request for support has been created and assigned ticket #127082.\nA Team member will follow-up with you as soon as possible.\n\nYou can view this ticket's progress online here: http://support.jiscemerge.org.uk/view.php?e=markp@earlham.edu&t=127082.\n\nIf you wish to send additional comments or information regarding this issue, please answer this email or login using the link above and update the ticket.\n\nBest regards\n\nSupport Team\nJISC Emerge\n\n=== from the support team on Aug-29 and then on Aug-31 +++[this message]>\nHello Mark\n\nI have no problems to share the changes made, but they are a bunch.\nTwo plugins (tagsuggest and tagclouds), direct changes in the source code,\nbug fixes, etc.\nOnly to explain will take a while, however if you deploy in parts ...\n\nI can't give you support for the deployment, but I can give you access to\nour library - please don't spread the word.\n\nWe have a SVN repository for every deployed change at\nhttp://www.jiscemergelab.org.uk/WebSVN/\nClicking on 'ELGG 0.9.2 [core]' and 'View Log' there you'll see all\nrevisions.\nTo view a change click on the Rev (e.g. #176) and then 'Compare with\nPrevious'.\n\nThey are grouped by Design, Feature, Bugfix and Changeset. The Changeset\nnumber matches with ELGG trac (http://classic.elgg.org/trac/timeline).\n\nThe changes related to better TAG management are:\n\nRev (176, 175, 172, 171, 170, 169, 168, 167, 164, 163, 161)\n\nSo as I said, have no time to give support, but if you have time and\npatience, everything is there (plus much more). Again, please don't spread\nthe word, and get what you would need to.\n\nBest regards\n\nJoe Rosa\nJISC Emerge\n\n=== from Joe Rosa himself. Note the statement ''please don't spread the word'' !\n\n!!To Do\n\nDownload the changes from http://www.jiscemergelab.org.uk/WebSVN/ and implement on my Barnabas test site.\n\nThe tag management is really very good. Take a look at [[http://elgg.jiscemerge.org.uk/search/tags.php?order=frequency]] You can sort by [Alpha] [Random] [Ageing] [Frequency] !\n\n\n\n
Faculty wanting to use blogs / podcasting next semester (Jan 07):\n* Yasumi Kuriya : Japanese social s/w site. Use Skype for conversations. Record and publish as podcasts?\n* Chisato : Students blog instead of construct web site\n* Meg Streepy : Students blogging and podcasting\n* Aletha Stahl : Haitian Site -- FordKight? Mediawiki? Interested in Podcasting / blogging. Talk mid-Dec\n!!To Do\n* Install WPMU on Macarius\n* Test podcasting module\n* Suss out EC or hosted solution for blog\n* headphones for Skype / podcasting.
Email to Dan Terrio at NITLE email list:\n<<<\nWe are currently using an obsolete version of Movable Type, v2.6, and I am pushing to move to something new. The problem is that the new M.T (v3.2 I think) would cost us about $1,000 (last time I checked) and I really interested in having a system that handles podcasting well.\n\nI've blogged some useful links for blog comparisons and info about Wordpress, M.T , TextPattern and Drupal in my IT blog: http://www.earlham.edu/~markp/it/archives/006191.html <http://www.earlham.edu/%7Emarkp/it/archives/006191.html> The accent for us at Earlham is Open Source solutions.\n\nI'm looking for a blogging system that will handle both photo gallery & podcasts. Wordpress has a fantastic podcast plugin (see above link) but it's achilles heel is that it is a single user blog only. The code resides in user space rather than server space. This makes it out of the question for education use since we wouldn't want everyone to be running blog php & database code in their own user accounts!\n\nFrom my researches I am pursuing the Drupal http://drupal.org/ option. There is now a module providing integration with the popular Gallery 2 http://gallery.menalto.com/ photo album s/w : http://drupal.org/project/gallery\n\nLoudblog http://loudblog.de/ seems to be a slick way of creating and maintaining podcasts and with the Loudbot system http://ektoras.agora.sonnexh.com/cms/index.php?option=com_frontpage&Itemid=1 there is integration with Drupal (as well as other CMS packages such as Mambo, Joomla etc).\n\nSo, right now I'm going to test out Drupal + Loudbot + Loudblog as a total podcasting solution and then see how Gallery 2 may fit in. \n<<<
* Diego Aragon's [[blogextended (1.3)|http://community.elgg.org/pg/plugins/dramirez/read/42766/blogextended]]. Features:\n** Compatibility with Elgg 1.5 - Extend the edit blog view to support before and after description fields.\n** Add support for blog types\n** Add support for assign blog 'ownership' to a group\n** Widget for show blog posts in the profile\n** Overwrite post icon with the group icon (if it is associated to a group)\n* [[Blog widget (0.3)|http://community.elgg.org/pg/plugins/dramirez/read/7167/blog-widget-03]] :\n> In some context you want to know what are published by a user rather than all their activity.\n* [[Blogs for groups (1.1)|http://community.elgg.org/pg/plugins/ivan/read/16121/blogs-for-groups]]:\n>This plugin allow the creation of Blogs under groups. Every member of a group can create a blog and the group owner member can edit all of them.\n* [[SimplePie Feed Integrator (0.2)|http://community.elgg.org/pg/plugins/costelloc/read/37480/simplepie-feed-integrator]]\n* [[Tagcloud plugin (1.5)|http://community.elgg.org/pg/plugins/costelloc/read/43026/tagcloud-plugin]]\n* [[Messages 1.5|http://community.elgg.org/pg/plugins/costelloc/read/46066/messages]]\n* [[Group extended|http://community.elgg.org/pg/plugins/dramirez/read/45724/group-extended]]\n
I started off a discussion thread in the Blogs forum of moodle.org called [[Blogging in Moodle.Role of elgg|http://moodle.org/mod/forum/discuss.php?d=65777#299242]]. \nHere are are initial thoughts and a nicely thought out proposal from Michael Penney.\n\n<<faqlist bytag MBA title hr>>\nWhat should be our response?\n* offer to mentor?\n* offer to collaborate (already done)?\n* MP has considerable Moodle programming experience under his belt so collaboration would be rather asymmetrical.\n
!!Fix for Community access control\nAs I reported in [[Community membership access control]] I reported the bug in the [[elgg bug tracker|http://classic.elgg.org/trac/ticket/394]] and got a reply from ewout:\n<<<\nI think we found the cause of the problem: there was a problema with the CRSF protection that rho implemented some time ago. Amazing that this problem took so long to surface, I guess not many people actually use .92...\n\nAnyway, try to change your code according to this changeset: [[http://cepadev.if.usp.br/trac/stoa/changeset/1557|http://cepadev.if.usp.br/trac/stoa/changeset/1557]] . Hopefully it will work. Don't worry about the if($CFG->usehttps) part, that is something else.\n<<<\nIt turns out that the [[Brazilian STOA|http://stoa.usp.br/]] people have implemented their own tracker. BTW check out the [[STOA site|http://stoa.usp.br/]] -- it's very nice. Pity I cannot read Portugese!\nThe problem is that the changeset (#1557) seems to be based on a totally different SVN base than the Elgg classic (which has ceased updates, not surprisingly). I'm not sure whether applying this changeset onto the current Elgg classic SVN which I am using would actually work. Would it be better to use the STOA SVN source even though I'm not able to understand it?\nHere's a translation of the +++[trac login page]>\nStoa code: Repository, Bugs, Wiki ¶ Although the project is always evolving, the proposal initial still of the one good idea of the intentions of the project. To contribute ¶ It has an idea as we could improve the Stoa? Discovered one bug? * If it is of the USP, it participates in fórum of aid or fórum of development. * Discovered one bug? It registers in cadastre if in the Trac (any one can make this) and creates one ticket. * It has more vacant ideas? It edits this Wiki to register them perhaps (the page of ideas is an appropriate place) To contribute (Development) ¶ Stoa is a applicatory Web that wheel, in principle, one stack LAMP. It is open code and any one is welcome to contribute. But to be able to contribute patches, it is necessary to understand and to move with the code. It sees in sequida a possible way to start to participate of the development of the Stoa: * It gets the code and it installs in its proper machine: it sees as to install a development environment in its machine. * Difficulties? Suggestions? It is enrolled and it participated of our list. * The first step could be to contribute one patch for one of this list of tickets. Diff makes patch with svn and annexes to ticket. People will make commit soon. * To sail the code, the last changes or the line of time (rss) * More ambitious plans? First it is a good idea to raise its idea in the email list. There, we can argue priorities and details of implementation. More documentation (a little older) * Organization and politics of the Repository * Translation for the Portuguese * Templates (Frames) * Documentation on the Elgg * Tests: Tests automatized and for bequeathers For Desenvolvedores of the instance of the Stoa in the USP ¶ * Deployment: Our process of update of the code. * Server: description of the form of management of the Stoa server * Backup * Database of the USP * System of I register in cadastre in the environment * Integration with softwares educational * Tasks * How we are in the Joel Test? Readings and links ¶ * readings\n===\n
How do CAS and Shibboeth compare. [[Here's|http://tp.its.yale.edu/pipermail/cas/2004-January/000225.html]] some enlightenment:\n<<<\nCAS is a Web based local single signon. Shibboleth is a cross-university authentication and attribute system that doesn't have its own local signon. In order to use Shibboleth, you have to first have a local system like CAS. CAS, on the other hand, doesn't currently operate across institutions.\n<<<\nThis info from a mailing list also refers to a protocol called SAML. The prospects for this are +++[intriguing]>\n3) To make assertions about the permissions of a user, by comparing the attributes of the user to institutional policy. This is a centralized network service that is part of the SAML architecture but is not part of either CAS or Shibboleth, nor any other I2 or similar project. Currently permission decisions are farmed out to each individual server (but currently CAS also farms out the attribute lookup to every server frontend). It may be that some central service can be coded that will handle 90% of the requirements with 10% of the effort. Particularly to answer questions of the form "this user is permitted to listen to digital assets in the online Music Library".\nThis was written in 2004 -- I wonder what progress has been made to 2008?\n===\n\n\n
[[Alison Pope's Diigo bookmarks tagged with cas|http://www.diigo.com/user/Ajp-diigo/cas?page_num=1&sort_by=2]]
[[This conversation|http://tp.its.yale.edu/pipermail/cas/2004-January/000237.html]] about +++[CAS security]\n> Hi Russell,\n>\n> Russell Tokuyama wrote:\n>\n> >>What exactly are the contents of the ticket granting cookie and the various CAS\n> >>tickets? What are their vulnerabilities?\n> >\n> > The ticket granting cookie has content like "TGC-nn-mmmmmmmmm" which\n> > is just a unique value used to index into an in-memory database. It's\n> > purpose is to signify to the CAS server that the user has previously\n> > authenticated (i.e., supplied the correct username and password).\n> >\n> > The vulnerability of the cookie is no worse than any other cookie\n>\n> Ans what are these vulnerabilities?\n\nIt depends on the situation. Assuming that a cookie only contains\na session identifier, intercepting and replaying the cookie can reveal\nthings to others. In other words, someone else gets your session.\nEven simpler, using a browser on a public computer (a.k.a., a kiosk\nterminal) could leave your cookies for the next person to use. By\n"use", I mean that the browser would send your cookies to the\nappropriate sites that you've visited if the next person visits\nthose sites. Thus, they would be using your session if you didn't\nlogout. Some sites don't have any mechanism to explicitly logout.\nThey rely on the user exiting their browser.\n\nIf there is confidential information being stored in cookie by the\nsites that you visit, things that you may not want revealed could be\nexposed to others.\n\nHere's some links that are probably better at helping to answer your\nquestions:\n\n 1. RFC 2109\n http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2109.html\n\n 2. The Unoffical Cookie FAQ\n http://www.cookiecentral.com/faq/\n\n 3. Client Side State - HTTP Cookies (Netscape's original spec)\n http://wp.netscape.com/newsref/std/cookie_spec.html\n\n 4. How Internet Cookies Work (Marshall Brain's How Stuff Works)\n http://www.howstuffworks.com/cookie.htm\n\n 5. Do "Cookies" Pose any Security Risks? (from the WWW Security FAQ)\n http://www.w3.org/Security/Faq/wwwsf2.html#CLT-Q10\n\n 6. Cookies: what they are and how they work\n http://help.netscape.com/kb/consumer/19970226-2.html\n\n 7. Dos and Don'ts of Client Authentication on the Web\n http://pdos.lcs.mit.edu/cookies/pubs/webauth:tr.pdf\n\nOf course, googling may also others.\n\n\n> If the CAS server is HTTPS, is there any way the cookie could be sent in the clear?\n>\n> > The ticket granting cookie is created for the specific server, CAS\n> > application path, secure requests, and expiration at the end of the\n> > browser's session. There's not much that can be done to control\n> > the behavior of a browser or HTTP client. The CAS server should be\n> > set up to only do HTTPS. That way, there would not be any non-secure\n> > URL to send the cookie to.\n>\n> Hmmm... I guess the worry would be that the browser may be sent the cookie over\n> HTTPS and then return it via HTTP if the user has been access both HTTP and\n> HTTPS urls at the same domain name.\n>\n> Does anyone know if this happens with Netscape 4 or any other browsers?\n\nRFC 2109 says that for cookies marked as secure, the user agent (browser)\nshould send the cookie over a secure channel. Netscape's initial spec says\nthat cookies marked as secure should only be sent to a HTTPS server.\nAssuming that Netscape followed their own spec, it would be reasonable\nto conclude that Netscape 4 should only send a secure cookie to an HTTPS\nserver.\n\n\n> > A Web application would only need to redirect to the CAS server when\n> > it wants to authenticate a user. Once a user is authenticated, the\n> > Web application only needs to track the user's session.\n>\n> Yup, but that session tracking needs to be secure, or someone could snoop and\n> intercept the session.\n>\n> >>I guess my real question about this last bit is what do you actually put in your\n> >>applications session cookie? How do you encrypt it? How do you stop it being\n> >>intercepted by others or compromised?\n> >\n> > You can put anything you want in an application's session cookie. You\n> > can encrypt it with any algorithm you like that accomplishes the goal\n> > you need to meet.\n>\n> I know this, I'm after concrete suggestions ;-)\n\nJust put the session ID in the cookie. Java Servlet containers (a.k.a.,\napp servers) automatically do this. For example:\n\n Name: JSESSIONID\n Content: xxxxxxxxxxxxxx <-- session ID\n Host: host.domain\n Path: /\n Server Secure: no\n Expires: at end of session\n\nPlease refer to the article above on client authentication for why it\nis not a good idea to anything else in cookies.\n\n\n> > You can use HTTPS to minimize clear text exposure\n> > of the cookie to snoopers on the net.\n>\n> minimise? that implies that there will still be some clear text exposure. When\n> and how would that be?\n\nIt is possible for an impersonator (man-in-the-middle attack) to pretend\nto be a secure site and snoop the conversation between a browser and\nthe intended site. SSL only guarantees confidentiality over the end-to-end\ncommunications channel. For example, a proxy for HTTP and HTTPS could\nbe hijacked and used to snoop conversations over supposedly secure channels.\nMore detrimental, the conversation could be altered without anyone's\nknowledge (at least for some time until one gets a bill for stuff one\ndidn't order).\n=== might be useful
!![[CAS|Central Authentication Service (CAS)]] in Moodle\n* Here's what happens when a non-authenticated user visits an application which has been modified with CAS, for example, Moodle : [[Scenario 1|graphics/CAS scenario1.png]]<<imagebox>>\n* If a user is already authenticated with CAS, here's what happens when he visits Moodle: [[Scenario 2|graphics/CAS scenario2.png]]<<imagebox>>\n\nIn our current production version of Moodle (1.6.3+) an authentication method is present called "Use a CAS server (SSO)" (in Administration >> Users >> Authentication). This basically looks up the user on the CAS server (which must therefore do the authentication -- with LDAP in our case) and can create a new user record in Moodle if not already present. Obviously we would need a CAS server with LDAP to implement this.\n!!!The bad news\n# The entry [[Use a CAS server (SSO)|http://docs.moodle.org/en/auth/cas]] in ~MoodleDocs has no meaningful content. \n# New entry [8th March 07] in Moodle tracker entitled [[The CAS authentification don't work|http://tracker.moodle.org/browse/MDL-8813]] with the comment:\n<<<\nYes - it is caused by its non-standard implementation - it duplicated a lot of code from other places.\nIt needs cleanup and some rewriting to make it work properly :-( \n<<<\nHere's an [[older conversation|http://moodle.org/mod/forum/discuss.php?d=18179]] about CAS and SSO for Moodle from 05.
Locations of css files that might need +++[modding:]>\n{{{find ./mod -name css}}}\nmod/photogallery/css\nmod/photogallery/lightbox/css\nmod/toolbar/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/xhtmlxtras/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/contextmenu/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/table/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/paste/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/media/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/template/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/advlink/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/noneditable/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/devkit/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/fullscreen/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/style/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/searchreplace/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/fullpage/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/spellchecker/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/advhr/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/flash/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/advimage/css\nmod/tinymce/lib/jscripts/tiny_mce/plugins/inlinepopups/css\nmod/tinymce/lib/jscripts/tiny_mce/themes/simple/css\nmod/tinymce/lib/jscripts/tiny_mce/themes/advanced/css\nmod/tinymce/lib/docs/css\nmod/folio/css\nmod/template/templates/Default_Template/css\nmod/commentwall/css\nmod/generic_comments/css\nmod/widget/css\nmod/profile/css\n===\n\n
Take Blue Leaves EC and:\n* 2 col full width liquid\n* FIX text input into tinymce!\n* address formatting of headings\n* reduce size of avatar icon to 100x100 or smaller
!Central Authentication Service (CAS)\n!! What is CAS\nCAS is basically a mechanism for achieving [[Single Sign On (SSO)|http://www.ja-sig.org/products/cas/]] between a number of different web applications developed by Yale University and made Open Source. See [[Using CAS at Yale: A Quick Introduction|http://www.yale.edu/tp/auth/usingcasatyale.html]]\n!! How it works (from the Yale site)\n# "First and more importantly, CAS is unlike many familiar authentication systems because it is not simply a password-validation tool. In a traditional environment, your web application will ask users for an ID and a password, and it will then call logic to determine whether this ID/password pair is valid. With CAS, however, your application never gains access to the user's password; to improve systemwide security, users supply their passwords only to the CAS server directly."\n# When you first encounter a new user (e.g., one that has not yet established a session with your application), you'd normally display a username/password form in HTML. With CAS, you don't do this; instead, you simply redirect the browser to CAS's login URL, which is {{{https://secure.its.yale.edu/cas/login}}}\n# CAS then authenticates the user. If authentication fails -- e.g., if the user cannot supply a correct password -- then you'll never hear from the user again. (At least, you won't hear formally through any CAS protocol!) Only if a user succesfully authenticates does that user's browser return to your application. Specifically, the user returns because CAS redirects the browser back to your application. CAS knows how to find your application because when you initially redirected the user to CAS, you supplied a service parameter, in the form {{{https://secure.its.yale.edu/cas/login?service=http://my/url}}}\n# When CAS redirects the authenticated user back to your application, it will append a parameter named ''ticket'' to your URL. For instance, the URL you supplied CAS may be called as follows: {{{http://my/url?ticket=ST-92834-m34Aa83f7a3f}}}\n# The only thing you can do with this ticket is to send it back to CAS, which involves opening an HTTPS connection to {{{https://secure.its.yale.edu/serviceValidate}}} and sending two query parameters: ''service'', which must match the service URL you initially supplied to CAS when redirecting the user there, and ''ticket'', which is the ticket you just received. CAS then responds either with an explicit refutation of this ticket (think "it's not meaningful to me and does not represent a valid user") or an acknowledgement that the ticket proves authentication. In the latter case, CAS also supplies the user's ~NetID so that you know the identity of the user.\n\nNote that this final connection to CAS occurs directly between your application and CAS; your application opens a socket connection and retrieves information from the CAS server. You do not redirect the browser; you speak directly to CAS, effectively closing the loop and completing the authentication process.\n\n* [[diagram of CAS protocol in action|http://www-128.ibm.com/developerworks/web/library/wa-singlesign/figure1.gif]]<<imagebox>> from [[Build and implement a single sign-on solution|http://www-128.ibm.com/developerworks/web/library/wa-singlesign/]]\n* [[CAS resources]]\n
* Updated to [[Tiddlywiki|http://www.tiddlywiki.com/]] v2.0.11 on 8/23/06\n* added Alan Hecht's [[FAQlist|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#%5B%5BFaqList%20(for%20TW%202.0)%5D%5D]]\n
When the server goes down unexpectedly (as in a recent power outage) it's prudent to check the integrity of the MySQL tables.\n[[Repairing Database Corruption in MySQL|http://www.databasejournal.com/features/mysql/article.php/10897_3300511_1]] is a good resource.\n\nI used {{{mysqlcheck -u <database-username> -p elgg}}} to check all the tables of the Elgg database with the 'MEDIUM' (default) option. This :\n>"Scans rows to check that deleted links are correct, and verifies a calculated checksum for all keys with a calculated a key checksum for the rows."\n\n
Check that the following issues are sussed in the changeset that I'm using:\n* [[No group and communities in access restrictions dropdown when making a new post|http://classic.elgg.org/trac/ticket/316]] -- it seemed to be working when I checked.\n* [[Image preview in tinymce|http://classic.elgg.org/trac/ticket/180]] I think that this should be there. Try it out to see\n
/***\n| Name:|CloseOnCancelPlugin|\n| Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|\n| Version:|6.9.3|\n| Date:|30-Sep-2006|\n| Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| CoreVersion:|2.1.x|\n***/\n//{{{\nmerge(config.commands.cancelTiddler,{\n\n handler_orig_closeUnsaved: config.commands.cancelTiddler.handler,\n\n handler: function(event,src,title) {\n this.handler_orig_closeUnsaved(event,src,title);\n if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))\n story.closeTiddler(title,true);\n return false;\n }\n\n});\n\n//}}}\n\n
Got into a bit of a hassle with the Virtual Hosts but have sussed that one out now.\n!!General Comments\n* you can't seem to moderate the adding of friends like on 0.9. I really like the idea & implementation of approving friendship requests\n* ditto for groups -- you can invite people but not moderate their joining. Plus when you invite someone it's not clear exactly what happens. Do they get an email or What? \n* An internal messaging system would be nice -- for the above reasons.\n* How does one change the 'Spotlight' text. I'm assuming that it can be done.\n* I do like the idea and implementation of this. I could put a lot of local Instructional Text goodies in here. Eg a RSS feed from a ~TiddlyWiki would be bonza!\n* I'd ''really'' like to be able to shift the grey menu bar inside the main box. This fixed menu bar was one of the big UI drawbacks of Elgg 0.9 in my view. Hopefully this is achievable with a theme.\n* I'm not convinced of the utility of a Profile //and// a Dashboard. Dashboard is for you and Profile for others, right? When I click on someone am I seeing their Profile or Dashboard. I think it's the former.\n* Surely there should be some way for an administrator to configure the front page with widgets ... I couldn't figure out how to do this.\n* I'd like to widgetize the Blog especially with RSS feeds, blogrolls, and other pro-blogging accoutrements.\n* Wot no Tag Cloud?\n!! File Store\nWierd locations. Eg :\n{{{ elgg11_data/m/a/r/k/p/markpea}}} \nBut top marks for data security : all the dirs are owned {{{www-data:www-data}}} and {{{wrx------}}} so ''only'' Apache can get access. //''TIGHT//''\n
Problem is in community/lib/userdetails_edit.php\n{{{\n 45 $friendlevel = "<select name=\s"moderation\s">";\n 46 $friendlevel .= "<option value=\s"no\s" ";\n 47 if ($info->moderation == "no") {\n 48 $friendlevel .= "selected=\s"selected\s"";\n 49 }\n 50 $friendlevel .= ">" . __gettext("No moderation: anyone can join this community.") . "</option>";\n 51 $friendlevel .= "<option value=\s"yes\s" ";\n 52 if ($info->moderation == "yes") {\n 53 $friendlevel .= "selected=\s"selected\s"";\n 54 }\n 55 $friendlevel .= ">" . __gettext("Moderation: memberships must be approved by you.") . "</option>";\n 56 $friendlevel .= "<option value=\s"priv\s" ";\n 57 if ($info->moderation == "priv") {\n 58 $friendlevel .= "selected=\s"selected\s"";\n 59 }\n 60 $friendlevel .= ">" . __gettext("Private: nobody can join this community.") . "</option>";\n 61 $friendlevel .= "</select>";\n 62\n 63 $body .= templates_draw(array(\n 64 'context' => 'databox',\n 65 'name' => __gettext("Membership restriction"),\n 66 'column1' => $friendlevel\n 67 )\n}}}\n$info->moderation does not get changed by the pulldown menu so the default is never unset. I'm not sure exactly where $info->moderation is meant to be set -- the only place I can think of is {{{userdetails_actions.php}}}\nActually I found that the Comment wall pulldown does not 'stick' either, but the language selection does. //Strange//\n
copied //trunk// into /mod as 'communityinvite'.\nIn the community that you own, it inserts a link 'invite people' where you can search for a name and click 'invite'.\nHowever, an error occurs if the user has not set up an email forwarding address:\n<<<\n{{{ERROR: Could not instantiate mail function}}} -- top line\nError box:\n{{{\nFailed to send email. An unknown error occurred.\nThe user has been invited.\n}}}\n<<<\nUninstall plugin and take a look at [[this info|http://classic.elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1094&page=1#Item_3]]\nI uninstalled the plugin because the code seems to have been merged with core. The above actions were the result of core code I think. \nAn invitation to Tom Steffes to join the Instructional Tech Collaborative seems to have worked! Plus there's notifications!\n!!!conclusion\nRemoving the 'communityinvite' module seems to have fixed the problem!\n
!!community owner cannot change membership restriction\nReported as ticket #394 on [[the elgg classic bug tracker|http://classic.elgg.org/trac/ticket/394]]:\n<<<\nI am using Elgg 0.92 SVN revision 1617. Basically, a community owner needs to be able to change membership restriction to moderate or private. In the 0.92 /1617 release this does not work -- any change in membership restriction does not 'stick'. I know that this has functioned prior to this release because some of the communities are set to moderate which was performed on an earlier version. \n<<<\nSee also [[Community Restriction level not set]] where I look at some code, but don't get very far.\n!!To Do\nSet ''default'' access restriction for communities to moderate //in the database//. Check to see whether this gets changed or is able to be changed. Either way, implement on production els.earlham.edu as default.\n[[Fix community access setting]]\n
!!community@Brighton theme\nPulldown menus:\n* [[screenshot: Media|graphics/comm_bton_theme_media.png]]<<imagebox>>\n* [[screenshot: Network|graphics/comm_bton_theme_network.png]]<<imagebox>>\n\n[[template css|modules/comm_bton_template_css.txt]]\n[[template html|modules/comm_bton_template_html.txt
Comparison of [[Web Single Sign On Systems|http://www.cesnet.cz/doc/techzpravy/2006/web-sso/]], CAS, ~WebAuth and Cosign. Interesting +++[conclusions]>\n The presented web SSO systems have similar architecture design based on the Kerberos model which is quite secure but requires protected communication channels. User's credentials are available only to the authentication server, services receive only the data designated to them. The convenience for the users is also similar - the access to services is made as transparent as possible with the use of HTTP redirects, both "login first" and "application first" main scenarios are possible.\n\nThe main differences reside in the internal implementation and the target platform for each SSO system. These differences greatly influence the final criteria used for choosing the right system for a target network. The requirements may vary for the different networks. The presented web SSO systems were developed for university campus networks and they more or less reflect the specific environment on those networks and try to meet the requirements specific for each community.\n\nDue to its Java implementation, CAS may perfectly fit in an existing Java environment, though it has some limitations when trying to integrate with other platforms.\n\nWebAuth supports only unix-like platforms at the moment and is designed for close integration with Kerberos. Although it may support other backend authentication mechanism, probably there is no point in using it without Kerberos. On the other hand, with and existing Kerberos infrastructure and application servers running unix, WebAuth can be a reasonable choice.\n\nCosign offers widest support for different platforms as well as some advanced features. It supports various authentication mechanisms and multifactor authentication. Therefore, Cosign is suitable especially for heterogeneous networks which run applications on various platforms. \n===\n\nA comprehensive comparison of open source SSO solutions is the JISC Core Middleware and Shared Services Studies [[Single Sign-On Report|http://www.jisc.ac.uk/uploaded_documents/CMSS-Gilmore.pdf]]. CAS fared badly in this comparison with "little or no support from developers" and "little or no documentation". The mod-cas author had apparently left Stanford and there was no support of development for this vital component which is currently not working.\n\n!!Summary table\n|!Solution|!Usage|!Single point of failure|!Support|!Documentation|!Availability of connector modules|!Shibboleth enabled|\n|CAS|Moderate| Yes | Poor | Poor | V poor | No |\n|Pubcookie|Widely used| [1] | Variable | Small amount | Variable | Projected |\n|~WebAuth|Not widely used| No | Responsive | V good | Poor | No |\n|Cosign| Relatively new | No | V responsive | Small | Good |Has been demonstrated|\n|~A-Select|Moderate inside NL| [2] | Responsive, commercially available | Good | V good | Yes |\n[1] Since this work was completed the documentation has been changed to indicate that a redundant configuration is possible, but this has not been tested.\n[2] Since this work was completed we have been informed that the next major release of [[A-Select|http://a-select.surfnet.nl/aselect_overview.html]], version 1.4, will support redundant configurations.\nSingle Sign On report also available [[locally here|modules/CMSS-Gilmore.pdf]]
How different is the sourceforge download for Elgg 0.91 from the SVN version?\n|!parameter|!download|!SVN|!Comment|\n|release|0.9.1|0.9.1|same|\n|version|2008021801|2008021801| 18^^th^^ Feb [[changeset 1560|http://elgg.org/trac/changeset/1560]]. Some login bugs still present|\n|size|32Mb|87Mb|svn adds a lot of crap|
!Criteria for comparing blogging systems\n\nI'm looking for Open Source php/SQL server based blogging systems that will host student, faculty and class blogs. I'm considering a multiuser ~WordPress derivative [[Lyceum|http://lyceum.ibiblio.org/about/]] together with an interesting FOAF driven blogging engine which crosses Myspace with Blog called [[elgg|http://elgg.org]]\nA great review by [[Blogsavvy|http://blogsavvy.net]] of [[Multi user blog tools|http://blogsavvy.net/multi-user-blog-tools-overall-ratings-and-reviews]] which includes Drupal, elgg and WP MU.\n\n!! Preliminary list of criteria\n!!! User Stuff\n* LDAP support for creating new users\n* User self naming -- anonymity\n* User modified/generated themes / styles ?\n* Ease of management\n* configurable WYSYWG input interface\n\n!!! Features\n* Comments -- moderation\n* SPAM protection\n* Trackbacks\n* RSS feeds\n* Upload files / graphics\n* Static web pages\n* linked wiki\n* support for podcasting\n* plugin modules support\n* support for XMLRPC -- Performancing FF extension\n* [[OpenID|http://openid.net/]] support : [[Wikipedia article|http://en.wikipedia.org/wiki/OpenID]] Microsoft has [[adopted OpenID|http://www.readwriteweb.com/archives/microsoft_openid_five_key_takeaways.php]]\n\n!!! System Issues\n* Ease of Installation / upgrade and configuration. \n* Active User community ?\n* Active Developer community\n* quality of online documentation -- documentation wiki ?\n* quality of codebase (subjective)\n* version number (actual & apparent)\n* frequency of bug fixes / version upgrades\n* Moodle integration -- current situation and potentialities
/***\nJust some bits and pieces\n***/\n//{{{\nconfig.messages.messageClose.text = "X"; // default is "close"\nconfig.views.wikified.defaultText = ""; // default is "The tiddler '%0' doesn't yet exist. Double-click to create it"\nconfig.options.chkHttpReadOnly = false; // Enable editing so that visitors can experiment with it\n//}}}
edfactor:\n<<<\nI found the bug in the admin thingy:\nIn mod/elggadmin/lib.php, line 16 has an incorrect path, it should be:\nrequire_once(dirname(__FILE__).'/lib/elggadmin.inc.php');\nThen the page worked for me.\n<<<
[[This discussion|http://classic.elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1679]] shows how.\n
Restart 'cron' on Frumentius since we're reverting to theis server for the first part of the semester\n{{{ sudo crontab -u root -e}}}\n<<<\n{{{\n# m h dom mon dow command\n 30 * * * * /usr/bin/wget -O - -q http://els.frumentius.earlham.edu/cron.php\n# run monthly accumulate into tarball before starting the daily at 12\n 0 0 1 * * /home/markp/backup_scripts/monthly\n# run daily database backup at 12:30\n 30 0 * * * /home/markp/backup_scripts/daily\n# run weekly data backup at 1 am\n 0 1 7 * * /home/markp/backup_scripts/weekly\n 0 1 14 * * /home/markp/backup_scripts/weekly\n 0 1 21 * * /home/markp/backup_scripts/weekly\n 0 1 28 * * /home/markp/backup_scripts/weekly\n}}}\n<<<\n
Added line to execute Elgg cron script into system crontab +++[code]>\n# m h dom mon dow command\n30 * * * * /usr/bin/wget -O - -q http://blogs.frumentius.earlham.edu/cron.php\n===\n\nAlso moved [[backup cron entries|Elgg backup script]] from user markp crontab to root crontab ({{{ sudo crontab -u root -l}}})\nNow we have +++[crontab]>\n{{{\n# m h dom mon dow command\n30 * * * * /usr/bin/wget -O - -q http://blogs.frumentius.earlham.edu/cron.php\n# run monthly accumulate into tarball before starting the daily at 12\n0 0 1 * * /home/markp/backup_scripts/monthly\n# run daily database backup at 12:30\n30 0 * * * /home/markp/backup_scripts/daily\n# run weekly data backup at 1 am\n0 1 7 * * /home/markp/backup_scripts/weekly\n0 1 14 * * /home/markp/backup_scripts/weekly\n0 1 21 * * /home/markp/backup_scripts/weekly\n0 1 28 * * /home/markp/backup_scripts/weekly\n}}}\n===\n\nHopefull this will fix the [[RSS reading problem|Elgg RSS feed issue]].\n[[Elgg backup script]] has not been [[working properly|Elgg backup glitch]] -- we'll see whether this gets fixed too.\n\n
This is the bit that I often miss. You need to get a cron task running to keep thing up to date. Details at [[Cron Tasks|http://classic.elgg.org/mod/mediawiki/wiki/index.php/Installation_guide#Cron_Tasks]]. Guts:\n<<<\n{{{\n30 * * * * /usr/bin/wget -O - -q http://els.frumentius.earlham.edu/cron.php\n}}}\n<<<\n
Also getting funny things with the date on Barnabas. Here the problem was a bit clearer:\n<<<\n<html><pre>markp@Barnabas:~$ date\nFri Feb 29 15:46:34 EST 2008\nmarkp@Barnabas:~$ sudo hwclock\nFri 29 Feb 2008 11:07:27 AM EST -0.398364 seconds</pre></html>\n<<<\nNote that the hardware clock was 4 hours behind the real time. Also the time was slow.\nReset the time:\n>{{{markp@Barnabas:~$ sudo date 02291608}}}\n>{{{Fri Feb 29 16:08:00 EST 2008}}}\nAnd copy the system time to the hardware clock\n<<<\n{{{markp@Barnabas:~$ sudo hwclock --systohc}}}\n{{{markp@Barnabas:~$ sudo hwclock}}}\n{{{Fri 29 Feb 2008 04:08:31 PM EST -0.151946 seconds}}}\n<<<\nI got this stuff from [[Manually setting the system date (and hardware clock) in Ubuntu Linux|http://blog.andrewbeacock.com/2007/05/manually-setting-system-date-and.html]]\n
To try to address [[Problem dates on Frumentius]] I have +++[synchronised]>\n<html><pre>\nmarkp@frumentius:~$ sudo date 02291622\nFri Feb 29 16:22:00 EST 2008\nmarkp@frumentius:~$ sudo hwclock --systohc\nmarkp@frumentius:~$ sudo hwclock\nFri 29 Feb 2008 16:22:41 EST -0.340005 seconds\n</pre></html>===\n the hardware clock with the software date as with [[Date on Barnabas]]\nThough I doubt whether this will make a difference....\n
[[WhatsNew]]
/***\nTo use, add {{{[[HorizontalMainMenuStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also HorizontalMainMenu and PageTemplate.\n***/\n/*{{{*/\n\n#topMenu br {display:none; }\n#topMenu { background: #870000; }\n#topMenu { padding:2px; }\n#topMenu .button, #topMenu .tiddlyLink {\n margin-left:0.5em; margin-right:0.5em;\n padding-left:3px; padding-right:3px;\n color:#white; font-size:100%;\n}\n#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#4C4C4C;}\n\n#displayArea { margin: 1em 15.7em 0em 1em; } /* so we use the freed up space */\n\n/* just in case want some QuickOpenTags in your topMenu */\n#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\n#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\n#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\n\n\n/*}}}*/
<div class='header' macro='gradient vert #390108 #900'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<!--\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n-->\n<div id='topMenu' refresh='content' tiddler='MainMenu'></div>\n</div>\n</div>\n<!--\n<div id='mainMenu'>\n<div refresh='content' tiddler='MainMenu'></div>\n-->\n</div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
/*{{{*/\n.viewer .listTitle { list-style-type:none; margin-left:-2em; }\n.editorFooter .button { padding-top: 0px; padding-bottom:0px; }\n/*}}}*/\n/***\nImportant stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles\n***/\n/*{{{*/\n[[TagglyTaggingStyles]]\n[[HorizontalMainMenuStyles]]\n/*}}}*/\n/***\nClint's fix for weird IE behaviours\n***/\n/*{{{*/\nbody {position:static;}\n.tagClear{margin-top:1em;clear:both;}\n/*}}}*/\n/***\nJust colours, fonts, tweaks etc. See SideBarWhiteAndGrey\n***/\n/*{{{*/\n\n/***\nhttp://tiddlystyles.com/#theme:DevFire\nAuthor: Clint Checketts\n***/\n\n/*{{{*/\nbody {\nbackground: #000;\n}\n/*}}}*/\n/***\n!Link styles /% ============================================================= %/\n***/\n/*{{{*/\na,\na.button,\n#mainMenu a.button,\n#sidebarOptions .sliderPanel a{\n color: #ffbf00;\n border: 0;\n background: transparent;\n}\n\na:hover,\na.button:hover,\n#mainMenu a.button:hover,\n#sidebarOptions .sliderPanel a:hover\n#sidebarOptions .sliderPanel a:active{\n color: #ff7f00;\n border: 0;\n border-bottom: #ff7f00 1px dashed;\n background: transparent;\n text-decoration: none;\n}\n\n#displayArea .button.highlight{\n color: #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Header styles /% ============================================================= %/\n***/\n/*{{{*/\n.header{\n border-bottom: 2px solid #ffbf00;\n color: #fff;\n}\n\n.headerForeground a {\n color: #fff;\n}\n\n.header a:hover {\n border-bottom: 1px dashed #fff;\n}\n/*}}}*/\n/***\n!Main menu styles /% ============================================================= %/\n***/\n/*{{{*/\n#mainMenu {color: #fff;}\n#mainMenu h1{\n font-size: 1.1em;\n}\n#mainMenu li,#mainMenu ul{\n list-style: none;\n margin: 0;\n padding: 0;\n}\n/*}}}*/\n/***\n!Sidebar styles /% ============================================================= %/\n***/\n/*{{{*/\n#sidebar {\n right: 0;\n color: #fff;\n border: 2px solid #ffbf00;\n border-width: 0 0 2px 2px;\n}\n#sidebarOptions {\n background-color: #4c4c4c;\n padding: 0;\n}\n\n#sidebarOptions a{\n margin: 0;\n color: #ffbf00;\n border: 0;\n}\n#sidebarOptions a:hover {\n color: #4c4c4c;\n background-color: #ffbf00;\n\n}\n\n#sidebarOptions a:active {\n color: #ffbf00;\n background-color: transparent;\n}\n\n#sidebarOptions .sliderPanel {\n background-color: #333;\n margin: 0;\n}\n\n#sidebarTabs {background-color: #4c4c4c;}\n#sidebarTabs .tabSelected {\n padding: 3px 3px;\n cursor: default;\n color: #ffbf00;\n background-color: #666;\n}\n#sidebarTabs .tabUnselected {\n color: #ffbf00;\n background-color: #5f5f5f;\n padding: 0 4px;\n}\n\n#sidebarTabs .tabUnselected:hover,\n#sidebarTabs .tabContents {\n background-color: #666;\n}\n\n.listTitle{color: #FFF;}\n#sidebarTabs .tabContents a{\n color: #ffbf00;\n}\n\n#sidebarTabs .tabContents a:hover{\n color: #ff7f00;\n background: transparent;\n}\n\n#sidebarTabs .txtMoreTab .tabSelected,\n#sidebarTabs .txtMoreTab .tab:hover,\n#sidebarTabs .txtMoreTab .tabContents{\n color: #ffbf00;\n background: #4c4c4c;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n color: #ffbf00;\n background: #5f5f5f;\n}\n\n.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\n.tab.tabUnselected {background-color: #666;}\n.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\n.tabContents {\n background-color: #4c4c4c;\n border: 0;\n}\n.tabContents .tabContents{background: #666;}\n.tabContents .tabSelected{background: #666;}\n.tabContents .tabUnselected{background: #5f5f5f;}\n.tabContents .tab:hover{background: #666;}\n/*}}}*/\n/***\n!Message area styles /% ============================================================= %/\n***/\n/*{{{*/\n#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\n#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\n#messageArea a:hover {color: #ff7f00;}\n#messageArea a:active {color: #ff7f00;}\n#messageArea .messageToolbar a{\n border: 1px solid #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Popup styles /% ============================================================= %/\n***/\n/*{{{*/\n.popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n.popup li.disabled{color: #fff;}\n.popup a {color: #ffbf00; }\n.popup a:hover { background: transparent; color: #ff7f00; border: 0;}\n.popup hr {color: #ffbf00; background: #ffbf00;}\n/*}}}*/\n/***\n!Tiddler Display styles /% ============================================================= %/\n***/\n/*{{{*/\n.title{color: #fff;}\nh1, h2, h3, h4, h5 {\n color: #fff;\n background-color: transparent;\n border-bottom: 1px solid #333;\n}\n\n.subtitle{\n color: #666;\n}\n\n.viewer {color: #fff; }\n\n.viewer table{background: #666; color: #fff;}\n\n.viewer th {background-color: #996; color: #fff;}\n\n.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n\n.viewer hr {color: #666;}\n\n.tiddler .button {color: #4c4c4c;}\n.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\n.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\n\n.toolbar {\n color: #4c4c4c;\n}\n\n.toolbar a.button,\n.toolbar a.button:hover,\n.toolbar a.button:active,\n.editorFooter a{\n border: 0;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.highlight, .marked {\n color: #000;\n background-color: #ffe72f;\n}\n.editorFooter {\n color: #aaa;\n}\n\n.tab{\n-moz-border-radius-topleft: 3px;\n-moz-border-radius-topright: 3px;\n}\n\n.tagging,\n.tagged{\n background: #4c4c4c;\n border: 1px solid #4c4c4c; \n}\n\n.selected .tagging,\n.selected .tagged{\n background-color: #333;\n border: 1px solid #ffbf00;\n}\n\n.tagging .listTitle,\n.tagged .listTitle{\n color: #fff;\n}\n\n.tagging .button,\n.tagged .button{\n color: #ffbf00;\n border: 0;\n padding: 0;\n}\n\n.tagging .button:hover,\n.tagged .button:hover{\nbackground: transparent;\n}\n\n.selected .isTag .tagging.simple,\n.selected .tagged.simple,\n.isTag .tagging.simple,\n.tagged.simple {\n float: none;\n display: inline;\n border: 0;\n background: transparent;\n color: #fff;\n margin: 0;\n}\n\n.cascade {\n background: #4c4c4c;\n color: #ddd;\n border: 1px solid #ffbf00;\n}\n/*}}}*/
/***\nTo use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.\n***/\n/*{{{*/\n.tagglyTagged li.listTitle { display:none;}\n.tagglyTagged li { display: inline; font-size:90%; }\n.tagglyTagged ul { margin:0px; padding:0px; }\n.tagglyTagging { padding-top:0.5em; }\n.tagglyTagging li.listTitle { display:none;}\n.tagglyTagging ul { margin-top:0px; padding-top:0.5em; padding-left:2em; margin-bottom:0px; padding-bottom:0px; }\n\n/* .tagglyTagging .tghide { display:inline; } */\n\n.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\n.tagglyTagging table { margin:0px; padding:0px; }\n\n\n.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\n.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}\n.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }\n.selected .tagglyTagging .button { display:inline; }\n\n.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space */\n.selected .tagglyTagging .hidebutton { color:#aaa }\n\n.tagglyLabel { color:#aaa; font-size:90%; }\n\n.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\n.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\n.tagglyTagging ul ul li {margin-left:0.5em; }\n\n.editLabel { font-size:90%; padding-top:0.5em; }\n/*}}}*/\n
|<<siteMap [[elgg]]>>|<<siteMap [[Blog]]>>|<<siteMap NME>><<siteMap MoodleDir>><<siteMap Drupal>>|
I discovered the best command line options for 'diff':\n{{{diff -iwBu assignment.class.php.nozip assignment.class.php}}}\n* -i ignore case\n* -w ignore white space\n* -B ignore blank lines\n* -u use //unified context// as described in [[wikipedia article|http://en.wikipedia.org/wiki/Diff]]\n\nAlso [[Compare directories via diff|http://www.macosxhints.com/article.php?story=20070408062023352]]\n
Diff between the current site and the svn original source. \n{{{diff -rq devel/ /var/www/elgg_9/ | grep -v -e .svn | sort >svn_diffs.txt}}}\n!!!In running code only:\nOnly in /var/www/elgg_9/: config.php\nOnly in /var/www/elgg_9/data: cache\nOnly in /var/www/elgg_9/data: errors.log\nOnly in /var/www/elgg_9/data: icons\nOnly in /var/www/elgg_9/data: profile_photos\nOnly in /var/www/elgg_9/data: rss\nOnly in /var/www/elgg_9/data: sessions\nOnly in /var/www/elgg_9/: .htaccess\nOnly in /var/www/elgg_9/: htaccess.prefolio\nOnly in /var/www/elgg_9/: htaccess.premessages\nOnly in /var/www/elgg_9/mod/blog: lib.php.org\nOnly in /var/www/elgg_9/mod/blog/templates: blog_post.html.org\nOnly in /var/www/elgg_9/mod: folio\nOnly in /var/www/elgg_9/mod: messages\nOnly in /var/www/elgg_9/mod: shouts\nOnly in /var/www/elgg_9/mod: status\nOnly in /var/www/elgg_9/mod/template/lib: default_template.php.org\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template: css.org\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: bg.gif\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: bullet.gif\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: css.css\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: firefox-gray.jpg\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: footerbg.gif\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: headerbg.gif\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template: images.org\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: quote.gif\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: tableft.gif\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template/images: tabright.gif\nOnly in /var/www/elgg_9/mod/template/templates/Default_Template: pageshell.org\nOnly in /var/www/elgg_9/mod/tinymce/lib/jscripts/tiny_mce: tiny_mce_057fd4357bb30f7468a87cbcaf5d2d05.gz\nOnly in /var/www/elgg_9/mod/toolbar: lib.php.org\n!!!In svn only:\nOnly in devel/mod/template/templates/Default_Template/images: blockquote.png\nOnly in devel/mod/template/templates/Default_Template/images: comments_bk.gif\nOnly in devel/mod/template/templates/Default_Template/images: footer-bg.png\nOnly in devel/mod/template/templates/Default_Template/images: footer.gif\nOnly in devel/mod/template/templates/Default_Template/images: header-bg.gif\nOnly in devel/mod/template/templates/Default_Template/images: header.gif\nOnly in devel/mod/template/templates/Default_Template/images: infoholder_bg.gif\nOnly in devel/mod/template/templates/Default_Template/images: search_icon.gif\nOnly in devel/mod/template/templates/Default_Template/images: side-back.gif\nOnly in devel/mod/template/templates/Default_Template/images: side-back.jpg\nOnly in devel/mod/template/templates/Default_Template/images: sidebar-bottom.gif\nOnly in devel/mod/template/templates/Default_Template/images: sidebar-top.gif\nOnly in devel/mod/template/templates/Default_Template/images: toolbar-bg.gif\nOnly in devel/mod/template/templates/Default_Template/images: wrap.gif\n
\n\n<<<\nI apologize for making comparisons with Moodle but that is the other Open Source system I use \nand at one point in development Moodle and Elgg were at very similar stages. Moodle (and many other O.S systems) have an openly\nadvertised Roadmap which developers adhere to for the most part. Currently there is a good deal of discussion about directions for version 2.0 of Moodle.\nContrast that with the secretive way that Curverider have managed the transition from Elgg 0.9 to 1.x. \n<<<\nList of [[UK Elgg sites|http://userweb.port.ac.uk/~duke-wie/blog/2008/12/upsunet/]] from Emma Williams
/***\nDropDownTagChooser\nhttp://simonbaird.com/mptw/#DropDownTagChooser\nRequires TagUtils\nExample:\n{{{<<selectUniqueTag Priority>>}}}\n<<selectUniqueTag Priority>>\nSee also ExampleTask (uses ViewTemplate to put a couple of these in the toolbar).\n***/\n//{{{\nvar selectUniqueTagOnChange = function(tiddler,newTag,tagGroup) {\n\n // can I do this a better way, ie not have to use store.getTiddler???\n // just use macro handler scope ???\n\n var t = store.getTiddler(tiddler);\n t.setUniqueTagFromGroup(newTag,tagGroup);\n\n // refresh visible tiddlers\n story.forEachTiddler(function(title,element) {\n if (element.getAttribute("dirty") != "true") \n story.refreshTiddler(title,false,true);\n });\n\n return false;\n}\n\nconfig.macros.selectUniqueTag = {};\nconfig.macros.selectUniqueTag.handler =\n function(place,macroName,params,wikifier,paramString,tiddler) {\n\n var tagGroup = params[0];\n var label = params[1]?params[1]:params[0]+":";\n\n var tagsInGroup = getTitles(store.getTaggedTiddlers(params[0]));\n\n var select = document.createElement("select");\n\n /*\n // dont know how to make this work..\n var update = function(e) {\n if (!e) var e = window.event;\n alert("here");\n return false;\n };\n select.onchange = update;\n */\n\n select.setAttribute("onchange","selectUniqueTagOnChange('"+\n tiddler.title+"',this.options[this.selectedIndex].text,'"+tagGroup+"');");\n\n select.setAttribute("style","font-size:90%;"); // evil. should use a class!\n\n // in case there is currently none of them\n if (!tiddler.hasAnyTag(tagsInGroup)) {\n var opt = document.createElement("option");\n opt.text = "-";\n opt.selected = true;\n try {\n // for IE\n select.add(opt);\n }\n catch(e) {\n select.appendChild(opt)\n };\n }\n\n for (var i=0;i<tagsInGroup.length;i++) {\n var opt = document.createElement("option");\n opt.text = tagsInGroup[i];\n if (tiddler.hasTag(tagsInGroup[i]))\n opt.selected = true;\n try {\n // for IE\n select.add(opt);\n }\n catch(e) {\n select.appendChild(opt)\n };\n }\n\n wikify(label,place,null,tiddler);\n place.appendChild(select);\n}\n\n//}}}
Add the following "branding" to each global theme. Users can remove it if they like.\n\n{{{ <div id="header"><!-- start header --> }}}\n{{{ <h1>EC Elgg</h1>}}}\n{{{ <h2>Social Blogging for connected learning</h2>}}}\n{{{ </div><!-- end header -->}}}\n\n[[Notes on themes branded|EC themes branded]]
Following themes edited to [[fix menu display|Fix display global menu : css]] and brand with [[EC tag line|EC branding themes]]:\n|!Old theme|!New Theme|!# cols|!width|!colour|!Other|\n|Northern|Northern EC| 2 |fixed|dark blue|deep header|\n|Gentle Calm|Gentle Calm EC| 2 |full|greeny| |\n|Classic Elgg|Classic Elgg EC| 2 |full|bright blue| |\n|leaves|leaves EC| 3 |fixed|orange & white| |\n|Shaded Grey|Shaded Grey EC| 2 |fixed|dark blue & grey| |\n|Blue Leaves|Blue Leaves EC| 2 |fixed|dark grey & grey| |\n\n!!Notes:\n* for Northern EC theme added: {{{ margin:8px 0 0 0;}}} to #header h1 in order to move the header out of the way of the language pull down menu (which should be made smaller).
From Aaron today: \n<<<\nTo start/stop the firewall use sudo /etc/init.d/firewall [stop|start] (just a little script I wrote to make it easier to use)\nThe actually firewall rules that the stop start script call are /etc/rc.d/rc.firewall and are readable only by root (so you'll have to sudo less it). Feel free to take a look at it. I've added some comments which might make it a little easier to understand. \n<<<\n
Check following tiddlers:\n* [[Theme changes]]\n* [[Theme sidebar]]\n* [[ELS theme tweaks]]\n* [[ELS theme tweaks : fix #7]] -- Folio\n* [[Updating : changes from svn -- default_template.php]]\n\n+++!!![Files involved]\n<<<\n /elgg_9/mod/blog/lib.php\n /elgg_9/mod/blog/templates/blog_post.html\n /elgg_9/mod/file/lib.php\n /elgg_9/mod/friend/lib.php\n /elgg_9/mod/newsclient/lib.php\n /elgg_9/mod/profile/lib.php\n /elgg_9/mod/template/lib/default_template.php\n /elgg_9/mod/template/templates/Default_Template/css\n /elgg_9/mod/template/templates/Default_Template/pageshell\n /elgg_9/mod/toolbar/lib.php\n<<<\nPlus:\n> mod/folio/lib.php\n> mod/messages/lib.php\n> mod/feeds/lib.php\n> mod/shouts/lib.php\n===\n\n!!Procedure\n* After the usual backups..\n* make safe copies of files and copy over from elgg_9:\n** pageshell (note no diff between pageshells from elgg_9 and els)\n** css (ditto above)\n** frontpage_loggedin and frontpage_loggedout\n** rename images and copy over the modified images\n* edit lib.phps to add {{{<span>}}} and change naming\n* attend to sidebar\n* rework css\n\n[[ELS 0.92 -- theme progress]]
# Download from svn\n** Messages {{{/els/modules$ svn co https://svn.elgg.org/plugins/messages}}} ''Revision 332''. In //~/els/modules/messages// +++[what I did]\n# check out the README file. Found that I was running the latest svn copy of Elgg so didn't need the patch\n# copy the trunk into mod {{{/var/www/els$ sudo cp -R ~/els/modules/messages/trunk messages}}}\n# open up README.txt in one window and select the lines containing rewrite rules. In other window {{{sudo vim .htaccess}}} and paste them in.\n# take a look at http://barnabas.lly.earlham.edu/els to see if it works. ''IT DOES!''\n===\n\n** [[Shouts|Shouts plugin]] ''Revision 332''\n** [[z_ascext|Access extension : friends]] {{{svn co https://svn.elgg.org/plugins/z_acsext}}}\n** [[status|Status & templates]]\n# Refer to [[Installing modules]] -- use the ''trunk'' folder and [[Elgg : to install plugin]]\n# acquire ''folio'' from garrettn [[Folio v8 beta 2|http://conversation.cgu.edu/garrettn/files/312/1509/folio.zip]]. In //~/els/modules/folio//\n** [[Install Folio into els 0.92]]\n* Install shouts, status and z_ascext\n** code backup in //els_code_postfolio.tgz//\n** +++[shouts install]\n{{{\n/var/www/els/mod$ sudo cp -r ~/els/modules/shouts/trunk shouts\n/var/www/els/mod$ sudo chown -R www-data:admin shouts/\n}}}\n=== Add keywords to template\n** repeat for //status//. Remember to edit //mod/template/lib/default_template.php//\n** repeat for //z_acsext//\n----\nHandy places to view list of plugins:\n* [[svn plugins|https://svn.elgg.org/plugins/]]\n* [[download page plugins|http://classic.elgg.org/_download/plugins/]]\nThese ''should'' be the same\n\nInstall 2 extra plugins:\n# [[community invite|Community invite plugin]] -- invite friends to community. Handy. Apparently now a core component. ''Brill''\n# forwarder -- change 'landing' page from Profile to user selected place. Adds a ~ link directly to URL.\n** this does not work in 0.9 according to [[forwarder plugin not forwarding|http://classic.elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1077&page=1#Item_7]] ''shame''\n\n;''FIND''\n:maintenance plugin that stops user logins -- [[maintenance mode|http://classic.elgg.org/rho/files/224/198/maintenance-mode-v0.1.zip]] only tested with v0.8\n\n\n
\nThis is what we currently have: [[screenshot|graphics/els_theme_goal_current.png]]<<imagebox>>\nAnd this is what we're aiming for : [[screenshot|graphics/els_theme_goal.png]]<<imagebox>>\n\n# change sitename and tagline in /config.php. +++[code]\n{{{\n $CFG->sitename = 'learning spaces';\n $CFG->tagline = 'Your stuff &middot;&middot;&middot;&gt; &nbsp;';\n}}}\n===\n\n# float the searchbox to the right? Apply [[Theme changes]] #5 Searchbox. [[Fix searchbox with patch]]\n# now add {{{ <span> }}} to all the component names to allow style to operate\n# using patching technique [[Fix searchbox with patch]] do \n** +++[blog]\n{{{\ndiff lib.php /var/www/elgg_9/mod/blog/lib.php.org >~/els/blog_class.patch\nsudo cp lib.php lib.php.org\nsudo patch lib.php < /home/markp/els/blog_class.patch\ngrep '<span>' lib.php\n}}}\nNote that I did the patch with the 'org' file since this did have the {{{<span>}}} tags but the lib.php had other formatting stuff which I'll apply later.\n===\n\n** +++[files]\n{{{\n/var/www/els/mod/file$\ndiff lib.php /var/www/elgg_9/mod/file/lib.php > ~/els/file_span.patch\nsudo cp -p lib.php lib.php.org\nsudo patch lib.php < /home/markp/els/file_span.patch\npatching file lib.php\ngrep '<span>' lib.php\nsudo chown www-data:admin lib.php\n}}}\n===\n\n** 'Your Network' is actually in mod/friends! Do the same here.\n** Messages. I had to edit the diffed patch file to remove extraneous stuff so that just the 'spans' remained.\n** 'Your Resources' is in 'newsclient' !!\n** Profile in mod/profile\n** Shouts\n** +++[folio]\nHas lots of diffs so:\nDo Activity first:\n{{{ diff lib.php /var/www/elgg_9/mod/folio/lib.php | grep -C 2 'Activity' > ~/els/folio_activity_span.patch}}}\nThis didn't work. Probably need to bite the bullet and just do a straight diff and edit the output. Try uploading to PC and edit there.\nI ended up editing this manually because no amount of faffing around with a patch file worked! I have no idea why it kept failing this time!\n===\n\n# Fix sidebar\n** change stylesheet {{{#sidebar margin : 10px 0 0 0 ;}}} to add 10 px margin to top of each section\n** No login/logout/admin links! Follow [[Theme changes]] . Manually edit //mod/template/lib/default_template.php// +++[changes]\nFrom :\n{{{\n 105 $tags = __gettext("Tags");\n 106 $resources = __gettext("Resources");\n 107 $template['ownerbox'] = <<< END\n 108 \n 109 <div id="me">\n 110 <div id="icon"><a href="{{profileurl}}">{{usericon}}</a></div>\n 111 <div id="contents" >\n 112 <p>\n 113 <span class="userdetails">{{name}}<br /><a href="{{profileurl}}rss/"><img src="{{url}}mod/templat\n 113 e/icons/rss.png" alt="RSS" border="0" /></a> | <a href="{{profileurl}}tags/">$tags</a> | <a href="{{profileur\n 113 l}}newsclient/">$resources</a></span></p>\n 114 <p>{{tagline}}</p>\n 115 <p>{{lmshosts}}</p>\n 116 <p class="usermenu">{{usermenu}}</p>\n 117 </div>\n}}}\nTo :\n{{{\n 105 $tags = __gettext("Tags");\n 106 $resources = __gettext("Feeds");\n 107 $template['ownerbox'] = <<< END\n 108 <!-- style {topmenu} within icon div --> \n 109 <div id="me">\n 110 <div id="icon" class="float-left"><a href="{{profileurl}}">{{usericon}}</a></div>\n 111 <div class="sidebar-block">{{topmenu}}</div>\n 112 <div class="clear"></div>\n 113 <div id="contents" >\n 114 <p>\n 115 <span class="userdetails">{{name}}<br /><a href="{{profileurl}}rss/"><img src="{{url}}mod/templat\n 115 e/icons/rss.png" alt="RSS" border="0" /></a> | <a href="{{profileurl}}tags/">$tags</a> | <a href="{{profileur\n 115 l}}newsclient/">$resources</a></span></p>\n 116 <p>{{tagline}}</p>\n 117 <p>{{lmshosts}}</p>\n 118 <p class="usermenu">{{usermenu}}</p>\n 119 {{statusdisplay}}\n 120 </div>\n}}}\n===\n\n\n\n\n
Install [[Elgg 0.92]]\nMake sure the following works:\n* [[New version of Folio]]\n* [[Access restriction to include 'friends'|http://classic.elgg.org/trac/ticket/372]] -- install [[z_acsext|http://classic.elgg.org/_download/plugins/z_acsext.tar.gz]]\n* check the following ticket works : [[No group and communities in access restrictions dropdown when making a new post|http://classic.elgg.org/trac/ticket/316]]\n* check [[image preview|http://classic.elgg.org/trac/ticket/180]]\n* check that [[improved email filter|http://classic.elgg.org/trac/ticket/358]] included in 0.92 -- [[not yet|http://classic.elgg.org/trac/query?status=new&status=assigned&status=reopened&milestone=0.9.2&order=priority]]\n\n
Changes needed to the theme as seen by a Guest user:\n# On the front page before login you really don't want to see "Your stuff" -- [[screenshot|graphics/frontpage_guest_login.png]]<<imagebox>> To fix : generate {tagline} only when logged in.\n# Make these changes to the default display of user's profile -- [[screenshot & corrections|graphics/guest_user_profilevew.png]]<<imagebox>> \n** see [[user profile display : folio]] -- 20-May sorted the sidebar styles. See [[Folio issues : html output]]\n# Note that there's no way of getting to the home page to login or see what's going on if you're a guest!! Need to implement the link to home (with 'title' attribute) [But implemented changes to stylesheet & config.php] -- fixed in [[pageshell code]]\n# Change "Click here to add this user as a friend." to "Add this user as a friend"\n# RSS feed icon to blog on top line of //every// major page. Edit page template (?) to remove this.\n# Change <a> and a:hover when in header to lemon yellow, bright yellow ([[screen|graphics/theme_header_link_hover.png]]<<imagebox>> Sorted with new css 20-May\n# In a folio page, any unordered list within a page the bullet points are not rendered and so the list just appears as indented text. +++[response from Nathan Garrett]>\nUmn, I actually tried to not get the bullets to show :=). If i remember correctly, I put a line in the css files to supress bullets. Go to mod/folio/css/view.ss.php\n{{{\nul{\n list-style-image:none;\n list-style-position:outside;\n list-style-type:none;\n}\n}}}\nThe above controsl the style of the lists. Sorry about the delayed response, thanks for yoru patience. If that doesn't work, I'd suggest using the firebug extension with firefox. It'll show you what styles are being attached to a specific elemetn.\n\nNathan\n===\nFixed with [[ELS theme tweaks : fix #7]]\n\n\n
In //mod/folio/css/view.ss.php//\nComment out the ul style which removes the bullets:\n{{{\n/*\nul{\n list-style-image:none;\n list-style-position:outside;\n list-style-type:none;\n}\n*/\n}}}\nAlso change:\n{{{\n#splitpane-content div.folio_page_view_title h2.folio_page_view_title {\n}}}\nto:\n{{{\n#main div.folio_page_view_title h2.folio_page_view_title {\nfont-size: 130%;\ncolor: #000;\n}\n}}}\n
!!problem with editing Folio pages\nBasically, the deal is that when you try to edit an individual Folio page (via the Folio tab) you just see a blank box:\nPass cursor over edit box:\n[img[graphics/folio_page_pre-edit_display.png]]\n\nClick in edit box :\n\n[img[graphics/folio_page-edit.png]]\n\nYou ''can'' add html code via the HTML button and the underlying text shows up in the editing box. But when you Update, the area box remains blank and nothing shows up until after you Save and return. The same behaviour is exhibited by child pages as well.\n\nInitially I thought that it was a browser issue, but there's the same behaviour with both Firefox 2,v3, and Internet Exploder 6. Now I'm wondering whether it's Theme issue.\nThe wierd thing is that @@folio editing works for communities@@\n
<!---\n| Name:|~TagglyTaggingEditTemplate |\n| Version:|1.1 (12-Jan-2006)|\n| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|\n| Purpose:|See TagglyTagging for more info|\n| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|\n--->\n<!--{{{-->\n<div class="toolbar" macro="toolbar +saveTiddler closeOthers cancelTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div class="editor" macro="edit text"></div>\n<br/>\n<!--}}}-->
# All styles for the elgg toolbar are in {{{mod/toolbar/css}}}. The html controlling the toolbar is in toolbar.inc and toolbarloggedout.inc . +++[styles used]>\n/*\n USER TOOLBAR: IN DEFAULT ELGG, THIS SITS\n AT THE VERY TOP OF THE PAGE.\n*/\ndiv#elggtoolbar \ndiv#elggtoolbar p \ndiv#elggtoolbar span a \ndiv#elggtoolbar span a:hover \ndiv#elggtoolbar img \n/*\n GLOBAL USER OPTIONS: LOGOUT AND ACCOUNT SETTINGS, TOP RIGHT\n*/\ndiv#elggtoolbar #global-menuoptions\ndiv#elggtoolbar #global-menuoptions ul \ndiv#elggtoolbar #global-menuoptions li \ndiv#elggtoolbar #global-menuoptions li a\ndiv#elggtoolbar #global-menuoptions p \ndiv#elggtoolbar #global-menuoptions img \n/*\n USER NAVIGATION: THIS STYLES THE USERS MAIN NAV IN THE TOOLBAR,\n IN DEFAULT ELGG IT SITS OVER ON THE LEFT HAND SIDE\n*/\ndiv#elggtoolbar #navigation \ndiv#elggtoolbar #navigation li \ndiv#elggtoolbar #navigation a \ndiv#elggtoolbar #navigation a:hover \ndiv#elggtoolbar #navigation a.selected \ndiv#elggtoolbar form \ndiv#elggtoolbar #powered-by-elgg \ndiv#container \n===\n
Elgg 0,.91 is apparently working with Moodle 1.9 according to [[this|http://moodle.org/mod/forum/discuss.php?d=85486]] discussion on moodle.org, though the last posting suggested problems.\n\nAlso [[ELGG Portfolio Block: Hidden from users|http://moodle.org/mod/forum/discuss.php?d=57107]] has a code patch worth looking at.\n\n
Elgg install went successfully. Bunch plugins downloaded from the [[download plugins page|http://elgg.org/_download/plugins/]]\n* Installed River plugin -- great success. But error when adding River to Spiggy Topes (stest) Profile: +++[error message]>\nWarning: Invalid argument supplied for foreach() in /var/www/ecsso/mod/river/lib.php on line 93\nWarning: Invalid argument supplied for foreach() in /var/www/ecsso/mod/river/lib.php on line 103\n=== Same effect using the admin account. Plus, when the widget is deleted the errors disappear. (I installed a 'development' version from 21-Aug but got the same error message)\n** Sussing out errors. +++[Offending code]>\n{{{ 92 $list = "";}}}\n{{{ 93 foreach ($myfriends as $friend)}}}\n{{{ 94 $list .= $friend->friend . ",";}}}\n{{{ 95 $list = trim($list, " ,");}}}\n{{{ 97 / Get a subset who also have me as a friend}}}\n{{{ 98 $query = "SELECT owner from {$CFG->prefix}friends where owner in ($list) and friend=$userid";}}}\n{{{ 99 /echo "$query\sn";}}}\n{{{ 100 $theirfriends = get_records_sql($query);}}}\n{{{ 102 $list2 = "";}}}\n{{{ 103 foreach ($theirfriends as $friend)}}}\n{{{ 104 $list2 .= $friend->owner . ",";}}}\n{{{ 106 $list = "$list2";}}}=== But if you don't have a friend yet (as would be the case upon starting up) {{{$myfriends}}} (line 93) will have no contents. Similarly {{{$theirfriends}}} (line 103) will be null also. This can be easily shown by adding a friend -- the error then disappears. Sol^^n^^ : before doing the loop test that {{{$myfriends}}} and {{{$theirfriends}}} is not null.\n** Conclusion : keep 'River' in for the time being.\n* Diego Ramirez's new (v0.2.2.1) [[messages|http://elgg.org/mod/plugins/plugin.php?id=18]] plugin. +++[Features]>\nPrivate Messages Plug-in with the following features:\n* List messages\n* List sent messages\n* Send messages to friends\n* Send messages to communities\n* Send messages to any user (through a side bar link)\n* Delete messages\n* Mark messages as (read | unread)\n* Email notification if configured by the user.\n* contact keyword to add a 'Send Messages' in any template\n* Sidebar 'Send message' link\n===\n\n* [[Status display|http://elgg.org/mod/plugins/plugin.php?id=55]] +++[Installation details]>\n{{{cd /var/www/ecsso/units/templates}}}\n{{{sudo pico default_template.php}}}\n <div id="me">\n <div id="icon"><a href="{{profileurl}}">{{usericon}}</a></div>\n <div id="contents" >\n <p>\n <span class="userdetails">{{name}}<br /><a href="{{profileurl}}rss/$\n <p>{{tagline}}</p>\n <p>{{lmshosts}}</p>\n <p class="usermenu">{{usermenu}}</p>\n <p>{{statusdisplay}}</p>\n </div>\n </div>\n===\n\n* folio\n
Using http://barnabas.lly.earlham.edu/elgg_9 as testbed for v0.91. Download plugins to use to elgg/plugins_9\nRecord progress in installing /testing here.\n!!!To install\n# Update svn plugins : {{{svn co https://svn.elgg.org/plugins}}} \n# Make a backup of the database {{{ mysqldump -u elggbackup -pelggbackup -CQe elgg_9 >pre_folio.sql}}}\n# create dir in /mod {{{sudo mkdir folio}}}\n# copy over code {{{ sudo cp -r folio_7/* /var/www/elgg_9/mod/folio/}}} OR {{{sudo cp -R ~/sandbox/plugins/messages/trunk /var/www/elgg_9/mod/messages}}}\n# make backup of .htaccess if neccessary {{{sudo cp .htaccess htaccess.prefolio}}}\n# edit the htaccess\n# change ownership {{{sudo chown -r www-data:admin folio}}}\n\n[[Front page stuff]]\n\n!!User oriented\n|!plugin/hack|!What it does|!When installed|!Comments|\n|[[reciprocal friends|Elgg: Reciprocal Friends]]|make a friend go both ways| |only works with non moderated friendships -- wait for 0.93 release|\n|[[shout|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1352&page=1#Item_0]]|short messages to shout out| April-1|seems to work.Removed when fixing Folio. Wait for new release from Diego. Watch the page.|\n|Messages|send message to a friend/community|installed from sandbox/plugins (ie svn version). Seems to work|\n|River|displays a 'river' of activity|[[problems here|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1424]]|The INSTALL file says to apply River-plugin.patch|\n|SHOUTs official release|shout everywhere|23-April - no problems.Installed updated version from svn 24-april|see [[Shouts plugin]]|\n|Status|update what you are doing|svn 24-April|see [[Status & templates]]|\n!!New features\n|!plugin|!What it does|!When installed|!Comments|\n|[[Folio v7|http://conversation.cgu.edu/garrettn/files/210/1110/folio07.zip]]|Folio wiki| April-1|get Kerri to carry out the [[Test cases|Folio test cases]]. backup copy of .htaccess made|\n\n+++[river-plugin.patch]>\nYes, the river-plugin.patch is over 400 lines long and patches a *lot* of different files:\n<<<\nIndex: mod/commentwall/do_action.php\nIndex: mod/commentwall/lib.php\nIndex: mod/blog/lib.php\nIndex: mod/friend/lib/friends_actions.php\nIndex: mod/file/lib.php\nIndex: mod/community/lib.php\nIndex: mod/community/lib/communities_actions.php\nIndex: mod/community/lib/community_member_add.php\nIndex: mod/community/lib/community_member_remove.php\n<<<\nI'm a wee bit queasy about this too since it means that an svn update on for example /mod/blog/lib will overwrite the effects of this patch.\n=== \nNo longer needed since it's been updated. See [[Front page stuff]]\n
We're going to migrate from 0.81\n!!1. Get the code\n# backup code & data. Done\n# download and unpack elgg 0.91. See [[Elgg version strangeness]]\n# move to /var/www\n!!2. Set up the database\nFollow [[this installation guide|http://elgg.org/mod/mediawiki/wiki/index.php/Installation_guide]]\nI'm going to make a new database and copy in the 0.81 data, then I'll open this with the 0.91 code and it should update. That way, I'll be able to test out a database restore.\n{{{mysql -uroot -p}}}\n{{{CREATE DATABASE elgg_91 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;}}}\nCreate Elgg User for this database:\n{{{mysql> GRANT ALL PRIVILEGES ON elgg_91.* TO elgg_user@localhost IDENTIFIED BY '*****';}}}\nAlso, backup user with read privs:\n{{{mysql> GRANT SELECT,LOCK TABLES on elgg_91.* TO elggbackup@localhost IDENTIFIED BY 'elggbackup';}}}\n{{{FLUSH TABLES;}}}\n!!! Load the database tables backed up from 0.81\n{{{$cd elggbackups}}}\n{{{$ mysql -uelgg_user -p elgg_91 <elgg_dba-backup.27.sql}}}\n!!3. Set up config.php and change ownerships\nThis has changed ''a lot'' from 0.81. The config.php now does not have the site name etc, just the database details. Not sure I like this....\n* create data directory and own:\n{{{$ cd /var $ sudo mkdir elgg_data_91 ; $ sudo chown www-data:www-data elgg_data_91/}}}\nAdd the following to config.php:\n{{{// Location for data}}}\n{{{$CFG->dataroot = '/var/elgg_data_91/';}}}\nAlso copy htaccess-dist to .htaccess (doc didn't mention this) {{{sudo cp -p htaccess-dist to .htaccess}}} (preserve permissions)\n!!4. Nearly ready to go\nNow let's change perms and owners:\n{{{sudo chown -R www-data:admin * ; sudo chmod 770 * }}} and makde sure to check permissions on //.htaccess// (if you did {{{cp -p}}} you will have preserved ownership and perms and everything will be fine.\nAnd enable the install thing to work:\n{{{sudo chmod 777 data}}}\nTry barnabas.lly.earlham.edu/elgg_91 -- +++[error in config.php]>\n the warning to leave trailing slash generates an error cos the ** gets at the beginning of the line. Just make the line begin with the comment {{{//}}}\n===\n!!5. First run - barnabas.lly.earlham.edu/elgg_91\nWhen it runs sucessfully the first time you will get a bunch of SQL statements appearing to say that the database tables have either been set up from scratch or added to (in the case of an upgrade). +++[sql output]>\n<html>\n<hr />\n(mysql): select version() &nbsp; \n<hr />\n<hr />\n(mysql): /*!40101 ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_content_flags` ( `ident` int(11) NOT NULL auto_increment, `url` varchar(128) NOT NULL default '', PRIMARY KEY (`ident`), KEY `url` (`url`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_file_folders` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, folder creator', `files_owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, folder owner (community)', `parent` int(11) NOT NULL default '0' COMMENT '-&gt; file_folders.ident, parent folder', `name` varchar(128) NOT NULL default '', `access` varchar(20) NOT NULL default 'PUBLIC', `handler` varchar(32) NOT NULL default 'elgg', PRIMARY KEY (`ident`), KEY `files_owner` (`files_owner`), KEY `owner` (`owner`), KEY `access` (`access`), KEY `name` (`name`)) &nbsp; \n\n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_file_metadata` ( `ident` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL default '', `value` text NOT NULL, `file_id` int(11) NOT NULL default '0' COMMENT '-&gt; files.ident', PRIMARY KEY (`ident`), KEY `name` (`name`,`file_id`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_files` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, file uploader', `files_owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, file owner (community)', `folder` int(11) NOT NULL default '-1' COMMENT '-&gt; file_folders.ident, parent folder', `community` int(11) NOT NULL default '-1' COMMENT 'not used?', `title` varchar(255) NOT NULL default '', `originalname` varchar(255) NOT NULL default '', `description` varchar(255) NOT NULL default '', `location` varchar(255) NOT NULL default '' COMMENT 'file location in dataroot', `access` varchar(20) NOT NULL default 'PUBLIC', `size` int(11) NOT NULL default '0' COMMENT 'bytes', `time_uploaded` int(11) NOT NULL default '0' COMMENT 'unix timestamp', `handler` varchar(32) NOT NULL default 'elgg', PRIMARY KEY (`ident`), KEY `owner` (`owner`,`folder`,`access`), KEY `size` (`size`), KEY `time_uploaded` (`time_uploaded`), KEY `originalname` (`originalname`), KEY `community` (`community`), KEY `files_owner` (`files_owner`)) &nbsp; \n<hr />\n\n<hr />\n(mysql): CREATE TABLE `elgg_friends` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, doing the friending', `friend` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, being friended', `status` varchar(4) NOT NULL default 'perm' COMMENT 'not used?', PRIMARY KEY (`ident`), UNIQUE KEY `owner` (`owner`, `friend`), KEY `friend` (`friend`), KEY `status` (`status`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_friends_requests` ( `ident` INT UNSIGNED NOT NULL AUTO_INCREMENT , `owner` INT NOT NULL COMMENT '-&gt; users.ident, doing the friending', `friend` INT NOT NULL COMMENT '-&gt; users.ident, being friended', PRIMARY KEY (`ident`) , UNIQUE KEY (`owner`,`friend`)) &nbsp; \n<hr />\n<hr />\n\n(mysql): CREATE TABLE `elgg_group_membership` ( `ident` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident', `group_id` int(11) NOT NULL default '0' COMMENT '-&gt; groups.ident', PRIMARY KEY (`ident`), UNIQUE KEY `user_id` (`user_id`,`group_id`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_groups` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident', `name` varchar(128) NOT NULL default '', `access` varchar(20) NOT NULL default 'PUBLIC', PRIMARY KEY (`ident`), KEY `owner` (`owner`,`name`), KEY `access` (`access`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_icons` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident', `filename` varchar(128) NOT NULL default '', `description` varchar(255) NOT NULL default '', PRIMARY KEY (`ident`), KEY `owner` (`owner`)) &nbsp; \n\n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_invitations` ( `ident` int(11) NOT NULL auto_increment, `name` varchar(128) NOT NULL default '', `email` varchar(128) NOT NULL default '', `code` varchar(128) NOT NULL default '', `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, sender of invitation', `added` int(11) NOT NULL default '0' COMMENT 'unix timestamp', PRIMARY KEY (`ident`), KEY `code` (`code`), KEY `email` (`email`), KEY `added` (`added`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_password_requests` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident', `code` varchar(128) NOT NULL default '', PRIMARY KEY (`ident`), KEY `owner` (`owner`,`code`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_profile_data` ( `ident` int(10) unsigned NOT NULL auto_increment, `owner` int(10) unsigned NOT NULL default '0' COMMENT '-&gt; users.ident', `access` varchar(20) NOT NULL default 'PUBLIC', `name` varchar(255) NOT NULL default '', `value` text NOT NULL, PRIMARY KEY (`ident`), KEY `owner` (`owner`,`access`,`name`)) &nbsp; \n\n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_tags` ( `ident` int(11) NOT NULL auto_increment, `tag` varchar(128) NOT NULL default '', `tagtype` varchar(20) NOT NULL default '' COMMENT 'type of object the tag links to', `ref` int(11) NOT NULL default '0' COMMENT 'ident of object the tag links to', `access` varchar(20) NOT NULL default 'PUBLIC', `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident', PRIMARY KEY (`ident`), KEY `owner` (`owner`), KEY `tagtype_ref` (`tagtype`,`ref`), FULLTEXT KEY `tag` (`tag`), KEY `tagliteral` (`tag`(20)), KEY `access` (`access`)) TYPE=MyISAM &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_template_elements` ( `ident` int(11) NOT NULL auto_increment, `name` varchar(128) NOT NULL default '', `content` text NOT NULL, `template_id` int(11) NOT NULL default '0' COMMENT '-&gt; templates.ident', PRIMARY KEY (`ident`), KEY `name` (`name`,`template_id`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_templates` ( `ident` int(11) NOT NULL auto_increment, `name` varchar(128) NOT NULL default '', `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, template creator', `public` enum('yes','no') NOT NULL default 'yes', `shortname` varchar(128) NOT NULL, PRIMARY KEY (`ident`), KEY `name` (`name`,`owner`,`public`)) &nbsp; \n\n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_user_flags` ( `ident` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, user the flag refers to', `flag` varchar(64) NOT NULL default '', `value` varchar(64) NOT NULL default '', PRIMARY KEY (`ident`), KEY `user_id` (`user_id`,`flag`,`value`)) &nbsp; \n<hr />\n<hr />\n(mysql): INSERT INTO `elgg_user_flags` VALUES (0,1,'admin','1') &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_users` ( `ident` int(10) unsigned NOT NULL auto_increment, `username` varchar(128) NOT NULL default '' COMMENT 'login name', `password` varchar(32) NOT NULL default '', `email` varchar(128) NOT NULL default '', `name` varchar(128) NOT NULL default '' COMMENT 'descriptive name', `icon` int(11) NOT NULL default '-1' COMMENT '-&gt; icons.ident', `active` enum('yes','no') NOT NULL default 'yes', `alias` varchar(128) NOT NULL default '', `code` varchar(32) NOT NULL default '' COMMENT 'auth value for cookied login', `icon_quota` int(11) NOT NULL default '10' COMMENT 'number of icons', `file_quota` int(11) NOT NULL default '1000000000' COMMENT 'bytes', `template_id` int(11) NOT NULL default '-1' COMMENT '-&gt; templates.ident', `owner` int(11) NOT NULL default '-1' COMMENT '-&gt; users.ident, community owner', `user_type` varchar(128) NOT NULL default 'person' COMMENT 'person, community, etc', `moderation` varchar(4) NOT NULL default 'no' COMMENT 'friendship moderation setting', `last_action` int(10) unsigned NOT NULL default '0' COMMENT 'unix timestamp', `template_name` varchar(128) NOT NULL default 'Default_Template' COMMENT '-&gt; templates.shortname', PRIMARY KEY (`ident`), KEY `username` (`username`,`password`,`name`,`active`), KEY `code` (`code`), KEY `icon` (`icon`), KEY `icon_quota` (`icon_quota`), KEY `file_quota` (`file_quota`), KEY `email` (`email`), KEY `template_id` (`template_id`), KEY `community` (`owner`), KEY `user_type` (`user_type`), KEY `moderation` (`moderation`), KEY `last_action` (`last_action`), FULLTEXT KEY `name` (`name`)) TYPE=MyISAM &nbsp; \n\n<hr />\n<hr />\n(mysql): INSERT INTO `elgg_users` VALUES (0, 'news', '5f4dcc3b5aa765d61d8327deb882cf99', '', 'News', -1, 'yes', '', '', 10, 10000000, -1, -1, 'person', 'no', 0, 'Default_Template') &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_weblog_comments` ( `ident` int(11) NOT NULL auto_increment, `post_id` int(11) NOT NULL default '0' COMMENT '-&gt; weblog_posts.ident', `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, commenter', `postedname` varchar(128) NOT NULL default '' COMMENT 'displayed name of commenter', `body` text NOT NULL, `posted` int(11) NOT NULL default '0' COMMENT 'unix timestamp', PRIMARY KEY (`ident`), KEY `owner` (`owner`), KEY `posted` (`posted`), KEY `post_id` (`post_id`), KEY `postedname` (`postedname`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_weblog_posts` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, poster', `weblog` int(11) NOT NULL default '-1' COMMENT '-&gt; users.ident, blog being posted into', `icon` int(11) NOT NULL default '-1', `access` varchar(20) NOT NULL default 'PUBLIC', `posted` int(11) NOT NULL default '0' COMMENT 'unix timestamp', `title` text NOT NULL, `body` text NOT NULL, PRIMARY KEY (`ident`), KEY `owner` (`owner`), KEY `access` (`access`), KEY `posted` (`posted`), KEY `community` (`weblog`)) &nbsp; \n\n<hr />\n<hr />\n(mysql): INSERT INTO `elgg_weblog_posts` VALUES (0, 1, 1, -1, 'PUBLIC', 1119422380, 'Hello', 'Welcome to this Elgg installation.') &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_weblog_watchlist` ( `ident` int(11) NOT NULL auto_increment, `owner` int(11) NOT NULL default '0' COMMENT '-&gt; users.ident, watcher', `weblog_post` int(11) NOT NULL default '0' COMMENT '-&gt; weblog_posts.ident, watched post', PRIMARY KEY (`ident`), KEY `owner` (`owner`), KEY `weblog_post` (`weblog_post`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_datalists` ( `ident` int(10) unsigned NOT NULL auto_increment, `name` varchar(32) NOT NULL default '', `value` text NOT NULL, PRIMARY KEY (`ident`), KEY `name` (`name`)) &nbsp; \n<hr />\n\n<hr />\n(mysql): CREATE TABLE `elgg_users_alias` ( `ident` int(10) unsigned NOT NULL auto_increment, `installid` varchar(32) NOT NULL default '', `username` varchar(32) NOT NULL default '', `firstname` varchar(64) NOT NULL default '', `lastname` varchar(64) NOT NULL default '', `email` varchar(128) NOT NULL default '', `user_id` int(10) unsigned NOT NULL default 0, PRIMARY KEY (`ident`), KEY `username` (`username`), KEY `installid` (`installid`), KEY `user_id` (`user_id`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_files_incoming` ( `ident` int(10) unsigned NOT NULL auto_increment, `installid` varchar(32) NOT NULL default '', `intentiondate` int(11) unsigned NOT NULL default 0, `size` bigint unsigned NOT NULL default 0, `foldername` varchar(128) NOT NULL default '', `user_id` int(10) unsigned NOT NULL default 0, PRIMARY KEY (`ident`), KEY `user_id` (`user_id`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_feed_posts` ( `ident` int(11) NOT NULL auto_increment, `posted` varchar(64) NOT NULL default '0' COMMENT 'imported human readable date', `added` int(11) NOT NULL default '0' COMMENT 'unix timestamp', `feed` int(11) NOT NULL default '0' COMMENT '-&gt; feeds.ident', `title` text NOT NULL, `body` text NOT NULL, `url` varchar(255) NOT NULL default '' COMMENT 'post-specific or permalink URL', PRIMARY KEY (`ident`), KEY `feed` (`feed`), KEY `posted` (`posted`,`added`), KEY `added` (`added`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_feed_subscriptions` ( `ident` int(10) unsigned NOT NULL auto_increment, `user_id` int(10) unsigned NOT NULL default '0' COMMENT '-&gt; users.ident', `feed_id` int(10) unsigned NOT NULL default '0' COMMENT '-&gt; feeds.ident', `autopost` enum('yes','no') NOT NULL default 'no' COMMENT 'whether to insert into subscriber\s's own blog', `autopost_tag` varchar(128) NOT NULL default '' COMMENT 'tag list to add to auto-posts', PRIMARY KEY (`ident`), KEY `feed_id` (`feed_id`), KEY `user_id` (`user_id`), KEY `autopost` (`autopost`)) &nbsp; \n\n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_feeds` ( `ident` int(10) unsigned NOT NULL auto_increment, `url` varchar(128) NOT NULL default '' COMMENT 'URL of actual feed', `feedtype` varchar(16) NOT NULL default '' COMMENT 'not used?', `name` text NOT NULL, `tagline` varchar(128) NOT NULL default '', `siteurl` varchar(128) NOT NULL default '' COMMENT 'URL of parent site/page', `last_updated` int(11) NOT NULL default '0' COMMENT 'unix timestamp', PRIMARY KEY (`ident`), KEY `url` (`url`,`feedtype`), KEY `last_updates` (`last_updated`), KEY `siteurl` (`siteurl`), KEY `tagline` (`tagline`)) &nbsp; \n<hr />\n<hr />\n(mysql): CREATE TABLE `elgg_messages` ( `ident` int(11) NOT NULL auto_increment, `title` text NOT NULL default '', `body` text NOT NULL default '', `from_id` int(11) NOT NULL, `to_id` int(11) NOT NULL, `posted` int(11) NOT NULL, `status` enum('read','unread') NOT NULL default 'unread', PRIMARY KEY (`ident`), KEY `from` (`from_id`,`to_id`,`posted`)) &nbsp; \n<hr />\n<hr />\n(mysql): SHOW TABLES &nbsp; \n<hr />\n<hr />\n(mysql): SELECT name FROM elgg_datalists WHERE name = 'version' &nbsp; \n<hr />\n\n<hr />\n(mysql): SHOW COLUMNS FROM `elgg_datalists` &nbsp; \n<hr />\n<hr />\n(mysql): INSERT INTO elgg_datalists (name, value) VALUES ('version', 2008021801) &nbsp; \n<hr />\n<hr />\n(mysql): SELECT LAST_INSERT_ID() &nbsp; \n<hr />\n<div class="notifysuccess" align="center">Yay!</div><br />\n</html>\n===\n* ''continue''\n* the Elgg system comes up -- login using the username and password you setup in the config.php for the initial administrator. Forgotten what it is? Good thing you got a ssh session open to the elgg directory eh what?\nInitially I unticked the 'Save login info' because I did not want to save it. The system would not login. Then when I tried again with it ticked but told Flock not to save the password I got "page not found" error : "barnabas.lly.earlham.edu/elgg_91/login/index.php" but it's present in /elgg_91\nI hit the back button and refresh and now it's logged in. [[configuration page|graphics/elgg_install_configscreen.png]]<<imagebox>>\n* Click on Configuration Manager or any of the other links generates 'page not found' and "duh!"\n* Logout and then log back in again, (saving password this time) -- messages:\n<<<\nAddress: http://barnabas.lly.earlham.edu/elgg_91/elgg_91/\nNot Found\nThe requested URL /elgg_91/elgg_91/ was not found on this server.\n<<<\n+++[config.php]>\n<html><pre>\n&lt;?php\n// ELGG system configuration parameters.\n// You could override default values here, to see all available\n// options see lib/config-defaults.php\n// Note: some values are override by the values stored in database\n// through admin manager\n\n// External URL to the site (eg http://elgg.bogton.edu/)\n\n $CFG->wwwroot = "http:///barnabas.lly.earlham.edu/elgg_91/";\n// **MUST** have a final slash at the end\n\n// Database configuration\n\n $CFG->dbtype = "mysql";\n $CFG->dbhost = "localhost";\n\n $CFG->dbuser = "elgg_user";\n $CFG->dbpass = "********";\n\n $CFG->dbname = "elgg_91";\n $CFG->prefix = "elgg_";\n\n $CFG->sysadminemail = "markp@earlham.edu";\n\n// Settings for initial administrator, only used at installation time\n $CFG->newsinitialusername = "news";\n $CFG->newsinitialpassword = "readallaboutit";\n// Location for data\n$CFG->dataroot = '/var/elgg_data_91/';\n?&gt;\n</pre></html>\n===\nRestart it Firefox. Same error - //URL /elgg_91/elgg_91/ was not found on this server.//. Hit the Back button and I've logged on now.\nNow there's no configuration screen! Find Site Administration {{{elgg_91/mod/elggadmin/index.php}}} then get the same configuration page as above.\nIt looks like elggadmin/index.php should be the configuration page and this is what is not found. \nBut /mod/elggadmin/index.php is there! Proof:\n<<<\n/var/www/elgg_91/mod/elggadmin$ ls -l\ntotal 16\n-rw-r--r-- 1 www-data admin 1138 2007-12-07 17:35 elggadmin.css\n-rw-r--r-- 1 www-data admin 431 2008-02-02 17:12 index.php\ndrwxr-xr-x 2 www-data admin 4096 2008-02-18 16:55 lib\n-rw-r--r-- 1 www-data admin 3348 2008-02-02 17:12 lib.php\n<<<\nDoing a {{{grep -r duh! *}}} it looks like the 'duh!' is being produced here:\n<<<\nmod/elggadmin/lib/engine.inc.php: /duh!\nmod/elggadmin/lib/engine.inc.php: $page->body = _gettext('duh!');\n<<<\n\n!! Is mod rewrite working?\nCould this be the problem? Setup a new VHOST config in /etc/apache2/sites-available called +++[elgg91.barnabas]>\n<html><pre>\n# Elgg 0.91 test\n#\n&lt;VirtualHost *&gt;\n ServerName barnabas.lly.earlham.edu/elgg_91\n ServerAdmin markp@earlham.edu\n DocumentRoot /var/www/elgg_91\n DirectoryIndex index.html index.php\n CustomLog /var/log/apache2/elgg_91.barnabas-access.log combined\n ErrorLog /var/log/apache2/elgg_91.barnabas-error.log\n# nicked from Mac OS X server VHOST file enables .htaccess to work\n &lt;Directory /var/www/elgg_91&gt;\n Options All Indexes ExecCGI Includes MultiViews FollowSymLinks\n AllowOverride All\n &lt;/Directory&gt;\n&lt;/VirtualHost&gt;\n</html></pre>\n===\nEnabled the vhost with {{{sudo a2ensite elgg91.barnabas}}} and restart apache with {{{sudo /etc/init.d/apache2 reload}}}\n\n
I made two mistakes with [[Elgg 0.91 install]]:\n# I used the same username and password for database access. This makes it easy to screw up and load into the wrong database.\n# I loaded the elgg 0.81 database but did not check the 'prefix' (this parameter was not present in 0.81 methinks). Thus new tables were created and chaos ensued.\nHave dropped the database (elgg_91) - [[Elgg install strangeness and fix]] - and will now start again.\n!!Restart\n* [[Compare download with SVN]]\n* recreate database with new password for user\n* load in 0.81 db\n* set correct 'prefix' in config.php\n!!Still problems\nLogin as 'news' won't take a password I can remember\nHad to frig with the database and add to table elgguser_flgs user_id=2, flag=admin value=1\nSame problem as before with login :\n;address\n: http://barnabas.lly.earlham.edu/elgg_91/elgg_91/login/index.php\n;error\n:Not Found. The requested URL /elgg_91/elgg_91/login/index.php was not found on this server.\ndeleted all the data in {{{/var/elgg_data_91/cache}}} and {{{/var/elgg_data_91/sessions}}}\nCheck errors.log - loads of errors with +++[Unable to parse URL (# 2)]>\n[04-Mar-2008 17:35:02] 2008-03-04 17:35:02\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-url'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/index.php\n\n[04-Mar-2008 17:34:56] 2008-03-04 17:34:56\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-url'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 24 of file /var/www/elgg_91/mod/elggadmin/lib/engine.inc.php\sScript: /elgg_91/mod/elggadmin/index.php\n\n[04-Mar-2008 17:34:56] 2008-03-04 17:34:56\nWarning: context: context already defined (context: elggadmin) (# 512)\nError in line 227 of file /var/www/elgg_91/mod/elggadmin/lib/engine.inc.php\sScript: /elgg_91/mod/elggadmin/in\ndex.php\n===\n!!Experiment\n# delete errors.log\n# start up elgg from scratch and login.\n# same error as before\n# +++[errors.log]>\n[04-Mar-2008 17:43:32] 2008-03-04 17:43:32\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-url'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/index.php\n\n[04-Mar-2008 17:43:41] 2008-03-04 17:43:41\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-url'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/login/index.php\n===\n
With the //same code as before// create +++[new blank database]>\nmysql> CREATE DATABASE elggtest DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;\nQuery OK, 1 row affected (0.00 sec)\nmysql> GRANT ALL PRIVILEGES ON elggtest.* TO elggtest@localhost IDENTIFIED BY '****';\nQuery OK, 0 rows affected (0.00 sec)\n===\n and use that. Edit /elgg_91 config.php to reflect the new database. Rename errors.log and check after login\n!!!Results:\nNew tables created correctly. But +++[same error]>\n[05-Mar-2008 11:54:01] 2008-03-05 11:54:01\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function\n.parse-url'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/index.php\n\n[05-Mar-2008 11:54:02] 2008-03-05 11:54:02\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-\nurl'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/index.php\n\n[05-Mar-2008 11:54:03] 2008-03-05 11:54:03\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-\nurl'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/index.php\n\n[05-Mar-2008 11:54:03] 2008-03-05 11:54:03\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-\nurl'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/index.php\n\n[05-Mar-2008 11:54:04] 2008-03-05 11:54:04\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-\nurl'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/index.php\n\n[05-Mar-2008 11:54:04] 2008-03-05 11:54:04\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-\nurl'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/mod/templa\nte/css.php\n\n[05-Mar-2008 11:54:19] 2008-03-05 11:54:19\nWarning: parse_url(http:///barnabas.lly.earlham.edu/elgg_91/) [<a href='function.parse-\nurl'>function.parse-url</a>]: Unable to parse URL (# 2)\nError in line 1440 of file /var/www/elgg_91/lib/elgglib.php\sScript: /elgg_91/login/inde\nx.php\n===\nwhen I open the site. [[screenshot of management page|graphics/elgg_091_config_error.png]]<<imagebox>>\nConclusion : ''problem's in the code''\n\n----\n!!Config.php settings\nI have just shown beyond a shadow of a doubt that the problem is in the way config.php is handled. I copied over a working config.php from my 0.81 installation and tweaked the settings to reflect the new database. It worked fine! That is I could log in as news, go to the configuration manager page and things got displayed properly. Now I'm wondering whether it's a permissions issue since nothing is getting saved to config.php. Currently I have the following for config.php:\n<<<\n{{{-rwxrwx--- 1 www-data admin 11001 2008-03-05 13:52 config.php}}}\n<<<\nMy reasoning here is that only the apache process needs to read and write to this file. Am I wrong in this? Should I set this file to world : write access? But that leaves it open to anyone writing. \nMy next test will be to start with a minimal config.php which has world : write access and then see what gives.\n!!!Config.php permissions\nWell, I restored the original minimalist config.php and changed its permissions to world : write with {{{sudo chmod 777 config.php}}} Guess what? We're back to the same error again :\n<<<\nNot Found\nThe requested URL /elgg_91/elgg_91/ was not found on this server.\nIn other words, somehow the elgg directory is getting appended to the URL as in http://barnabas.lly.earlham.edu/elgg_91/elgg_91/. \n<<<\n!Conclusion\nThe mechanism for populating the config.php is flakey -- edit it direct for stability\n\n\n
Is [[available|http://classic.elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1841]]
What I need is a feature comparison between Elgg 0.9 and 1.0 + plugins. I'm still not sure I can take things over. What's happened to the blogs for example?\nOn The Other Hand, this [[Kaltura plugin|http://groups.google.com/group/elgg-development/web/kaltura-plugin-alpha-screens]] looks ''s**t hot''. It's a video player. But the deal is that you can record and edit the video ''on the web'' -- [[take a look|graphics/kaltura_editor.png]]<<imagebox>> Also [[video transitions|graphics/kaltura_video_transitions.png]]<<imagebox>>. Implications are astonishing.\nAvailable from http://community.elgg.org/pg/groups/282/kaltura-plugin/ \nOther features are Artfolio V4 -- where?\nTinyMCEadv plugin [[discussion about URLs|http://groups.google.com/group/elgg-development/browse_thread/thread/c3cf2b2962fb94eb#]]\nThis may or may not be useful : [[Elgg group permissions that work|http://tastyseed.com/website-23/Elgg-Group-Permissions-That-Work!]]\n\n
From Steve O'Connor in [[Help us test elgg|http://news.elgg.org/pg/blog/bwerdmuller/read/44/help-us-test-elgg]]:\n<<<\nGot it up and running after tweaking .htaccess and engine/settings.php\nBest way to get it if you have ssh:\n{{{\nmkdir elgg\ncd elgg\nsvn co https://code.elgg.org/elgg/trunk/ .\n}}}\nThen updates would be:\n{{{\ncd elgg\nsvn up https://code.elgg.org/elgg/trunk/ .\n}}}\n<<<\n
Whereas in 0.9 all the configuration details were located in a file called //config.php//, now they are scattered throught the database.\nThis makes porting a site from a test server to production server a pain in the botty dept.\n!! System locations:\n!!!Table :elggdatalists\n>SQL query: SELECT * FROM `elgg11` . `elggdatalists` WHERE `name` LIKE '%/var%' OR `value` LIKE '%/var%' LIMIT 0, 30 ;\n|!name|!value|\n|path| /var/www/elgg11/|\n|dataroot| /var/elgg11_data/|\n!!!Table: elggmetastrings\n>SQL query: SELECT * FROM `elgg11` . `elggmetastrings` WHERE `id` LIKE '%/var%' OR `string` LIKE '%/var%' LIMIT 0, 30 ;\n|!id|! string|\n|70| /var/elgg11_data/|\n!!!elggsites_entity\n>SQL query: SELECT * FROM `elgg11` . `elggsites_entity` WHERE `guid` LIKE '%elggelope%' OR `name` LIKE '%elggelope%' OR `description` LIKE '%elggelope%' OR `url` LIKE '%elggelope%' LIMIT 0, 30 ;\n|!guid|!name|!description|!url|\n|1| elggelope|Elgg 1.1 pilot site for ITAM| http://barnabas.lly.earlham.edu/elgg11/|\n
Had already pulled down an svn of 1.5RC1. Now do {{{/usr/home/markp/elgg15/trunk]$ svn update}}} and {{{Updated to revision 3163.}}}\nRepeat for +++[themes]>\nErrors:\n{{{\n/usr/home/markp/elgg_themes]$ svn update\nsvn: PROPFIND of '/extensions/themes': could not connect to server (https://code.elgg.org)\n}}}\n=== \n and +++[plugins]\n{{{\n/usr/home/markp/elgg_plugins]$ svn update\nU blog/manifest.xml\nU blog/views/default/blog/css.php\nU categories/manifest.xml\nU guidtool/manifest.xml\nU bookmarks/manifest.xml\nU members/manifest.xml\nU friends/manifest.xml\nU zaudio/manifest.xml\nU messageboard/manifest.xml\nU pages/start.php\nU pages/manifest.xml\nU pages/languages/en.php\nU pages/views/default/pages/css.php\nU pages/views/default/widgets/pages/view.php\nU externalpages/manifest.xml\nU twitter/manifest.xml\nU messages/sent.php\nU messages/actions/delete.php\nU messages/start.php\nU messages/manifest.xml\nU messages/languages/en.php\nU messages/index.php\nU messages/views/default/messages/view.php\nA messages/views/default/messages/forms/view.php\nU messages/views/default/messages/messages.php\nU messages/views/default/messages/css.php\nU gravatar/manifest.xml\nU tinymce/manifest.xml\nU invitefriends/manifest.xml\nU openid_client/start.php\nA openid_client/views/default/openid_client/css.php\nU file/start.php\nU file/manifest.xml\nU file/languages/en.php\nU apiadmin/manifest.xml\nU twitterservice/manifest.xml\nU walledgarden/manifest.xml\nU custom_index/manifest.xml\nA emaildomains\nA emaildomains/actions\nA emaildomains/actions/edit.php\nA emaildomains/start.php\nA emaildomains/manifest.xml\nA emaildomains/languages\nA emaildomains/languages/en.php\nA emaildomains/index.php\nA emaildomains/views\nA emaildomains/views/default\nA emaildomains/views/default/emaildomains\nA emaildomains/views/default/emaildomains/forms\nA emaildomains/views/default/emaildomains/forms/edit.php\nU embed/manifest.xml\nU embed/views/default/embed/media.php\nUpdated to revision 970.\n}}}\n=== \n
!!LDAP problems\nEmail to Aaron and Randy jan 14:\n<<<\n I have got 3 faculty interested in using Elgg this semester with their classes for blogging. It would be tremendously convenient if I could get LDAP to work.\nHere's the +++[configuration code]>\n<html><pre>\n $CFG->auth = 'ldap'; // string - which auth plugin to use\n $CFG->ldap_host = 'directory.earlham.edu';\n $CFG->ldap_port = 389;\n $CFG->ldap_basedn = 'ou=users,dc=domain,dc=com';\n $CFG->ldap_bind_dn = 'cn=stest';\n $CFG->ldap_bind_pwd = '';\n $CFG->ldap_protocol_version = 3;\n $CFG->ldap_filter_attr = 'cn'; // filter for username cn\n // Search attibutes: associative array with the key being the attribute\n // description, and the value being the actual LDAP attribute. firstname\n // lastname and mail are used to create the elgg user profile.\n $CFG->ldap_search_attr = array('firstname' => 'givenName',\n 'lastname' => 'sn',\n 'mail' => 'mail');\n $CFG->ldap_user_create = true; // create user with above attributes\n // Fallback option, try internal authentication if everything fails\n $CFG->ldap_internal_fallback = true;\n</pre></html>\n===\n which goes into config.php.\n\nI'm using the test user account 'stest' to try to read LDAP values. But I get the +++[following error]>\nAt the top of the screen:\n>Warning: ldap_error(): 166 is not a valid ldap link resource in /var/www/elgg_81/auth/ldap/lib.php on line 96\n>Warning: ldap_close(): 166 is not a valid ldap link resource in /var/www/elgg_81/auth/ldap/lib.php on line 270\nFurther down:\n> Unable to bind to the LDAP server with your credentials, please contact your system administrator. LDAP error: No such object\n> Unrecognised username or password. The system could not log you on, or you may not have activated your account.\n===\n\nI suspect that this is because the account 'stest' is not allowed to bind to the LDAP server in this way. However, it seems to me that Elgg is asking for no more information that is given to my Thunderbird email client -- ie firstname, lastname and email address. Is there a way to create an account on EC LDAP that has read only attributes that I could use with this config.php? Then Moodle could use this account as well since it doesn't need to write anything into LDAP.\n<<<\nRandy replied to say that this was a new project and should go through Denise.\n\n
However, when I looked at the Default Theme these menu items were all in the right place, ie right aligned and displayed inline. But checking all the other themes (Northern, Gentle Calm,Connections,classic Elgg,leaves, wizap, Shaded Grey) I found they were the same as BlueLeaves, ie an unstyled list. So I took a look at the Source. Curiouser and curiouser.\n\nHere it is for the Northern theme:\n{{{<body>}}}\n{{{ <!-- elgg banner and logo -->}}}\n{{{<div id="container"><!-- start container -->}}}\n{{{<div id="statusbar"><!-- start statusbar -->}}}\n {{{ <div id="welcome"><!-- start welcome -->}}}\n{{{ <p>Welcome Mark Pearson</p>}}}\n{{{ </div><!-- end welcome -->}}}\n \n{{{ <ul id="global_menuitems">}}}\n{{{ <li><a href="http://elgg.macarius.earlham.edu/_userdetails/">Account settings</a></li>}}}\n{{{<li><a href="http://elgg.macarius.earlham.edu/login/logout.php">Log off</a></li>}}}\n{{{<li>Language: <select name="lang" onChange="location = '?lang=' + this.options[this.selectedIndex].value;"><option value="default">default</option>}}}\n{{{</select></li>}}}\n {{{ </ul>}}}\n{{{</div><!-- end statusbar -->}}}\n{{{<div id="header"><!-- start header -->}}}\nNotice how the ''ul'' is styled with the //global_menuitems// id.\n\nNow when we change to the default theme, we see a totally different structure:\n\n{{{<body>}}}\n{{{<!-- elgg banner and logo -->}}}\n{{{<table bgcolor="#ffffff" cellpadding="0" cellspacing="0" id="container">}}}\n{{{<tr><td>}}}\n{{{<div id="header"><!-- open div header -->}}}\n{{{ <div id="logo"><!-- open div logo -->}}}\n{{{ <h1><a href="http://elgg.macarius.earlham.edu/">EC Elgg</a></h1>}}}\n{{{ <h2>Earlham's blogging community</h2>}}}\n{{{ </div><!-- close div logo -->}}}\n''global_menuoptions set as a div id'' :\n{{{ <div id="global_menuoptions"><!-- open div global_menuoptions -->}}}\n{{{ <ul id="global_menuitems">}}}\n{{{ <li><a href="http://elgg.macarius.earlham.edu/_userdetails/">Account settings</a></li>}}}\n{{{<li><a href="http://elgg.macarius.earlham.edu/login/logout.php">Log off</a></li>}}}\n{{{<li>Language: <select name="lang" onChange="location = '?lang=' + this.options[this.selectedIndex].value;"><option value="default">default</option>\n</select></li>}}}\n{{{ </ul>}}}\n{{{ <p>Welcome Mark Pearson </p>}}}\n{{{ </div><!-- close div global_menuoptions -->}}}\n{{{</div><!-- close div header -->}}}\n{{{<div class="clearme"/>}}}\n{{{</td></tr>}}}\n\nThree major differences here:\n# The whole page is structured with tables\n# the global menu is situated //inside// the 'header' div\n# the //global_menuoptions// style is applied to a div which surrounds the ul. //global_menuitems// is ''not'' styled.\n \n
!!RSS Feed subscription fail\nMessage posted to elgg.org discussions: 'running elgg" today:\nRunning Elgg 0.82. Had an original problem with 'explodeping' and following suggestions elsewhere I removed /mod/explodeping. Since that time I have not been able to subscribe to any RSS feeds successfully. Here's he error message :\n<<<\nFeed subscription failed: could not get feed. Please check your link or try later.\nError message was: connection failed (111)\n<<<\nSo I copy back explodeping in elgg/mod, logout and then log back in. No effect. I still get the same error message. The frustrating thing is that feed subscription works find on my test elgg system from which this production system is merely a copy.\nAny ideas?
!!Mediastream conversation\n+++[here]>\n Anyone tried the 'mediastream' plugin with v0.9? Again, no install/readme file. Wanted to try emulating the Rucku view images/view video structure:\nhttp://rucku.com/mod/mediastream/?media=photo&owner=356&category=The+locker+room\n----\n * CommentAuthor rho\n * CommentTimeJan 5th 2008\n you need mediastream + moviestream/photostrem\n----\n * CommentAuthor timh\n * CommentTime Jan 5th 2008\n + ffmpeg installed on the server. If you are using a hosted service rather than on your own server, this is a show stopper for video encoding. very few hosts will provide you the CPU time needed to encode video.\n----\n *CommentAuthor kevin\n * CommentTime Jan 5th 2008 edited\nffmpeg is also a pain in the neck to compile.\nIt took me a couple of days of research to track down all the codec source and compiler settings needed to create a version of ffmepg on a Linux server for people to be able to upload video in all the standard formats and transcode it to FLV.\nFor legal reasons, the codec source is not included with ffmpeg.\nI have managed to set this up for a number of clients, though, eg.\nhttp://stopheathrow.org/\nI wrote my own plugin, get_multimedia, to collect video clips from mobile phones, email and / or a web upload, transcode them all to FLV, and display them on the site. It has lots of bells and whistles as you'll see if you poke around the site.\nAnother version on a not-quite-launched site is:\nhttp://tenpoundsworthofchange.com\nI arranged dedicated servers for both of these clients. As Tim mentioned, that's essential if you are going to manage your own video and not just use a service like YouTube.\n----\n * CommentAuthor cwagehoft\n * CommentTime 7 days ago\n Kevin is this plugin you created available to the public? If so would you have any documentation on your ffmpeg compile and codecs\n----\n * CommentAuthor kevin\n * CommentTime 7 days ago\nHi cwagehoft,\nYes I have permission from the clients I wrote it for to release this plugin under the GPL.\nIt is a complex plugin and will take a while to document, however.\n----\n * CommentAuthor cwagehoft\n * CommentTime 6 days ago\n\nKevin any word when you might have some basic documentation?\n----\n * CommentAuthor kevin\n * CommentTime 6 days ago\nAfraid not,\nThe code will also take some reworking as it has hardcoded URLs etc.\nProbably sometime this year.\nSorry I can't be more precise.\n===\n\n!!To Do\n* Install Mediastream & MovieStream plugins. [[download here|http://elgg.org/_download/plugins/]]\n* [[Compatability with 0.9|http://elgg.org/mod/mediawiki/wiki/index.php/Installing_plugins]]\n* Compile ffmpeg Here's [[some instructions|https://wiki.ubuntu.com/ffmpeg]]\n* for //mediagallery// [[installation instructions|http://www.earlham.edu/markp/ITI_wiki/modules/media_gallery_instructions.html]] and [[updated info|http://www.earlham.edu/markp/ITI_wiki/modules/media_gallery_instructions_update.html]]\n\nKevin Jardine's efforts [[Mobile video enlivens the Web|http://radagast.biz/mobile_video]] which allows upload of cameraphone videos could make Elgg take off like a rocket!\n\n\n
!!Plugins installed for Elgg\nAWyatt posted that she had installed [[some goodies on Elgg|http://eduspaces.net/awyatt/weblog/183082.html]] such as presentation, message, draft posts, comment wall, Forum, and post categories.\nI have installed the following in my [[bloggs@barnabas|http://elgg.barnabas.earlham.edu]] site:\n* Presentation (neat tool for gathering and annotating different resources. Could be used as an effective ePortfolio tool)\n* Messages (send short messages to another user on the system)\n* Category (what does this do?)\n* Commentwall (write silly comments on your Profile)\n* yui (implements the cool AJAX interface to configure your profile)\nThe next one to install will be the Mediagallery and Folio methinks, the former to display screencasts that I might make for Moodle (although my Moodle TW might be a better place) and the latter for static documentation (here again TW), but maybe a TiddlyWiki plugin?\nI decided not to install the 'Forum' plugin -- I don't want users confusing an elgg blog with a Moodle forum (and this would definitely happen if the forum plugin were present). \nPlugins are available from :\n* [[Elgg Plugins SVN repository|http://www.alia.org.uk/~sven/elgg/WebSVN/listing.php?repname=Elgg%20Plugins%20SVN%20repository&path=%2F&sc=0]] on Subversion (31)\n* [[Plugins page|http://elgg.org/mod/plugins/]] on elgg.org\nSupport from:\n* [[Plugins blog|http://elgg.org/plugins/weblog/]] on elgg.org\nSee also [[Elgg : to install plugin]]\n----\n\n
I think that my next priority should be creating a new theme for Elgg. Some comments:\n* +++[this css]>\nI need to change the color of the text "Log on", "Username", "Password" and "Remember me" that's found in the nav bar. It's not reading css from the nav bar as I assumed it would, but rather from the body's link css. Therefore, if I change the css, it changes every link throughout the site, which does me no good.\nIs there a css tag already in place for it and I'm not seeing it? If not, where would I go to add it?\nTHANKS!!!\nEdit: Found it - Had to add the following to the css file\ndiv#elggtoolbar a {\nmargin:0;\npadding:6px 0 0 5px;\ncolor:#000;\n}\nAnd for the sidebar login I added\ndiv#splitpane-sidebar p {\ncolor:#fff;\nfont-size:0.9em;\n}\ndiv#splitpane-sidebar a {\ncolor:#fff;\nfont-size:0.9em;\n}\n===\nmight be useful\n* +++[porting WP theme]>\nThere are no definitive guidelines. As a general rule of thumb, I pick WordPress themes that are two column then change the css div name (if required) to match Elgg's main components; header, maincontent, sidebar and footer. If this goes well, you should have the general theme, then it is just a case of tweaking the details.\n===\n\n
!!Procedure for installing a plugin into Elgg\n# download from [[Plugins page|http://elgg.org/mod/plugins/]] on elgg.org or [[Elgg Plugins SVN repository|http://www.alia.org.uk/~sven/elgg/WebSVN/listing.php?repname=Elgg%20Plugins%20SVN%20repository&path=%2F&sc=0]] on Subversion\n# expand with {{{tar xvf plugin.tar.gz}}} or {{{unzip plugin.zip}}}\n# move the appropriate folder to elgg/mod {{{sudo mv tagsuggest/ /var/www/elgg/mod}}}\n# make sure the owner:group same as all the rest : {{{sudo chown -R www-data:www-data tagsuggest/}}}\n# reload a page on elgg and it starts working! (or not!)\nQuite a contrast from the palava that Moodle makes you go through ...\n----\n\n
!! Get Elgg source & deploy\n# download the zip from http://elgg.org/ via Sourceforge and unpack. Note that the version # in version.php may not match with the download filename. The filename version is the correct one, I'd advise updating the info in version.php accordingly.\n# move the whole folder into /Library/WebServer/Documents (where OS X server stores it's stuff!) and rename to ''elgg''\n# create your inital config & htaccess files\n{{{cp htaccess-dist .htaccess}}}\n{{{cp config-dist.php config.php}}}\n!!Set correct ownership and permissions\nSet owner to apache and group containing me\n{{{sudo chown -R www:admin elgg}}}\nNo need to have world access on this is there?\n{{{sudo chmod -R 770 elgg}}}\nThe INSTALL file says to make the Default_Template world access. I'm sure why, given the permissions I've already set, but we'll do it anyhow:\n{{{sudo chmod 777 elgg/_template/Default_Template}}}\n!! Set up Data Directory\nThis needs to be outside of the web server root. Hence we go up a directory and create it in /WebServer\n{{{cd /Library/WebServer}}}\n{{{mkdir elgg_data}}}\n!!Permissions!\n''elgg_data'' needs to be accessible by Apache, so we need to change ownership and permissions.\n* permissions limited to group:WRX\n{{{sudo chmod 770 elgg_data}}}\n* ownership to apache:\n{{{sudo chown www:admin elgg_data}}}
I tried using phpmyadmin but got hopelessly confused about how to create a local user. The interface is certainly not intuitive! So, let's use the command line:\n!! Create Database and grant privs\nLog in to Mysql:\n{{{mysql -u root -p [password]}}}\ncreate database with UTF8 character set (I assume that elgg is utf8 compliant?)\n{{{CREATE DATABASE 'elgg' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; }}}\ncreate a user called 'elgg_user' by granting it privs on this database:\n{{{GRANT ALL PRIVILEGES ON elgg.* TO elgg_user@localhost IDENTIFIED BY [elgg_user password];}}}\nwe could actually use similar privs to Moodle, namely: SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER \n
Modify the config.php as per QUICKINSTALL instructions. Here's what I did:\n{{{sudo pico config.php}}}\n\n{{{ $CFG->sitename = 'EC_Elgg';}}}\n{{{ $CFG->tagline = "Earlham's blogging community";}}}\nNote that Kev has set up a DNS entry to elgg.macarius for me, nice lad that he is\n{{{ $CFG->wwwroot = 'http://elgg.macarius.earlham.edu/';}}}\n{{{ $CFG->dirroot = '/Library/WebServer/Documents/elgg/';}}}\n{{{ $CFG->publicreg = false;}}}\n{{{ $CFG->publicinvite = false;}}}\n{{{ $CFG->walledgarden = 0;}}}\n{{{ $CFG->default_access = 'LOGGED_IN';}}}\nWill elgg get decent spam protection?\n{{{ $CFG->disable_publiccomments = true;}}}\n{{{ $CFG->dataroot = '/Library/WebServer/elgg_data/';}}}\n{{{ $CFG->dbtype = 'mysql'; // for now}}}\n{{{ $CFG->dbhost = 'localhost';}}}\n{{{ $CFG->dbuser = 'elgg_user';}}}\n{{{ $CFG->dbpass = ;}}}\n{{{ $CFG->dbname = 'elgg';}}}\nI will change this to 'true' to speed things up\n{{{ $CFG->dbpersist = false;}}}\n\nRemember to reset ownership after editing!\n{{{sudo chown www:admin config.php}}}
Elgg constructs all it's web output on the fly from the mysql database by means of clever rewrite rules in the .htaccess file. But if Apache doesn't execute the .htaccess in the elgg directory nothing will happen!\nI should remember that I'm doing this because the networking lads have set me up with a DNS CNAME pointing elgg.macarius.earlham.edu to my OS X server.\n!!1. Enabling elgg.macarius domain\nWe'll use the OS X Server Admin for this, since I found out the hard way that things come unstuck if you don't!\n# highlight the ''Web'' service and click the ''Sites'' tab\n# click ''+'' to add a new domain.\n** enter domain name (in this case, "elgg.macarius.earlham.edu")\n** IP address can be set to ''*''\n** set Web folder to location of the elgg code (in my case /Library/WebServer/Documents/elgg)\n# Options tab. Uncheck Performance cache. This is essential -- not doing this ''will'' lead to unfathomable behaviour. --Switch it back on after restarting Apache--. Latest update (19/12/06): according to Apple document [[Interaction Between the Performance Cache and Apache|http://docs.info.apple.com/article.html?path=ServerAdmin/10.4/en/c3ws10.html]] "the performance cache process introduces a small performance penalty when serving dynamic content.". So we'll leave it switched off then.\n# Click on the Logging tab to enable access and error logs as desired.\n# Now Save, Stop Service and then Start\n!! 2. Empower htaccess\nYou'll notice that there's no mention of the ''AllowOverride'' directive in the Server Admin interface. So, having learned the hard way, we find that we need to edit this manually.\n* Check the apache conf file to see what's in there:\n{{{locate httpd.conf}}}\n{{{cd /private/etc/httpd}}}\n{{{less httpd.conf}}}\nWe notice that each VHOST has it's own conf file which is included into httpd.conf. The conf files are in the ''sites'' directory.\n* Now edit the appropriate file to change: ''AllowOverride none'' to ''AllowOverride all''\n{{{$ cd sites}}}\n{{{$ sudo pico 0004_159.28.7.70_80_elgg.macarius.earlham.edu.conf}}}\nRestart Apache\n{{{sudo apachectl restart}}}\n!!! Fix the rewrite base\nIf you log on to elgg at this point there will occur an error:\n"You don't have permission to access / on this server"\n* for this kind of a configuration I needed to edit the the .htaccess file in the elgg code directory and uncomment ''RewriteBase /''
!!Reinstall elgg on Ubuntu server\nChanges from previous install destructions:\n* default template in a different place: {{{sudo chmod 777 elgg/mod/template/temples/Default_template}}}\n* syntax for CREATE DATABASE has no quotes around db name : {{{CREATE DATABASE elgg DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;}}}\n* add {{{FLUSH PRIVILEGES}}}\n!! Configure VHOSTS for Apache2\nUsing hints from [[Virtual Hosting question|http://ubuntuforums.org/showthread.php?t=201460]] on Ubuntu Forums, I do the following:\n* {{{cd /etc/apache2/sites-available/}}}\n* {{{sudo pico elgg.barnabas}}} create the following\n<<<\n<html><pre>#\n# elgg.barnabas.earlham.edu\n#\n&lt;VirtualHost *&gt;\n ServerName elgg.barnabas.earlham.edu\n ServerAdmin markp@earlham.edu\n DocumentRoot /var/www/elgg\n DirectoryIndex index.html index.php\n CustomLog /var/log/apache2/elgg.barnabas-access.log combined\n ErrorLog /var/log/apache2/elgg.barnabas-error.log\n# nicked from Mac OS X server VHOST file\n &lt;Directory /var/www/elgg&gt;\n Options All Indexes ExecCGI Includes MultiViews FollowSymLinks\n AllowOverride All\n &lt;/Directory&gt;\n&lt;/VirtualHost&gt;</pre></html>\n<<<\n* run {{{ sudo a2ensite elgg.barnabas}}} to add to /etc/apache2/sites-enabled\n* reload apache2 with {{{sudo /etc/init.d/apache2 reload}}}\n
A mashup of INSTALL and QUICKINSTALL information with specifics related to OS X server 10.4. In particular, the networking maestros at ECS have set me up with a DNS CNAME pointing elgg.macarius.earlham.edu to my Mac mini server. This means that later next year we can install elgg on a faster machine and then just switch the CNAME pointer and Bob's Your Uncle! \n\n<<faqlist byTag elggInstall title hr>>\n\nHaving done all this, Navigate to http://elgg.macarius.earlham.edu and login as the admin user (you'll know what that is) using the password you set in config.php (you'll change this straight away of course). Unlike the WPMU and Lyceum blogging systems you don't have to spend hours rooting through their help forums to discover that you need to paste in an encrypted password string into the appropriate field of the database in order to have a known admin password. Thank you, Elgg developers!
{{{\nsudo mkdir /var/elgg11_data\nsudo chown www-data:admin elgg11_data\n}}}\n\n+++[Mysql commands to set up database]\n{{{\nmysql> CREATE DATABASE elgg11 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;\nmysql> GRANT ALL PRIVILEGES ON elgg11.* TO elgg11_user@localhost IDENTIFIED BY '*****';\nmysql> GRANT SELECT,LOCK TABLES on elgg11.* TO elggbackup@localhost IDENTIFIED BY 'elggbackup'; \nmysql> FLUSH TABLES;\n}}}\n===\n
Added the following into config.php:\n<html><blockquote><pre>\n// $CFG->auth = 'ldap' // string - which auth plugin to use\n// $CFG->ldap_host = 'directory.earlham.edu';\n// $CFG->ldap_port = 389;\n// $CFG->ldap_basedn = 'ou=users,dc=domain,dc=com';\n// $CFG->ldap_bind_dn = 'cn=manager';\n// $CFG->ldap_bind_pwd = ''; // suss out the password\n// $CFG->ldap_protocol_version = 3;\n// $CFG->ldap_filter_attr = 'samaccountname'; // I'm really not sure about this.\n// $CFG->ldap_search_attr = array('sn', 'givenname', 'mail');\n// $CFG->ldap_user_create = true;\n</pre></blockquote></html>\nI got the above values from what we use with moodle.earlham.edu \nNeed to suss out the ldap bind password and "samaccountname" whatever that is.
Elgg 0.81 on frumentius. Try to login -- get error:\n<<<\nWarning: file_get_contents(http://ex.plode.us/mod/searchping/elggping.php) [function.file-get-contents]: failed to open stream: Connection refused in /var/www/blogs/mod/explodeping/lib.php on line 64\n\nWarning: Cannot modify header information - headers already sent by (output started at /var/www/blogs/mod/explodeping/lib.php:64) in /var/www/blogs/lib/elgglib.php on line 3370\n\nWarning: Cannot modify header information - headers already sent by (output started at /var/www/blogs/mod/explodeping/lib.php:64) in /var/www/blogs/login/index.php on line 40\n<<<\nHit back button and all is OK. Hmmmm\nIn [[ELGG runs extremely slow|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=737]] I read:\n> Deleting the mod/explodeping folder fixed the problem. Thanks guys!\nLooking at elgg/mod/explodeping I notice that it claims that you can delete the folder with impunity. SO that's what I'll do.
Every time I try to subscribe to a valid RSS feed ([Your resources]) I get the following error\n<<<\nFeed subscription failed: could not get feed. Please check your link or try later.\nError message was: connection failed (111)\n<<<\nHave [[fixed the cron|Cron fix for Elgg]] but this doesn't seem to make a difference. The feeds work fine on Barnabas so this is weird.\n[[Posting|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=141&page=1#Comment_7763]] made to Elgg forum. I now suspect that it may be a security issue. Need to take a look at a log and try to suss out what is going on.\n
In [[this|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=874&page=1#Item_0]] conversation on Elgg Kevin Jardine wrote:\n<<<\nI've created modified designs for quite a few clients, and I would argue that you need to keep the basic five part\n> top_toolbar/header/content/sidebar/footer\nstructure or you are asking for a world of pain. Quite a bit of Elgg code assumes the existence of the toolbar, sidebar and main content area in particular.\n<<<
!!Updating a production Elgg from v0.8 to 0.81\n<<faqlist byTag elggUpgrade hr>>
!Making Elgg work for teaching in Higher Education\n!!Moodle and Elgg\n# [[Elgg as File Repository for Moodle]]\n# [[Elgg for group work]]\n# [[Elgg blogs integrate with Moodle Activity]]\n!!!Other items\n* Option to map Course 'short name' from Moodle to community/group name. Take over course participants to members of the group on Elgg.\n!!Improvements in Functionality\nMuch of this may already be present in Elgg 1.x so I need to get the latest SVN and start poking around...\n<<tiddler [[Possible functionality improvements]]>>\n
2 + 2 = 5. The sum is greater than the parts. Thus it could be with Elgg + Moodle.\nThe first step to getting Elgg and Moodle to work together is implementing a secure single sign on system. We want the user to sign into Moodle and then have secure access to her account on Elgg via an API. For simplicity's sake we'll assume that both Moodle and Elgg are running at the same institution and therefore look at a web based local single sign on rather than a federated cross institution system such as Shibboleth. The options here are Central Authentication Service (CAS) out of [[Yale|http://www.yale.edu/tp/auth/usingcasatyale.html]], ~WebAuth from [[Stanford(features)|http://www.stanford.edu/services/webauth/features.html]] and ~CoSIgn from [[Michigan|http://weblogin.org/]]. Each of these has their advantages and disadvantages as illustrated by [[this comparison|http://www.cesnet.cz/doc/techzpravy/2006/web-sso/]]. OTOH we may need a system that //starts up// elgg at the same time as moodle to enable coordination of file transfer. This has been accomplished for older versions of Elgg.\n\nThe other component that's needed is is an access control type //''moodle''// which only allows read access from the owner (ie 'private') and via an authenticated moodle interface.\n
!!Problem to address\nCurrently, in Moodle faculty have to upload files used for Resources separately into each course. There's no central point where they can link to their files to make the in course resource. Here's how one person described what he'd like:\n>"I just want to upload all my files to a single place that I can link to from Resources in any course"\n!!How //~Elgg_Files// might work\nFrom within Moodle the course Teacher has available an "~Elgg_Files" link within the Administration box (//in addition to the Files area//). This links to the person's File repository on Elgg. The user employs the Elgg file handling to upload multiple files, describe and tag them. Back in Moodle the user 'chooses' the file, a URI gets inserted into the resource location, the description gets copied into the summary field and Elgg keywords are copied into moodle tags.\n;A new Elgg access control is required : ''moodle''.\n:This prohibits read access to the file (or content object?) to everyone except the owner (=private) unless the request comes from the associated moodle instance (how it could do this I'm not sure, but it will depend upon how the systems are linked together). Thus on it's own the URI will be useless. The teacher owner of the file can change the access from "moodle" to "private" and this will prevent course members from viewing the file.\n; New moodle role : ''elgg_read, elgg_write''\n: Participants in the course will need the "elgg_read" role in the context of the course in order to have read access to the file. This will prevent Moodle users not in the course from viewing the file.\n!!!Backup\nWhen the course owner performs a course backup he will be given the option to have all the files copied from the Elgg file store into the backup. This will maintain the integrity of the course backup.\n!!~Elgg_Files for students\nWhen a student uploads a document submission for an assignment what he sees is an interface to his own Elgg Files area where he can choose an existing file or upload a new one. Here again the ''moodle'' access control makes the file accessible only to moodle and the owner.\nThe Teacher makes comment and assigns a grade to the submission and optionally uploads the marked-up submission into a holding area. Student gets the option of attaching the comment text and grade (both write protected somehow) to the file, and also downloading the marked-up document into his own ~Elgg_Files area. The she can use this combination as an item in her eportfolio!\n\n
\n* In [[this conversation|http://moodle.org/mod/forum/discuss.php?d=83866]] on moodle.org Sean Keogh has got Elgg 0.8 working with Moodle 1.9! Geoffrey Rowland provided some useful answers too.\n
!!Automated backup for Elgg on Barnabas\nAssumed defaults: \n* run the script in /home/markp\n* backups to go into /home/markp/elggbackups\n* Elgg database called 'elgg'\n* elgg code at /var/www/elgg \n* elgg data at /var/elgg_data\n!!!Procedure:\n# set default dir to /home/markp\n# Get month and day from system\n# On the first of the month:\n## tar up the backup dir : {{{tar -xzf elggbackup_<month>.tgz elggbackups}}}\n## delete all contents of elggbackup {{{cd elggbackups; rm *; cd ..}}}\n# on 'normal' day:\n## run mysqldump into gzip : {{{mysqldump -u elggbackup -pelggbackup -CQe elgg | gzip >elggbackup/elgg_dba-backup.<day number>.sql.gz}}}\n# on every 7th day (ie once a week):\n## calculate week number : day mod 7 (?) may deliver 1,2,3,4 ?\n## tar-gzip the data directory : {{{tar --exclude-from /var/elgg_excludes.txt -czf elggbackups/elgg_data_<week_number>.tgz /var/elgg_data}}}\n\nLocate script in /home/markp and run with a cron job every night (how?).\n
!!Setting up directories for Elgg\n# Locate the 'root' directory for Apache web server. In Ubuntu Linux this is {{{/var/www}}}\n# Use something like {{{tar -xvf elgg.tgz /var/www}}} to unpack Elgg into a directory in the web root. Now you should have something like {{{/var/www/elgg}}}. The two thinkgs that always trip people up are:\n# Ownership. On Ubuntu Linux the owner:group of Apache is www-data. Other Linuxes it may be 'nobody'. I like to make sure that only Apache can access this stuff , so run {{{/var/www $ sudo chown -R www-data:www-data elgg}}}. This will recursively change ownership. Use //sudo// to run the command line as root (you don't log in as root do you!).\n# Permissions. Only Apache needs to have read access so setting everything to 755 ({{{rwxr-xr-x}}}) with {{{/var/www $ sudo chmod -R 755 elgg}}} will do the job.\n# Do a {{{ls -lh}}} after each command to check that you've set what you think you've set.\n# With all of these commands your working directory has been /var/www or the //wwwroot//\n# Now we want to create the dataroot. According to the config.php this has to be ''outside'' the wwwroot: \n** {{{// dataroot. this is where uploaded files will go (and sessions for now) // This should be OUTSIDE your wwwroot.}}}\n# {{{cd ..}}} takes us up to /var\n# create the directory with {{{/var $ sudo mkdir elgg_data}}}\n# now set ownership and permissions\n** Only the Apache process needs write access to this directory. You should ''not'' give it world write access (ie chmod 777) since this leaves it open to the outside.\n** As above, we can change ownership with {{{/var $ sudo chown -R www-data:www-data elgg_data}}}\n** and permissions with {{{/var $ sudo chmod -R 755 elgg_data}}}\n# Now set up the config.php to reflect the installed locations. To recap, we have the Elgg code in {{{/var/www/elgg}}} and the data directory at {{{/var/elgg_data}}}. To run elgg from the browser we'd type something like http://www.myhost.org/elgg. Now it becomes easy to set thing up. In elgg/config.php:\n** URL to site : {{{$CFG->wwwroot = 'http://www.myhost.org/elgg';}}}\n** Physical path to the files (the code you've just installed) : {{{$CFG->dirroot = '/var/www/elgg/';}}}\n** Further on down the config.php is the path setting for dataroot: {{{$CFG->dataroot = '/var/elgg_data/';}}}\n\nThis ''will'' work. There is no need for any hacks.
* [[User manual|http://elgg.org/user_manual.php]]. Includes:\n** Your Profile\n** Your Blog\n** Your files\n** Your network\n** Your Resources\n** Your Mom :-)\n** Account Settings\nAlso a 'how to do podcasting with elgg' -- test this out.\n* [[Developer's documentation|http://elgg.org/developers.php]]
!Elgg conversations to track\n* [[Folio Wiki Save problem|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1106&page=1#Item_8]]\n* [[Template keywords|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1267&page=1#Comment_7213]] from Kevin Jardine. In an attempt to bring some order into the keywords chaos Kevin has also authored the very valuable [[Theme keywords documentation|http://elgg.org/mod/mediawiki/wiki/index.php/Theme_keywords]].\n* Form Builder looks interesting : [[Testers needed for form builder plugin|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1242]]\n* [[New plugin - privatefeed|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1176]] What I've been waiting for -- quasi-authenticated RSS feeds!\n* [[File upload limit|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=119]] -- this may/will be an issue when people want to start uploading stuff en masse.\n\n
Removed:\n{{{<link rel="stylesheet" href="css.css" type="text/css" />}}}\nfrom pageshell\nto get rid of errors.
!!March-5\nMy first 'ticket' into the Elgg tracker -- [[link|http://elgg.org/trac/ticket/326]] [[screenshot|graphics/elgg_tracker_ticket_submission.png]]<<imagebox>>
Start again. Leave the test 0.91 install as is and start with the SVN code.\n# {{{svn checkout https://svn.elgg.org/elgg/releases/0.9.1/}}}\n# {{{ sudo mv 0.9.1/ /var/www/elgg_9}}}\n# {{{mkdir /var/elgg_data_9}}} and chown -R\n# +++[create database]>\nmysql> CREATE DATABASE elgg_9 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;\nQuery OK, 1 row affected (0.00 sec)\n\nmysql> GRANT ALL PRIVILEGES ON elgg_9.* TO elgguser9@localhost IDENTIFIED BY 'Rh0ndDa';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> flush tables;\nQuery OK, 0 rows affected (0.00 sec)\n===\n\n# scp over the latest MySQL backup from Frumentius\n# load it up. {{{mysql -uelgguser9 -p elgg_9 <elgg_dba-backup.04.sql}}}\n# rejig elgg_9/config.php\n# up up and away ...\n
With the problems I had with [[Elgg 0.91 install]] I posted [[ Installation problems --drat!|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1099]] to the discussion forums on elgg.org. +++[conversation]>\n# * markpea\n* CommentTime23 hours ago\nOK. So I've installed Elgg a zillion times already and now it's playing silly buggers. I want to migrate a 0.81 install to 0.91 so I'm trying this on a test server before I change the production system. What I've done (full details at\nhttp://www.earlham.edu/markp/ITI_wiki/index.html#%5B%5BElgg%200.91%20install%5D%5D ):\n1) Used the 0.91 download from elgg.org rather than the svn version (stability).\n2) mysqldump the 0.81 database to a backup\n3) create a new database and load in the backup I've just made.\n4) unpack the code, move it to the correct place (/var/www) to a new directory and change ownership and permissions\n5) cp config-dist to config.php and configure correctly\n6) cp htaccess-dist to .htaccess\n7) forget to sort out Apache VHOST (by the way the importance of making sure that .htaccess gets executed via a virtual host file is not really emphasized in the installation doc)\n8) Run the elgg : http://barnabas.lly.earlham.edu/elgg_91\nThe database tables get set up (even though they're already there -- strange)\n9) Attempt to login as 'news'. No success unless I check 'save login information' box.\n10) The configuration page does not automatically appear\n11) Remember to set up a VHOST which I now do. Restart Apache.\n12) Delete all cookies and reload barnabas.lly.earlham.edu/elgg_91 and login as news\nERROR:\nNot Found\nThe requested URL /elgg_91/elgg_91/ was not found on this server.\nand the address being followed is : barnabas.lly.earlham.edu/elgg_91/elgg_91/\nNow if I hit the back button I find that news has actually logged in.\n13) navigate Administration : Site Administration\nERROR:\nPage not found\nConfiguration manager | Default theme editor | Frontpage template editor | Error log\nduh!\n\naddress: barnabas.lly.earlham.edu/elgg_91/mod/elggadmin/index.php\nAnd none of the links work unsurprisingly.\n\nBut /mod/elggadmin/index.php is actually present! The "duh!" is being produced by mod/elggadmin/lib/engine.inc.php: as a result of a failure to load the page.\n\nI've reached the end of what I can suss out here (I just tried changing the rewrite base in .htaccess with no success) short of dropping the whole database and linking to a fresh blank one. It seems to me that there's some sort of bug but I cannot see what I've done wrong.\n\nI've installed 0.8 several times and so I find the business of having to faff around with configuration on first run a pain in the botty department. I'd much rather just edit a config.php and have done with it!\n\nAny help would be greatly appreciated.\nMark\n----\n# CommentAuthor ewout\n* CommentTime22 hours ago\n \n9. is a known problem. 12 also seems to happen to a lot of people, but apart from the redirect two the wrong URL, there are no ill effects afterwards. 13: ? never saw that.\n\nIf you just put your own config.php in wwwroot, I am almost sure that the installer will use that.\n\nSo, what is your actual problem now? From the link you gave everthing looks ok. Is your new elgg talking to your old database? If not, did you remember to use the correct prefix? Your item 8 is very worrying! If you have config.php pointing to an existing database it should not create new tables (only new tables). Can you have a look in your database (mysql command line client or phpmyadmin) and see what the state of your DB is now?\n----\n# CommentAuthor rho\n* CommentTime 1 hour ago\n \n10 is consequence of 9. With uncheck "remember me" you are logged, but your login information not persist. There is already a fix ready for commit.\n\n12 maybe a rewritebase issue.\n\n13, is a issue reported by some people. But i haven't yet see that error yet.\nThat shouldn't happen, and there is the need to debug elggadmin_parse_request()\nin mod/elggadmin/lib/engine.inc.php\n----\n# CommentAuthor markpea\n* CommentTime 0 seconds ago\n\n> Is your new elgg talking to your old database? If not, did you remember to use the correct prefix?\newout, you're a genius. I took another look at the database I'm trying to migrate from. Ahah, it use the prefix 'elgg'. And in the new install all the tables got recreated with 'elgg_'\nSo that's the problem and I can now fix it. But what's the deal with 'elgg_' prefix? Why use this? I think I can see why -- you dont' need to prefix 'elgg' to every table name, yes? \n----\n===\n\nSo, it worked out that database elgg_81 used tables like "elgguser" but I specified the prefix "elgg_" for the elgg_91 database. That's why new tables were created and none of the old info worked.\nGiven comments by rho I have decided to start from scratch again next Monday with the SVN version. Have already dropped the elgg_91 database:\n{{{DROP DATABASE `elgg_91`;}}}
Having finally got the DNS issues sussed out, and the blogs.frumentius CNAME sorted, I am now having problems with elgg. When I login with 'markpea' I get +++[this error]>\nWarning: file_get_contents(http://ex.plode.us/mod/searchping/elggping.php) [ [[function.file-get-contents|http://blogs.frumentius.earlham.edu/login/function.file-get-contents]] ]: failed to open stream: HTTP request failed! in /var/www/blogs/mod/explodeping/lib.php on line 64\n\nWarning: Cannot modify header information - headers already sent by (output started at /var/www/blogs/mod/explodeping/lib.php:64) in /var/www/blogs/lib/elgglib.php on line 3370\n\nWarning: Cannot modify header information - headers already sent by (output started at /var/www/blogs/mod/explodeping/lib.php:64) in /var/www/blogs/login/index.php on line 40\n===\n\nTried it again, and the problem has disappeared. It does not exisit on the template system I set up on barnabas at [[http://barnabas.lly.earlham.edu/elgg_81|http://barnabas.lly.earlham.edu/elgg_81]]\n
* Elgg v0.9 Plugin Compatibility : [[Installing plugins|http://elgg.org/mod/mediawiki/wiki/index.php/Installing_plugins]] \n* [[Folio Beta discussion|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=566&page=2]] : [[latest version (.7) Folio|http://conversation.cgu.edu/garrettn/files/210]]\n* Latest make of plugins to [[download|http://elgg.org/_download/plugins/]]\n* [[Forwarder|http://elgg.org/mod/plugins/plugin.php?id=3]] "Allows users to change their default page. By default, Elgg brings you to a user's profile when you click on their icon or visit [sitename]/[username]; this provides an extra setting in user details, allowing a user to (for example) direct people to his or her blog." Just what I need!\n!!!Other plugins on the Plugin page :\n* Hot Topics. "THIS PLUGIN CREATES A TEMPLATE KEYWORD THAT CAN BE USED TO MAINTAIN A LIST OF BLOG POSTS THAT HAVE RECEIVED MORE THAN A SPECIFIED NUMBER OF COMMENTS WITHIN A SPECIFIED NUMBER OF DAYS PRIOR TO TODAY. WE'VE FOUND IT USEFUL TO MAINTAIN CONVERSATIONS ON OUR HOME PAGE WHERE PREVIOUSLY THEY HAD DISAPPEARED TOO QUICKLY FROM THE STANDARD LATEST POSTS LISTINGS."\n* blogposts list theme keyword : Elgg theme keyword for displaying an executive summary of latest blog posts.\n* Site Communities -- for displaying random communities on the front page.\n* Status\n* The River\n* Joiner -- for joining communities automatically\n* Access extension. Select all 'friends' as access.\n* Projects -- A plugin that uses the 'extension context' feature from the blog system to add a basic project management behavior.\n* Maintenance mode\n* jmol gallery!\n* [[Shouts|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1352&page=1#Item_0]] for 0.9! This is a Twitter/shouting plugin. Not in the official plugins yet (4/1/08)\n\n[[Ratings plugin:|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=800&page=1#Item_0]]\nHow to make [[reciprocal friends|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=735&page=1#Item_0]] the default!\n\nTrackbacks -- tried this out in barnabas.lly.earlham.edu/elgg_81 but does not display anything. Contact Marcus Povey the author and ask what keywords I need to use +++[details]>\n /** @file trackback/index.php Trackback endpoint.\n * This file receives trackback requests for entries and stores them in a database, bas\ned on the\n * code written for dushka.co.uk.\n * @author Marcus Povey <marcus@dushka.co.uk>\n */\n===\n
Installed "The river". Get this error message on the Profile :\n> Warning: Invalid argument supplied for foreach() in /var/www/blogs/mod/river/lib.php on line 103\nFix : uninstall and bring in for 0.9\n\n
# Get RSS feed display working. Works on http://barnabas.lly.earlham.edu/elgg_81 but not on production http://blogs.frumentius.earlham.edu/markpea/feeds/ . This latter does not have cron working I think, so get this going for frumentius.\n
\nRun svn to get the latest updates and fixes.\n\nThis shows how to get the elgg folio plugin to work with 0.9 [[Elgg - Folio plugin and Elgg 0.9|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=353&page=1#Item_0]]\n\n[[Elgg - Elgg 9rc1 Pages Mod Kills Folio Plug-in|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=303&page=1#Comment_1707]]\n\n[[development tracker|http://elgg.org/trac/browser]] shows status of latest development release.\nIn this discussion [[Elgg - Elgg 0.9, release candidate 1|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=276&page=1#Item_47]] TimH writes this:\n<<<\n1. BACKUP\n2. BACKUP\n3. BACKUP\n4. Create a full copy of my mysql database for Elgg\n5. Install Elgg 0.9 into a new sub-directory (e.g. /elggtest/)\n6. Copy over my config.php and .htaccess from my production elgg to /elggtest/\n7. Edit config.php to point at the database copy I made in step 4\n8. Elgg 0.9 is then up and running, with a clone of all your users/data. There is no problem testing in this way, as long as you don't mess with uploading/deleting files from your my files area.\n9. Now you can test v0.9 and re-implement your plugins, customizations, themes, etc\n10. Once my 0.9 /elggtest/ is 99%, I will just name my old elgg directory to /elggold/ and rename my new one form /elggtest/ to /elgg/, then edit my config.php to point to the production database. Then login to /elgg/ as NEWS and it will upgrade the production DB to v0.9 and away you go...\n\nAs encore suggested, running a diff between your version and SVN will help you recall what you customized, but v0.9 has lots of moved elements, so your diffs may be very large...\n<<<\nElgg 0.91RC1 releases -- see [[here|http://elgg.org/trac/browser]] for latest info\n|!date|!Revision|\n|14-Dec-07|Checked out revision 1459.|\n\n\n
[[This comment|http://openedweb.com/blog/2008/12/10/elgg/comment-page-1/#comment-2543]] by Cash on Steve O'Connor's [[openedweb blog|http://openedweb.com]] is worth noting:\n<<<\nBecause the wire and new pages appeared on the front page (dashboard), it encouraged any one who was having trouble to broadcast out their problems. These type of requests drowned everything else out. The groups had a lot of overlap. Documentation ended up spread out with no way to find it. It was chaos more than any kind of organized community.\n<<<\nDoesn't this point to a failure of design? Read Clay Shirkey's articles on s/w in use.\n
!!Current development version?\nOne would think that the Elgg code accessed from subversion (the revision control system used) would be the latest. Indeed, the Subversion access [[wiki page|http://elgg.org/mod/mediawiki/wiki/index.php/Subversion_access]] asserts just this. But when I do: {{{svn checkout https://svn.elgg.org/elgg/devel/}}} and look at devel/version.php I see:\n<<<\n$version = 2007120701;\n$release = '0.9';\n<<<\nAnd {{{du -hs devel}}} has size 86Mb devel\n!! version 0.9.1 release\nNow I do {{{wget http://downloads.sourceforge.net/elgg/elgg-0.9.1.tar.gz?modtime=1203376189&big_mirror=0}}} and {{{tar -xvf elgg-0.9.1.tar.gz}}}. The resulting elgg directory is a mere 32Mb size and version.php has:\n<<<\n$version = 2008021801;\n$release = '0.9.1'\n<<<\nClearly a newer version.\nSo, if I want to use the latest and greatest I should the 0.91 download and apply the patches from the [[tracker|http://elgg.org/trac/report]], right?\nFrom Kevin :\n<<<\nThe 0.9.1 release is not in the devel tree.\nIt is here:\nhttps://svn.elgg.org/elgg/releases/0.9.1/\nOther than the version bit, I think it's currently the same, however.\n<<<\n!!Update -- 25-March\nIt turns out that {{{https://svn.elgg.org/elgg/devel}}} ''is'' the latest version with changeset 1571 applied. It's just that the version.php does not reflect this! ARGGGG!
How to make a plugin "Bookmark on delicious":\n* [[Original post|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=906&page=1#Item_0]]\n* Advice : "You can look at the ratings or generic_comments modules to see how they annotate standard Elgg objects like blog posts."\n* +++[code]>\n <?php\n{{{//@mod/myplugin/lib.php}}}\nfunction myplugin_init() {\nglobal $function;\n$function['weblog:post:links'][] = dirname(__FILE__) . '/lib/weblog_post_links.php\n}\n\n<?php\n{{{//@mod/myplugin/lib/weblog_post_links.php}}}\nglobal $CFG;\n$post = $parameter;\n{{{// maybe this must be encoded...}}}\n$url = $CFG->wwwroot . user_info('username', $post->weblog) . '/weblog/' . $post->ident . '.html';\n/ maybe this also need encoding... like replace spaces with +\n$title = htmlspecialchars($post->title, ENT_COMPAT, 'utf-8');\n\n/ this should depend of the service\n$link_url = sprintf('http://bookmark.com/submit?url=%s&title=%s', $url, $title);\n\n/ insert url and title\n$run_result = " | <a href=\s"{$link_url}\s">Bookmark this!</a>";\n=== zipped up as [[myplugin.zip|modules/myplugin.zip]]. Unzip, rename, and move to //mod// folder. Edit line 11 of lib\sweblog_post_links.php for service like http://del.icio.us (work out exact API call to make).\n\n
Heres' how +++[original code]> \nThis all takes place in the file mod/friend/lib/friends_actions.php\n1. Around line 22, BELOW the line: $f->friend = $friend_id; insert the following lines of code:\n<<<\n$f2 = new StdClass;\n$f2->owner = $friend_id;\n$f2->friend = $USER->ident;\n<<<\n2. Then, around line 35, BELOW the line: notify_user($u,$title,$message_body); insert the following line of code:\n>insert_record('friends',$f2);\n3. Now around line 92, BELOW the line: $f->friend = $request->friend; insert the following lines of code:\n<<<\n$f2 = new StdClass;\n$f2->friend = $request->owner;\n$f2->owner = $request->friend;\n<<<\n4. Now we have just one more line of code and we can save the file and give it a whirl! Around line 102, directly BELOW the line: notify_user($request->owner,$title,$message_body); insert the following line of code:\n>insert_record('friends',$f);\n===\nfrom [[christianh|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=735&page=1#Item_0]]\nSuggested change for RHo (same discussion):\n<<<\nAround line 102, directly BELOW the line: notify_user($request->owner,$title,$message_body);\n>user_friend_add($request->owner, $request->friend);\n<<<\n''Better still'' apply friendship_actions_cleanup.diff from [[ticket 183|http://elgg.org/trac/ticket/183]] if that's not already active in 0.91\nTicket 183 is set for [[0.93 release|Do mutual friendship when user has moderate flag]] so leave off applying a hack unless 0.93 not released in time.
Amy got this error (which also happened to me):\n<<<\n{{{ ERROR: Could not instantiate mail function.}}}\n<<<\nTook a look on the elgg forums and found [[Could not instantiate mail function|http://classic.elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=697&page=1#Item_5]]. Kevin gave this response:\n<<<\n{{{\nThe options are still all available and are described in\n/lib/config-defaults.php\nunder\nEMAIL HANDLING\n}}}\n<<<\nAnd I found the {{{CFG$}}} settings there. Now to update the config.php. I also posted back [[Security issues]] response to Kevin in the same thread as above.\n!!Config.php updates\nAdd following to config.php:\n{{{\n// EMAIL HANDLING\n$CFG->smtphosts= 'mailer.earlham.edu'; // empty (sendmail), qmail (qmail) or hosts\n// $CFG->smtpuser = ''; // if using smtphosts, optional smtpuser & smtppass\n// $CFG->smtppass = '';\n// $CFG->noreplyaddress = ''; // this will default to noreply@hostname (from wwwroot)\n}}}\n''SUSSED!''\n
//{{{\n// WebSnapr - Preview Bubble Javascript\n// Written by Juan Xavier Larrea\n// Adapted for TW by Saq Imtiaz\n// requires [[this image|bg.png]]\n\nfunction applyStyleString(obj,str) {\n if(document.all && !window.opera) {\n obj.style.setAttribute("cssText",str);\n } else {\n obj.setAttribute("style",str);\n }\n}\n\n// Point this variable to the correct location of the bg.png file\nvar bubbleImagePath = 'bg.png';\n\nfunction getElementsByClassName(oElm, strTagName, strClassName){\n var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);\n var arrReturnElements = new Array();\n strClassName = strClassName.replace(/\s-/g, "\s\s-");\n var oRegExp = new RegExp("(^|\s\ss)" + strClassName + "(\s\ss|$)");\n var oElement;\n for(var i=0; i<arrElements.length; i++){\n oElement = arrElements[i]; \n if(oRegExp.test(oElement.className)){\n arrReturnElements.push(oElement);\n } \n }\n return (arrReturnElements)\n}\n\nfunction bindBubbles(e){\n lbActions=getElementsByClassName(document,"a","externalLink");\n for(i=0;i<lbActions.length;i++){\n addEvent(lbActions[i],"mouseover",attachBubble,false);\n addEvent(lbActions[i],"mouseout",detachBubble,false);\n lbActions[i].title = '';\n }\n}\n\nfunction attachBubble(_b){\n var _c;\n if(_b["srcElement"]){\n _c=_b["srcElement"];\n }else{\n _c=_b["target"];\n }\n if (_c.href == undefined){\n _c=_c.parentNode;\n }\n var _d=_c.href;\n var _e=findPosX(_c) +5;\n var _f=findPosY(_c) +17; \n var _10=document.createElement("div");\n document.getElementsByTagName("body")[0].appendChild(_10);\n _10.className="previewbubble";\n applyStyleString(_10,"text-align: center; z-index: 99999; position: absolute; top: "+_f+"px ; left: "+_e+"px ; width: 240px; height: 190px; padding: 0; margin: 0;");\n if (config.browser.isIE)\n _10.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bubbleImagePath + "',sizingMethod='image')";\n else\n _10.style.background= "url("+ bubbleImagePath +") no-repeat";\n var img=document.createElement("img");\n _10.appendChild(img);\n\n applyStyleString(img,"padding-top: 0; padding-left: 0; padding-right: 0; padding-bottom: 0; margin-top: 27px; margin-left: 12px; margin-bottom: 0; margin-right: 0; border: 0");\n img.setAttribute("src","http://images.websnapr.com/?url="+_d);\n img.setAttribute("width",202);\n img.setAttribute("height",152);\n img.setAttribute("alt","Snapshot");\n}\n\nfunction detachBubble(_12){\n lbActions=getElementsByClassName(document,"div","previewbubble");\n for(i=0;i<lbActions.length;i++){\n lbActions[i].parentNode.removeChild(lbActions[i]);\n }\n}\n\nold_websnapr_refreshTiddler = Story.prototype.refreshTiddler;\nStory.prototype.refreshTiddler = function(title,template,force)\n{\n var tiddlerElem = old_websnapr_refreshTiddler.apply(this,arguments);\n bindBubbles();\n return tiddlerElem;\n}\n//}}}
// //''Name:'' FAQ List\n// //''Version:'' 1.4 for TW 2.0.0\n// //''Author:'' AlanHecht\n// //''Type:'' [[Macro|Macros]]\n\n// //''Description:'' FAQ List lets you compile a list of Frequently Asked Questions and present them in a cascading style for the viewer. Each question is turned into a link that will toggle the view of the answer text. The list can be compiled either from all tiddlers containing a certain tag or from a single tiddler that contains all the needed questions and answers.\n\n// //''Syntax:'' << {{{ faqlist mode source sortBy hrSeparator }}} >>\n// // ''faqlist:'' the macro call (required)\n// // ''mode:'' either "byTag" or "byTitle" (required)\n// // ''source:'' the associated tag or tiddler title (required)\n// // ''sortBy:'' if byTag, sort can be "title," "modifier," "modified." If byTitle, sort can be "question" and will reorder the questions in alphabetical order. (this parameter is optional; use "null" if you don't want a sort order, but want to use "hr" as the last paramter)\n// // ''hrSeparator:'' if "hr" is included at the end of the call string, each question/answer set will be separated by a horizontal rule.\n// //Examples: (edit these two tiddlers to see the syntax used for each)\n// // • [[FAQ Method One]] (compiled from tiddlers tagged with a certain tag)\n// // • [[FAQ Method Two]] (compiled using the content of a single tiddler)\n// // • @@color(#ff0000):''New!''@@ [[FAQ Method Three]] (uses the {{{<<tiddler>>}}} macro to pull the faq questions from a single tiddler and the answers from other tiddlers...very cool!)\n\n// //''Directions:'' <<tiddler StartupBehaviorDirections>> <<tiddler MacroDirections>>\n\n// //''Notes:'' If you choose to use byTitle mode where the entire set of questions/answers comes from a single tiddler, the syntax for the tiddler content is as follows:\n// // • Each question must be a single line (i.e. no hard returns) but can wrap as needed\n// // • The answer to a question begins on the next line after the question and can be as long as needed. It can also include hard returns as part of the answer text, but it cannot include empty lines (i.e. an empty line is the result of pressing enter twice).\n// // • Each question/answer set must be seperated by two hard returns (i.e. must have a single, blank line between them.\n// // Refer to [[FAQ Tiddler Sample]] for an example.\n\n// //''Known Issues:'' If a user clicks too quickly to toggle a FAQ entry on/off, they will go into tiddler edit mode. This should be corrected in the future by allowing web-hosted versions of the faq to disable double-clicking.\n\n// //''Revision History:''\n// // v0.1.0 (01 August 2005): initial release\n// // v0.1.1 (04 August 2005): Fixed an endless loop bug (thanks to Kevin Kleinfelter).\n// // v0.1.2 (19 October 2005): Fixed TW compatibility .32 bugs (newline for block quote and e.preventDefault by Clint Checketts)\n// // v0.1.3 (01 November 2005): Thanks to Clint's work, I fixed a similar "jump to top" problem when using the expand & collapse buttons. Also added the description for [[FAQ Method Three]]\n// // v0.1.4 (05 January 2006): Created a special version of FaqList to work with TW v2.0.0\n\n\n// //''Code section:''\nversion.extensions.faqlist = {major: 0, minor: 1, revision: 4, date: new Date("Jan 05, 2006")};\nconfig.macros.faqlist = {\n bulletCollapse: ">",\n bulletExpand: "∨",\n expandButton: {title: "Expand All", tooltip: "Open all items for reading"},\n collapseButton: {title: "Collapse All", tooltip: "Close all items"}\n};\nconfig.macros.faqlist.handler = function(place,macroName,params)\n{\n lingo = config.macros.faqlist;\n var mode = params[0].toLowerCase();\n var list = [];\n switch(mode)\n {\n case "bytag":\n var tagged = store.getTaggedTiddlers(params[1], params[2]);\n for(t=0; t<tagged.length; t++)\n {\n var title = tagged[t].title;\n list[t] = [title,store.getTiddlerText(title)];\n }\n var subTitle = store.fetchTiddler(title).getSubtitle();\n break;\n case "bytitle":\n var faqText = store.getTiddlerText(params[1]);\n var faqItems = faqText.split("\sn\sn");\n if(params[2] == "question")\n faqItems.sort();\n for(t=0; t<faqItems.length; t++)\n {\n list[t] = [faqItems[t].substring(0,faqItems[t].indexOf("\sn")),faqItems[t].substring(faqItems[t].indexOf("\sn")+1)];\n }\n var subTitle = null;\n break;\n }\n \n var faqHeading = place.appendChild(document.createElement("span"));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.expandButton.title,lingo.expandButton.tooltip,faqExpandAll));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.collapseButton.title,lingo.collapseButton.tooltip,faqCollapseAll));\n faqHeading.appendChild(document.createElement("p"));\n var faqBody = place.appendChild(document.createElement("span"));\n for(var t=0; t<list.length; t++)\n {\n var title = list[t][0];\n\n var content = "<<<\sn" + list[t][1] + "=\sn<<<\sn";\n var theClass = "tiddlyLinkExisting tiddlyLink";\n var itemHeading = faqBody.appendChild(document.createElement("span"));\n itemHeading.appendChild(document.createTextNode(config.macros.faqlist.bulletCollapse + " "));\n createTiddlyButton(itemHeading,title,subTitle,faqToggleThis,theClass);\n var itemBody = faqBody.appendChild(document.createElement("span"));\n itemBody.style.display = "none";\n itemBody.className = "itemBody";\n wikify(content,itemBody,null,null);\n faqBody.appendChild(itemBody);\n faqBody.appendChild(document.createElement("p"));\n if(params[3] == "hr")\n faqBody.appendChild(document.createElement("hr"));\n }\n}\n\nfunction faqToggleThis(e)\n{\n var content = this.parentNode.nextSibling;\n var shown = content.style.display;\n if(shown == "none")\n {\n content.style.display = "inline";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n else\n {\n content.style.display = "none";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n}\n\nfunction faqExpandAll(e)\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n if(this.parentNode.nextSibling.childNodes[t].className == "itemBody")\n {\n this.parentNode.nextSibling.childNodes[t].style.display = "inline";\n this.parentNode.nextSibling.childNodes[t].previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n }\n// e.preventDefault();\n}\n\nfunction faqCollapseAll(e)\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n if(this.parentNode.nextSibling.childNodes[t].className == "itemBody")\n {\n this.parentNode.nextSibling.childNodes[t].style.display = "none";\n this.parentNode.nextSibling.childNodes[t].previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n }\n// e.preventDefault();\n}\n
!!RSS Feeds on ELS broken\nThere's something badly wrong with the RSS feeds on els. I *did* have feeds working for //markp// and //markpea// but now when I click on the Feeds tab it just brings up a blank page.\nTry Spiggy's //stest// account. Here I can subscribe to a feed eg to [[moodledocs|http://www.earlham.edu/markp/moodledocs/index.xml]] but the [[resource name is blank|graphics/RSSfeeds_problem_els.png]]<<imagebox>> and View content gives a blank as well. This feed opens perfectly well on my test barnabas server.\nI suspect that this has to do with the fact that the Zooisite server on which els resides is "secure" and runs https.
On my test server : http://barnabas.lly.earlham.edu/els I create a community called 'Friday Forum' and edit the Profile:\nI change the Membership restriction to 'moderate'. It does not 'stick'. Here's what //does// get set:\n<<<\n{{{\nUsername was changed to friforum.\nFile quota was changed to 1000000000.\nIcon quota was changed to 10.\nUser flag 'commentwall_access' set to 'LOGGED_IN'\nUser flag 'sidebarshouts_sidebar' set to 'no'\nUser flag 'sidebarsidebar-profile' set to 'yes'\nUser flag 'sidebarsidebar-communities' set to 'yes'\nCommunity ownership transferred to markpea.\nPreferred language saved.\nYour editor preferences have been changed\n}}}\n<<<\nWhat's not on this list:\n* membership restriction\nEverything else seems to get set.\n!!Change default setting in the database\nEach community has a separate username in the //elggusers// table. The Friday Forum username is //friforum//.\nTo select the appropriate record:\n>{{{SELECT * FROM `elggusers` WHERE `username` LIKE 'friforum'; }}}\nModeration has 3 settings:\n# no = anyone can join this community\n# yes = memberships must be approved by you\n# priv = private. Nobody can join this community\nTo change friforum :\n>{{{UPDATE `elggusers` SET `moderation` = 'yes' WHERE `elggusers`.`ident` =185 LIMIT 1 ;}}}\nWhat I am not sure how to do is how to set the default moderation for all new communities to 'yes'.\n\n
!!BlueLeaves theme\nThe menu for global settings (contains Account settings, Log off, Language) was badly styled, appearing in the middle of the display:\n\n[img[graphics/global_menuoptions.png]]\n\nComparing the page elements with //Firefox Webdeveloper : Information -> Display Element Information// and the style sheet revealed a discrepancy. The elements for this list were labelled with id="global_menuitems" but the style was defined as #global_menuoptions { }. I used //css edit// to change ''global_menuoptions'' to ''global_menuitems'' and added some left & right padding to the li element.:\n{{{#global_menuitems li { }}}\n{{{ padding: 0 4px; }}}\n{{{ display: inline;} }}}\nThis fixed the problem:\n\n[img[graphics/global_menuitems.png]]\n\n!Update\nI edited the BlueLeaves theme changing global_menuoptions to global_menuitems and all is now hunky dory. Now all I need [[to do|elgg to do]] is the change the other themes and make these new ones global.\nContinued in [[Elgg : Theme wierdnesses]]
Apply this css to all themes not using tables:\n\n{{{#global_menuitems { }}}\n{{{ text-align: right;}}}\n{{{ padding:0px;}}}\n{{{ margin:0px;}}}\n{{{ float:right;}}}\n{{{ } }}}\n\n{{{#global_menuitems ul { }}}\n{{{ margin: 0; }}}\n{{{ padding: 0;}}}\n{{{ } }}}\n\n{{{#global_menuitems li { }}}\n{{{ margin: 0; }}}\n{{{ padding: 0 4px;}}}\n{{{ display: inline;}}}\n{{{ list-style-type: none;}}}\n{{{ border: none;}}}\n{{{ } }}}\n\n{{{#global_menuitems a { }}}\n{{{ text-decoration: none;}}}\n{{{ } }}}\n\n{{{#global_menuitemss a:hover{ }}}\n{{{ text-decoration:underline;}}}\n{{{ } }}}
Kungfu was having lotsa problems with Widgets [[here|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=1346]]\nThe solution was:\n<<<\nYou must turn off the Enable Strict Mode in mySQL. You can do this by running MySQLInstanceConfig.exe and going through the reconfiguration process. Uncheck the strict mode box, and restart the service and server.\n<<<\nMust make sure that Strict Mode switch off on EC's MySQL server.
Fix the code with ''patch''. Here's how:\n* we're in //mod/toolbar// and we need to hack lib.php to add classes (see [[Theme changes]] #5)\n* establish that there was no difference between lib.php and the ''original'' lib.php from test elgg_9. This means that any changes were the hacks. {{{diff lib.php /var/www/elgg_9/mod/toolbar/lib.php.org}}}\n* create the patch file {{{diff lib.php /var/www/elgg_9/mod/toolbar/lib.php >~/els/search_classes.patch}}}\n* make backup copy just in case {{{/var/www/els/mod/toolbar$ sudo cp lib.php lib.php.org}}}\n* apply patch : {{{/var/www/els/mod/toolbar$ sudo patch lib.php </home/markp/els/search_classes.patch\npatching file lib.php}}}\n* check that it worked: \n<<<\n{{{\n/var/www/els/mod/toolbar$ grep 'class="search"' lib.php\n <form id="searchform" class="search" action="{$CFG->wwwroot}search/index.php" method="get">\n}}}\n<<<\n''IT DID!''
<html>\n<h2 id="id2">Upload and Review Problems</h2>\n\n<p>The following illustrates the disorganisation of how modules are maintained (or not) on moodle.org and the unsuitablity of discussion forums for supporting add-in modules.</p>\n\n<p>Imagine that you're rolling out a new Moodle instance of v1.6 (because that's the latest) and your faculty wants to return corrected assignments to their students. You recall that there was a module called Upload and Review so you go looking for it. But Upload and Review cannot be found in the <a href="http://moodle.org/mod/data/index.php?id=5">databases</a> section (at least of Oct 2006). So where would one find it? A search through the forums gives a bunch of references but no location. A search with Google finds the Humbolt site with the zip file. </p>\n\n<p>There's a good deal of confusion about what this functionality should be called or <strong>is</strong> called. In various places it's referred to as <a href="http://moodle.org/mod/forum/discuss.php?d=46829">assignment drop box</a> , AU Assignment DropBox , AU assignment, Dropbox, Upload and review, Review and Upload, or just Upload, with forum postings referring to these names liberally mixed together. A formula for utter confusion.</p>\n\n<p>In a <a href="http://moodle.org/mod/forum/discuss.php?d=37883&parent=209754">forum posting</a> called <a href="http://moodle.org/mod/forum/discuss.php?d=37883">Re: Upload &amp; Review print_student_answer problem with 1.5.3</a> dated 13 May by Anthony Borrow we find ReviewAssignment_1.6.zip (yet another name &#8212; for the same thing?) and on <a href="http://moodle.org/mod/forum/discuss.php?d=46829&parent=227272">13 July</a> Martin Dougiamas renamed it 'upload' and entered it into <span class="caps">CVS</span> for v 1.7. He also fixed the language string issue (which I also discovered and fixed months later). However, despite Martin's plea for testers to 'bang on it' before September (and I confess that I did not respond to this because I didn't see it ...) there were still issues (and these are still there as far as I know). Chief among these was the problem with students being able to download the teacher's response file in <a href="http://moodle.org/mod/forum/discuss.php?d=37883&parent=253372">Re: Upload &amp; Review with Moodle 1.6: students can't download teacher's response file</a> which itself was located at the bottom of the discussion <a href="http://moodle.org/mod/forum/discuss.php?d=37883">Upload &amp; Review print_student_answer problem with 1.5.3</a> and was posted on 4 October. The response to this on 5th Oct was Geoffrey Rowland's <a href="http://moodle.org/mod/forum/discuss.php?d=46829#218199">fix</a> which he had posted on 13 June in the discussion Assignment Drop Box (new assignment type). None of this I managed to find (simply because I had not realised that I needed to read carefully through <strong>all</strong> postings even of marginal apparent relevance) and so in the discussion <a href="http://moodle.org/mod/forum/discuss.php?d=53027">Review Assigments</a> (sic) I posted a response about language files (which ironically had already been fixed somewhere else). Sean McKay found exactly the same problem and Geoffrey Rowland expressed it well with <q>This will be invaluable to many of us who have been frustrated by the multiple threads, branches and patches scattered around these forums</q> and provided a <a href="http://moodle.org/mod/forum/discuss.php?d=53027&parent=254424">list of patches</a> . However, there is still no place that one can find a patched working version of "Upload" for Moodle 1.6. Here's what <strong>may</strong> work for Moodle v1.6. </p>\n\n<ol>\n <li>Download <a href="http://cdc.humboldt.edu/moodle/mod/resource/view.php?id=21">Review Assignment</a> from the <span class="caps">HSU</span> site</li>\n <li>Unpack and apply <a href="http://moodle.org/mod/forum/discuss.php?d=46829#218199">Geoffrey Rowland's patch</a></li>\n <li>Test it out thoroughly before unleashing to public.</li>\n</ol>\n</html>
After attempting to set up a user account for Dylan on Barnabas (see [[Adding users]]) I managed to screw up my own group membership and lose membership of admin group. This meant that I couldn't ''sudo'' to change anything.\nAfter phoning Randy Schultz I decided that GIMF (Google Is My Friend) and found [[these useful instructions|http://www.arsgeek.com/?p=554&print=1]]. I'll repeat them here in case the web site is unobtainable:\n<<<\nOver the last few days I’ve had several occasions to use single user mode to change a password for users on Ubuntu boxes. I’ve also used this once when a fellow tech messed up the sudoers file via a typo, essentially allowing no one to have sudo access!\nWhat’s single user mode? Essentially, this logs you in as root, but disables network services such as ssh logons and whatnot. It’s a fairly safe way to log into a box and so things like change passwords. I’m doing this mostly on Ubuntu boxes but this should work for just about any linux distro which uses GRUB as it’s boot manager.\nTo get onto a machine using single user mode, simply reboot it. When the machine restarts, you should either be put right into the GRUB menu if it’s a dual boot machine. If it’s not a dual boot machine, you should have an opportunity to enter the GRUB menu by hitting the ESC key.\nOnce you’re in the GRUB menu, you’ll have a list of your latest kernels, and their recovery modes below. You’ll start off on the latest, which is what you want. Type the ‘e’ key.\nThis will bring you to a sub-menu. You’ll be on the top selection which is root (some hard drive info in this space). Use the arrow keys to go down 1 selection to the kernel option. Again, hit the ‘e’ key.\nNow you’ll see the command that GRUB will use to start your box. It will look something like this:\n> {{{kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda1 ro quiet splash}}}\nYou’ll want to add the word ’single’ to the end so it looks like this:\n> {{{kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda1 ro quiet splash single}}}\nNow hit the enter key once. Then type ‘b’ to boot the machine.\nYou’ll go through what looks like the normal boot process, but find yourself suddenly staring not at a graphical user interface, but a command line. Welcome to being root. What now?\nWell, in the two examples I’ve given, we’ll look at changing a user’s password. In this case, the users were the only users on their box. To change their password, type:\n> passwd USERNAME\nSubstitute the username who’s password you want to change. Then type the new password twice. When you’ve done that, type:\n exit\n\nIn Ubuntuland this will dump you into runlevel 2 (graphical) and your user should now be able to log in as normal.\nIn my other example, a tech was adding a group to the sudoers file, so anyone belonging to that group would have sudo access, but what he ended up with was a malformed soduers file which wouldn’t allow *anyone* sudo access.\nSo into single user mode we went, and he then typed\n> {{{visudo}}}\n\nto edit the sudoers file. He corrected his mistake, saved the file and restarted to a much better situation.\n<<<\n----\n\n
This is what gets rendered: +++[code]\n{{{\n<div id="folio_content" class="sidebar-block ">\n <h2>\n <a href='http://barnabas.lly.earlham.edu/elgg_9/activity/user/markpea/rss/all/all/1:'>\n <img border=0 src='http://barnabas.lly.earlham.edu/elgg_9/mod/folio/image/feed.png' alt='feed'/>\n\n </a>\n <a href='http://barnabas.lly.earlham.edu/elgg_9/activity/user/markpea/html/all/all/1'>Mark Pearson</a>\n <ul>\n </h2><li><a href='http://barnabas.lly.earlham.edu/elgg_9/profile/extended.php?profile_name=markpea'>Profile</a></li>\n\n<li><a href='http://barnabas.lly.earlham.edu/elgg_9/markpea/weblog/'>Blog</a></li>\n\n<li><a href="http://barnabas.lly.earlham.edu/elgg_9/markpea/files/">Files</a></li>\n}}}\n===\n\nNote that the </ul> and the <h2> overlap. This prevents the style from being applied.\n!!!Problem:\nBut this is what seems to generate the code (mod/folio/users_info_meu.php ) +++[code]\n{{{\n// Begin building the main links to the page owner's content.\n// Only show if this isn't "us" - aka, not = the current user.\nif (isset($page_owner) && $page_owner != -1 && $page_owner != 0 && $page_owner <> $_SESSION['useri\nd']) {\n\n $run_result .= folio_menu_inbox($username);\n\n $body = "<li id='sidebar_folio'><h2><a href='{$url}activity/user/{$username}/html/all/all/1'>"\n . $displayname .\n "</a> <a href='{$url}activity/user/{$username}/rss/all/all/1:" . folio_createhash( $_SESSI\nON['userid'] ) .\n "'><img border=0 src='{$url}mod/folio/image/feed.png' alt='feed'/></a></h2>";\n\n // Side-bar links\n $body .= "<ul>";\n\n if ( !in_array( 'profile', $FOLIO_CFG->disabled_foliomenuitems ) ) {\n $body .= "<li><a href='{$url}{$username}/'>Profile</a></li>\sn\sn";\n}}}\n===\n\nNote that the <h2> is in the correct place relative to <ul>. Also note the id='sidebar_folio' which does not appear in the rendered output.\n!!Sussed\nin folio/sidebar.php, I found the id folio_content. Evidently users_info_menu.php cannot be executed. +++[Code]\n{{{\nfunction folio_sidebar_content( $user, $showwiki = true) {\n global $FOLIO_CFG;\n $url = url;\n\n if( strlen(trim($user->name)) < 1 ) {\n $name = $user->username;\n } else {\n $name = $user->name;\n }\n\n $hash = folio_createhash( $_SESSION['userid'] );\n\n $body = <<< END\n <h2>\n <a href='{$url}activity/user/{$user->username}/rss/all/all/1:{$hash}'>\n <img border=0 src='{$url}mod/folio/image/feed.png' alt='feed'/>\n </a>\n <a href='{$url}activity/user/{$user->username}/html/all/all/1'>{$name}</a>\n <ul>\n </h2>\nEND;\n}}}\n===\n\nThis is where the <ul> and <h2> seem to overlap. Did the edit and its [[sorted|graphics/folio_sidebar_sorted.png]]<<imagebox>>\n\n----\nSee also [[user profile display : folio]] and email Nathan to tell him I've got it sorted.
!!Folio testing\n!!Test Cases\nUse cases to verify that important functionality in the Elgg Add-in are working properly.\nStart with a fresh installation of the most recent Elgg.\n!!BROWSERS\n* IE\n* Firefox\n* Safari\n!!Insert\n--* Empty wiki (thru sql, not just thru interface)--\n* Set homepage to different value thru folio config\n* Create homepage in wiki\n** Add child page\n** Add page thru link\n** Delete\n* Create homepage in portfolio\n** Add child page\n** Add page thru link\nIn each, try with different parent_page options, formats, and titles.\nTest invalid titles, ensure that we are not letting pages be their own parent, etc...\n!!Edit\nFor your own homepage & a subpage\nFor a community you belong to\nFor a friend\n* View\n* Edit\n* Change name, permission, body, and parent\n** Test illegal name conventions.\n* Save\n-- Test for a page with format_ident == 0, which happens if it was created in the\n older version of folio. --\n!! View\nView a new and an existing page for\n* yours\n* joined community\n* unjoined community, new\n* friend\n* non-friend\n\n* Go to homepage\n* Change homepage name\n* Access via /page/ to check redirection\n* Access via /page/ for a homepage that doesn't yet exist.\n\nVerify AJAX loading behavior in sidemenu\nVerify extra character linking behavior in sidemenu\nAdd a comment\n!!Pages\nCheck Recent Changes\n - Go back a page\n - Click on username\n - Click on page link\nAccess RSS Feed\n
/***\n|Name|FontSizePlugin|\n|Created by|SaqImtiaz|\n|Location|http://tw.lewcid.org/#FontSizePlugin|\n|Version|1.0|\n|Requires|~TW2.x|\n!Description:\nResize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.\nYou can customize the maximum and minimum allowed sizes.\n(only affects tiddler content text, not any other text)\n\nAlso, you can load a TW file with a font-size specified in the url.\nEg: http://tw.lewcid.org/#font:110\n\n!Demo:\nTry using the font-size buttons in the sidebar, or in the MainMenu above.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nThen put {{{<<fontSize "font-size:">>}}} in your SideBarOptions tiddler, or anywhere else that you might like.\n\n!Usage\n{{{<<fontSize>>}}} results in <<fontSize>>\n{{{<<fontSize font-size: >>}}} results in <<fontSize font-size:>>\n\n!Customizing:\nThe buttons and prefix text are wrapped in a span with class fontResizer, for easy css styling.\nTo change the default font-size, and the maximum and minimum font-size allowed, edit the config.fontSize.settings section of the code below.\n\n!Notes:\nThis plugin assumes that the initial font-size is 100% and then increases or decreases the size by 10%. This stepsize of 10% can also be customized.\n\n!History:\n*27-07-06, version 1.0 : prevented double clicks from triggering editing of containing tiddler.\n*25-07-06, version 0.9\n\n!Code\n***/\n\n//{{{\nconfig.fontSize={};\n\n//configuration settings\nconfig.fontSize.settings =\n{\n defaultSize : 100, // all sizes in %\n maxSize : 200,\n minSize : 40,\n stepSize : 10\n};\n\n//startup code\nvar fontSettings = config.fontSize.settings;\n\nif (!config.options.txtFontSize)\n {config.options.txtFontSize = fontSettings.defaultSize;\n saveOptionCookie("txtFontSize");}\nsetStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\sn","fontResizerStyles");\nsetStylesheet("#contentWrapper .fontResizer .button {display:inline;font-size:105%; font-weight:bold; margin:0 1px; padding: 0 3px; text-align:center !important;}\sn .fontResizer {margin:0 0.5em;}","fontResizerButtonStyles");\n\n//macro\nconfig.macros.fontSize={};\nconfig.macros.fontSize.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n\n var sp = createTiddlyElement(place,"span",null,"fontResizer");\n sp.ondblclick=this.onDblClick;\n if (params[0])\n createTiddlyText(sp,params[0]);\n createTiddlyButton(sp,"+","increase font-size",this.incFont);\n createTiddlyButton(sp,"=","reset font-size",this.resetFont);\n createTiddlyButton(sp,"–","decrease font-size",this.decFont);\n}\n\nconfig.macros.fontSize.onDblClick = function (e)\n{\n if (!e) var e = window.event;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.fontSize.setFont = function ()\n{\n saveOptionCookie("txtFontSize");\n setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\sn","fontResizerStyles");\n}\n\nconfig.macros.fontSize.incFont=function()\n{\n if (config.options.txtFontSize < fontSettings.maxSize)\n config.options.txtFontSize = (config.options.txtFontSize*1)+fontSettings.stepSize;\n config.macros.fontSize.setFont();\n}\n\nconfig.macros.fontSize.decFont=function()\n{\n\n if (config.options.txtFontSize > fontSettings.minSize)\n config.options.txtFontSize = (config.options.txtFontSize*1) - fontSettings.stepSize;\n config.macros.fontSize.setFont();\n}\n\nconfig.macros.fontSize.resetFont=function()\n{\n\n config.options.txtFontSize=fontSettings.defaultSize;\n config.macros.fontSize.setFont();\n}\n\nconfig.paramifiers.font =\n{\n onstart: function(v)\n {\n config.options.txtFontSize = v;\n config.macros.fontSize.setFont();\n }\n};\n//}}}
Issue with having the tag cloud reflect tags from 'logged in users' content when user is logged in and not just public content. Discussion [[here|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=592]]\n* Kevin's fix to /mod/search/lib/tags_display.php +++[code]>\nHi all,\nIf you look in the code: /mod/search/lib/tags_display.php\nyou can see that the access is hard coded to "PUBLIC", even though the line above:\n{{{$searchline = "(" . run("users:access_level_sql_where",$USER->ident) . ")";}}}\nis supposed to generate the correct access check.\nThis looks like a bug. I believe that the code *should be*:\n<<<\nif (isloggedin()) {\n$accesscheck = "(" . run("users:access_level_sql_where",$_SESSION['userid']) . ")";\n} else {\n$accesscheck = "access = 'PUBLIC'";\n}\n\nif ($tags = get_records_sql('SELECT DISTINCT tag,count(ident) AS number, '.$db->random.' AS rand\nFROM '.$CFG->prefix."tags WHERE $accesscheck\nGROUP BY tag having number > 1 order by rand limit 200")) {\n<<<\nIs any one brave enough to back up this file, make the change, and tell us if it works?\n===\n\n* Kevin also writes "The "randomusers" tag in /lib/templates.php also has 'PUBLIC' hardcoded." +++[code fix]>\nI believe that you can fix that by replacing\n\nif ($users = get_records_sql("SELECT DISTINCT u.*,i.filename AS iconfile, ".$db->random." as rand\nFROM ".$CFG->prefix."profile_data t JOIN ".$CFG->prefix."users u ON u.ident = t.owner\nLEFT JOIN ".$CFG->prefix."icons i ON i.ident = u.icon\nWHERE t.name IN (?,?,?) AND u.icon != ? AND t.access = ? AND u.user_type = ?\nORDER BY rand LIMIT " . $vars[1],array('biography','minibio','interests',-1,'PUBLIC','person'))) {\n\nwith\n\nif (isloggedin()) {\n$accesscheck = "(" . run("users:access_level_sql_where",$_SESSION['userid']) . ")";\n} else {\n$accesscheck = "access = 'PUBLIC'";\n}\n\nstr_replace('access','t.access',$accesscheck);\nif ($users = get_records_sql("SELECT DISTINCT u.*,i.filename AS iconfile, ".$db->random." as rand\nFROM ".$CFG->prefix."profile_data t JOIN ".$CFG->prefix."users u ON u.ident = t.owner\nLEFT JOIN ".$CFG->prefix."icons i ON i.ident = u.icon\nWHERE t.name IN (?,?,?) AND u.icon != ? AND $accesscheck AND u.user_type = ?\nORDER BY rand LIMIT " . $vars[1],array('biography','minibio','interests',-1,'person'))) {\n===\n\n* ''TEST THIS OUT''\n\n; From Elgg Documentation : \n: [[Change text/names of topmenu items in toolbar|http://elgg.org/mod/mediawiki/wiki/index.php/Change_text/names_of_topmenu_items_in_toolbar]]\n: [[Add topmenu item to tool bar|http://elgg.org/mod/mediawiki/wiki/index.php/Add_topmenu_item_to_tool_bar]]\n: [[Change text/names of menu items in toolbar|http://elgg.org/mod/mediawiki/wiki/index.php/Change_text/names_of_menu_items_in_toolbar]]\n: [[Move/merge topmenu into tool bar with other menu items|http://elgg.org/mod/mediawiki/wiki/index.php/Move/merge_topmenu_into_tool_bar_with_other_menu_items]]\n\n\n!!System Management / Front Page\n|!plugin|!What it does|!When installed|!Comments|
We're using Ubuntu 7.10 "Gutsy Gibbon" Ubuntu on this server. Say no more ...\n!!Install GD for php on Frumentius\nFollow [[these|Add GD to php 5 on Ubuntu]] instructions. But get error: \n> {{{Unmet dependencies. Try apt-get -f install with no packages}}}\nDo {{{ sudo apt-get -f install}}} +++[results]>\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nCorrecting dependencies...Done\nThe following packages will be REMOVED\n webmin\n0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.\n1 not fully installed or removed.\nNeed to get 0B of archives.\nAfter unpacking 82.6MB disk space will be freed.\nDo you want to continue [Y/n]? Y\n(Reading database ... 61135 files and directories currently installed.)\nRemoving webmin ...\n===\n\nThen {{{ sudo apt-get -f install php5-gd}}} +++[results]>\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nCorrecting dependencies...Done\nThe following packages will be REMOVED\n webmin\n0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.\n1 not fully installed or removed.\nNeed to get 0B of archives.\nAfter unpacking 82.6MB disk space will be freed.\nDo you want to continue [Y/n]? Y\n(Reading database ... 61135 files and directories currently installed.)\nRemoving webmin ...\nmarkp@frumentius:~/elggbackups$ sudo apt-get -f install php5-gd\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nThe following extra packages will be installed:\n defoma fontconfig-config libfontconfig1 libfreetype6 libgd2-xpm libjpeg62\n libpng12-0 libt1-5 libx11-6 libx11-data libxau6 libxdmcp6 libxpm4 ttf-dejavu\n ttf-dejavu-core ttf-dejavu-extra x11-common\nSuggested packages:\n defoma-doc psfontmgr x-ttcidfont-conf dfontmgr libfreetype6-dev libgd-tools\nRecommended packages:\n libft-perl\nThe following NEW packages will be installed\n defoma fontconfig-config libfontconfig1 libfreetype6 libgd2-xpm libjpeg62\n libpng12-0 libt1-5 libx11-6 libx11-data libxau6 libxdmcp6 libxpm4 php5-gd\n ttf-dejavu ttf-dejavu-core ttf-dejavu-extra x11-common\n0 upgraded, 18 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 0B/6650kB of archives.\nAfter unpacking 15.5MB of additional disk space will be used.\nDo you want to continue [Y/n]? Y\nMedia Change: Please insert the disc labelled\n âUbuntu-Server 7.10 _Gutsy Gibbon_ - Release i386 (20071016)â\nin the drive â/cdrom/â and press enter\nPreconfiguring packages ...\nFATAL: Error inserting battery (/lib/modules/2.6.22-14-server/kernel/drivers/acpi/battery.ko): No such device\n... ''everything installs OK apart from battery error''\nProcessing triggers for libc6 ...\nldconfig deferred processing now taking place\n===\n\nInstalled fine!\nRestart Apache {{{ sudo apache2ctl restart}}} Error:\n>{{{apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName}}}\n''NEED TO FIX THIS''\n\n\n\n
!!Build Intel e1000 driver\nHave determined that the problem is probably a missing driver from Ubuntu 7.1, Gutsy Gibbon. S5000PAL system board featuring Intel 82563EB ethernet controller.\nUbuntu Forums have the following useful page [[HOWTO build/install updated e1000 driver when you have no net|http://ubuntuforums.org/showthread.php?t=551720&highlight=Intel+E1000+gutsy]] \n!!!1. Preliminaries\n# Run {{{lspci -nn}}} to see ethernet controller in +++[this list]>\n8086:10A5\n8086:10BD\n8086:10C0\n8086:10C2\n8086:10C3\n8086:294C\n===\n\n# run {{{uname -r}}} to determine exact kernel. I think I have : kernel version 2.6.22\n!!!2. Assemble components\nNeed the Ubuntu 7.10 server installation CD\n# install the build-essential meta-package from your installation CD-ROM by inserting the CD-ROM and +++[running apt]>\n{{{sudo apt-cdrom add}}}\n{{{sudo apt-get install build-essential}}}\n===\n\n# download the driver source and the linux-headers packages corresponding to your kernel version:\n## e1000-7.6.5 driver source from Intel [[download page|sourcehttp://downloadcenter.intel.com/confirm.aspx?httpDown=http://downloadmirror.intel.com/9180/eng/e1000-7.6.5.tar.gz&agr=N&ProductID=983&DwnldId=9180&strOSs=All&OSFullName=All%20Operating%20Systems&lang=eng] [[downloaded archive|modules/e1000-7.6.5.tar.gz]]\n# Check kernel version with {{{uname -r}}} . Ubuntu docs indicate that 'Gutsy Gibbon' is 2.6.22\n# Download headers from here : [[Software Packages in "gutsy", devel section|http://packages.ubuntu.com/gutsy/devel/]]\n** [[linux-headers-2.6.22-14 (2.6.22-14.46)|http://packages.ubuntu.com/gutsy/devel/linux-headers-2.6.22-14]] (depends upon GNU Core utils)\n** [[linux-headers-2.6.22-14-386 (2.6.22-14.46)|http://packages.ubuntu.com/gutsy/devel/linux-headers-2.6.22-14-386]] (depends upon coreutils, libc6, linux-headers-2.6.22-14)\n** [[linux-headers-2.6.22-14-generic (2.6.22-14.46)|http://packages.ubuntu.com/gutsy/devel/linux-headers-2.6.22-14-generic]] (depends upon coreutils, libc6, linux-headers-2.6.22-14)\n## for kernel 2.6.22.14.21 add the following:\n*** [[linux-headers-386 (2.6.22.14.21)|http://packages.ubuntu.com/gutsy/devel/linux-headers-386]] (depends upon linux-headers-2.6.22-14-386)\n*** [[linux-headers-generic (2.6.22.14.21)|http://packages.ubuntu.com/gutsy/devel/linux-headers-generic]] (depends upon linux-headers-2.6.22-14-generic)\n# Assemble all downloaded components, the driver and headers, and either burn to a CD or copy to USB thumb drive.\n# Insert CD/Thumb drive into server and copy everything to {{{/tmp}}}\n!!!3. Build driver\n# Install the +++[deb packages]>\n{{{mv *.deb /tmp}}}\n{{{cd /tmp}}}\n{{{dpkg --install linux-headers-2.6.22-14_2.6.22-14.46_all.deb}}}\nand so on until all the packages have been installed\n===\n\n# check permissions on {{{/var/cache}}} and make write access with chmod\n# +++[build driver]>\n# Get to the tmp dir : {{{cd /tmp}}}\n# Unpack the file : {{{tar xvfz e1000-7.6.5.tar.gz}}}\n# Go to the source directory that's been unpacked : {{{cd e1000-7.6.5/src}}}\n# This places a backup copy of the original driver in your home directory :\n>{{{sudo cp /lib/modules/2.6.20-15-generic/kernel/drivers/net/e1000/e1000.ko ~/e1000-2.6.20-15-generic.orig.ko}}}\n# Build : {{{make}}}\n# If you got no errors, proceed to install\n> {{{sudo install -D -m 644 e1000.ko /lib/modules/2.6.20-15-generic/kernel/drivers/net/e1000/e1000.ko}}}\n# Try this to see if it claims your ethernet device : {{{sudo modprobe e1000}}}\n===\n\n# run {{{ifconfig -a}}} to check that new device is present\n# restart network device : {{{sudo /etc/init.d/networking/restart}}}\n# load driver on subsequent boots: {{{echo "e1000" | sudo tee -a /etc/modules}}}\n\n!!!Wed 5-Dec -- in Charlie's dungeon\n* {{{lspci -nn}}} revealed ethernet controller id {{{8086:1019}}} which was not on the list above. Hmmmm.\n* copying stiuff off the CDROM drive worked OK\n* I had to add an [[extra header|modules/linux-headers-2.6.22-14-server_2.6.22-14.46_i386.deb]] by dowloading it to the Mac and transferring with a USB drive. In order to do this I had to add an entry to /etc/fstab (which I called usbdrive) but that worked.\n* The 'make' went well with no errors.\n* I did a modprobe e1000 to load the driver but got no error messages. \n* also loaded the driver for subsequent reboots (in retrospect a mistake)\n* {{{ifconfig eth0}}} did not give error 'network not available' so hopeful.\n* With a static IP address tried pinging but no response. Also could not ping in.\n* switched machine off and schlepped it over to ITAM.\n!!!Fri 7-Dec\n* Set up slab in tearoom -- was too noisy for printer room.\n* Started it up but on boot got a kernel panick.\n* Inserted install CD and booted off that. Unloaded module with {{{rmmod e1000} and copied out of /lib/modules/2.6.22-14-server/kernel/drivers/net/e1000 and replaced with orginal module I had backed up.\n* Now it starts up but doesn't get on the network as before.\n----\n[[New approach|Frumentius : new approach]]
# install Webmin as per [[Ubuntu 7.10 (Gutsy Gibbon) LAMP Server Setup|http://onlyubuntu.blogspot.com/2007/10/ubuntu-710-gutsy-gibbon-lamp-server.html]]\n# check mod_rewrite present on Apache 2. [[install|Frumentius : mod_rewrite]]\n# check GD present [[install|Frumentius : GD install]]\n# install ImageMagick ?\n
!!Installing Ubuntu 7.10\nI downloaded the latest server version (7.10) from the [[Ubuntu download page|http://www.ubuntu.com/getubuntu/download]] and burnt it to an ISO CD. \nFollowed this [[Ubuntu 7.10 (Gutsy Gibbon) LAMP Server Setup|http://onlyubuntu.blogspot.com/2007/10/ubuntu-710-gutsy-gibbon-lamp-server.html]] procedure.\n* Disk partitions:\n<<<\n{{{partition #1 (sda) as ext3}}}\n{{{partition #5 (sda) as swap}}}\n<<<\n* User accounts:\n> administrator -- system user account\n> markp - my user account\n* servers to install:\n** LAMP\n** ~OpenSSH\n** Postgres SQL\n** Samba\n> (MySQL root password : standard)\n!!!!MAC addresses:\nUse {{{ifconfig eth0}}} and {{{ifconfig eth1}}}\n<html>\n<dl><dt>eth0 :</dt><dd>00:0E:0C:4D:BA:C4</dd></dl>\n<dl><dt>eth1 :</dt><dd>00:0E:0C:4D:BA:C5</dd></dl>\n</html>\nIP address : 159.28.7.68
!Hardware issues\n[26-Nov] Do {{{shutdown -H now}}} get error message : {{{halt: unable to iterate IDE devices}}}\n[28-Nov] System still not getting onto the network. I know that the wall port is working because I swapped it with Barnabas successfully.\n!!!Boot Errors\n''Before'' anything appears on the screen (at least 60 secs) get the following Beep sequence twice 1-5-2-3. Page 107 in [[the manual|modules/Intel Server Board_s5000pal_tps_v1_4.pdf]] has the following info for this beep code:\n\nTable 49. BMC Beep Codes\n|!Code|!Reason for Beep|!Associated Sensors|!Supported?|\n|1-5-2-3|CPU: Configuration error (e.g., VID mismatch) | N/A | No |\n\nHowever, the first text on the screen are two lines in yellow:\n> @@Intel 3.2 ~GHz@@\n> @@Intel 3.2 ~GHz@@\nPressing key ''F2'' at this point gets into the BIOS.\nChecking the Error Manager reveals:\n|!Error|!Severity|! |!Description|\n|92A9| major | N/A |Serial port component encountered a resource conflict error. The error code identifies the error. Major severity requires user intervention but does not stop system boot.|\n|8161| major | 2 |Processor 02 unable to apply Microcode update. Microcode version 0. The error code identifies the error. Major severity requires user intervention but does not stop system boot. The instance code identifies the component in error|\nConsulting the manual we find on p105 :\nTable 47. POST Error Messages and Handling\n|!Error Code|! Error Message |!Response|\n|8161|Processor 02 unable to apply BIOS update | Pause |\n\nSaving (F10) and exiting the BIOS, the machine gives the following messages:\n>~ACPI : Unable to load system description tables\n>~PnPBIOS: get_dev_node: invalid handle\nbut continues to boot.\nHowever, Apache gives the following error which indicates that all is not well:\n>"Apache 2 could not reliably determine server's fully qualifies domain name, using 127.0.1.1 for ~ServerName."\nand DHCP does not obtain an IP address.\n\nIn the current position of the server I cannot see the POST code diagnostic ~LEDs as the machine starts up. But if necessary I can rotate the case so that the back faces front.
!!Install mod_rewrite for Apache2\nFollow [[these|Add mod_rewrite to Apache on Ubuntu]] instructions:\n* {{{$ sudo a2enmod rewrite}}} +++[results]>\n{{{Module rewrite installed; run /etc/init.d/apache2 force-reload to enable.}}}\n===\n\n* edit /etc/apache2/apache2.conf with pico to enable mod_rewrite +++[code]>\n<html><pre>\n# 12/26/07 load mod_rewrite\n<IfModule mod_rewrite.c>\n RewriteEngine On\n</IfModule>\n\n<IfModule mpm_worker_module>\n StartServers 4\n(changed from 2)\n\n# 12/26/07\n# Turn on the AcceptPathInfo variable, which allows scripts to be passed\n# arguments like http://server/file.php/arg1/arg2. This is essential to allow\n# relative links between your resources, and also provides a performance boost\n# for people using your Moodle web site.\n\nAcceptPathInfo on\n</pre></html>\n===\n\nNow go to /etc/apache2/sites-available and add a file called {{{els.frumentius}}} +++[contents]>\n<html><pre>\n#\n# els.frumentius.earlham.edu\n#\n<VirtualHost *>\n ServerName els.frumentius.earlham.edu\n ServerAdmin markp@earlham.edu\n DocumentRoot /var/www/elgg\n DirectoryIndex index.html index.php\n CustomLog /var/log/apache2/els.frumentius-access.log combined\n ErrorLog /var/log/apache2/els.frumentius-error.log\n# nicked from Mac OS X server VHOST file\n <Directory /var/www/elgg>\n Options All Indexes ExecCGI Includes MultiViews FollowSymLinks\n AllowOverride All\n </Directory>\n</VirtualHost>\n</pre></html>\n===\n\nNow {{{sudo /etc/init.d/apache2 force-reload}}} +++[output]>\n * Reloading web server config apache2 4246\napache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName\n===\n\nEnable the site {{{sudo a2ensite els.frumentius}}}\nand reload apache2 {{{sudo /etc/init.d/apache2 reload}}}\n
!!Thinking outside the box\nSomehow not only does the shipped driver not work with this ethernet hardware, the remade driver don't work either. Which is perhaps not entirely surprising given that the result of lspci -nn did not match the controller ids listed as working.\nSo, if we cannot get hardware to fit the driver, why not //change the hardware//. \n# plunder gigabit ethernet card from one of the Lab PCs.\n# fit a PCI riser card and slot the ethernet card in\n# disable onboard ethernet in BIOS\n# reinstall from 7.10 CD and hope that there's a working driver ...\n----\n18-Dec-07\n* Ordered {{{NIC INTEL|PWLA8391GTBLK GIGABIT 1PC - OEM (Qty=1, Price=$29.99)}}} from Newegg. Has been documented to work in Ubuntu 7.01\n* It came to day, so installed into card cage. I disabled the network ROM from the BIOS (dunno whether this affects the interface or not).\n* {{{ifconfig -a}}} showed it was there on eth6 but not active.\n* enabled the new NIC interface (commands in [[Useful network commands]]), restarted the network and ''it worketh''\n\n\n\n
Still getting DNS error when trying to reload Apache:\n<<<\nsudo /etc/init.d/apache2 reload\n * Reloading web server config apache2 4326\napache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName\n [ OK ]\n<<<\nHave emailed Aaron and Randy asking for help.\n----\nUpdate : the name was in Tom Blosser's DNS tool but he had not checked the DNS box ....
/***\n|Name|FullScreenPlugin|\n|Created by|SaqImtiaz|\n|Location|http://tw.lewcid.org/#FullScreenPlugin|\n|Version|1.1|\n|Requires|~TW2.x|\n!Description:\nToggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.\n\n!Demo:\nClick the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nEdit the ViewTemplate to add the fullscreen command to the toolbar.\n\n!History:\n*25-07-06: ver 1.1\n*20-07-06: ver 1.0\n\n!Code\n***/\n//{{{\nvar lewcidFullScreen = false;\n\nconfig.commands.fullscreen =\n{\n text:" ↕ ",\n tooltip:"Fullscreen mode"\n};\n\nconfig.commands.fullscreen.handler = function (event,src,title)\n{\n if (lewcidFullScreen == false)\n {\n lewcidFullScreen = true;\n setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");\n }\n else\n {\n lewcidFullScreen = false;\n setStylesheet(' ',"lewcidFullScreenStyle");\n }\n}\n\nconfig.macros.fullscreen={};\nconfig.macros.fullscreen.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var label = params[0]||" ↕ ";\n var tooltip = params[1]||"Fullscreen mode";\n createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);\n}\n\nvar lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;\nStory.prototype.closeTiddler =function(title,animate,slowly)\n{\n lewcid_fullscreen_closeTiddler.apply(this,arguments);\n if (story.isEmpty() && lewcidFullScreen == true)\n config.commands.fullscreen.handler();\n}\n\n\nSlider.prototype.lewcidStop = Slider.prototype.stop;\nSlider.prototype.stop = function()\n{\n this.lewcidStop();\n if (story.isEmpty() && lewcidFullScreen == true)\n config.commands.fullscreen.handler();\n}\n//}}}
!Implement photo gallery in Elgg\nHere's where to go :\n[[JonDesign's (Javascript) SmoothGallery 2.0|http://smoothgallery.jondesign.net/showcase/gallery-set/]]\n** [[download|http://smoothgallery.jondesign.net/download/]]\n** [[Integration with 3rd party s/w|http://smoothgallery.jondesign.net/forums/viewforum.php?id=6]]\n** [[PHP - Gallery Set - Show all files inside image folder|http://smoothgallery.jondesign.net/forums/viewtopic.php?id=1222]]\n\nThis would be good to have Dylan suss out for Elgg. [[This conversation|http://elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=124]] on elgg.org may help\n\n\n
<<siteMap RHUL>><<siteMap ECFaculty>><<siteMap MoodleBug>><<siteMap References 2>>^^[img[favicon.ico]] TiddlyWiki <<version>>^^\n
Three useful sources:\n# Elgg documentation [[Using LDAP|http://classic.elgg.org/mod/mediawiki/wiki/index.php/Using_LDAP]]\n# This Elgg forum conversation : [[Additional LDAP documentation needed|http://classic.elgg.org/mod/vanillaforum/vanilla/comments.php?DiscussionID=867&page=1#Item_2]] may be helpful too\n# This ticket [[Multiple LDAP authentication|http://elgg.org/trac/ticket/277]] is probably crucial\n!!Procedure\n# Use the 'multiple' LDAP setting. Add the +++[following lines]>\n{{{\n$CFG->auth = 'multiple'; \n$CFG->auth_multiple_ini = "path the file";\n}}}\n=== to config.php\n# After backing up //auth/multiple/lib.php// download Nathan Garrett's modified //.htaccess// and //lib.php// from [[Multiple LDAP authentication|http://elgg.org/trac/ticket/277]]\n** the modified //lib.php// goes in ''auth/ldap'' rather than auth/multiple as I first thought\n** the //.htaccess// goes in auth/multiple \n# Open up the Moodle LDAP configuration and apply to the //auth.ini//\n** added the lines to config.php with a +++[mod]\n{{{ 82 $CFG->auth_multiple_ini = $CFG->dirroot . "auth/multiple/auth.ini";}}}\n=== This puts auth.ini ''inside'' the web root (hence the need for .htaccess. Could also use //dataroot// instead to locate the ini file ''outside'' of the web root.\n# When it's working, ''respond to misja's comment about verification''
Welcome to your brand new [[MonkeyPirateTiddlyWiki|http://simonbaird.com/mptw/]]. This is the standard empty [[TiddlyWiki|http://www.tiddlywiki.com/]] (version <<version>>) preconfigured with a few bits and pieces from MPTW, in particular the layout, the colours, and the popular [[TagglyTagging|http://simonbaird.com/mptw/#TagglyTagging]]. If you're new to ~TagglyTagging then try the (slightly out-of-date) [[FAQ|http://simonbaird.com/mptw1/#TagglyTaggingFAQ]] and [[Tutorial|http://simonbaird.com/mptw1/#TagglyTaggingTutorial]].\n\nTo get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>\n\nTo create your own tiddlers, click 'new tiddler' in the right sidebar. To edit a tiddler click the 'edit' button in the tiddler's toolbar. To save all your tiddlers click 'save changes' in the right sidebar. If you're new to TiddlyWiki check out the formatting info [[here|http://www.tiddlywiki.com/#MainFeatures]].\n\nUse this to import tiddlers from another TiddlyWiki. You can use a local file (click Browse...) or type the url of an online TiddlyWiki.\n<<importTiddlers inline>>\nTo change your colour scheme you can edit the styles in StyleSheet. (Refer to StyleSheetColors and StyleSheetLayout for all styles used).\n\n
; The problem:\n: How can I make it easier for Ana Cornide to grade the blog entries her class is making?\n; Possible solution:\n: Use access control feature to create groups containing each individual student and the teacher. Teacher adds grade and comment and limits access to the student-teacher group thus ensuring privacy. Complication:\n>* students have to be on teacher's 'friends' list. Easy to do.\n>* cannot add access controls to comments.\n!!Workaround\nOnly main blog postings can handle group access controls, so all grading comments would have to be posted there. Make a link to the student's page and add trackback!. Then all student needs to do is to click on the trackback to see his/her grade & comments.\nPotential Procedure (presently untested):\n# Get listing of all student's blog entries either via Feed or tag cloud\n# Open blog posting to read contents\n# Open own blog ''in new tab'', copy URL\n# Copy and paste trackback URL\n# Make comments and add grade\n# Assign appropriate group access (having previously created the list of groups, one per student)\n# Save\n!!!Timesaver\n* The JustBlogIt Firefox extension used to automatically handle trackbacks. It would be good if the Scribefire plugin or Flock could do the same. Although I have had problems with Scribefire and neither adds keywords properly or handles the access controls.\n!!!To Do\nInstall the trackback plugin from http://elgg.org/_download/plugins/ in test Elgg 8.1 on barnabas and test.\n\n
/***\n| Name:|HideWhenPlugin|\n| Description:|Allows conditional inclusion/exclusion in templates|\n| Version:|6.1.2|\n| Date:|20-Oct-2006|\n| Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\nFor use in ViewTemplate and EditTemplate. Eg\n{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}\n{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}\n***/\n//{{{\n\nwindow.removeElementWhen = function(test,place) {\n if (test) {\n removeChildren(place);\n place.parentNode.removeChild(place);\n }\n};\n\nmerge(config.macros,{\n\n hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( eval(paramString), place);\n }},\n\n showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !eval(paramString), place);\n }},\n\n hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAny(params), place);\n }},\n\n showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAny(params), place);\n }},\n\n hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);\n }},\n\n showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);\n }}\n\n});\n\n//}}}\n\n
/***\nTo use, add {{{[[HorizontalMainMenuStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also HorizontalMainMenu and PageTemplate.\n***/\n/*{{{*/\n\n#topMenu br {display:none; }\n#topMenu { background: #39a; }\n#topMenu { padding:2px; }\n#topMenu .button, #topMenu .tiddlyLink {\n margin-left:0.5em; margin-right:0.5em;\n padding-left:3px; padding-right:3px;\n color:white; font-size:100%;\n}\n#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#178;}\n\n#displayArea { margin: 1em 15.7em 0em 1em; } /* so we use the freed up space */\n\n/* just in case want some QuickOpenTags in your topMenu */\n#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\n#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\n#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\n\n\n/*}}}*/
\n<<top>><<icon top.gif 16 16>>\n<<toggleSideBar '' '' hide>><<icon toggle.gif 16 16>>\n<<jump j '' top>><<icon jump.gif 16 16>>\n<<fullscreen f>><<icon full.gif 16 16>>\n
/***\n|Name|HoverMenuPlugin|\n|Created by|SaqImtiaz|\n|Location|http://tw.lewcid.org/#HoverMenuPlugin|\n|Version|1.11|\n|Requires|~TW2.x|\n!Description:\nProvides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.\n\n!Demo:\nObserve the hovering menu on the right edge of the screen.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nTo customize your HoverMenu, edit the HoverMenu shadow tiddler.\n\nTo customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!\n\nThe menu has an id of hoverMenu, in case you want to style the buttons in it using css.\n\n!Notes:\nSince the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.\n\nIf you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.\n\n!To Do:\n* rework code to allow multiple hovering menus in different positions, horizontal etc.\n* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu\n\n!History:\n*03-08-06, ver 1.1.2: compatibility fix with SelectThemePlugin\n*03-08-06, ver 1.11: fixed error with button tooltips\n*27-07-06, ver 1.1 : added JumpMacro to hoverMenu\n*23-07-06\n\n!Code\n***/\n\n/***\nstart HoverMenu plugin code\n***/\n//{{{\nconfig.hoverMenu={};\n//}}}\n\n/***\nHoverMenu configuration settings\n***/\n//{{{\nconfig.hoverMenu.settings={\n align: 'right', //align menu to right or left side of screen, possible values are 'right' and 'left' \n x: 1, // horizontal distance of menu from side of screen, increase to your liking.\n y: 158 //vertical distance of menu from top of screen at start, increase or decrease to your liking\n };\n//}}}\n\n//{{{\n//continue HoverMenu plugin code\nconfig.hoverMenu.handler=function()\n{ \n if (!document.getElementById("hoverMenu"))\n {\n var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");\n theMenu.setAttribute("refresh","content");\n theMenu.setAttribute("tiddler","HoverMenu");\n var menuContent = store.getTiddlerText("HoverMenu");\n wikify(menuContent,theMenu);\n }\n\n var Xloc = this.settings.x;\n Yloc =this.settings.y;\n var ns = (navigator.appName.indexOf("Netscape") != -1);\n function SetMenu(id)\n {\n var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];\n if(document.layers)GetElements.style=GetElements;\n GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};\n GetElements.x = Xloc;\n GetElements.y = findScrollY();\n GetElements.y += Yloc;\n return GetElements;\n }\n window.LoCate_XY=function()\n {\n var pY = findScrollY();\n ftlObj.y += (pY + Yloc - ftlObj.y)/15;\n ftlObj.sP(ftlObj.x, ftlObj.y);\n setTimeout("LoCate_XY()", 10);\n }\n ftlObj = SetMenu("hoverMenu");\n LoCate_XY();\n};\n\nwindow.old_lewcid_hovermenu_restart = restart;\nrestart = function()\n{\n window.old_lewcid_hovermenu_restart();\n config.hoverMenu.handler();\n};\n\nsetStylesheet(\n"#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}\sn"+\n"#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button {width:100%; text-align:center}"+\n"#hoverMenu { position:absolute; width:7px;}\sn"+\n"\sn","hoverMenuStyles");\n\n\nconfig.macros.renameButton={};\nconfig.macros.renameButton.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n\n if (place.lastChild.tagName!="BR")\n {\n place.lastChild.firstChild.data = params[0];\n if (params[1]) {place.lastChild.title = params[1];}\n }\n};\n\nconfig.shadowTiddlers["HoverMenu"]="<<top>>\sn<<toggleSideBar>><<renameButton '>' >>\sn<<jump j '' top>>\sn<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\sn<<newTiddler>><<renameButton n>>\sn";\n//}}}\n//end HoverMenu plugin code\n\n//Start ToggleSideBarMacro code\n//{{{\nconfig.macros.toggleSideBar={};\n\nconfig.macros.toggleSideBar.settings={\n styleHide : "#sidebar { display: none;}\sn"+"#contentWrapper #displayArea { margin-right: 1em;}\sn"+"",\n styleShow : " ",\n arrow1: "«",\n arrow2: "»"\n};\n\nconfig.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var tooltip= params[1]||'toggle sidebar';\n var mode = (params[2] && params[2]=="hide")? "hide":"show";\n var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;\n var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;\n var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");\n if (mode == "hide")\n { \n (document.getElementById("sidebar")).setAttribute("toggle","hide");\n setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");\n }\n};\n\nconfig.macros.toggleSideBar.onToggleSideBar = function(){\n var sidebar = document.getElementById("sidebar");\n var settings = config.macros.toggleSideBar.settings;\n if (sidebar.getAttribute("toggle")=='hide')\n {\n setStylesheet(settings.styleShow,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","show");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);\n }\n else\n { \n setStylesheet(settings.styleHide,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","hide");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);\n }\n\n return false;\n}\n\nsetStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\sn","ToggleSideBarButtonStyles");\n//}}}\n//end ToggleSideBarMacro code\n\n//start JumpToTopMacro code\n//{{{\nconfig.macros.top={};\nconfig.macros.top.handler=function(place,macroName)\n{\n createTiddlyButton(place,"^","jump to top",this.onclick);\n}\nconfig.macros.top.onclick=function()\n{\n window.scrollTo(0,0);\n};\n\nconfig.commands.top =\n{\n text:" ^ ",\n tooltip:"jump to top"\n};\n\nconfig.commands.top.handler = function(event,src,title)\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpToStartMacro code\n\n//start JumpMacro code\n//{{{\nconfig.macros.jump= {};\nconfig.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var label = (params[0] && params[0]!=".")? params[0]: 'jump';\n var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';\n var top = (params[2] && params[2]=='top') ? true: false; \n\n var btn =createTiddlyButton(place,label,tooltip,this.onclick);\n if (top==true)\n btn.setAttribute("top","true")\n}\n\nconfig.macros.jump.onclick = function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var top = theTarget.getAttribute("top");\n var popup = Popup.create(this);\n if(popup)\n {\n if(top=="true")\n {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);\n createTiddlyElement(popup,"hr");}\n \n story.forEachTiddler(function(title,element) {\n createTiddlyLink(createTiddlyElement(popup,"li"),title,true);\n });\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.jump.top = function()\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpMacro code\n\n//utility functions\n//{{{\nPopup.show = function(unused,slowly)\n{\n var curr = Popup.stack[Popup.stack.length-1];\n var rootLeft = findPosX(curr.root);\n var rootTop = findPosY(curr.root);\n var rootHeight = curr.root.offsetHeight;\n var popupLeft = rootLeft;\n var popupTop = rootTop + rootHeight;\n var popupWidth = curr.popup.offsetWidth;\n var winWidth = findWindowWidth();\n if (isChild(curr.root,'hoverMenu'))\n var x = config.hoverMenu.settings.x;\n else\n var x = 0;\n if(popupLeft + popupWidth+x > winWidth)\n popupLeft = winWidth - popupWidth -x;\n if (isChild(curr.root,'hoverMenu'))\n {curr.popup.style.right = x + "px";}\n else\n curr.popup.style.left = popupLeft + "px";\n curr.popup.style.top = popupTop + "px";\n curr.popup.style.display = "block";\n addClass(curr.root,"highlight");\n if(config.options.chkAnimate)\n anim.startAnimating(new Scroller(curr.popup,slowly));\n else\n window.scrollTo(0,ensureVisible(curr.popup));\n}\n\nwindow.isChild = function(e,parentId) {\n while (e != null) {\n var parent = document.getElementById(parentId);\n if (parent == e) return true;\n e = e.parentNode;\n }\n return false;\n};\n//}}}\n\n\n
//{{{\n// version: beta 1.1\n//replace macro buttons with icons\n// params[0] = image location\n//params[1] = image width\n//params[2] = image height\n//params[3] = image title (optional)\nconfig.macros.icon={};\nconfig.macros.icon.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n\n if (place.lastChild.tagName!="BR")\n {\n var tempTitle = place.lastChild.firstChild.title;\n removeChildren(place.lastChild);\n place.lastChild.className = "imgLink";\n var img = createTiddlyElement(place.lastChild,"img");\n img.src = params[0];\n if (params[3])\n img.title = params[3];\n img.width= params[1];\n img.height =params[2];\n }\n};\n\n//use icons for toolbar commands.\n// used in view template like:\n// <span macro='commandIcon jump jump.bmp'></span>\n//params[0] = command name\n//params[1] = image location\nconfig.macros.commandIcon={};\nconfig.macros.commandIcon.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{if(!e) var e = window.event;\n var img = createTiddlyElement(place,"img",null,"toolbarImg");\n img.src = params[1];\n img.onclick = function(){config.commands[params[0]].handler(e,place,story.findContainingTiddler(place).getAttribute("tiddler"));};\n img.title = config.commands[params[0]].tooltip;\n}\n\nsetStylesheet(".toolbarImg {vertical-align: middle; cursor:pointer;}\sn","commandIconStyles"); \n\n//}}}
/***\n|''Name:''|ImportTiddlersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#ImportTiddlersPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. It can also be very extremely helpful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nThis plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Automatically add tags to imported tiddlers so they are easy to find later on. Generates a detailed report of import 'history' in ImportedTiddlers.\n!!!!!Interactive interface\n<<<\n{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}\ninvokes the built-in importTiddlers macro (TW2.1.x+). If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)\n\n{{{<<importTiddlers link>>}}}\ncreates "import tiddlers" link that when clicked to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n<<importTiddlers inline>>\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!non-interactive 'load tiddlers' macro\n<<<\nUseful for automated installation/update of plugins and other tiddler content.\n\n{{{<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>}}}\n<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>\n\nSyntax:\n{{{<<loadTiddlers label:text prompt:text filter source quiet confirm>>}}}\n\n''label:text'' and ''prompt:text''\n>defines link text and tooltip (prompt) that can be clicked to trigger the load tiddler processing. If a label is NOT provided, then no link is created and loadTiddlers() is executed whenever the containing tiddler is rendered.\n''filter'' (optional) determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"tiddler:~TiddlerName"'' retrieves only the specific tiddler named in the parameter.\n>''"tag:text"'' retrieves only the tiddlers tagged with the indicated text.\n''source'' (required) is the location of the imported document. It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://")\n>use the keyword ''ask'' to prompt for a source location whenever the macro is invoked\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"confirm"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.11.14 [3.1.2]'' fix macro handler parameter declaration (double-pasted param list corrupts IE)\n''2006.11.13 [3.1.1]'' use apply() method to invoke hijacked core handler\n''2006.11.13 [3.1.0]'' hijack TW2.1 built-in importTiddlers.handler() so it can co-exist with the plugin interface 'panel'. Use macro without params (or use 'core' keyword) to display built-in core interface. Use new "link" param to embed "import tiddlers" link that shows floating panel when clicked. Renamed a few plugin utility functions so they don't collide with core internal functions. More code restructuring to come.\n''2006.10.12 [3.0.8]'' in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)\n''2006.09.10 [3.0.7]'' in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body" \n''2006.08.16 [3.0.6]'' Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with ZW and other adaptations that hijack low-level tiddler handling. Also, in CreateImportPanel(), no longer register notify to "refresh listbox after every tiddler change" (left over from old 'auto-filtered' list handling). Thanks to Bob McElrath for report/solution.\n''2006.07.29 [3.0.5]'' added noChangeMsg to loadTiddlers processing. if not 'quiet' mode, reports skipped tiddlers.\n''2006.04.18 [3.0.4]'' in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)\n''2006.04.12 [3.0.3]'' moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.\n''2006.04.12 [3.0.2]'' additional refactoring of 'core candidate' code. Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.\n''2006.04.04 [3.0.1]'' in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section\n''2006.04.04 [3.0.0]'' Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro. New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation, ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers. Also, ImportedTiddlers report generator output has been simplified and "importReplace/importPublic" tags and associated "force" param (which were rarely, if ever, used) has been dropped.\n''2006.03.30 [2.9.1]'' when extracting store area from remote URL, look for "</body>" instead of "</body>\sn</html>" so it will match even if the "\sn" is absent from the source.\n''2006.03.30 [2.9.0]'' added optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.\n''2006.03.28 [2.8.1]'' in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (IE does *not* define these values, so we bypass this code)\nAlso, when extracting store area from remote URL, explicitly look for "</body>\sn</html>" to exclude any extra content that may have been added to the end of the file by hosting environments such as GeoCities. Thanks to Tom Otvos for finding these bugs and suggesting some fixes.\n''2006.02.21 [2.8.0]'' added support for "tiddler:TiddlerName" filtering parameter in auto-import processing\n''2006.02.21 [2.7.1]'' Clean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)\n''2006.02.21 [2.7.0]'' Added "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)\n''2006.02.17 [2.6.0]'' Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]'' added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]'' FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]'' corrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]'' moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]'' added checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]'' added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]'' Added support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]'' Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]'' Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]'' Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]'' Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]'' When a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]'' IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]'' When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]'' When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]'' Update for TW2.0\nDefer initial panel creation and only regis