Drupal Camp Afternoon Session
· Bootstrapping your site
· http://defectivebydesign.org - bootstrapped live
· Expectation setting. Boris’ comment about 4 month – clients have time to do the tasks they have to do that they had no idea
· Defective by design – get into public’s mind that DRM is being pushed on us, it is wrong, we can push back, to get press, to sign up members and to convert members to Free Software Foundation
· F2F work with online coordination and some online interation
· Started with 24 people and one month later there are 5000. In the last week signed up 1500. Did a call in day against the RIAA, direct calls to executives, 200 people logged their call, was dug, slashdotted right away. Crossposted within 3-4 hours. Digg suppressed the story after it got on the front page and banned Henri Poole for a violation but they did not specify the violation.
· Core Drupal 4.6, CiviCRM. Needed to track members, member sign up, present information to members, not a compendium of DRM info. Convert people immediately to taking action. Every page has form to sign up. So a slashotted page has a sign up. Digg front page – sign up is available on the page. http://www.digg.com, http://www.slashdot.org - whenever we have a page that is hit a lot, we throw in the sign in form. Above the fold.
· TO track the contacts, we use a module called CiviCRM, which is almost as standalone CRM that works with Jumla, Drupal and possibly plone. You control permissions through Drupal access controls. Doing a session on it later. It has contribution management, mass emailing, groups, can relate contacts to each other, individual to individual, org to org. Used to live in the back office of organizations, needs linkage to the community site front end.
· You can create a form, stick the code into a custom page and then, if you fill this out, a user fills out form. Email to confirm registration. Anyone who confirms is agreed to be emailed until they say no.
· Member can log in, certain things they can do; get access to phone numbers. Started with core Drupal and CiviCRM. Posted things as blogs or pages. No other modules.
· Then we had pictures from first event. Add the image module, image assist, created a custom block off of a php snippet off of Drupal.org. Greg is not a coder.
· Stuck the snippet into a custom block, added the 2 variables, and voila now an image block pulls a fresh picture from a taxonomy of pictures.
· Block – region where you can put in text. In 4.8 blocks become another CCK content. Now administered in a totally different way.
· After each action we take cropped pictures and upload them. Have a recent blog post blocks. Only administrators/oganizers have blogs.
· Like http://www.dailykos.com which aggregates blogs up to an uber blog. Incorporating external blogs. In this site want a lot of control over content so reblog instead of auto feeding in external sources.
· Used a http://www.flickr.com badge, switched out the flickr logo. Working with Richard Stallman and he has some sensitivity about any direct links to services like Flickr because of their TOS run against Richard’s philosophy. It is really damn easy to use Flickr. Drupals picture system is not as easy as flickr an we don’t have the physical infrastructure to manage photos and videos so using flickr and youtube.
· Links in a custom block to DRM resources. Will get converted to a links block. 2 or 3 modules that work together for weblinks with trackable metrics.
· Linksrelated. Weblinks package. Wrapped together.
· So if you can identify external resources and know how to install a block, you can pull in that external code easily into the block an include it in your site. So have people upload pictures to flickr, ask people to tag, then pull it into your site with RSS feed. People can “see” what your other members are doing. Brings them back to your page.
· Post a picture and put text about yourself in the description and have a picture directory.
· The put in module login toboggan. Login with your email address or your username.
· Working on the add user module. With Toboggan they have to give in email, login, password to create an account. Different from regular Drupal which requires username.
· Itch developed – want a module that all you have to put in is your email address. Then anything else the admin wants to require. Postal code. Country, whatever. The module then creates a username based on your email address. Reduce barrier. Form as few fields as possible. Put in email, emailed a username and password, then you can login and change it.
· Wanted to limit access to phone numbers for calling campaign. Created simple access to determine which user role can see the node. You can set user role groups. Simple Access Permissions. I.e. staff, interns, authenticated users are always a group.
· Allow people to see the other freedom fighters around them. Pulls up google map with pushpins for other users within specified range. Next add would be to specify who can contact you. Desired addition, once a threshold set an email is sent to all to encourage a Meetup F2F. Virtual organizer based on a value threshold.
· Needed CCKM – added that. Created a node type for action, target, target report. You can create a field that is a node relation thing. RIAA action – RIAA target of the action. There was a node relation field to match the target with a specific action. So you do the right thing to the right people. Can see information on the target.
· Then realized it looked ugly. Needed a way to show it so added the views module. This allowed them to … basic submit form, title, teaser, describe the action. Could add an image since using image assist. Comes with this neat thing – only viewable by… so can limit. Can exclude unauthenticated users. Can specify position of picture, links, etc. Then implants the image into the body.
· If you are running a rich text editor you can drag and drop images. You can drag and drop from other sites. Drag from flickr into the rich text editor. Not a function of Drupal but of rich text editor. Can run image assist with rich text editor.
· The image module (separate from image assist). Can resize pictures. Configure the image module to default sizes. Thumbnail and other sizes. Then image assist allows you to use the image in a text area.
· We had an action item, targets of the action. List of targets done with the Views module. Created an alphabetized target table, grouped by country and organization. Target node has those fields in it. The whole page is based on a View. Header, selector, sorting capabilities, footers. This takes you to the target create form.
· This is another view. Views allow you to create a block. Created a view list that is a block, the table with the target, the disposition, subject and report in the body of node and the user who created it.
· In 4.7 you can assign blocks to regions. Here assigned it to center, and have it so this automatically shows on certain pages. Paginator… more item.
· Views is module. Creates all the kinds of stuff. Before it existed if you wanted to display a bunch of nodes on a page you had to program a custom page to find, sort, display and layout. Views, like CCK allows you to do custom functionality without database and PhP programming… just learn the web interface. “Show me everything posted by Joe Smith on this page.”
· Kind of like metadata plugin in Manilla except on steroids.
· Bootstrapping = may look ugly at first
· Contemp module. Need to figure out how to theme the display of nodes so you don’t get pure ugliness. Poor display or order. Contemp allows you to create a custom template for each CCK using a GUI. (Graphical user interface).
· Next launching a petition to Bono asking him to take a stand against DRM since he has done other wonderful things with his celebrity. If he says DRM is bad, stifling creativity, screwing users, it might have an effect. Drafted a petition, installed the Petition Module and discovered serious bugs, have fixed it so it works.
· An admin can go in, create content, add petition through a form, define a custom thank you page (another module). This form is made with CiviCRM. You create a profile and then tell the petitions module which CIviCRM module to use. After submit counter on petition goes up by one. Land on thank you page that asks them to spread the word. Then brings in the Forward Module, developed by Development Seed in DC. Allows you to send the node to another person. It formats the page in a certain way to add a template, including a block along with it. You get the message plus you are also going to get a block of the most recent blog posts.
· Does tracking of how many forwards and how many visits from forwards.
· I do a little trick. Forward emails that page. Instead want a specxific page so created a node that is only going to be sent. So it is a page that is more appropriate for forwarding which brings enough context.
· Connections theme is easy to customize. May change to Meta theme. But not a coder.
· When do you decide to add CiviCRM to Drupal? Here we are looking at a list of 5000 registered users. 2500 confirmed. Only run the confirmation before message sending. Offers other stuff – geographic groups, smart groups. If you need to track anything more than email address. If you need to send mass mail merge. If you want to track donations. If you have internal users who are going to add information about other users. Relationship management. Husband/wife, mentor/mentee. Putting your back office online. Secure.
· If you download CviSpace it includes CiviCRM. Can do in one or two databases. Developed by a professional shop with a large development team. Work under a project manager. You have to have Drupal to install CiviCRM.
· You can start with just CiviCRM for simply doing backoffice without using Drupal for the website.
· CiviCRM is simple. CiviEmail, not so simple. There is other configuration that has to be done. Harder than the typical Drupal module. Might be a good place to get some initial help, then work with it yourself ongoing.
· CiviMail is harder because of server requirements. Mass mailing is a bear. Hosting requirements, being allowed to mass mail, getting blacklisted. Gregory reports system problems with large mail – time out issue. Find tuning it. In mean time written a patch that throttles the mail that sends 200 per chron. Can manually speed up as well. IT’s beta. We’re the first shop using CiviMail in production. Just rolled it out for CreativeCommons to manage districts. Can share the same DB with Drupal, but often do separate for purpose of back up and restore issues. Sometimes want to do cross table joins and easier if they are in the same DB. Can use it to manage information then export it to Constant Contact. SOAP interfaces. It’s a mode of communication.
· The contact module. It creates a web contact form. Gregory likes it and uses it or Contact List module.
· Stretch break
· Is there a resource to help someone like me do a site architecture, describe what I need. Interesting case where we are talking about Drupal and haven’t talked about best practices with information architecture. Some comes from experience, feedback, other general web design resources taken with a grain of salt as they come from static sites. Dynamic personalized stuff is a bit different. Write it down where you think you are headed. Form follows function.
· Talk about recipes – as general as possible. Roland wrote up one with static brochure site without theming. http://support.bryght.com Even without programming there are more than one ways to skin a cat. More options as time goes on. The options are getting easier to use. Roland’s how to was 4.6 before some of the features of 4.7. www.importantprojects.org Rob Purdy. Spec list on how they chose a CRM.
· So if you can define the functions you want, how do you then match them to modules. Which are core modules? Where are the additional modules and how do you choose them.
· Boris has been using Drupal since 2002. User 2000 no 70 or 80,000 users on Drupal.org Moving so quickly. Need to build up more practices especially because it is so configurable.
· CORE MODULES
· Archive – shows, filter content by date, Boris does not believe in archiving in a dynamic site. Crappy and Views does a better job. Disable and use Views.
· Aggregator – First big thing that few other systems do. Lets you add external RSS feeds and categorize them. Very useful. You can set it to how often to check, suck in content from remote site. Lets say you are a community of practice. Here are the 10 best sources of info: blogs, google news search, etc. del.icio.us tags, flickr photo streams, competitive intelligence. Not first class pieces of content in Drupal. Taken in, stored, displayed, shows information at the feed level. Aggregator/feed/2 takes me to the feed from Nancy’s blog, but could not lead to the individual posts and only keeps it in for a short period of time. It also has a “blog this” button next to every item. If you have blogging enabled and it takes those external blog posts, quoted, linked to source and people can add comments. First class content = node. This is not a node. Image, blog posts are all a NODE. The other base things are USERS and COMMENTS. If you want to suck in content directly. Blog reader, KM, Info/SEO -- > Use Aggregator 2 – a contrib. Module to get RSS items as nose. http://Personal.bmannconsulting.com à taken all RSS feeds of all services I generate and pointed them all at my Drupal installation and use Aggregator 2 to post directly to my site. 43 places, Flickr, every single posting gets sucked into my own site. Really easy way to integrate external services. No programming. Like http://www.suprglu.com but you have far more flexibility. Can include comment feeds, anything with a feed. Any time he comments on another person’s picture gets suck in. Can output per feed, can then set it how you want it displayed on the front page. I.e. first image gets promoted to front page. Practice of finding feeds – see article by Robin Good at http://www.kolabora.com Newsmaster is Robin’s term. Knowledge gardener. Orgs need to learn or bring someone on board to do. Helpful to have “web 2.0” experience.
· Block – a system in the past on the left or right side, blocks of modules of chunks of functionality. Who’s online. Recent blog posts. Admin screen allows you to pick and position, weight, determine who can see what. Admin function to manage blocks of content.
· Blog – This is a fun one. It means so much and so little at the same time. People from bloggy world, how do I blog, multiple blogs, group blogs. What do you mean by that? None of those things have def. What do you want to accomplish. By default Drupal is a commiuntyu blogging system. All the blogs of users are all in the same space with a community. If you go to /blog in a Drupal site that will be the aggregate of all blog posts of those who have blog posting rights. /blog/usernam is the compilation of posts by an individual. There is a feed for every individual users blog and the aggregate. Can make posts private or public. A number of ways to do it. Right now recommend for a blogging perspective is the organic groups module. Might be a group of one, multiple people. Groups.Drupal.org for example each group has a feed – aggregate feed of all posts. A great feature – I really want my own space, but I also want to be in the main community. Ste up Drupal with forums, calendar, blogging functionality. Then you can have Wordpress, typepad, a squarespace install, textpattern and use aggregator aor aggregator 2 to feed in all those posts. If you want them to be first class content, use Aggregator 2.
· Drupal.org doesn’t have blogs enabled. There is a bunch of develolpers that blog about Drupal already. So have planetdrupal which has an agregatory category that has all of these people’s feed. So rather than subbing separately you can sub to the aggregator feed with only one feed for those people that actually read RSS.
· Organic Groups allows each member to have a private space. And can feed that back up too. Remix. Category terms in the RSS. Agg 2 can pluck out those categories and addthem to your local category space. So tag nptech in other blogs (currently broken in 4.7 and Broke Robert’s site.)
· Playing with fire with Aggregator 2, but killer functionality.
· Blog is by default community blogging. Aggregate and individual poster views.
· Requirements gathering
· Can you integrate a map? There is a module. Gmaps. Developers in Vancouver who needs a macbook and he will keep developing it. Can show all your users, can add user information to map.
· BlogAPI module – can turn on or off. Remote posting to your Drupal site. Can actually post any content to your site, not just blog posts. Book pages, stories, widget. I.E. from mobile phone. Application Programming Interface. Metablog API. Standard format. Moveable Type and Blogger API. Tools developed for the blogworld. Flickr can do this – blogthis icon. Can blog via Flickr interface. Main use for other sites or if you use a desktop blogging or pulishing tool. Quamana, Windows, Blogjet, ectos, http://www.performancing.com has tips for professional bloggers, written in Drupal. Firefox plug in to blog. Flock web browser. Route information to different places.
· Book Module – if you want to make a static content page. Use Book to organize it. See support.bryght.com – static, hierarchical content. There’s a selector – top of site or if you have book pages already, choose which book page to create a new page underneath. Automatically creates a displayable block that shows which level you are at. Bryghts “About” section has team, products, under team each person. Why only do static? Can also add any other node to a book outline. I did this for the sessions. Petrina created an event for each session so people could sign up and so we could capture emails. Then reverse chrono display. Added each one to a book outline under sessions. Nice listing of all of the events. Permissionà manage book à tab called outline. Click on that. You get that same selector of where you want to place this piece of content. Can do meta organization. 5 great blog posts . Could tag them all getting started with blogging. Or can order the view. With user generated content will be bloggy, reverse chron. This allows meta organization for static materials. A navigation menu. Next, previous, etc. Can take them out with theming. Plus and minus there. Print is very valuable. By default simple built in printer friendly button for book. There is a separate module to have stripped for printing for other types of content. Will show the entire book outline in text, all formatting stripped out.
· COMMENT Module – can enable or disable. By default for any content type. Turn off commenting on book pages as a useful practice. Should be top ten FAQ. Turn off “posted by Bmann at x day y time. Can term that off. Admin/themes/configure. Turn it off for books. Turn it on for blog posts. Can edit a node to deal with flame wars. Can turn comments to be invisible or no more comments. Post automatically is usually turned off by anonymous users and they go into a moderation queue. You will get spam. Talk to community. Maybe disallow anonymous posting. Could even say register and login to even view comments. Lot of permissions available. Comment moderatu queue can be painful. Spam module, bad behavior and akismet to help deal with spam. All three work. Bad behavior can be overly aggressive. Spam’s built in smarts are being gamed now by the spammers. Akismet is 4.7 only, promising. Talks out to a centralized server with a good track record.
· Can you ban IP addresses? Yes. That setting is… where? Look it up. They will still put load on your server.
· Chat – three chat modules in the last couple of weeks. Really high volume on server. Gabbly. http://www.gabbly.com That script was impossible. You can’t scroll back up. Should have an RSS feed. It embeds a chat system on your webpage run by a different service. Can co-browse through chat room.
· Contact – 4.7 – has site wide contact form by default. /contact Example of framework that developers can build on top of. Driven by needs of Drupal.org can define categories, how and what can be sent out. There are personal contact forms enabled user by user. Go to profile, contact form, can email that user through that form. It DOES display their email address in the email itself. If you have to mask, use the PRIVATE MESSAGE. Often used in social networking site.
· Drupal Module – it enables a site directory and distributed login. Rather than creating a username on Drupal.org I can log in with my username on my personal site. Bmann@bmannconsulting.com it is actually remoteusernam@remotedrupalsite. Being generalized as a standard and will eventually integrate as core. Site directory, you can send a central server that you want to ping when your site updates and create a page that updates sites that point here. It phones home in 4.7. You have to enable this. No personal ident. Sends stats on useage and which modules turned on so we can see who is using what to drive feature development.
· If you go to /book it shows you top levels in book – could add different sections and
· Module called site map –
· How do you get the pulse in a community site – create custom views, sort by ratings, most recently updated. At the T-s the tracker does that by default.
· Views can take USER id as an argument. If you look at groups site you have myunread built around some group stuff. Can switch to recent and general. Sitemapà trackerà views.
· With logins – can you use that if you are admin of multiple sites. Yes and no. Create a secondary central ID everywhere. But they are still separate accounts. Some programming that could synch things across sites – like user pictures, etc. Will be single sign on, persistent identities. Could you make a change across multiple sites? Yes, there is a module that allows you tod do that. Depending on rules push content to distributed sites. Distributed login. Authentication is back to site. (Not sure I captured this correctly.) Needs to be swapped out with version that is right. What the user would expect. Had the Profile Module. If the fields are different across the sites, managed separately. Not the best user experience. In there by geeks for geeks. Identity is one of the things Bryght is hot on. Open ID, SXIP, SAML. There are modules in development for Open ID and SXIP. Drupal will able to be a central home site. Sign up in one site and use in any site that is SXIP enabled.
· Filter – text filter, by default, 3 defined filters. Full HTML, Filtered HTML (on by default and screws people up), PHP. Filtered HTML allows some but not all HTML tags. Can set per role and per node. PHP means you can put PHP code from snippet library, recommended for site admins only and test on test sites as you may lock yourself out. You can create filters for each users, make a default. URL filter. If someone pastes in a link or email address, it makes it live. Autolink. Talk like a pirate filter. For talk like a pirate day. Shortcuts to input wiki syntax, bb code, smilies fyou are using a wiziwyg use full html otherwise rich text gets stripped out. You also need for embeds for snippets.
· Butchrpapr tag for pictures.
· Tag – DrupalCampSeattle2006
· Forum – Some people say they hate Drupal’s form. Uses taxonomy to create hierarchy of forum. Add on flatforum. Big bonus is it is built in, same user permissions. Unsophisticated users don’t care. Graphic next to your name can add that through theme. mobilepokernow.com – tendency to turn on all modules because they are there. If you turn them all on and have it available to regular users they will be confused. Some sites forum and blogs make sense. If you have full access to both it may confuse. Blogs are voice of the particular author. Their space. You add a comment to their space. Forums are group thinking – in a bucket, our space, not my space. Shouldn’t the end user be able to determine my blog wide preferences on commenting? If that functionality was built in. Possible, but not yet done. If you are building a community building site, then no. If you are setting it up and themed as a central place for individual blogs. Drupal is better for the community blogging, have to add other modules for individual
· Forum Help –
· Help – help edit and help tips allow you to add
· Legacy – if you’ve done multiple upgrades over time. Old URLS – will catch the incoming requests and reroute them to new version
· Locale- lets you change the localization for multiple languages sort of. Localization to change the user interface. Partially or nearly translated for core. There is a formal and regular tone German. A hidden thing – you can create a second language called English[Mine} change the hard coded text. Call a blog a journal by only changing it in one place. You can set it as the default and either let people pick or not.
· Menu – a way that you can configure and admin the menu. The default navigation block, add additional nav blocks;. In 4.7 can automatically (missed something)
· Node – can’t disable, basic content for everything. Title, description, author, all the basic metadata.
· Page and Story – can add different permission. Use page instead of book. Give edit rights. Story is another way to do a group blog. Can autopromote to front page, multiple authors. Site wide news instead of blogs and display differently. May go away in 4.8 and allow people to create new content tyupes on the fly
· Path – lets you set friendly names for pages /about, /chocolate can edit and change the paths at the admin level for any path.
· Path auto is a contrib. Module that automates that. Contrib means it is not part of the core download. Updated and maintained separately
· Ping is a bloggy thing but works with all content types. Sends out an update notification to ping servers which in term notify other sites like Technorati, bloglines, etc so the crawlers will suck up your information. Can’t customize the urls it pings. Goes via pingomatic which pings to everything else. If you want to ping iTunes only – can’t do that. Helps for SEO as well. Content gets indexed faster when turned on. Turn it off during development. Turn on when ready
· Poll – simple set the number of questions, titles, radio buttons only. Exports a display block. For more complex use web form or survey modules. Can’t import surveymonkey. CiviCRM has a back end that allows you to slice and dice the reporting.
· Profile – user profile. Completely configurable. No defined default fields. Bryght’s install added some basic fields. Multiple types of info. URL, text, for social networking you can add keywords or tags field. Comma separated (or line sep?) Click on tag will filter and show others with key words. Can call it anything you want. Configurable. Public, private if it shows in /profile if you allow anonymous users to see it. Can have private fields and add ons
· Search – 4.7 really really good. Not great in 4.6 – configurable. Can add other modules to it. Someone created a Chinese word splitting module. UTF8 clean. Can weight content. Keyword relevance. Requires Cron, on UNIX, way that schedules tasks to happen. Instructions with ownload. Cron.php – search won’t find if cron.php is not running. Go to admin of search page. Can it search within docs? Yes and no. Prob a contrib. Module. Takes every single uploaded doc and uses command line tool that converst to HTML for full text searching. Third party script can be integrated. Alternate can attach key data on uploaded doc to search better
· Statistics – hits, reads, IP address, what users is reading stuff. Need to do IP blocking. Shows logs without having to go to server. Ifyou want great statistics, run a java script. Richar – google analytics, performancing, sitemeter, statcounter, use external for pretty graphs and to publicize stats. Only shows number of reads, referrer logs
· System – ignore
· Taxonomy – skip for now it is huge. 53 different things. Free tagging. How you categorize content. Can use for nav. Every single tax term generates an RSS feed. Can make a custom feed with ID of custom terms. Monkey OR banana, or AND. Complex. Not simply categories. Can use taxonomy browser, Views to choose taxonomuy
· Views should be in your basic – contrib. Module
· Throttle – supposed to turn off bits of your site. If you need it, you need engineering help on your site
· Tracker – if you are not using views /tracker shows recent activity. Recent posts, recent commented upon posts. Show you as admin comment count for things you haven’t read. View in profile go to a users profile and see where they have been going. Find trolls. Ditch tracker and use views eventually
· Upload – this is how you on a per content type basis choose wich kind of attachments, file extensions you allow. Built in way to do videoblogging and podcasting. See article on support.bryght.com on how to do that. Can automatically enable pod nd video casting.
· Inline images is non core
· User – choose if people can upload or not, to make sure they don’t have nasty usernames. Roles and other thigns live. Admin function. One of the content types of drupal
· Watchdog – logs events, internal stuff. Greg logged in. Gregs login failed. Error generated. Can grow large. Want to trim and clear every x days, automatic setting.
That’s just core. We haven’t talked about contributed modules. Start with these. Add view, CCK is quite advanced but you can misuse things and get into complicated stuff. Haven’t covered images and events – two other major types to be added.
