You are previewing Elgg 1.8 Social Networking.
O'Reilly logo
Elgg 1.8 Social Networking

Book Description

Create, customize, and deploy your very own social networking site with Elgg.

  • An updated version of the very first book on Elgg

  • Detailed and easy-to-understand analysis on building your very own social networking site with Elgg

  • Explore the vast range of Elgg's social networking capabilities including communities, sharing, profiles and relationships

  • Learn to create plugins and themes with extensive tutorials

  • Written by Cash Costello, a core developer of the Elgg team, with a foreword from Dave Tosh, Elgg co-founder.

In Detail

As an updated version of the first ever Elgg book, this is an excellent resource for those interested in Elgg development due to its attention to detail, clearly written style and knowledgeable author. - Dave Tosh, Elgg co-founder.

In his book, Cash Costello makes full use of his skills in development and communication to tackle the complex subject of Elgg social networking. This easy-to-read guide gives end users, new developers, and old pros alike a solid base to start their venture into social media with Elgg. I highly recommend it as a useful and enjoyable read. - Brett Profitt, Elgg Lead Developer

The web is becoming increasingly social as millions of people use it to blog, share, post, 'friend', 'unfriend' (which was made the Oxford word of the year in 2009), comment, and chat. Elgg – your award-winning open source social networking engine – is tailor-made to create any social networking or social media website you can imagine.

If you want to create a social networking website from scratch using Elgg, then this book is exactly what you need.

Elgg 1.8 Social Networking covers everything you need to know about building a social networking site with Elgg. It begins with instructions for installing Elgg, continues with a guided tour of its capabilities, and finishes with practical advice on deploying Elgg on a production server. And in between, it is packed with information on configuring and customizing Elgg through plugins and themes.

This book is a learn-by-doing guide to creating your own social networking site. It includes three sample case studies on how Elgg could be used as an e-learning tool, an intranet application for organizations, and a niche social networking site. Step by step it takes you through the installation, configuration, and customization of Elgg. Valuable advice is sprinkled throughout the book to enable you to build your site like an expert.

For developers, this book provides a multitude of options. First, there is a tutorial-based section that systematically teaches you how to build plugins. Soon you will have ten plugins for use on your site in addition to all the knowledge you have gained. Second, if you prefer a quick overview, this book has an appendix that describes Elgg using the terminology and design patterns common in web development. Third, if you are interested in creating a theme, it also includes a design tutorial and a catalog of Elgg's view templates.

The book then goes on to describe what is involved in running a production website. It has sections on selecting a hosting provider, configuring and tuning the server, backing up the site, and dealing with spammers.

The RAW version of this book is based on Elgg v1.7. The final published book will be completely updated and based on Elgg v1.8.

