O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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. Elgg 1.8 Social Networking
    1. Table of Contents
    2. Elgg 1.8 Social Networking
    3. Credits
    4. Foreword
    5. About the Author
    6. About the Author of 1st edition
    7. About the Reviewers
    8. www.PacktPub.com
      1. Support files, eBooks, discount offers and more
        1. Why Subscribe?
        2. Free Access for Packt account holders
    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
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    10. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
            1. Data
            2. Tools
          2. Stress testing
            1. Data
            2. Tools
        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. 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. 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