Table of Contents

  1. Cover
  2. Copyright
  3. Credits
  4. Foreword
  5. About the Authors
  6. About the Reviewers
  7. www.PacktPub.com
  8. Table of Contents
  9. Preface
    1. What this book covers
    2. What you need for this book
    3. Who this book is for
    4. Conventions
    5. Reader feedback
    6. Customer support
  10. Chapter 1: Social Networking and Elgg
    1. Social features
      1. Profiles
      2. Relationships
      3. Content sharing
      4. Activity and notifications
      5. Groups
      6. Communication
    2. What is Elgg?
    3. The Elgg engine
      1. User management
      2. Privacy controls
      3. Theming
      4. Commenting
      5. Tagging
      6. Widgets
      7. Internationalization
      8. Feeds
      9. Web services
    4. The power of plugins
      1. Bundled plugins
      2. Third-party plugins
      3. Themes
      4. Building your own plugins
    5. Case studies
      1. Niche social network
        1. Designing and building the site
        2. Deploying the site
        3. Plugins mentioned
      2. Corporate intranet
        1. Designing and building the site
        2. Deploying the site
        3. Plugins mentioned
      3. Educational collaboration
        1. Designing and building the site
        2. Deploying the site
        3. Plugins mentioned
    6. Elgg resources
      1. Elgg community
      2. Elgg wiki
      3. Developer resources
    7. A few words of advice
      1. Take notes
      2. Save resources
      3. Be methodical
      4. Finding help
    8. Summary
  11. Chapter 2: Installing Elgg
    1. Preparing the server
      1. Checking requirements
      2. Downloading the latest version
      3. Extracting the files
      4. Moving files to your web server directory
      5. Configuring the server
      6. Create the database
    2. Run Elgg's installer
      1. Loading the database
      2. Configure Elgg
      3. Creating the admin account
      4. All done!
    3. Summary
  12. Chapter 3: A Tour of Your First Elgg Site
    1. Getting around
    2. Registering users
    3. User profiles and avatars
      1. Profile information
      2. Avatar
      3. Profile widgets
    4. Friends
    5. Activity stream
    6. Tools
      1. Blogs
      2. Bookmarks
      3. Files
      4. Groups
      5. Pages
      6. Messages
      7. The wire
    7. User settings
      1. Your settings
      2. Tools
      3. Notifications
    8. Administration
      1. Activating plugins
      2. Site categories
      3. Custom profile fields
      4. Default widgets
      5. Site pages
      6. Reported content
    9. Customizing your site
      1. User registration and authentication
      2. Widgets
      3. Friendship model
      4. Roles
      5. Help and support
    10. Summary
  13. Chapter 4: Sharing Content
    1. Blogs
      1. Creating a blog post
        1. Embedding photos and files
        2. Publishing
      2. Finding and viewing
        1. Search
        2. Lists of blog posts
        3. RSS feeds
        4. Widget
      3. Commenting
      4. Use cases
      5. Customizations
    2. Bookmarks
      1. Adding a bookmark
        1. Bookmarklet
      2. Viewing
      3. Use cases
    3. File
      1. Uploading a file
      2. Viewing
      3. Use cases
      4. Customizations
    4. The wire
      1. Posting
      2. Viewing
      3. Twitter integration
      4. Use cases
      5. Customizations
    5. Summary
  14. Chapter 5: Communities, Collaboration, and Conversation
    1. Groups
      1. Creating a group
      2. Group profile
      3. Membership
      4. Discussion forum
      5. Group tools
      6. Finding groups
      7. Use cases
      8. Customizations
    2. Pages
      1. Creating pages
      2. Viewing
      3. Use cases
      4. Customizations
    3. Messages
      1. Inbox
      2. Composing
      3. Customizations
    4. Message board
      1. Customizations
    5. Summary
  15. Chapter 6: Finding and Using Plugins
    1. Plugin administration
      1. Filtering and sorting
      2. Plugin dependencies
      3. Plugin settings
    2. Finding plugins
      1. Browsing the repository
      2. Searching
      3. Evaluating before downloading
        1. Look at the plugin overview
        2. Read the comments
        3. Check the history
      4. Custom plugins
    3. Installing plugins
      1. Test server
      2. Copying the code
      3. Activating and configuring
        1. Invalid plugin?
      4. Troubleshooting
    4. Themes
      1. Finding and installing themes
        1. Free themes
      2. Commercial themes
      3. Custom themes
      4. Installing themes
    5. Major community plugins
      1. Tidypics
        1. Plugin profile
        2. Administration
        3. Uploading photos
        4. Viewing photos
        5. Tagging photos
      2. Event calendar
        1. Plugin profile
        2. Administration
        3. Site calendar
        4. Group calendar
      3. Profile Manager
        1. Plugin profile
        2. Adding profile fields
        3. Configuring the profile fields
        4. Plugin settings
    6. Summary
  16. Chapter 7: Creating Your First Plugin
    1. What you need to know
    2. Elgg developer resources
    3. Setting up your development environment
      1. Editing code
      2. Configuring your site
    4. Hello, World!
      1. Plugin skeleton
        1. Create your plugin directory
        2. Plugin manifest
        3. Start script
        4. Activating the hello world plugin
      2. Register for the init/system event
      3. Adding a new route
      4. Creating a web page
      5. Update routing
      6. Add to the site menu
      7. Extending the page handler
      8. Add a sidebar menu
      9. Language support
      10. Personalizing the content
      11. Organizing your content into views
        1. A greeting view
        2. A stats view
      12. Review
    5. Debugging
      1. Debugging to the log
      2. Debugging to the screen
      3. Debugging PHP through an IDE
      4. Firebug and other browser development tools
      5. Elgg developer tools
        1. Inspect
        2. Theming sandbox
    6. Summary
  17. Chapter 8: Customization through Plugins
    1. Lesson 1: Changing wording
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Create the plugin structure
        2. Step 2: Find the language strings
        3. Step 3: Override the language string
      4. Exercise
    2. Lesson 2: Modifying a section of a page
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Find the view to override
        2. Step 2: Create the plugin structure
        3. Step 3: Edit the logo view
        4. Step 4: Style the header
      4. Exercise
    3. Lesson 3: Adding new content to a page
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Find the view to extend
        2. Step 2: Create the plugin structure
        3. Step 3: Build our view
        4. Step 4: Make the tips random
      4. Exercise
    4. Lesson 4: Doing something when X happens
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Find the event
        2. Step 2: Create the plugin structure
        3. Step 3: Write the function that sends the e-mail
      4. Exercise
    5. Lesson 5: Creating a custom widget
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Create the plugin structure
        2. Step 2: Create the widget edit view
        3. Step 3: Create the widget content view
      4. Exercise
    6. Lesson 6: Giving your users options
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Create the plugin structure
        2. Step 2: Add user settings
        3. Step 3: Create the toolbar view
        4. Step 4: Add CSS
      4. Exercise
    7. Lesson 7: Adding JavaScript
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Create the plugin structure
        2. Step 2: Load the JavaScript file
        3. Step 3: Add CSS and JavaScript initialization
      4. Exercise
    8. Lesson 8: Changing how Elgg does X
      1. Problem
      2. Solution
      3. Example
        1. Step 1: Create the plugin structure
        2. Step 2: Create the index page
        3. Step 3: Define the views
        4. Step 4: Add the CSS
        5. Step 5: Add a plugin setting
      4. Exercise
    9. Lesson 9: Collecting and storing data
      1. Problem
      2. Solution
      3. Example
        1. Overview
        2. Step 1: Create the plugin structure
        3. Step 2: Create the main help page
        4. Step 3: Create the categories
        5. Step 4: Add an administration page
        6. Step 5: Create the form body
        7. Step 6: Create the save action
        8. Step 7: Create the help category page
        9. Step 8: Create the help object view
        10. Step 9: Add the help sidebar
        11. Step 10: Add CSS for the topic listing page
        12. Step 11: Finish the main help page
      4. Exercise
    10. Summary
  18. Chapter 9: Theming Elgg
    1. What you need to know
    2. Theming basics
      1. Elgg's default theme
        1. HTML
        2. CSS
        3. JavaScript
        4. Graphics
      2. Views system
        1. What is a view?
        2. Extending a view
        3. Overriding a view
        4. Template language
        5. Caching
        6. The viewtype
        7. Tools
      3. CSS framework
        1. Creating abstractions of common visual patterns
        2. Customizing objects through extension classes
      4. Adding external JavaScript and CSS
      5. Menu system
        1. Registering a menu item
        2. Rendering a menu
    3. Comparing theming in WordPress to Elgg
    4. Building a theme
      1. Plugin structure
      2. Layout
        1. Default layout
        2. Page header
        3. Page body layout
        4. Page footer
      3. Moving the search box
      4. Styling the sidebar module
      5. Moving the site menu to the topbar
    5. Creating a mobile theme
      1. Plugin structure
      2. Layout
      3. CSS
    6. Summary
  19. Chapter 10: Moving to Production
    1. Selecting a server
      1. Performance considerations
        1. Competing for resources
        2. Usage patterns
        3. General guidelines for server selection
      2. Hosting options
        1. Shared hosting
        2. Virtual Private Server
        3. Dedicated server
        4. Cloud hosting
        5. Hosting company selection
    2. Configuring a server
      1. Apache
      2. PHP
      3. MySQL
      4. Cron
      5. E-mail
    3. Managing the site
      1. Backup
        1. Code
        2. Database
        3. Files
        4. Server configuration
        5. Restoring
      2. Log rotation
      3. Spam
        1. Registration
        2. Detecting spammers
      4. Web analytics
      5. Daily tasks
        1. Monitoring user registration
        2. Reviewing reported content
        3. Responding to feedback
        4. Community management
    4. Testing, upgrading, and moving a site
      1. Testing
        1. Mirroring the production site
        2. Test plan
      2. Upgrading
      3. Moving a site
    5. Performance
      1. Benchmarking
        1. Monitoring and data collection
        2. Stress testing
      2. Easy performance gains
      3. Advanced performance tuning and scaling
        1. Caching
        2. Multiple servers
        3. Resources
    6. Reporting bugs
      1. Steps to reproduce the problem
      2. Elgg or plugin?
      3. Reporting the bug
    7. Summary
  20. Appendix A: Developer's Quick Start Guide
    1. Overview of Elgg as a framework
      1. What is Elgg?
      2. Object-oriented or procedural?
      3. Does it use the Model-View-Controller pattern?
      4. Convention or configuration?
      5. Is it extensible?
      6. What template engine is used?
    2. A Model-View-Controller perspective of Elgg
      1. Overview
      2. Controllers
      3. Model
      4. Views
    3. Routing
      1. Code location
    4. Actions
      1. Code location
    5. Page handlers
      1. Code location
    6. Framework booting
      1. Code location
    7. Data model
      1. Entities
        1. Type and subtype
        2. GUID
        3. Owner
        4. Container
        5. Access
        6. Database
      2. Relationships
      3. Extenders
        1. Database
      4. Retrieval functions
      5. Code location
    8. Views
      1. View templates
      2. Page shells and layout
      3. View type
      4. Overriding and extending views
      5. Special views
      6. Code location
    9. Events and hooks
      1. Elgg events
      2. Plugin hooks
      3. Code location
    10. Plugins
      1. Initialization
      2. Plugin order
      3. Conventions
    11. Themes
      1. Code location
    12. Activity stream
      1. Code location
    13. Notifications
      1. Code location
    14. Internationalization and localization
      1. Code location
    15. Lightning round
      1. Authentication
      2. Caching
      3. Configuration
      4. Debugging and logging
      5. JavaScript
      6. Menus
      7. Private settings
      8. Search
      9. Security
      10. Session handling
      11. Unit tests
      12. Web services
      13. Widgets
    16. Summary
  21. Appendix B: Views Catalog
    1. Using views
    2. Page structure
      1. Shells
      2. Layouts
      3. Elements
        1. Topbar
        2. Header
        3. Sidebar
        4. Footer
        5. Owner block
        6. Status messages
        7. Comments
        8. Search box
      4. Components
        1. Gallery
        2. Image block
        3. List
        4. Module
    3. Navigation
      1. Breadcrumbs
      2. Pagination
      3. Menus
        1. Topbar menu
        2. Site menu
        3. Page menu
        4. Footer menu
        5. User hover menu
        6. Entity menu
      4. Tabs
    4. Forms
      1. Input
        1. Access
        2. Buttons
        3. Checkboxes
        4. Date
        5. Drop-down selector
        6. File upload
        7. Hidden input
        8. Large textarea
        9. Password
        10. Radio buttons
        11. Textbox
        12. User pickers
      2. Output
        1. Date
        2. E-mail address
        3. Link
        4. Tag cloud
        5. Tags
        6. Text
      3. The form
    5. Users, groups, and objects
    6. Activity stream
    7. Likes
      1. Like this
      2. List users
    8. Widgets
    9. Administration
    10. Summary
  22. Index